nitg-s: element set is no more required at colorer initialization
[nit.git] / c_src / mmloader._sep.c
1 /* This C file is generated by NIT to compile module mmloader. */
2 #include "mmloader._sep.h"
3 val_t mmloader___ToolContext___paths(val_t p0){
4 struct {struct stack_frame_t me;} fra;
5 val_t REGB0;
6 val_t tmp;
7 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8 fra.me.file = LOCATE_mmloader;
9 fra.me.line = 29;
10 fra.me.meth = LOCATE_mmloader___ToolContext___paths;
11 fra.me.has_broke = 0;
12 fra.me.REG_size = 1;
13 fra.me.nitni_local_ref_head = NULL;
14 fra.me.REG[0] = NIT_NULL;
15 fra.me.REG[0] = p0;
16 /* mmloader.nit:29 */
17 REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____paths(fra.me.REG[0])!=NIT_NULL);
18 if (UNTAG_Bool(REGB0)) {
19 } else {
20 nit_abort("Uninitialized attribute %s", "_paths", LOCATE_mmloader, 29);
21 }
22 fra.me.REG[0] = ATTR_mmloader___ToolContext____paths(fra.me.REG[0]);
23 stack_frame_head = fra.me.prev;
24 return fra.me.REG[0];
25 }
26 val_t mmloader___ToolContext___opt_path(val_t p0){
27 struct {struct stack_frame_t me;} fra;
28 val_t REGB0;
29 val_t tmp;
30 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
31 fra.me.file = LOCATE_mmloader;
32 fra.me.line = 35;
33 fra.me.meth = LOCATE_mmloader___ToolContext___opt_path;
34 fra.me.has_broke = 0;
35 fra.me.REG_size = 1;
36 fra.me.nitni_local_ref_head = NULL;
37 fra.me.REG[0] = NIT_NULL;
38 fra.me.REG[0] = p0;
39 /* mmloader.nit:35 */
40 REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_path(fra.me.REG[0])!=NIT_NULL);
41 if (UNTAG_Bool(REGB0)) {
42 } else {
43 nit_abort("Uninitialized attribute %s", "_opt_path", LOCATE_mmloader, 35);
44 }
45 fra.me.REG[0] = ATTR_mmloader___ToolContext____opt_path(fra.me.REG[0]);
46 stack_frame_head = fra.me.prev;
47 return fra.me.REG[0];
48 }
49 val_t mmloader___ToolContext___opt_only_metamodel(val_t p0){
50 struct {struct stack_frame_t me;} fra;
51 val_t REGB0;
52 val_t tmp;
53 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
54 fra.me.file = LOCATE_mmloader;
55 fra.me.line = 38;
56 fra.me.meth = LOCATE_mmloader___ToolContext___opt_only_metamodel;
57 fra.me.has_broke = 0;
58 fra.me.REG_size = 1;
59 fra.me.nitni_local_ref_head = NULL;
60 fra.me.REG[0] = NIT_NULL;
61 fra.me.REG[0] = p0;
62 /* mmloader.nit:38 */
63 REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_only_metamodel(fra.me.REG[0])!=NIT_NULL);
64 if (UNTAG_Bool(REGB0)) {
65 } else {
66 nit_abort("Uninitialized attribute %s", "_opt_only_metamodel", LOCATE_mmloader, 38);
67 }
68 fra.me.REG[0] = ATTR_mmloader___ToolContext____opt_only_metamodel(fra.me.REG[0]);
69 stack_frame_head = fra.me.prev;
70 return fra.me.REG[0];
71 }
72 val_t mmloader___ToolContext___opt_only_parse(val_t p0){
73 struct {struct stack_frame_t me;} fra;
74 val_t REGB0;
75 val_t tmp;
76 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
77 fra.me.file = LOCATE_mmloader;
78 fra.me.line = 41;
79 fra.me.meth = LOCATE_mmloader___ToolContext___opt_only_parse;
80 fra.me.has_broke = 0;
81 fra.me.REG_size = 1;
82 fra.me.nitni_local_ref_head = NULL;
83 fra.me.REG[0] = NIT_NULL;
84 fra.me.REG[0] = p0;
85 /* mmloader.nit:41 */
86 REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_only_parse(fra.me.REG[0])!=NIT_NULL);
87 if (UNTAG_Bool(REGB0)) {
88 } else {
89 nit_abort("Uninitialized attribute %s", "_opt_only_parse", LOCATE_mmloader, 41);
90 }
91 fra.me.REG[0] = ATTR_mmloader___ToolContext____opt_only_parse(fra.me.REG[0]);
92 stack_frame_head = fra.me.prev;
93 return fra.me.REG[0];
94 }
95 void mmloader___ToolContext___init(val_t p0, int* init_table){
96 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_toolcontext___ToolContext].i;
97 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
98 val_t REGB0;
99 val_t tmp;
100 if (init_table[itpos0]) return;
101 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
102 fra.me.file = LOCATE_mmloader;
103 fra.me.line = 44;
104 fra.me.meth = LOCATE_mmloader___ToolContext___init;
105 fra.me.has_broke = 0;
106 fra.me.REG_size = 4;
107 fra.me.nitni_local_ref_head = NULL;
108 fra.me.REG[0] = NIT_NULL;
109 fra.me.REG[1] = NIT_NULL;
110 fra.me.REG[2] = NIT_NULL;
111 fra.me.REG[3] = NIT_NULL;
112 fra.me.REG[0] = p0;
113 /* mmloader.nit:44 */
114 fra.me.REG[1] = fra.me.REG[0];
115 /* mmloader.nit:46 */
116 CALL_SUPER_mmloader___ToolContext___init(fra.me.REG[0])(fra.me.REG[0], init_table);
117 /* mmloader.nit:47 */
118 fra.me.REG[0] = CALL_toolcontext___ToolContext___option_context(fra.me.REG[1])(fra.me.REG[1]);
119 REGB0 = TAG_Int(2);
120 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
121 fra.me.REG[3] = CALL_mmloader___ToolContext___opt_path(fra.me.REG[1])(fra.me.REG[1]);
122 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
123 fra.me.REG[3] = CALL_mmloader___ToolContext___opt_only_parse(fra.me.REG[1])(fra.me.REG[1]);
124 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
125 fra.me.REG[1] = CALL_mmloader___ToolContext___opt_only_metamodel(fra.me.REG[1])(fra.me.REG[1]);
126 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
127 CALL_opts___OptionContext___add_option(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
128 stack_frame_head = fra.me.prev;
129 init_table[itpos0] = 1;
130 return;
131 }
132 void mmloader___ToolContext___process_options(val_t p0){
133 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
134 val_t REGB0;
135 val_t tmp;
136 static val_t once_value_1; /* Once value */
137 static val_t once_value_2; /* Once value */
138 static val_t once_value_3; /* Once value */
139 static val_t once_value_4; /* Once value */
140 static val_t once_value_5; /* Once value */
141 static val_t once_value_6; /* Once value */
142 static val_t once_value_7; /* Once value */
143 static val_t once_value_8; /* Once value */
144 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
145 fra.me.file = LOCATE_mmloader;
146 fra.me.line = 50;
147 fra.me.meth = LOCATE_mmloader___ToolContext___process_options;
148 fra.me.has_broke = 0;
149 fra.me.REG_size = 4;
150 fra.me.nitni_local_ref_head = NULL;
151 fra.me.REG[0] = NIT_NULL;
152 fra.me.REG[1] = NIT_NULL;
153 fra.me.REG[2] = NIT_NULL;
154 fra.me.REG[3] = NIT_NULL;
155 fra.me.REG[0] = p0;
156 /* mmloader.nit:50 */
157 fra.me.REG[1] = fra.me.REG[0];
158 /* mmloader.nit:53 */
159 CALL_SUPER_mmloader___ToolContext___process_options(fra.me.REG[0])(fra.me.REG[0]);
160 /* mmloader.nit:56 */
161 fra.me.REG[0] = CALL_mmloader___ToolContext___paths(fra.me.REG[1])(fra.me.REG[1]);
162 fra.me.REG[2] = CALL_mmloader___ToolContext___opt_path(fra.me.REG[1])(fra.me.REG[1]);
163 fra.me.REG[2] = CALL_opts___Option___value(fra.me.REG[2])(fra.me.REG[2]);
164 CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
165 /* mmloader.nit:58 */
166 if (!once_value_1) {
167 if (!once_value_2) {
168 fra.me.REG[2] = BOX_NativeString("NIT_PATH");
169 REGB0 = TAG_Int(8);
170 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
171 once_value_2 = fra.me.REG[2];
172 register_static_object(&once_value_2);
173 } else fra.me.REG[2] = once_value_2;
174 fra.me.REG[2] = fra.me.REG[2];
175 fra.me.REG[2] = CALL_standard___symbol___String___to_symbol(fra.me.REG[2])(fra.me.REG[2]);
176 fra.me.REG[2] = CALL_standard___environ___Symbol___environ(fra.me.REG[2])(fra.me.REG[2]);
177 once_value_1 = fra.me.REG[2];
178 register_static_object(&once_value_1);
179 } else fra.me.REG[2] = once_value_1;
180 fra.me.REG[2] = fra.me.REG[2];
181 /* mmloader.nit:59 */
182 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
183 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
184 if (UNTAG_Bool(REGB0)) {
185 /* mmloader.nit:60 */
186 fra.me.REG[0] = CALL_mmloader___ToolContext___paths(fra.me.REG[1])(fra.me.REG[1]);
187 REGB0 = TAG_Char(':');
188 fra.me.REG[3] = CALL_standard___string_search___String___split_with(fra.me.REG[2])(fra.me.REG[2], REGB0);
189 CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
190 }
191 /* mmloader.nit:63 */
192 if (!once_value_3) {
193 if (!once_value_4) {
194 fra.me.REG[3] = BOX_NativeString("NIT_DIR");
195 REGB0 = TAG_Int(7);
196 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
197 once_value_4 = fra.me.REG[3];
198 register_static_object(&once_value_4);
199 } else fra.me.REG[3] = once_value_4;
200 fra.me.REG[3] = fra.me.REG[3];
201 fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
202 fra.me.REG[3] = CALL_standard___environ___Symbol___environ(fra.me.REG[3])(fra.me.REG[3]);
203 once_value_3 = fra.me.REG[3];
204 register_static_object(&once_value_3);
205 } else fra.me.REG[3] = once_value_3;
206 fra.me.REG[3] = fra.me.REG[3];
207 fra.me.REG[2] = fra.me.REG[3];
208 /* mmloader.nit:64 */
209 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
210 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
211 if (UNTAG_Bool(REGB0)) {
212 /* mmloader.nit:65 */
213 REGB0 = TAG_Int(3);
214 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
215 if (!once_value_5) {
216 fra.me.REG[0] = BOX_NativeString("");
217 REGB0 = TAG_Int(0);
218 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
219 once_value_5 = fra.me.REG[0];
220 register_static_object(&once_value_5);
221 } else fra.me.REG[0] = once_value_5;
222 fra.me.REG[0] = fra.me.REG[0];
223 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
224 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
225 if (!once_value_6) {
226 fra.me.REG[2] = BOX_NativeString("/lib");
227 REGB0 = TAG_Int(4);
228 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
229 once_value_6 = fra.me.REG[2];
230 register_static_object(&once_value_6);
231 } else fra.me.REG[2] = once_value_6;
232 fra.me.REG[2] = fra.me.REG[2];
233 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
234 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
235 /* mmloader.nit:66 */
236 REGB0 = CALL_standard___file___String___file_exists(fra.me.REG[3])(fra.me.REG[3]);
237 if (UNTAG_Bool(REGB0)) {
238 fra.me.REG[2] = CALL_mmloader___ToolContext___paths(fra.me.REG[1])(fra.me.REG[1]);
239 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
240 }
241 }
242 /* mmloader.nit:69 */
243 REGB0 = TAG_Int(3);
244 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
245 if (!once_value_7) {
246 fra.me.REG[2] = BOX_NativeString("");
247 REGB0 = TAG_Int(0);
248 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
249 once_value_7 = fra.me.REG[2];
250 register_static_object(&once_value_7);
251 } else fra.me.REG[2] = once_value_7;
252 fra.me.REG[2] = fra.me.REG[2];
253 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
254 fra.me.REG[2] = CALL_standard___kernel___Object___sys(fra.me.REG[1])(fra.me.REG[1]);
255 fra.me.REG[2] = CALL_standard___string___Sys___program_name(fra.me.REG[2])(fra.me.REG[2]);
256 fra.me.REG[2] = CALL_standard___file___String___dirname(fra.me.REG[2])(fra.me.REG[2]);
257 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
258 if (!once_value_8) {
259 fra.me.REG[2] = BOX_NativeString("/../lib");
260 REGB0 = TAG_Int(7);
261 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
262 once_value_8 = fra.me.REG[2];
263 register_static_object(&once_value_8);
264 } else fra.me.REG[2] = once_value_8;
265 fra.me.REG[2] = fra.me.REG[2];
266 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
267 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
268 /* mmloader.nit:70 */
269 REGB0 = CALL_standard___file___String___file_exists(fra.me.REG[3])(fra.me.REG[3]);
270 if (UNTAG_Bool(REGB0)) {
271 fra.me.REG[1] = CALL_mmloader___ToolContext___paths(fra.me.REG[1])(fra.me.REG[1]);
272 fra.me.REG[3] = CALL_standard___file___String___simplify_path(fra.me.REG[3])(fra.me.REG[3]);
273 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
274 }
275 stack_frame_head = fra.me.prev;
276 return;
277 }
278 val_t mmloader___ToolContext___try_to_load(val_t p0, val_t p1, val_t p2){
279 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
280 val_t REGB0;
281 val_t REGB1;
282 val_t REGB2;
283 val_t tmp;
284 static val_t once_value_4; /* Once value */
285 static val_t once_value_5; /* Once value */
286 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
287 fra.me.file = LOCATE_mmloader;
288 fra.me.line = 73;
289 fra.me.meth = LOCATE_mmloader___ToolContext___try_to_load;
290 fra.me.has_broke = 0;
291 fra.me.REG_size = 10;
292 fra.me.nitni_local_ref_head = NULL;
293 fra.me.REG[0] = NIT_NULL;
294 fra.me.REG[1] = NIT_NULL;
295 fra.me.REG[2] = NIT_NULL;
296 fra.me.REG[3] = NIT_NULL;
297 fra.me.REG[4] = NIT_NULL;
298 fra.me.REG[5] = NIT_NULL;
299 fra.me.REG[6] = NIT_NULL;
300 fra.me.REG[7] = NIT_NULL;
301 fra.me.REG[8] = NIT_NULL;
302 fra.me.REG[9] = NIT_NULL;
303 fra.me.REG[0] = p0;
304 fra.me.REG[1] = p1;
305 fra.me.REG[2] = p2;
306 /* mmloader.nit:79 */
307 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMDirectory___modules(fra.me.REG[2])(fra.me.REG[2]);
308 fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead___values(fra.me.REG[3])(fra.me.REG[3]);
309 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_mmloader___ToolContext___try_to_load_1));
310 switch ((&(fra.me))->has_broke) {
311 case 0: break;
312 case 1: (&(fra.me))->has_broke = 0; goto label3;
313 }
314 /* mmloader.nit:85 */
315 REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____loaders(fra.me.REG[0])!=NIT_NULL);
316 if (UNTAG_Bool(REGB0)) {
317 } else {
318 nit_abort("Uninitialized attribute %s", "_loaders", LOCATE_mmloader, 85);
319 }
320 fra.me.REG[4] = ATTR_mmloader___ToolContext____loaders(fra.me.REG[0]);
321 /* ../lib/standard/collection/array.nit:269 */
322 REGB0 = TAG_Int(0);
323 /* ../lib/standard/collection/array.nit:270 */
324 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
325 if (UNTAG_Bool(REGB1)) {
326 } else {
327 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
328 }
329 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
330 /* ../lib/standard/collection/array.nit:271 */
331 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
332 /* ../lib/standard/collection/array.nit:272 */
333 while(1) {
334 /* ../lib/standard/collection/array.nit:24 */
335 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
336 if (UNTAG_Bool(REGB1)) {
337 } else {
338 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
339 }
340 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
341 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
342 if (UNTAG_Bool(REGB2)) {
343 } else {
344 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
345 }
346 /* ../lib/standard/kernel.nit:232 */
347 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
348 /* ../lib/standard/collection/array.nit:272 */
349 if (UNTAG_Bool(REGB1)) {
350 /* ../lib/standard/collection/array.nit:273 */
351 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
352 if (UNTAG_Bool(REGB1)) {
353 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
354 }
355 /* ../lib/standard/collection/array.nit:718 */
356 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
357 /* mmloader.nit:86 */
358 fra.me.REG[7] = CALL_mmloader___ModuleLoader___try_to_load_dir(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1], fra.me.REG[2]);
359 /* mmloader.nit:87 */
360 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
361 if (UNTAG_Bool(REGB1)) {
362 } else {
363 REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
364 if (UNTAG_Bool(REGB2)) {
365 REGB2 = TAG_Bool(false);
366 REGB1 = REGB2;
367 } else {
368 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
369 REGB1 = REGB2;
370 }
371 }
372 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
373 if (UNTAG_Bool(REGB1)) {
374 /* mmloader.nit:88 */
375 fra.me.REG[8] = CALL_mmloader___ToolContext___try_to_load(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[7]);
376 /* mmloader.nit:89 */
377 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
378 if (UNTAG_Bool(REGB1)) {
379 } else {
380 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
381 if (UNTAG_Bool(REGB2)) {
382 REGB2 = TAG_Bool(false);
383 REGB1 = REGB2;
384 } else {
385 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
386 REGB1 = REGB2;
387 }
388 }
389 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
390 if (UNTAG_Bool(REGB1)) {
391 /* mmloader.nit:90 */
392 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
393 if (UNTAG_Bool(REGB1)) {
394 nit_abort("Reciever is null", NULL, LOCATE_mmloader, 90);
395 }
396 CALL_metamodel___abstractmetamodel___MMDirectory___owner__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
397 /* mmloader.nit:91 */
398 CALL_metamodel___abstractmetamodel___MMDirectory___add_module(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
399 /* mmloader.nit:92 */
400 fra.me.REG[3] = fra.me.REG[8];
401 goto label3;
402 }
403 }
404 /* mmloader.nit:96 */
405 REGB1 = CALL_mmloader___ModuleLoader___can_handle(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1], fra.me.REG[2]);
406 if (UNTAG_Bool(REGB1)) {
407 /* mmloader.nit:97 */
408 fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMDirectory___full_name_for(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
409 /* mmloader.nit:98 */
410 REGB1 = TAG_Bool(ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0])!=NIT_NULL);
411 if (UNTAG_Bool(REGB1)) {
412 } else {
413 nit_abort("Uninitialized attribute %s", "_processing_modules", LOCATE_mmloader, 98);
414 }
415 fra.me.REG[7] = ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0]);
416 REGB1 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
417 if (UNTAG_Bool(REGB1)) {
418 /* mmloader.nit:100 */
419 REGB1 = TAG_Int(3);
420 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
421 if (!once_value_4) {
422 fra.me.REG[9] = BOX_NativeString("Error: Dependency loop for module ");
423 REGB1 = TAG_Int(34);
424 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
425 once_value_4 = fra.me.REG[9];
426 register_static_object(&once_value_4);
427 } else fra.me.REG[9] = once_value_4;
428 fra.me.REG[9] = fra.me.REG[9];
429 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
430 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
431 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
432 if (!once_value_5) {
433 fra.me.REG[9] = BOX_NativeString("");
434 REGB1 = TAG_Int(0);
435 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
436 once_value_5 = fra.me.REG[9];
437 register_static_object(&once_value_5);
438 } else fra.me.REG[9] = once_value_5;
439 fra.me.REG[9] = fra.me.REG[9];
440 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
441 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
442 CALL_toolcontext___ToolContext___fatal_error(fra.me.REG[0])(fra.me.REG[0], NIT_NULL, fra.me.REG[7]);
443 }
444 /* mmloader.nit:102 */
445 REGB1 = TAG_Bool(ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0])!=NIT_NULL);
446 if (UNTAG_Bool(REGB1)) {
447 } else {
448 nit_abort("Uninitialized attribute %s", "_processing_modules", LOCATE_mmloader, 102);
449 }
450 fra.me.REG[7] = ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0]);
451 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
452 /* mmloader.nit:103 */
453 fra.me.REG[6] = CALL_mmloader___ModuleLoader___load_and_process_module(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
454 /* mmloader.nit:104 */
455 REGB1 = TAG_Bool(ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0])!=NIT_NULL);
456 if (UNTAG_Bool(REGB1)) {
457 } else {
458 nit_abort("Uninitialized attribute %s", "_processing_modules", LOCATE_mmloader, 104);
459 }
460 fra.me.REG[7] = ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0]);
461 CALL_standard___collection___abstract_collection___RemovableCollection___remove(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
462 /* mmloader.nit:106 */
463 CALL_metamodel___abstractmetamodel___MMDirectory___add_module(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
464 /* mmloader.nit:107 */
465 fra.me.REG[3] = fra.me.REG[6];
466 goto label3;
467 }
468 /* ../lib/standard/collection/array.nit:274 */
469 REGB1 = TAG_Int(1);
470 /* ../lib/standard/kernel.nit:235 */
471 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
472 /* ../lib/standard/collection/array.nit:274 */
473 REGB0 = REGB1;
474 } else {
475 /* ../lib/standard/collection/array.nit:272 */
476 goto label6;
477 }
478 }
479 label6: while(0);
480 /* mmloader.nit:110 */
481 fra.me.REG[3] = NIT_NULL;
482 goto label3;
483 label3: while(0);
484 stack_frame_head = fra.me.prev;
485 return fra.me.REG[3];
486 }
487 void OC_mmloader___ToolContext___try_to_load_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
488 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
489 val_t REGB0;
490 val_t REGB1;
491 fun_t CREG[1];
492 val_t tmp;
493 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
494 fra.me.file = LOCATE_mmloader;
495 fra.me.line = 0;
496 fra.me.meth = LOCATE_mmloader___ToolContext___try_to_load;
497 fra.me.has_broke = 0;
498 fra.me.REG_size = 2;
499 fra.me.nitni_local_ref_head = NULL;
500 fra.me.REG[0] = NIT_NULL;
501 fra.me.REG[1] = NIT_NULL;
502 fra.me.closure_ctx = closctx_param;
503 fra.me.closure_funs = CREG;
504 fra.me.REG[0] = p0;
505 CREG[0] = clos_fun0;
506 /* mmloader.nit:80 */
507 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___name(fra.me.REG[0])(fra.me.REG[0]);
508 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],closctx->REG[1]));
509 if (UNTAG_Bool(REGB0)) {
510 } else {
511 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], closctx->REG[1]);
512 REGB0 = REGB1;
513 }
514 if (UNTAG_Bool(REGB0)) {
515 closctx->REG[3] = fra.me.REG[0];
516 closctx->has_broke = 1;
517 goto label2;
518 }
519 label2: while(0);
520 stack_frame_head = fra.me.prev;
521 return;
522 }
523 val_t mmloader___ToolContext___get_module_from_filename(val_t p0, val_t p1){
524 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
525 val_t REGB0;
526 val_t REGB1;
527 val_t tmp;
528 static val_t once_value_1; /* Once value */
529 static val_t once_value_3; /* Once value */
530 static val_t once_value_4; /* Once value */
531 static val_t once_value_5; /* Once value */
532 static val_t once_value_6; /* Once value */
533 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
534 fra.me.file = LOCATE_mmloader;
535 fra.me.line = 117;
536 fra.me.meth = LOCATE_mmloader___ToolContext___get_module_from_filename;
537 fra.me.has_broke = 0;
538 fra.me.REG_size = 7;
539 fra.me.nitni_local_ref_head = NULL;
540 fra.me.REG[0] = NIT_NULL;
541 fra.me.REG[1] = NIT_NULL;
542 fra.me.REG[2] = NIT_NULL;
543 fra.me.REG[3] = NIT_NULL;
544 fra.me.REG[4] = NIT_NULL;
545 fra.me.REG[5] = NIT_NULL;
546 fra.me.REG[6] = NIT_NULL;
547 fra.me.REG[0] = p0;
548 fra.me.REG[1] = p1;
549 /* mmloader.nit:122 */
550 fra.me.REG[2] = CALL_standard___file___String___dirname(fra.me.REG[1])(fra.me.REG[1]);
551 /* mmloader.nit:123 */
552 if (!once_value_1) {
553 fra.me.REG[3] = BOX_NativeString(".nit");
554 REGB0 = TAG_Int(4);
555 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
556 once_value_1 = fra.me.REG[3];
557 register_static_object(&once_value_1);
558 } else fra.me.REG[3] = once_value_1;
559 fra.me.REG[3] = fra.me.REG[3];
560 fra.me.REG[3] = CALL_standard___file___String___basename(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
561 fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
562 /* mmloader.nit:125 */
563 fra.me.REG[2] = CALL_mmloader___ToolContext___directory_for(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
564 /* mmloader.nit:127 */
565 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
566 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[4],fra.me.REG[1]));
567 if (UNTAG_Bool(REGB0)) {
568 } else {
569 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
570 REGB0 = REGB1;
571 }
572 if (UNTAG_Bool(REGB0)) {
573 /* mmloader.nit:130 */
574 fra.me.REG[4] = CALL_mmloader___ToolContext___try_to_load(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
575 /* mmloader.nit:131 */
576 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
577 if (UNTAG_Bool(REGB0)) {
578 } else {
579 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
580 if (UNTAG_Bool(REGB1)) {
581 REGB1 = TAG_Bool(false);
582 REGB0 = REGB1;
583 } else {
584 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
585 REGB0 = REGB1;
586 }
587 }
588 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
589 if (UNTAG_Bool(REGB0)) {
590 goto label2;
591 }
592 /* mmloader.nit:134 */
593 fra.me.REG[5] = CALL_mmloader___ToolContext___get_module(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], NIT_NULL);
594 fra.me.REG[4] = fra.me.REG[5];
595 goto label2;
596 }
597 /* mmloader.nit:137 */
598 REGB0 = CALL_standard___file___String___file_exists(fra.me.REG[1])(fra.me.REG[1]);
599 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
600 if (UNTAG_Bool(REGB0)) {
601 /* mmloader.nit:138 */
602 REGB0 = TAG_Int(3);
603 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
604 if (!once_value_3) {
605 fra.me.REG[6] = BOX_NativeString("Error: File ");
606 REGB0 = TAG_Int(12);
607 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
608 once_value_3 = fra.me.REG[6];
609 register_static_object(&once_value_3);
610 } else fra.me.REG[6] = once_value_3;
611 fra.me.REG[6] = fra.me.REG[6];
612 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
613 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
614 if (!once_value_4) {
615 fra.me.REG[6] = BOX_NativeString(" not found.");
616 REGB0 = TAG_Int(11);
617 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
618 once_value_4 = fra.me.REG[6];
619 register_static_object(&once_value_4);
620 } else fra.me.REG[6] = once_value_4;
621 fra.me.REG[6] = fra.me.REG[6];
622 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
623 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
624 CALL_toolcontext___ToolContext___fatal_error(fra.me.REG[0])(fra.me.REG[0], NIT_NULL, fra.me.REG[5]);
625 /* mmloader.nit:139 */
626 nit_abort("Aborted", NULL, LOCATE_mmloader, 139);
627 }
628 /* mmloader.nit:143 */
629 fra.me.REG[2] = CALL_mmloader___ToolContext___try_to_load(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
630 /* mmloader.nit:144 */
631 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
632 if (UNTAG_Bool(REGB0)) {
633 } else {
634 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
635 if (UNTAG_Bool(REGB1)) {
636 REGB1 = TAG_Bool(false);
637 REGB0 = REGB1;
638 } else {
639 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
640 REGB0 = REGB1;
641 }
642 }
643 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
644 if (UNTAG_Bool(REGB0)) {
645 fra.me.REG[4] = fra.me.REG[2];
646 goto label2;
647 }
648 /* mmloader.nit:146 */
649 REGB0 = TAG_Int(3);
650 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
651 if (!once_value_5) {
652 fra.me.REG[3] = BOX_NativeString("Error: ");
653 REGB0 = TAG_Int(7);
654 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
655 once_value_5 = fra.me.REG[3];
656 register_static_object(&once_value_5);
657 } else fra.me.REG[3] = once_value_5;
658 fra.me.REG[3] = fra.me.REG[3];
659 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
660 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
661 if (!once_value_6) {
662 fra.me.REG[1] = BOX_NativeString(" is not a NIT source module.");
663 REGB0 = TAG_Int(28);
664 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
665 once_value_6 = fra.me.REG[1];
666 register_static_object(&once_value_6);
667 } else fra.me.REG[1] = once_value_6;
668 fra.me.REG[1] = fra.me.REG[1];
669 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
670 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
671 CALL_toolcontext___ToolContext___fatal_error(fra.me.REG[0])(fra.me.REG[0], NIT_NULL, fra.me.REG[2]);
672 /* mmloader.nit:147 */
673 nit_abort("Aborted", NULL, LOCATE_mmloader, 147);
674 label2: while(0);
675 stack_frame_head = fra.me.prev;
676 return fra.me.REG[4];
677 }
678 val_t mmloader___ToolContext___get_module(val_t p0, val_t p1, val_t p2){
679 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
680 val_t REGB0;
681 val_t REGB1;
682 val_t REGB2;
683 val_t tmp;
684 static val_t once_value_4; /* Once value */
685 static val_t once_value_5; /* Once value */
686 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
687 fra.me.file = LOCATE_mmloader;
688 fra.me.line = 150;
689 fra.me.meth = LOCATE_mmloader___ToolContext___get_module;
690 fra.me.has_broke = 0;
691 fra.me.REG_size = 6;
692 fra.me.nitni_local_ref_head = NULL;
693 fra.me.REG[0] = NIT_NULL;
694 fra.me.REG[1] = NIT_NULL;
695 fra.me.REG[2] = NIT_NULL;
696 fra.me.REG[3] = NIT_NULL;
697 fra.me.REG[4] = NIT_NULL;
698 fra.me.REG[5] = NIT_NULL;
699 fra.me.REG[0] = p0;
700 fra.me.REG[1] = p1;
701 fra.me.REG[2] = p2;
702 /* mmloader.nit:154 */
703 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
704 if (UNTAG_Bool(REGB0)) {
705 } else {
706 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
707 if (UNTAG_Bool(REGB1)) {
708 REGB1 = TAG_Bool(false);
709 REGB0 = REGB1;
710 } else {
711 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
712 REGB0 = REGB1;
713 }
714 }
715 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
716 if (UNTAG_Bool(REGB0)) {
717 /* mmloader.nit:155 */
718 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
719 if (UNTAG_Bool(REGB0)) {
720 nit_abort("Reciever is null", NULL, LOCATE_mmloader, 155);
721 }
722 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMModule___directory(fra.me.REG[2])(fra.me.REG[2]);
723 /* mmloader.nit:156 */
724 while(1) {
725 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
726 if (UNTAG_Bool(REGB0)) {
727 } else {
728 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
729 if (UNTAG_Bool(REGB1)) {
730 REGB1 = TAG_Bool(false);
731 REGB0 = REGB1;
732 } else {
733 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
734 REGB0 = REGB1;
735 }
736 }
737 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
738 if (UNTAG_Bool(REGB0)) {
739 /* mmloader.nit:157 */
740 fra.me.REG[3] = CALL_mmloader___ToolContext___try_to_load(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
741 /* mmloader.nit:158 */
742 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
743 if (UNTAG_Bool(REGB0)) {
744 } else {
745 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
746 if (UNTAG_Bool(REGB1)) {
747 REGB1 = TAG_Bool(false);
748 REGB0 = REGB1;
749 } else {
750 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
751 REGB0 = REGB1;
752 }
753 }
754 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
755 if (UNTAG_Bool(REGB0)) {
756 goto label1;
757 }
758 /* mmloader.nit:159 */
759 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
760 if (UNTAG_Bool(REGB0)) {
761 nit_abort("Reciever is null", NULL, LOCATE_mmloader, 159);
762 }
763 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMDirectory___parent(fra.me.REG[2])(fra.me.REG[2]);
764 fra.me.REG[2] = fra.me.REG[4];
765 } else {
766 /* mmloader.nit:156 */
767 goto label2;
768 }
769 }
770 label2: while(0);
771 }
772 /* mmloader.nit:163 */
773 fra.me.REG[2] = CALL_mmloader___ToolContext___paths(fra.me.REG[0])(fra.me.REG[0]);
774 /* ../lib/standard/collection/array.nit:269 */
775 REGB0 = TAG_Int(0);
776 /* ../lib/standard/collection/array.nit:270 */
777 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
778 if (UNTAG_Bool(REGB1)) {
779 } else {
780 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
781 }
782 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
783 /* ../lib/standard/collection/array.nit:271 */
784 fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
785 /* ../lib/standard/collection/array.nit:272 */
786 while(1) {
787 /* ../lib/standard/collection/array.nit:24 */
788 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
789 if (UNTAG_Bool(REGB1)) {
790 } else {
791 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
792 }
793 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
794 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
795 if (UNTAG_Bool(REGB2)) {
796 } else {
797 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
798 }
799 /* ../lib/standard/kernel.nit:232 */
800 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
801 /* ../lib/standard/collection/array.nit:272 */
802 if (UNTAG_Bool(REGB1)) {
803 /* ../lib/standard/collection/array.nit:273 */
804 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
805 if (UNTAG_Bool(REGB1)) {
806 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
807 }
808 /* ../lib/standard/collection/array.nit:718 */
809 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
810 /* mmloader.nit:164 */
811 fra.me.REG[5] = CALL_mmloader___ToolContext___directory_for(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
812 fra.me.REG[5] = CALL_mmloader___ToolContext___try_to_load(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[5]);
813 /* mmloader.nit:165 */
814 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
815 if (UNTAG_Bool(REGB1)) {
816 } else {
817 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
818 if (UNTAG_Bool(REGB2)) {
819 REGB2 = TAG_Bool(false);
820 REGB1 = REGB2;
821 } else {
822 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
823 REGB1 = REGB2;
824 }
825 }
826 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
827 if (UNTAG_Bool(REGB1)) {
828 fra.me.REG[3] = fra.me.REG[5];
829 goto label1;
830 }
831 /* ../lib/standard/collection/array.nit:274 */
832 REGB1 = TAG_Int(1);
833 /* ../lib/standard/kernel.nit:235 */
834 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
835 /* ../lib/standard/collection/array.nit:274 */
836 REGB0 = REGB1;
837 } else {
838 /* ../lib/standard/collection/array.nit:272 */
839 goto label3;
840 }
841 }
842 label3: while(0);
843 /* mmloader.nit:168 */
844 REGB0 = TAG_Int(3);
845 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
846 if (!once_value_4) {
847 fra.me.REG[2] = BOX_NativeString("Error: No ressource found for module ");
848 REGB0 = TAG_Int(37);
849 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
850 once_value_4 = fra.me.REG[2];
851 register_static_object(&once_value_4);
852 } else fra.me.REG[2] = once_value_4;
853 fra.me.REG[2] = fra.me.REG[2];
854 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
855 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
856 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
857 if (!once_value_5) {
858 fra.me.REG[1] = BOX_NativeString(".");
859 REGB0 = TAG_Int(1);
860 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
861 once_value_5 = fra.me.REG[1];
862 register_static_object(&once_value_5);
863 } else fra.me.REG[1] = once_value_5;
864 fra.me.REG[1] = fra.me.REG[1];
865 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
866 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
867 CALL_toolcontext___ToolContext___fatal_error(fra.me.REG[0])(fra.me.REG[0], NIT_NULL, fra.me.REG[4]);
868 /* mmloader.nit:169 */
869 nit_abort("Aborted", NULL, LOCATE_mmloader, 169);
870 label1: while(0);
871 stack_frame_head = fra.me.prev;
872 return fra.me.REG[3];
873 }
874 val_t mmloader___ToolContext___directory_for(val_t p0, val_t p1){
875 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
876 val_t REGB0;
877 val_t tmp;
878 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
879 fra.me.file = LOCATE_mmloader;
880 fra.me.line = 172;
881 fra.me.meth = LOCATE_mmloader___ToolContext___directory_for;
882 fra.me.has_broke = 0;
883 fra.me.REG_size = 4;
884 fra.me.nitni_local_ref_head = NULL;
885 fra.me.REG[0] = NIT_NULL;
886 fra.me.REG[1] = NIT_NULL;
887 fra.me.REG[2] = NIT_NULL;
888 fra.me.REG[3] = NIT_NULL;
889 fra.me.REG[0] = p0;
890 fra.me.REG[1] = p1;
891 /* mmloader.nit:175 */
892 REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0])!=NIT_NULL);
893 if (UNTAG_Bool(REGB0)) {
894 } else {
895 nit_abort("Uninitialized attribute %s", "_path_dirs", LOCATE_mmloader, 175);
896 }
897 fra.me.REG[2] = ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0]);
898 REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
899 if (UNTAG_Bool(REGB0)) {
900 REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0])!=NIT_NULL);
901 if (UNTAG_Bool(REGB0)) {
902 } else {
903 nit_abort("Uninitialized attribute %s", "_path_dirs", LOCATE_mmloader, 175);
904 }
905 fra.me.REG[2] = ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0]);
906 fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
907 goto label1;
908 }
909 /* mmloader.nit:176 */
910 fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
911 fra.me.REG[3] = NEW_MMDirectory_metamodel___abstractmetamodel___MMDirectory___init(fra.me.REG[3], fra.me.REG[1], NIT_NULL);
912 /* mmloader.nit:177 */
913 REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0])!=NIT_NULL);
914 if (UNTAG_Bool(REGB0)) {
915 } else {
916 nit_abort("Uninitialized attribute %s", "_path_dirs", LOCATE_mmloader, 177);
917 }
918 fra.me.REG[0] = ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0]);
919 CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
920 /* mmloader.nit:178 */
921 fra.me.REG[2] = fra.me.REG[3];
922 goto label1;
923 label1: while(0);
924 stack_frame_head = fra.me.prev;
925 return fra.me.REG[2];
926 }
927 void mmloader___ToolContext___register_loader(val_t p0, val_t p1){
928 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
929 val_t REGB0;
930 val_t tmp;
931 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
932 fra.me.file = LOCATE_mmloader;
933 fra.me.line = 184;
934 fra.me.meth = LOCATE_mmloader___ToolContext___register_loader;
935 fra.me.has_broke = 0;
936 fra.me.REG_size = 2;
937 fra.me.nitni_local_ref_head = NULL;
938 fra.me.REG[0] = NIT_NULL;
939 fra.me.REG[1] = NIT_NULL;
940 fra.me.REG[0] = p0;
941 fra.me.REG[1] = p1;
942 /* mmloader.nit:185 */
943 REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____loaders(fra.me.REG[0])!=NIT_NULL);
944 if (UNTAG_Bool(REGB0)) {
945 } else {
946 nit_abort("Uninitialized attribute %s", "_loaders", LOCATE_mmloader, 185);
947 }
948 fra.me.REG[0] = ATTR_mmloader___ToolContext____loaders(fra.me.REG[0]);
949 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
950 stack_frame_head = fra.me.prev;
951 return;
952 }
953 val_t mmloader___ModuleLoader___file_type(val_t p0){
954 struct {struct stack_frame_t me;} fra;
955 val_t tmp;
956 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
957 fra.me.file = LOCATE_mmloader;
958 fra.me.line = 193;
959 fra.me.meth = LOCATE_mmloader___ModuleLoader___file_type;
960 fra.me.has_broke = 0;
961 fra.me.REG_size = 0;
962 fra.me.nitni_local_ref_head = NULL;
963 /* mmloader.nit:193 */
964 nit_abort("Deferred method called", NULL, LOCATE_mmloader, 193);
965 stack_frame_head = fra.me.prev;
966 return NIT_NULL;
967 }
968 val_t mmloader___ModuleLoader___try_to_load_dir(val_t p0, val_t p1, val_t p2){
969 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
970 val_t REGB0;
971 val_t tmp;
972 static val_t once_value_1; /* Once value */
973 static val_t once_value_2; /* Once value */
974 static val_t once_value_3; /* Once value */
975 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
976 fra.me.file = LOCATE_mmloader;
977 fra.me.line = 196;
978 fra.me.meth = LOCATE_mmloader___ModuleLoader___try_to_load_dir;
979 fra.me.has_broke = 0;
980 fra.me.REG_size = 4;
981 fra.me.nitni_local_ref_head = NULL;
982 fra.me.REG[0] = NIT_NULL;
983 fra.me.REG[1] = NIT_NULL;
984 fra.me.REG[2] = NIT_NULL;
985 fra.me.REG[3] = NIT_NULL;
986 fra.me.REG[0] = p0;
987 fra.me.REG[1] = p1;
988 fra.me.REG[2] = p2;
989 /* mmloader.nit:199 */
990 REGB0 = TAG_Int(5);
991 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
992 if (!once_value_1) {
993 fra.me.REG[3] = BOX_NativeString("");
994 REGB0 = TAG_Int(0);
995 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
996 once_value_1 = fra.me.REG[3];
997 register_static_object(&once_value_1);
998 } else fra.me.REG[3] = once_value_1;
999 fra.me.REG[3] = fra.me.REG[3];
1000 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
1001 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMDirectory___path(fra.me.REG[2])(fra.me.REG[2]);
1002 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
1003 if (!once_value_2) {
1004 fra.me.REG[3] = BOX_NativeString("/");
1005 REGB0 = TAG_Int(1);
1006 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
1007 once_value_2 = fra.me.REG[3];
1008 register_static_object(&once_value_2);
1009 } else fra.me.REG[3] = once_value_2;
1010 fra.me.REG[3] = fra.me.REG[3];
1011 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
1012 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
1013 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
1014 if (!once_value_3) {
1015 fra.me.REG[3] = BOX_NativeString("");
1016 REGB0 = TAG_Int(0);
1017 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
1018 once_value_3 = fra.me.REG[3];
1019 register_static_object(&once_value_3);
1020 } else fra.me.REG[3] = once_value_3;
1021 fra.me.REG[3] = fra.me.REG[3];
1022 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
1023 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
1024 /* mmloader.nit:200 */
1025 REGB0 = CALL_standard___file___String___file_exists(fra.me.REG[0])(fra.me.REG[0]);
1026 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1027 if (UNTAG_Bool(REGB0)) {
1028 fra.me.REG[3] = NIT_NULL;
1029 goto label4;
1030 }
1031 /* mmloader.nit:202 */
1032 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMDirectory___full_name_for(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1033 fra.me.REG[2] = NEW_MMDirectory_metamodel___abstractmetamodel___MMDirectory___init(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
1034 /* mmloader.nit:203 */
1035 fra.me.REG[3] = fra.me.REG[2];
1036 goto label4;
1037 label4: while(0);
1038 stack_frame_head = fra.me.prev;
1039 return fra.me.REG[3];
1040 }
1041 val_t mmloader___ModuleLoader___can_handle(val_t p0, val_t p1, val_t p2){
1042 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1043 val_t REGB0;
1044 val_t REGB1;
1045 val_t tmp;
1046 static val_t once_value_1; /* Once value */
1047 static val_t once_value_2; /* Once value */
1048 static val_t once_value_3; /* Once value */
1049 static val_t once_value_4; /* Once value */
1050 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1051 fra.me.file = LOCATE_mmloader;
1052 fra.me.line = 206;
1053 fra.me.meth = LOCATE_mmloader___ModuleLoader___can_handle;
1054 fra.me.has_broke = 0;
1055 fra.me.REG_size = 5;
1056 fra.me.nitni_local_ref_head = NULL;
1057 fra.me.REG[0] = NIT_NULL;
1058 fra.me.REG[1] = NIT_NULL;
1059 fra.me.REG[2] = NIT_NULL;
1060 fra.me.REG[3] = NIT_NULL;
1061 fra.me.REG[4] = NIT_NULL;
1062 fra.me.REG[0] = p0;
1063 fra.me.REG[1] = p1;
1064 fra.me.REG[2] = p2;
1065 /* mmloader.nit:210 */
1066 REGB0 = TAG_Int(7);
1067 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1068 if (!once_value_1) {
1069 fra.me.REG[4] = BOX_NativeString("");
1070 REGB0 = TAG_Int(0);
1071 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
1072 once_value_1 = fra.me.REG[4];
1073 register_static_object(&once_value_1);
1074 } else fra.me.REG[4] = once_value_1;
1075 fra.me.REG[4] = fra.me.REG[4];
1076 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1077 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMDirectory___path(fra.me.REG[2])(fra.me.REG[2]);
1078 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1079 if (!once_value_2) {
1080 fra.me.REG[2] = BOX_NativeString("/");
1081 REGB0 = TAG_Int(1);
1082 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
1083 once_value_2 = fra.me.REG[2];
1084 register_static_object(&once_value_2);
1085 } else fra.me.REG[2] = once_value_2;
1086 fra.me.REG[2] = fra.me.REG[2];
1087 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1088 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
1089 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
1090 if (!once_value_3) {
1091 fra.me.REG[1] = BOX_NativeString(".");
1092 REGB0 = TAG_Int(1);
1093 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
1094 once_value_3 = fra.me.REG[1];
1095 register_static_object(&once_value_3);
1096 } else fra.me.REG[1] = once_value_3;
1097 fra.me.REG[1] = fra.me.REG[1];
1098 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
1099 fra.me.REG[0] = CALL_mmloader___ModuleLoader___file_type(fra.me.REG[0])(fra.me.REG[0]);
1100 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
1101 if (!once_value_4) {
1102 fra.me.REG[0] = BOX_NativeString("");
1103 REGB0 = TAG_Int(0);
1104 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
1105 once_value_4 = fra.me.REG[0];
1106 register_static_object(&once_value_4);
1107 } else fra.me.REG[0] = once_value_4;
1108 fra.me.REG[0] = fra.me.REG[0];
1109 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
1110 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
1111 /* mmloader.nit:211 */
1112 REGB0 = CALL_standard___file___String___file_exists(fra.me.REG[3])(fra.me.REG[3]);
1113 if (UNTAG_Bool(REGB0)) {
1114 REGB0 = TAG_Bool(true);
1115 goto label5;
1116 }
1117 /* mmloader.nit:212 */
1118 REGB1 = TAG_Bool(false);
1119 REGB0 = REGB1;
1120 goto label5;
1121 label5: while(0);
1122 stack_frame_head = fra.me.prev;
1123 return REGB0;
1124 }
1125 val_t mmloader___ModuleLoader___load_and_process_module(val_t p0, val_t p1, val_t p2, val_t p3){
1126 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
1127 val_t REGB0;
1128 val_t tmp;
1129 static val_t once_value_1; /* Once value */
1130 static val_t once_value_2; /* Once value */
1131 static val_t once_value_3; /* Once value */
1132 static val_t once_value_4; /* Once value */
1133 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1134 fra.me.file = LOCATE_mmloader;
1135 fra.me.line = 215;
1136 fra.me.meth = LOCATE_mmloader___ModuleLoader___load_and_process_module;
1137 fra.me.has_broke = 0;
1138 fra.me.REG_size = 6;
1139 fra.me.nitni_local_ref_head = NULL;
1140 fra.me.REG[0] = NIT_NULL;
1141 fra.me.REG[1] = NIT_NULL;
1142 fra.me.REG[2] = NIT_NULL;
1143 fra.me.REG[3] = NIT_NULL;
1144 fra.me.REG[4] = NIT_NULL;
1145 fra.me.REG[5] = NIT_NULL;
1146 fra.me.REG[0] = p0;
1147 fra.me.REG[1] = p1;
1148 fra.me.REG[2] = p2;
1149 fra.me.REG[3] = p3;
1150 /* mmloader.nit:219 */
1151 REGB0 = TAG_Int(7);
1152 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1153 if (!once_value_1) {
1154 fra.me.REG[5] = BOX_NativeString("");
1155 REGB0 = TAG_Int(0);
1156 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
1157 once_value_1 = fra.me.REG[5];
1158 register_static_object(&once_value_1);
1159 } else fra.me.REG[5] = once_value_1;
1160 fra.me.REG[5] = fra.me.REG[5];
1161 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1162 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMDirectory___path(fra.me.REG[3])(fra.me.REG[3]);
1163 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1164 if (!once_value_2) {
1165 fra.me.REG[5] = BOX_NativeString("/");
1166 REGB0 = TAG_Int(1);
1167 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
1168 once_value_2 = fra.me.REG[5];
1169 register_static_object(&once_value_2);
1170 } else fra.me.REG[5] = once_value_2;
1171 fra.me.REG[5] = fra.me.REG[5];
1172 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1173 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
1174 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1175 if (!once_value_3) {
1176 fra.me.REG[5] = BOX_NativeString(".");
1177 REGB0 = TAG_Int(1);
1178 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
1179 once_value_3 = fra.me.REG[5];
1180 register_static_object(&once_value_3);
1181 } else fra.me.REG[5] = once_value_3;
1182 fra.me.REG[5] = fra.me.REG[5];
1183 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1184 fra.me.REG[5] = CALL_mmloader___ModuleLoader___file_type(fra.me.REG[0])(fra.me.REG[0]);
1185 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1186 if (!once_value_4) {
1187 fra.me.REG[5] = BOX_NativeString("");
1188 REGB0 = TAG_Int(0);
1189 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
1190 once_value_4 = fra.me.REG[5];
1191 register_static_object(&once_value_4);
1192 } else fra.me.REG[5] = once_value_4;
1193 fra.me.REG[5] = fra.me.REG[5];
1194 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1195 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
1196 fra.me.REG[4] = CALL_standard___file___String___simplify_path(fra.me.REG[4])(fra.me.REG[4]);
1197 /* mmloader.nit:220 */
1198 fra.me.REG[4] = CALL_mmloader___ModuleLoader___load_module(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4]);
1199 /* mmloader.nit:221 */
1200 fra.me.REG[3] = CALL_mmloader___ToolContext___opt_only_parse(fra.me.REG[1])(fra.me.REG[1]);
1201 fra.me.REG[3] = CALL_opts___Option___value(fra.me.REG[3])(fra.me.REG[3]);
1202 REGB0 = TAG_Bool(!UNTAG_Bool(fra.me.REG[3]));
1203 if (UNTAG_Bool(REGB0)) {
1204 CALL_mmloader___ModuleLoader___process_metamodel(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[4]);
1205 }
1206 /* mmloader.nit:222 */
1207 goto label5;
1208 label5: while(0);
1209 stack_frame_head = fra.me.prev;
1210 return fra.me.REG[4];
1211 }
1212 val_t mmloader___ModuleLoader___load_module(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
1213 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
1214 val_t REGB0;
1215 val_t REGB1;
1216 val_t tmp;
1217 static val_t once_value_1; /* Once value */
1218 static val_t once_value_2; /* Once value */
1219 static val_t once_value_3; /* Once value */
1220 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1221 fra.me.file = LOCATE_mmloader;
1222 fra.me.line = 225;
1223 fra.me.meth = LOCATE_mmloader___ModuleLoader___load_module;
1224 fra.me.has_broke = 0;
1225 fra.me.REG_size = 8;
1226 fra.me.nitni_local_ref_head = NULL;
1227 fra.me.REG[0] = NIT_NULL;
1228 fra.me.REG[1] = NIT_NULL;
1229 fra.me.REG[2] = NIT_NULL;
1230 fra.me.REG[3] = NIT_NULL;
1231 fra.me.REG[4] = NIT_NULL;
1232 fra.me.REG[5] = NIT_NULL;
1233 fra.me.REG[6] = NIT_NULL;
1234 fra.me.REG[7] = NIT_NULL;
1235 fra.me.REG[0] = p0;
1236 fra.me.REG[1] = p1;
1237 fra.me.REG[2] = p2;
1238 fra.me.REG[3] = p3;
1239 fra.me.REG[4] = p4;
1240 /* mmloader.nit:229 */
1241 if (!once_value_1) {
1242 fra.me.REG[5] = BOX_NativeString("-");
1243 REGB0 = TAG_Int(1);
1244 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
1245 once_value_1 = fra.me.REG[5];
1246 register_static_object(&once_value_1);
1247 } else fra.me.REG[5] = once_value_1;
1248 fra.me.REG[5] = fra.me.REG[5];
1249 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[4],fra.me.REG[5]));
1250 if (UNTAG_Bool(REGB0)) {
1251 } else {
1252 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1253 REGB0 = REGB1;
1254 }
1255 if (UNTAG_Bool(REGB0)) {
1256 /* mmloader.nit:230 */
1257 fra.me.REG[5] = CALL_standard___file___Object___stdin(fra.me.REG[0])(fra.me.REG[0]);
1258 } else {
1259 /* mmloader.nit:232 */
1260 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
1261 fra.me.REG[6] = NEW_IFStream_standard___file___IFStream___open(fra.me.REG[6]);
1262 fra.me.REG[5] = fra.me.REG[6];
1263 }
1264 /* mmloader.nit:235 */
1265 REGB0 = CALL_standard___stream___IStream___eof(fra.me.REG[5])(fra.me.REG[5]);
1266 if (UNTAG_Bool(REGB0)) {
1267 /* mmloader.nit:236 */
1268 REGB0 = TAG_Int(3);
1269 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1270 if (!once_value_2) {
1271 fra.me.REG[7] = BOX_NativeString("Error: Problem in opening file ");
1272 REGB0 = TAG_Int(31);
1273 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
1274 once_value_2 = fra.me.REG[7];
1275 register_static_object(&once_value_2);
1276 } else fra.me.REG[7] = once_value_2;
1277 fra.me.REG[7] = fra.me.REG[7];
1278 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
1279 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
1280 if (!once_value_3) {
1281 fra.me.REG[7] = BOX_NativeString("");
1282 REGB0 = TAG_Int(0);
1283 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
1284 once_value_3 = fra.me.REG[7];
1285 register_static_object(&once_value_3);
1286 } else fra.me.REG[7] = once_value_3;
1287 fra.me.REG[7] = fra.me.REG[7];
1288 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
1289 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
1290 CALL_toolcontext___ToolContext___fatal_error(fra.me.REG[1])(fra.me.REG[1], NIT_NULL, fra.me.REG[6]);
1291 }
1292 /* mmloader.nit:238 */
1293 fra.me.REG[3] = CALL_mmloader___ModuleLoader___parse_file(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[5], fra.me.REG[4], fra.me.REG[2], fra.me.REG[3]);
1294 /* mmloader.nit:239 */
1295 fra.me.REG[0] = CALL_standard___file___Object___stdin(fra.me.REG[0])(fra.me.REG[0]);
1296 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[5],fra.me.REG[0]));
1297 if (UNTAG_Bool(REGB0)) {
1298 } else {
1299 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
1300 REGB0 = REGB1;
1301 }
1302 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1303 if (UNTAG_Bool(REGB0)) {
1304 CALL_standard___stream___IOS___close(fra.me.REG[5])(fra.me.REG[5]);
1305 }
1306 /* mmloader.nit:240 */
1307 goto label4;
1308 label4: while(0);
1309 stack_frame_head = fra.me.prev;
1310 return fra.me.REG[3];
1311 }
1312 val_t mmloader___ModuleLoader___parse_file(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5){
1313 struct {struct stack_frame_t me;} fra;
1314 val_t tmp;
1315 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1316 fra.me.file = LOCATE_mmloader;
1317 fra.me.line = 243;
1318 fra.me.meth = LOCATE_mmloader___ModuleLoader___parse_file;
1319 fra.me.has_broke = 0;
1320 fra.me.REG_size = 0;
1321 fra.me.nitni_local_ref_head = NULL;
1322 /* mmloader.nit:243 */
1323 nit_abort("Deferred method called", NULL, LOCATE_mmloader, 243);
1324 stack_frame_head = fra.me.prev;
1325 return NIT_NULL;
1326 }
1327 void mmloader___ModuleLoader___process_metamodel(val_t p0, val_t p1, val_t p2){
1328 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1329 val_t REGB0;
1330 val_t tmp;
1331 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1332 fra.me.file = LOCATE_mmloader;
1333 fra.me.line = 246;
1334 fra.me.meth = LOCATE_mmloader___ModuleLoader___process_metamodel;
1335 fra.me.has_broke = 0;
1336 fra.me.REG_size = 2;
1337 fra.me.nitni_local_ref_head = NULL;
1338 fra.me.REG[0] = NIT_NULL;
1339 fra.me.REG[1] = NIT_NULL;
1340 fra.me.REG[0] = p0;
1341 fra.me.REG[1] = p2;
1342 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], VTCOLOR_mmloader___ModuleLoader___MODULE(fra.me.REG[0]), VTID_mmloader___ModuleLoader___MODULE(fra.me.REG[0]))) /*cast MODULE*/;
1343 if (UNTAG_Bool(REGB0)) {
1344 } else {
1345 nit_abort("Cast failed", NULL, LOCATE_mmloader, 0);
1346 }
1347 /* mmloader.nit:246 */
1348 nit_abort("Deferred method called", NULL, LOCATE_mmloader, 246);
1349 stack_frame_head = fra.me.prev;
1350 return;
1351 }