c_src: update
[nit.git] / c_src / abstract_compiler.sep.1.c
1 #include "abstract_compiler.sep.0.h"
2 /* method abstract_compiler#ToolContext#opt_output for (self: ToolContext): OptionString */
3 val* abstract_compiler__ToolContext__opt_output(val* self) {
4 val* var /* : OptionString */;
5 val* var1 /* : OptionString */;
6 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_output].val; /* _opt_output on <self:ToolContext> */
7 if (unlikely(var1 == NULL)) {
8 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_output");
9 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 28);
10 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method abstract_compiler#ToolContext#opt_output for (self: Object): OptionString */
17 val* VIRTUAL_abstract_compiler__ToolContext__opt_output(val* self) {
18 val* var /* : OptionString */;
19 val* var1 /* : OptionString */;
20 val* var3 /* : OptionString */;
21 { /* Inline abstract_compiler#ToolContext#opt_output (self) on <self:Object(ToolContext)> */
22 var3 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_output].val; /* _opt_output on <self:Object(ToolContext)> */
23 if (unlikely(var3 == NULL)) {
24 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_output");
25 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 28);
26 show_backtrace(1);
27 }
28 var1 = var3;
29 RET_LABEL2:(void)0;
30 }
31 var = var1;
32 RET_LABEL:;
33 return var;
34 }
35 /* method abstract_compiler#ToolContext#opt_dir for (self: ToolContext): OptionString */
36 val* abstract_compiler__ToolContext__opt_dir(val* self) {
37 val* var /* : OptionString */;
38 val* var1 /* : OptionString */;
39 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_dir].val; /* _opt_dir on <self:ToolContext> */
40 if (unlikely(var1 == NULL)) {
41 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_dir");
42 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 30);
43 show_backtrace(1);
44 }
45 var = var1;
46 RET_LABEL:;
47 return var;
48 }
49 /* method abstract_compiler#ToolContext#opt_dir for (self: Object): OptionString */
50 val* VIRTUAL_abstract_compiler__ToolContext__opt_dir(val* self) {
51 val* var /* : OptionString */;
52 val* var1 /* : OptionString */;
53 val* var3 /* : OptionString */;
54 { /* Inline abstract_compiler#ToolContext#opt_dir (self) on <self:Object(ToolContext)> */
55 var3 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_dir].val; /* _opt_dir on <self:Object(ToolContext)> */
56 if (unlikely(var3 == NULL)) {
57 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_dir");
58 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 30);
59 show_backtrace(1);
60 }
61 var1 = var3;
62 RET_LABEL2:(void)0;
63 }
64 var = var1;
65 RET_LABEL:;
66 return var;
67 }
68 /* method abstract_compiler#ToolContext#opt_no_cc for (self: ToolContext): OptionBool */
69 val* abstract_compiler__ToolContext__opt_no_cc(val* self) {
70 val* var /* : OptionBool */;
71 val* var1 /* : OptionBool */;
72 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_cc].val; /* _opt_no_cc on <self:ToolContext> */
73 if (unlikely(var1 == NULL)) {
74 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_cc");
75 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 32);
76 show_backtrace(1);
77 }
78 var = var1;
79 RET_LABEL:;
80 return var;
81 }
82 /* method abstract_compiler#ToolContext#opt_no_cc for (self: Object): OptionBool */
83 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_cc(val* self) {
84 val* var /* : OptionBool */;
85 val* var1 /* : OptionBool */;
86 val* var3 /* : OptionBool */;
87 { /* Inline abstract_compiler#ToolContext#opt_no_cc (self) on <self:Object(ToolContext)> */
88 var3 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_cc].val; /* _opt_no_cc on <self:Object(ToolContext)> */
89 if (unlikely(var3 == NULL)) {
90 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_cc");
91 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 32);
92 show_backtrace(1);
93 }
94 var1 = var3;
95 RET_LABEL2:(void)0;
96 }
97 var = var1;
98 RET_LABEL:;
99 return var;
100 }
101 /* method abstract_compiler#ToolContext#opt_no_main for (self: ToolContext): OptionBool */
102 val* abstract_compiler__ToolContext__opt_no_main(val* self) {
103 val* var /* : OptionBool */;
104 val* var1 /* : OptionBool */;
105 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_main].val; /* _opt_no_main on <self:ToolContext> */
106 if (unlikely(var1 == NULL)) {
107 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_main");
108 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 34);
109 show_backtrace(1);
110 }
111 var = var1;
112 RET_LABEL:;
113 return var;
114 }
115 /* method abstract_compiler#ToolContext#opt_no_main for (self: Object): OptionBool */
116 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_main(val* self) {
117 val* var /* : OptionBool */;
118 val* var1 /* : OptionBool */;
119 val* var3 /* : OptionBool */;
120 { /* Inline abstract_compiler#ToolContext#opt_no_main (self) on <self:Object(ToolContext)> */
121 var3 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_main].val; /* _opt_no_main on <self:Object(ToolContext)> */
122 if (unlikely(var3 == NULL)) {
123 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_main");
124 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 34);
125 show_backtrace(1);
126 }
127 var1 = var3;
128 RET_LABEL2:(void)0;
129 }
130 var = var1;
131 RET_LABEL:;
132 return var;
133 }
134 /* method abstract_compiler#ToolContext#opt_cc_path for (self: ToolContext): OptionArray */
135 val* abstract_compiler__ToolContext__opt_cc_path(val* self) {
136 val* var /* : OptionArray */;
137 val* var1 /* : OptionArray */;
138 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_cc_path].val; /* _opt_cc_path on <self:ToolContext> */
139 if (unlikely(var1 == NULL)) {
140 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_cc_path");
141 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 36);
142 show_backtrace(1);
143 }
144 var = var1;
145 RET_LABEL:;
146 return var;
147 }
148 /* method abstract_compiler#ToolContext#opt_cc_path for (self: Object): OptionArray */
149 val* VIRTUAL_abstract_compiler__ToolContext__opt_cc_path(val* self) {
150 val* var /* : OptionArray */;
151 val* var1 /* : OptionArray */;
152 val* var3 /* : OptionArray */;
153 { /* Inline abstract_compiler#ToolContext#opt_cc_path (self) on <self:Object(ToolContext)> */
154 var3 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_cc_path].val; /* _opt_cc_path on <self:Object(ToolContext)> */
155 if (unlikely(var3 == NULL)) {
156 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_cc_path");
157 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 36);
158 show_backtrace(1);
159 }
160 var1 = var3;
161 RET_LABEL2:(void)0;
162 }
163 var = var1;
164 RET_LABEL:;
165 return var;
166 }
167 /* method abstract_compiler#ToolContext#opt_make_flags for (self: ToolContext): OptionString */
168 val* abstract_compiler__ToolContext__opt_make_flags(val* self) {
169 val* var /* : OptionString */;
170 val* var1 /* : OptionString */;
171 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_make_flags].val; /* _opt_make_flags on <self:ToolContext> */
172 if (unlikely(var1 == NULL)) {
173 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_make_flags");
174 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 38);
175 show_backtrace(1);
176 }
177 var = var1;
178 RET_LABEL:;
179 return var;
180 }
181 /* method abstract_compiler#ToolContext#opt_make_flags for (self: Object): OptionString */
182 val* VIRTUAL_abstract_compiler__ToolContext__opt_make_flags(val* self) {
183 val* var /* : OptionString */;
184 val* var1 /* : OptionString */;
185 val* var3 /* : OptionString */;
186 { /* Inline abstract_compiler#ToolContext#opt_make_flags (self) on <self:Object(ToolContext)> */
187 var3 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_make_flags].val; /* _opt_make_flags on <self:Object(ToolContext)> */
188 if (unlikely(var3 == NULL)) {
189 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_make_flags");
190 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 38);
191 show_backtrace(1);
192 }
193 var1 = var3;
194 RET_LABEL2:(void)0;
195 }
196 var = var1;
197 RET_LABEL:;
198 return var;
199 }
200 /* method abstract_compiler#ToolContext#opt_compile_dir for (self: ToolContext): OptionString */
201 val* abstract_compiler__ToolContext__opt_compile_dir(val* self) {
202 val* var /* : OptionString */;
203 val* var1 /* : OptionString */;
204 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_compile_dir].val; /* _opt_compile_dir on <self:ToolContext> */
205 if (unlikely(var1 == NULL)) {
206 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_compile_dir");
207 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 40);
208 show_backtrace(1);
209 }
210 var = var1;
211 RET_LABEL:;
212 return var;
213 }
214 /* method abstract_compiler#ToolContext#opt_compile_dir for (self: Object): OptionString */
215 val* VIRTUAL_abstract_compiler__ToolContext__opt_compile_dir(val* self) {
216 val* var /* : OptionString */;
217 val* var1 /* : OptionString */;
218 val* var3 /* : OptionString */;
219 { /* Inline abstract_compiler#ToolContext#opt_compile_dir (self) on <self:Object(ToolContext)> */
220 var3 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_compile_dir].val; /* _opt_compile_dir on <self:Object(ToolContext)> */
221 if (unlikely(var3 == NULL)) {
222 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_compile_dir");
223 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 40);
224 show_backtrace(1);
225 }
226 var1 = var3;
227 RET_LABEL2:(void)0;
228 }
229 var = var1;
230 RET_LABEL:;
231 return var;
232 }
233 /* method abstract_compiler#ToolContext#opt_hardening for (self: ToolContext): OptionBool */
234 val* abstract_compiler__ToolContext__opt_hardening(val* self) {
235 val* var /* : OptionBool */;
236 val* var1 /* : OptionBool */;
237 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_hardening].val; /* _opt_hardening on <self:ToolContext> */
238 if (unlikely(var1 == NULL)) {
239 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_hardening");
240 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 42);
241 show_backtrace(1);
242 }
243 var = var1;
244 RET_LABEL:;
245 return var;
246 }
247 /* method abstract_compiler#ToolContext#opt_hardening for (self: Object): OptionBool */
248 val* VIRTUAL_abstract_compiler__ToolContext__opt_hardening(val* self) {
249 val* var /* : OptionBool */;
250 val* var1 /* : OptionBool */;
251 val* var3 /* : OptionBool */;
252 { /* Inline abstract_compiler#ToolContext#opt_hardening (self) on <self:Object(ToolContext)> */
253 var3 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_hardening].val; /* _opt_hardening on <self:Object(ToolContext)> */
254 if (unlikely(var3 == NULL)) {
255 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_hardening");
256 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 42);
257 show_backtrace(1);
258 }
259 var1 = var3;
260 RET_LABEL2:(void)0;
261 }
262 var = var1;
263 RET_LABEL:;
264 return var;
265 }
266 /* method abstract_compiler#ToolContext#opt_no_shortcut_range for (self: ToolContext): OptionBool */
267 val* abstract_compiler__ToolContext__opt_no_shortcut_range(val* self) {
268 val* var /* : OptionBool */;
269 val* var1 /* : OptionBool */;
270 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_shortcut_range].val; /* _opt_no_shortcut_range on <self:ToolContext> */
271 if (unlikely(var1 == NULL)) {
272 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_shortcut_range");
273 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 44);
274 show_backtrace(1);
275 }
276 var = var1;
277 RET_LABEL:;
278 return var;
279 }
280 /* method abstract_compiler#ToolContext#opt_no_shortcut_range for (self: Object): OptionBool */
281 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_shortcut_range(val* self) {
282 val* var /* : OptionBool */;
283 val* var1 /* : OptionBool */;
284 val* var3 /* : OptionBool */;
285 { /* Inline abstract_compiler#ToolContext#opt_no_shortcut_range (self) on <self:Object(ToolContext)> */
286 var3 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_shortcut_range].val; /* _opt_no_shortcut_range on <self:Object(ToolContext)> */
287 if (unlikely(var3 == NULL)) {
288 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_shortcut_range");
289 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 44);
290 show_backtrace(1);
291 }
292 var1 = var3;
293 RET_LABEL2:(void)0;
294 }
295 var = var1;
296 RET_LABEL:;
297 return var;
298 }
299 /* method abstract_compiler#ToolContext#opt_no_check_covariance for (self: ToolContext): OptionBool */
300 val* abstract_compiler__ToolContext__opt_no_check_covariance(val* self) {
301 val* var /* : OptionBool */;
302 val* var1 /* : OptionBool */;
303 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_covariance].val; /* _opt_no_check_covariance on <self:ToolContext> */
304 if (unlikely(var1 == NULL)) {
305 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_covariance");
306 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 46);
307 show_backtrace(1);
308 }
309 var = var1;
310 RET_LABEL:;
311 return var;
312 }
313 /* method abstract_compiler#ToolContext#opt_no_check_covariance for (self: Object): OptionBool */
314 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_check_covariance(val* self) {
315 val* var /* : OptionBool */;
316 val* var1 /* : OptionBool */;
317 val* var3 /* : OptionBool */;
318 { /* Inline abstract_compiler#ToolContext#opt_no_check_covariance (self) on <self:Object(ToolContext)> */
319 var3 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_covariance].val; /* _opt_no_check_covariance on <self:Object(ToolContext)> */
320 if (unlikely(var3 == NULL)) {
321 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_covariance");
322 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 46);
323 show_backtrace(1);
324 }
325 var1 = var3;
326 RET_LABEL2:(void)0;
327 }
328 var = var1;
329 RET_LABEL:;
330 return var;
331 }
332 /* method abstract_compiler#ToolContext#opt_no_check_attr_isset for (self: ToolContext): OptionBool */
333 val* abstract_compiler__ToolContext__opt_no_check_attr_isset(val* self) {
334 val* var /* : OptionBool */;
335 val* var1 /* : OptionBool */;
336 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_attr_isset].val; /* _opt_no_check_attr_isset on <self:ToolContext> */
337 if (unlikely(var1 == NULL)) {
338 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_attr_isset");
339 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 48);
340 show_backtrace(1);
341 }
342 var = var1;
343 RET_LABEL:;
344 return var;
345 }
346 /* method abstract_compiler#ToolContext#opt_no_check_attr_isset for (self: Object): OptionBool */
347 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_check_attr_isset(val* self) {
348 val* var /* : OptionBool */;
349 val* var1 /* : OptionBool */;
350 val* var3 /* : OptionBool */;
351 { /* Inline abstract_compiler#ToolContext#opt_no_check_attr_isset (self) on <self:Object(ToolContext)> */
352 var3 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_attr_isset].val; /* _opt_no_check_attr_isset on <self:Object(ToolContext)> */
353 if (unlikely(var3 == NULL)) {
354 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_attr_isset");
355 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 48);
356 show_backtrace(1);
357 }
358 var1 = var3;
359 RET_LABEL2:(void)0;
360 }
361 var = var1;
362 RET_LABEL:;
363 return var;
364 }
365 /* method abstract_compiler#ToolContext#opt_no_check_assert for (self: ToolContext): OptionBool */
366 val* abstract_compiler__ToolContext__opt_no_check_assert(val* self) {
367 val* var /* : OptionBool */;
368 val* var1 /* : OptionBool */;
369 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_assert].val; /* _opt_no_check_assert on <self:ToolContext> */
370 if (unlikely(var1 == NULL)) {
371 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_assert");
372 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 50);
373 show_backtrace(1);
374 }
375 var = var1;
376 RET_LABEL:;
377 return var;
378 }
379 /* method abstract_compiler#ToolContext#opt_no_check_assert for (self: Object): OptionBool */
380 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_check_assert(val* self) {
381 val* var /* : OptionBool */;
382 val* var1 /* : OptionBool */;
383 val* var3 /* : OptionBool */;
384 { /* Inline abstract_compiler#ToolContext#opt_no_check_assert (self) on <self:Object(ToolContext)> */
385 var3 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_assert].val; /* _opt_no_check_assert on <self:Object(ToolContext)> */
386 if (unlikely(var3 == NULL)) {
387 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_assert");
388 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 50);
389 show_backtrace(1);
390 }
391 var1 = var3;
392 RET_LABEL2:(void)0;
393 }
394 var = var1;
395 RET_LABEL:;
396 return var;
397 }
398 /* method abstract_compiler#ToolContext#opt_no_check_autocast for (self: ToolContext): OptionBool */
399 val* abstract_compiler__ToolContext__opt_no_check_autocast(val* self) {
400 val* var /* : OptionBool */;
401 val* var1 /* : OptionBool */;
402 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_autocast].val; /* _opt_no_check_autocast on <self:ToolContext> */
403 if (unlikely(var1 == NULL)) {
404 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_autocast");
405 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 52);
406 show_backtrace(1);
407 }
408 var = var1;
409 RET_LABEL:;
410 return var;
411 }
412 /* method abstract_compiler#ToolContext#opt_no_check_autocast for (self: Object): OptionBool */
413 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_check_autocast(val* self) {
414 val* var /* : OptionBool */;
415 val* var1 /* : OptionBool */;
416 val* var3 /* : OptionBool */;
417 { /* Inline abstract_compiler#ToolContext#opt_no_check_autocast (self) on <self:Object(ToolContext)> */
418 var3 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_autocast].val; /* _opt_no_check_autocast on <self:Object(ToolContext)> */
419 if (unlikely(var3 == NULL)) {
420 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_autocast");
421 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 52);
422 show_backtrace(1);
423 }
424 var1 = var3;
425 RET_LABEL2:(void)0;
426 }
427 var = var1;
428 RET_LABEL:;
429 return var;
430 }
431 /* method abstract_compiler#ToolContext#opt_no_check_other for (self: ToolContext): OptionBool */
432 val* abstract_compiler__ToolContext__opt_no_check_other(val* self) {
433 val* var /* : OptionBool */;
434 val* var1 /* : OptionBool */;
435 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_other].val; /* _opt_no_check_other on <self:ToolContext> */
436 if (unlikely(var1 == NULL)) {
437 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_other");
438 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 54);
439 show_backtrace(1);
440 }
441 var = var1;
442 RET_LABEL:;
443 return var;
444 }
445 /* method abstract_compiler#ToolContext#opt_no_check_other for (self: Object): OptionBool */
446 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_check_other(val* self) {
447 val* var /* : OptionBool */;
448 val* var1 /* : OptionBool */;
449 val* var3 /* : OptionBool */;
450 { /* Inline abstract_compiler#ToolContext#opt_no_check_other (self) on <self:Object(ToolContext)> */
451 var3 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_other].val; /* _opt_no_check_other on <self:Object(ToolContext)> */
452 if (unlikely(var3 == NULL)) {
453 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_other");
454 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 54);
455 show_backtrace(1);
456 }
457 var1 = var3;
458 RET_LABEL2:(void)0;
459 }
460 var = var1;
461 RET_LABEL:;
462 return var;
463 }
464 /* method abstract_compiler#ToolContext#opt_typing_test_metrics for (self: ToolContext): OptionBool */
465 val* abstract_compiler__ToolContext__opt_typing_test_metrics(val* self) {
466 val* var /* : OptionBool */;
467 val* var1 /* : OptionBool */;
468 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_typing_test_metrics].val; /* _opt_typing_test_metrics on <self:ToolContext> */
469 if (unlikely(var1 == NULL)) {
470 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_typing_test_metrics");
471 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 56);
472 show_backtrace(1);
473 }
474 var = var1;
475 RET_LABEL:;
476 return var;
477 }
478 /* method abstract_compiler#ToolContext#opt_typing_test_metrics for (self: Object): OptionBool */
479 val* VIRTUAL_abstract_compiler__ToolContext__opt_typing_test_metrics(val* self) {
480 val* var /* : OptionBool */;
481 val* var1 /* : OptionBool */;
482 val* var3 /* : OptionBool */;
483 { /* Inline abstract_compiler#ToolContext#opt_typing_test_metrics (self) on <self:Object(ToolContext)> */
484 var3 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_typing_test_metrics].val; /* _opt_typing_test_metrics on <self:Object(ToolContext)> */
485 if (unlikely(var3 == NULL)) {
486 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_typing_test_metrics");
487 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 56);
488 show_backtrace(1);
489 }
490 var1 = var3;
491 RET_LABEL2:(void)0;
492 }
493 var = var1;
494 RET_LABEL:;
495 return var;
496 }
497 /* method abstract_compiler#ToolContext#opt_invocation_metrics for (self: ToolContext): OptionBool */
498 val* abstract_compiler__ToolContext__opt_invocation_metrics(val* self) {
499 val* var /* : OptionBool */;
500 val* var1 /* : OptionBool */;
501 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_invocation_metrics].val; /* _opt_invocation_metrics on <self:ToolContext> */
502 if (unlikely(var1 == NULL)) {
503 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_invocation_metrics");
504 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 58);
505 show_backtrace(1);
506 }
507 var = var1;
508 RET_LABEL:;
509 return var;
510 }
511 /* method abstract_compiler#ToolContext#opt_invocation_metrics for (self: Object): OptionBool */
512 val* VIRTUAL_abstract_compiler__ToolContext__opt_invocation_metrics(val* self) {
513 val* var /* : OptionBool */;
514 val* var1 /* : OptionBool */;
515 val* var3 /* : OptionBool */;
516 { /* Inline abstract_compiler#ToolContext#opt_invocation_metrics (self) on <self:Object(ToolContext)> */
517 var3 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_invocation_metrics].val; /* _opt_invocation_metrics on <self:Object(ToolContext)> */
518 if (unlikely(var3 == NULL)) {
519 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_invocation_metrics");
520 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 58);
521 show_backtrace(1);
522 }
523 var1 = var3;
524 RET_LABEL2:(void)0;
525 }
526 var = var1;
527 RET_LABEL:;
528 return var;
529 }
530 /* method abstract_compiler#ToolContext#opt_isset_checks_metrics for (self: ToolContext): OptionBool */
531 val* abstract_compiler__ToolContext__opt_isset_checks_metrics(val* self) {
532 val* var /* : OptionBool */;
533 val* var1 /* : OptionBool */;
534 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_isset_checks_metrics].val; /* _opt_isset_checks_metrics on <self:ToolContext> */
535 if (unlikely(var1 == NULL)) {
536 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_isset_checks_metrics");
537 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 60);
538 show_backtrace(1);
539 }
540 var = var1;
541 RET_LABEL:;
542 return var;
543 }
544 /* method abstract_compiler#ToolContext#opt_isset_checks_metrics for (self: Object): OptionBool */
545 val* VIRTUAL_abstract_compiler__ToolContext__opt_isset_checks_metrics(val* self) {
546 val* var /* : OptionBool */;
547 val* var1 /* : OptionBool */;
548 val* var3 /* : OptionBool */;
549 { /* Inline abstract_compiler#ToolContext#opt_isset_checks_metrics (self) on <self:Object(ToolContext)> */
550 var3 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_isset_checks_metrics].val; /* _opt_isset_checks_metrics on <self:Object(ToolContext)> */
551 if (unlikely(var3 == NULL)) {
552 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_isset_checks_metrics");
553 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 60);
554 show_backtrace(1);
555 }
556 var1 = var3;
557 RET_LABEL2:(void)0;
558 }
559 var = var1;
560 RET_LABEL:;
561 return var;
562 }
563 /* method abstract_compiler#ToolContext#opt_stacktrace for (self: ToolContext): OptionString */
564 val* abstract_compiler__ToolContext__opt_stacktrace(val* self) {
565 val* var /* : OptionString */;
566 val* var1 /* : OptionString */;
567 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_stacktrace].val; /* _opt_stacktrace on <self:ToolContext> */
568 if (unlikely(var1 == NULL)) {
569 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_stacktrace");
570 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 62);
571 show_backtrace(1);
572 }
573 var = var1;
574 RET_LABEL:;
575 return var;
576 }
577 /* method abstract_compiler#ToolContext#opt_stacktrace for (self: Object): OptionString */
578 val* VIRTUAL_abstract_compiler__ToolContext__opt_stacktrace(val* self) {
579 val* var /* : OptionString */;
580 val* var1 /* : OptionString */;
581 val* var3 /* : OptionString */;
582 { /* Inline abstract_compiler#ToolContext#opt_stacktrace (self) on <self:Object(ToolContext)> */
583 var3 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_stacktrace].val; /* _opt_stacktrace on <self:Object(ToolContext)> */
584 if (unlikely(var3 == NULL)) {
585 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_stacktrace");
586 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 62);
587 show_backtrace(1);
588 }
589 var1 = var3;
590 RET_LABEL2:(void)0;
591 }
592 var = var1;
593 RET_LABEL:;
594 return var;
595 }
596 /* method abstract_compiler#ToolContext#opt_no_gcc_directive for (self: ToolContext): OptionArray */
597 val* abstract_compiler__ToolContext__opt_no_gcc_directive(val* self) {
598 val* var /* : OptionArray */;
599 val* var1 /* : OptionArray */;
600 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_gcc_directive].val; /* _opt_no_gcc_directive on <self:ToolContext> */
601 if (unlikely(var1 == NULL)) {
602 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_gcc_directive");
603 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 64);
604 show_backtrace(1);
605 }
606 var = var1;
607 RET_LABEL:;
608 return var;
609 }
610 /* method abstract_compiler#ToolContext#opt_no_gcc_directive for (self: Object): OptionArray */
611 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_gcc_directive(val* self) {
612 val* var /* : OptionArray */;
613 val* var1 /* : OptionArray */;
614 val* var3 /* : OptionArray */;
615 { /* Inline abstract_compiler#ToolContext#opt_no_gcc_directive (self) on <self:Object(ToolContext)> */
616 var3 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_gcc_directive].val; /* _opt_no_gcc_directive on <self:Object(ToolContext)> */
617 if (unlikely(var3 == NULL)) {
618 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_gcc_directive");
619 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 64);
620 show_backtrace(1);
621 }
622 var1 = var3;
623 RET_LABEL2:(void)0;
624 }
625 var = var1;
626 RET_LABEL:;
627 return var;
628 }
629 /* method abstract_compiler#ToolContext#opt_release for (self: ToolContext): OptionBool */
630 val* abstract_compiler__ToolContext__opt_release(val* self) {
631 val* var /* : OptionBool */;
632 val* var1 /* : OptionBool */;
633 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_release].val; /* _opt_release on <self:ToolContext> */
634 if (unlikely(var1 == NULL)) {
635 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_release");
636 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 66);
637 show_backtrace(1);
638 }
639 var = var1;
640 RET_LABEL:;
641 return var;
642 }
643 /* method abstract_compiler#ToolContext#opt_release for (self: Object): OptionBool */
644 val* VIRTUAL_abstract_compiler__ToolContext__opt_release(val* self) {
645 val* var /* : OptionBool */;
646 val* var1 /* : OptionBool */;
647 val* var3 /* : OptionBool */;
648 { /* Inline abstract_compiler#ToolContext#opt_release (self) on <self:Object(ToolContext)> */
649 var3 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_release].val; /* _opt_release on <self:Object(ToolContext)> */
650 if (unlikely(var3 == NULL)) {
651 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_release");
652 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 66);
653 show_backtrace(1);
654 }
655 var1 = var3;
656 RET_LABEL2:(void)0;
657 }
658 var = var1;
659 RET_LABEL:;
660 return var;
661 }
662 /* method abstract_compiler#ToolContext#init for (self: ToolContext) */
663 void abstract_compiler__ToolContext__init(val* self) {
664 val* var /* : OptionContext */;
665 val* var2 /* : OptionContext */;
666 val* var3 /* : OptionString */;
667 val* var5 /* : OptionString */;
668 val* var6 /* : OptionString */;
669 val* var8 /* : OptionString */;
670 val* var9 /* : OptionBool */;
671 val* var11 /* : OptionBool */;
672 val* var12 /* : OptionBool */;
673 val* var14 /* : OptionBool */;
674 val* var15 /* : OptionString */;
675 val* var17 /* : OptionString */;
676 val* var18 /* : OptionString */;
677 val* var20 /* : OptionString */;
678 val* var21 /* : OptionBool */;
679 val* var23 /* : OptionBool */;
680 val* var24 /* : OptionBool */;
681 val* var26 /* : OptionBool */;
682 val* var27 /* : Array[Option] */;
683 long var28 /* : Int */;
684 val* var29 /* : NativeArray[Option] */;
685 val* var30 /* : OptionContext */;
686 val* var32 /* : OptionContext */;
687 val* var33 /* : OptionBool */;
688 val* var35 /* : OptionBool */;
689 val* var36 /* : OptionBool */;
690 val* var38 /* : OptionBool */;
691 val* var39 /* : OptionBool */;
692 val* var41 /* : OptionBool */;
693 val* var42 /* : OptionBool */;
694 val* var44 /* : OptionBool */;
695 val* var45 /* : OptionBool */;
696 val* var47 /* : OptionBool */;
697 val* var48 /* : Array[Option] */;
698 long var49 /* : Int */;
699 val* var50 /* : NativeArray[Option] */;
700 val* var51 /* : OptionContext */;
701 val* var53 /* : OptionContext */;
702 val* var54 /* : OptionBool */;
703 val* var56 /* : OptionBool */;
704 val* var57 /* : OptionBool */;
705 val* var59 /* : OptionBool */;
706 val* var60 /* : OptionBool */;
707 val* var62 /* : OptionBool */;
708 val* var63 /* : Array[Option] */;
709 long var64 /* : Int */;
710 val* var65 /* : NativeArray[Option] */;
711 val* var66 /* : OptionContext */;
712 val* var68 /* : OptionContext */;
713 val* var69 /* : OptionString */;
714 val* var71 /* : OptionString */;
715 val* var72 /* : Array[Option] */;
716 long var73 /* : Int */;
717 val* var74 /* : NativeArray[Option] */;
718 val* var75 /* : OptionContext */;
719 val* var77 /* : OptionContext */;
720 val* var78 /* : OptionArray */;
721 val* var80 /* : OptionArray */;
722 val* var81 /* : Array[Option] */;
723 long var82 /* : Int */;
724 val* var83 /* : NativeArray[Option] */;
725 val* var84 /* : OptionContext */;
726 val* var86 /* : OptionContext */;
727 val* var87 /* : OptionBool */;
728 val* var89 /* : OptionBool */;
729 val* var90 /* : Array[Option] */;
730 long var91 /* : Int */;
731 val* var92 /* : NativeArray[Option] */;
732 {
733 ((void (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__init]))(self) /* init on <self:ToolContext>*/;
734 }
735 {
736 { /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
737 var2 = self->attrs[COLOR_toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
738 if (unlikely(var2 == NULL)) {
739 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
740 PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 166);
741 show_backtrace(1);
742 }
743 var = var2;
744 RET_LABEL1:(void)0;
745 }
746 }
747 {
748 { /* Inline abstract_compiler#ToolContext#opt_output (self) on <self:ToolContext> */
749 var5 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_output].val; /* _opt_output on <self:ToolContext> */
750 if (unlikely(var5 == NULL)) {
751 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_output");
752 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 28);
753 show_backtrace(1);
754 }
755 var3 = var5;
756 RET_LABEL4:(void)0;
757 }
758 }
759 {
760 { /* Inline abstract_compiler#ToolContext#opt_dir (self) on <self:ToolContext> */
761 var8 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_dir].val; /* _opt_dir on <self:ToolContext> */
762 if (unlikely(var8 == NULL)) {
763 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_dir");
764 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 30);
765 show_backtrace(1);
766 }
767 var6 = var8;
768 RET_LABEL7:(void)0;
769 }
770 }
771 {
772 { /* Inline abstract_compiler#ToolContext#opt_no_cc (self) on <self:ToolContext> */
773 var11 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_cc].val; /* _opt_no_cc on <self:ToolContext> */
774 if (unlikely(var11 == NULL)) {
775 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_cc");
776 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 32);
777 show_backtrace(1);
778 }
779 var9 = var11;
780 RET_LABEL10:(void)0;
781 }
782 }
783 {
784 { /* Inline abstract_compiler#ToolContext#opt_no_main (self) on <self:ToolContext> */
785 var14 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_main].val; /* _opt_no_main on <self:ToolContext> */
786 if (unlikely(var14 == NULL)) {
787 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_main");
788 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 34);
789 show_backtrace(1);
790 }
791 var12 = var14;
792 RET_LABEL13:(void)0;
793 }
794 }
795 {
796 { /* Inline abstract_compiler#ToolContext#opt_make_flags (self) on <self:ToolContext> */
797 var17 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_make_flags].val; /* _opt_make_flags on <self:ToolContext> */
798 if (unlikely(var17 == NULL)) {
799 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_make_flags");
800 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 38);
801 show_backtrace(1);
802 }
803 var15 = var17;
804 RET_LABEL16:(void)0;
805 }
806 }
807 {
808 { /* Inline abstract_compiler#ToolContext#opt_compile_dir (self) on <self:ToolContext> */
809 var20 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_compile_dir].val; /* _opt_compile_dir on <self:ToolContext> */
810 if (unlikely(var20 == NULL)) {
811 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_compile_dir");
812 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 40);
813 show_backtrace(1);
814 }
815 var18 = var20;
816 RET_LABEL19:(void)0;
817 }
818 }
819 {
820 { /* Inline abstract_compiler#ToolContext#opt_hardening (self) on <self:ToolContext> */
821 var23 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_hardening].val; /* _opt_hardening on <self:ToolContext> */
822 if (unlikely(var23 == NULL)) {
823 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_hardening");
824 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 42);
825 show_backtrace(1);
826 }
827 var21 = var23;
828 RET_LABEL22:(void)0;
829 }
830 }
831 {
832 { /* Inline abstract_compiler#ToolContext#opt_no_shortcut_range (self) on <self:ToolContext> */
833 var26 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_shortcut_range].val; /* _opt_no_shortcut_range on <self:ToolContext> */
834 if (unlikely(var26 == NULL)) {
835 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_shortcut_range");
836 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 44);
837 show_backtrace(1);
838 }
839 var24 = var26;
840 RET_LABEL25:(void)0;
841 }
842 }
843 var27 = NEW_array__Array(&type_array__Arrayopts__Option);
844 { /* var27 = array_instance Array[Option] */
845 var28 = 8;
846 var29 = NEW_array__NativeArray(var28, &type_array__NativeArrayopts__Option);
847 ((struct instance_array__NativeArray*)var29)->values[0] = (val*) var3;
848 ((struct instance_array__NativeArray*)var29)->values[1] = (val*) var6;
849 ((struct instance_array__NativeArray*)var29)->values[2] = (val*) var9;
850 ((struct instance_array__NativeArray*)var29)->values[3] = (val*) var12;
851 ((struct instance_array__NativeArray*)var29)->values[4] = (val*) var15;
852 ((struct instance_array__NativeArray*)var29)->values[5] = (val*) var18;
853 ((struct instance_array__NativeArray*)var29)->values[6] = (val*) var21;
854 ((struct instance_array__NativeArray*)var29)->values[7] = (val*) var24;
855 {
856 ((void (*)(val*, val*, long))(var27->class->vft[COLOR_array__Array__with_native]))(var27, var29, var28) /* with_native on <var27:Array[Option]>*/;
857 }
858 }
859 {
860 opts__OptionContext__add_option(var, var27); /* Direct call opts#OptionContext#add_option on <var:OptionContext>*/
861 }
862 {
863 { /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
864 var32 = self->attrs[COLOR_toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
865 if (unlikely(var32 == NULL)) {
866 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
867 PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 166);
868 show_backtrace(1);
869 }
870 var30 = var32;
871 RET_LABEL31:(void)0;
872 }
873 }
874 {
875 { /* Inline abstract_compiler#ToolContext#opt_no_check_covariance (self) on <self:ToolContext> */
876 var35 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_covariance].val; /* _opt_no_check_covariance on <self:ToolContext> */
877 if (unlikely(var35 == NULL)) {
878 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_covariance");
879 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 46);
880 show_backtrace(1);
881 }
882 var33 = var35;
883 RET_LABEL34:(void)0;
884 }
885 }
886 {
887 { /* Inline abstract_compiler#ToolContext#opt_no_check_attr_isset (self) on <self:ToolContext> */
888 var38 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_attr_isset].val; /* _opt_no_check_attr_isset on <self:ToolContext> */
889 if (unlikely(var38 == NULL)) {
890 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_attr_isset");
891 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 48);
892 show_backtrace(1);
893 }
894 var36 = var38;
895 RET_LABEL37:(void)0;
896 }
897 }
898 {
899 { /* Inline abstract_compiler#ToolContext#opt_no_check_assert (self) on <self:ToolContext> */
900 var41 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_assert].val; /* _opt_no_check_assert on <self:ToolContext> */
901 if (unlikely(var41 == NULL)) {
902 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_assert");
903 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 50);
904 show_backtrace(1);
905 }
906 var39 = var41;
907 RET_LABEL40:(void)0;
908 }
909 }
910 {
911 { /* Inline abstract_compiler#ToolContext#opt_no_check_autocast (self) on <self:ToolContext> */
912 var44 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_autocast].val; /* _opt_no_check_autocast on <self:ToolContext> */
913 if (unlikely(var44 == NULL)) {
914 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_autocast");
915 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 52);
916 show_backtrace(1);
917 }
918 var42 = var44;
919 RET_LABEL43:(void)0;
920 }
921 }
922 {
923 { /* Inline abstract_compiler#ToolContext#opt_no_check_other (self) on <self:ToolContext> */
924 var47 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_other].val; /* _opt_no_check_other on <self:ToolContext> */
925 if (unlikely(var47 == NULL)) {
926 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_other");
927 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 54);
928 show_backtrace(1);
929 }
930 var45 = var47;
931 RET_LABEL46:(void)0;
932 }
933 }
934 var48 = NEW_array__Array(&type_array__Arrayopts__Option);
935 { /* var48 = array_instance Array[Option] */
936 var49 = 5;
937 var50 = NEW_array__NativeArray(var49, &type_array__NativeArrayopts__Option);
938 ((struct instance_array__NativeArray*)var50)->values[0] = (val*) var33;
939 ((struct instance_array__NativeArray*)var50)->values[1] = (val*) var36;
940 ((struct instance_array__NativeArray*)var50)->values[2] = (val*) var39;
941 ((struct instance_array__NativeArray*)var50)->values[3] = (val*) var42;
942 ((struct instance_array__NativeArray*)var50)->values[4] = (val*) var45;
943 {
944 ((void (*)(val*, val*, long))(var48->class->vft[COLOR_array__Array__with_native]))(var48, var50, var49) /* with_native on <var48:Array[Option]>*/;
945 }
946 }
947 {
948 opts__OptionContext__add_option(var30, var48); /* Direct call opts#OptionContext#add_option on <var30:OptionContext>*/
949 }
950 {
951 { /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
952 var53 = self->attrs[COLOR_toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
953 if (unlikely(var53 == NULL)) {
954 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
955 PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 166);
956 show_backtrace(1);
957 }
958 var51 = var53;
959 RET_LABEL52:(void)0;
960 }
961 }
962 {
963 { /* Inline abstract_compiler#ToolContext#opt_typing_test_metrics (self) on <self:ToolContext> */
964 var56 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_typing_test_metrics].val; /* _opt_typing_test_metrics on <self:ToolContext> */
965 if (unlikely(var56 == NULL)) {
966 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_typing_test_metrics");
967 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 56);
968 show_backtrace(1);
969 }
970 var54 = var56;
971 RET_LABEL55:(void)0;
972 }
973 }
974 {
975 { /* Inline abstract_compiler#ToolContext#opt_invocation_metrics (self) on <self:ToolContext> */
976 var59 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_invocation_metrics].val; /* _opt_invocation_metrics on <self:ToolContext> */
977 if (unlikely(var59 == NULL)) {
978 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_invocation_metrics");
979 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 58);
980 show_backtrace(1);
981 }
982 var57 = var59;
983 RET_LABEL58:(void)0;
984 }
985 }
986 {
987 { /* Inline abstract_compiler#ToolContext#opt_isset_checks_metrics (self) on <self:ToolContext> */
988 var62 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_isset_checks_metrics].val; /* _opt_isset_checks_metrics on <self:ToolContext> */
989 if (unlikely(var62 == NULL)) {
990 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_isset_checks_metrics");
991 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 60);
992 show_backtrace(1);
993 }
994 var60 = var62;
995 RET_LABEL61:(void)0;
996 }
997 }
998 var63 = NEW_array__Array(&type_array__Arrayopts__Option);
999 { /* var63 = array_instance Array[Option] */
1000 var64 = 3;
1001 var65 = NEW_array__NativeArray(var64, &type_array__NativeArrayopts__Option);
1002 ((struct instance_array__NativeArray*)var65)->values[0] = (val*) var54;
1003 ((struct instance_array__NativeArray*)var65)->values[1] = (val*) var57;
1004 ((struct instance_array__NativeArray*)var65)->values[2] = (val*) var60;
1005 {
1006 ((void (*)(val*, val*, long))(var63->class->vft[COLOR_array__Array__with_native]))(var63, var65, var64) /* with_native on <var63:Array[Option]>*/;
1007 }
1008 }
1009 {
1010 opts__OptionContext__add_option(var51, var63); /* Direct call opts#OptionContext#add_option on <var51:OptionContext>*/
1011 }
1012 {
1013 { /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
1014 var68 = self->attrs[COLOR_toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
1015 if (unlikely(var68 == NULL)) {
1016 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
1017 PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 166);
1018 show_backtrace(1);
1019 }
1020 var66 = var68;
1021 RET_LABEL67:(void)0;
1022 }
1023 }
1024 {
1025 { /* Inline abstract_compiler#ToolContext#opt_stacktrace (self) on <self:ToolContext> */
1026 var71 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_stacktrace].val; /* _opt_stacktrace on <self:ToolContext> */
1027 if (unlikely(var71 == NULL)) {
1028 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_stacktrace");
1029 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 62);
1030 show_backtrace(1);
1031 }
1032 var69 = var71;
1033 RET_LABEL70:(void)0;
1034 }
1035 }
1036 var72 = NEW_array__Array(&type_array__Arrayopts__Option);
1037 { /* var72 = array_instance Array[Option] */
1038 var73 = 1;
1039 var74 = NEW_array__NativeArray(var73, &type_array__NativeArrayopts__Option);
1040 ((struct instance_array__NativeArray*)var74)->values[0] = (val*) var69;
1041 {
1042 ((void (*)(val*, val*, long))(var72->class->vft[COLOR_array__Array__with_native]))(var72, var74, var73) /* with_native on <var72:Array[Option]>*/;
1043 }
1044 }
1045 {
1046 opts__OptionContext__add_option(var66, var72); /* Direct call opts#OptionContext#add_option on <var66:OptionContext>*/
1047 }
1048 {
1049 { /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
1050 var77 = self->attrs[COLOR_toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
1051 if (unlikely(var77 == NULL)) {
1052 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
1053 PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 166);
1054 show_backtrace(1);
1055 }
1056 var75 = var77;
1057 RET_LABEL76:(void)0;
1058 }
1059 }
1060 {
1061 { /* Inline abstract_compiler#ToolContext#opt_no_gcc_directive (self) on <self:ToolContext> */
1062 var80 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_no_gcc_directive].val; /* _opt_no_gcc_directive on <self:ToolContext> */
1063 if (unlikely(var80 == NULL)) {
1064 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_gcc_directive");
1065 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 64);
1066 show_backtrace(1);
1067 }
1068 var78 = var80;
1069 RET_LABEL79:(void)0;
1070 }
1071 }
1072 var81 = NEW_array__Array(&type_array__Arrayopts__Option);
1073 { /* var81 = array_instance Array[Option] */
1074 var82 = 1;
1075 var83 = NEW_array__NativeArray(var82, &type_array__NativeArrayopts__Option);
1076 ((struct instance_array__NativeArray*)var83)->values[0] = (val*) var78;
1077 {
1078 ((void (*)(val*, val*, long))(var81->class->vft[COLOR_array__Array__with_native]))(var81, var83, var82) /* with_native on <var81:Array[Option]>*/;
1079 }
1080 }
1081 {
1082 opts__OptionContext__add_option(var75, var81); /* Direct call opts#OptionContext#add_option on <var75:OptionContext>*/
1083 }
1084 {
1085 { /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
1086 var86 = self->attrs[COLOR_toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
1087 if (unlikely(var86 == NULL)) {
1088 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
1089 PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 166);
1090 show_backtrace(1);
1091 }
1092 var84 = var86;
1093 RET_LABEL85:(void)0;
1094 }
1095 }
1096 {
1097 { /* Inline abstract_compiler#ToolContext#opt_release (self) on <self:ToolContext> */
1098 var89 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_release].val; /* _opt_release on <self:ToolContext> */
1099 if (unlikely(var89 == NULL)) {
1100 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_release");
1101 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 66);
1102 show_backtrace(1);
1103 }
1104 var87 = var89;
1105 RET_LABEL88:(void)0;
1106 }
1107 }
1108 var90 = NEW_array__Array(&type_array__Arrayopts__Option);
1109 { /* var90 = array_instance Array[Option] */
1110 var91 = 1;
1111 var92 = NEW_array__NativeArray(var91, &type_array__NativeArrayopts__Option);
1112 ((struct instance_array__NativeArray*)var92)->values[0] = (val*) var87;
1113 {
1114 ((void (*)(val*, val*, long))(var90->class->vft[COLOR_array__Array__with_native]))(var90, var92, var91) /* with_native on <var90:Array[Option]>*/;
1115 }
1116 }
1117 {
1118 opts__OptionContext__add_option(var84, var90); /* Direct call opts#OptionContext#add_option on <var84:OptionContext>*/
1119 }
1120 RET_LABEL:;
1121 }
1122 /* method abstract_compiler#ToolContext#init for (self: Object) */
1123 void VIRTUAL_abstract_compiler__ToolContext__init(val* self) {
1124 abstract_compiler__ToolContext__init(self); /* Direct call abstract_compiler#ToolContext#init on <self:Object(ToolContext)>*/
1125 RET_LABEL:;
1126 }
1127 /* method abstract_compiler#ToolContext#process_options for (self: ToolContext, Sequence[String]) */
1128 void abstract_compiler__ToolContext__process_options(val* self, val* p0) {
1129 val* var_args /* var args: Sequence[String] */;
1130 val* var /* : OptionString */;
1131 val* var2 /* : OptionString */;
1132 val* var3 /* : nullable Object */;
1133 val* var5 /* : nullable Object */;
1134 val* var_st /* var st: nullable String */;
1135 short int var6 /* : Bool */;
1136 short int var7 /* : Bool */;
1137 static val* varonce;
1138 val* var8 /* : String */;
1139 char* var9 /* : NativeString */;
1140 long var10 /* : Int */;
1141 val* var11 /* : FlatString */;
1142 short int var12 /* : Bool */;
1143 short int var13 /* : Bool */;
1144 short int var_ /* var : Bool */;
1145 static val* varonce14;
1146 val* var15 /* : String */;
1147 char* var16 /* : NativeString */;
1148 long var17 /* : Int */;
1149 val* var18 /* : FlatString */;
1150 short int var19 /* : Bool */;
1151 short int var20 /* : Bool */;
1152 short int var_21 /* var : Bool */;
1153 static val* varonce22;
1154 val* var23 /* : String */;
1155 char* var24 /* : NativeString */;
1156 long var25 /* : Int */;
1157 val* var26 /* : FlatString */;
1158 short int var27 /* : Bool */;
1159 short int var28 /* : Bool */;
1160 short int var29 /* : Bool */;
1161 static val* varonce30;
1162 val* var31 /* : String */;
1163 char* var32 /* : NativeString */;
1164 long var33 /* : Int */;
1165 val* var34 /* : FlatString */;
1166 short int var35 /* : Bool */;
1167 short int var36 /* : Bool */;
1168 short int var_37 /* var : Bool */;
1169 val* var38 /* : null */;
1170 short int var39 /* : Bool */;
1171 short int var40 /* : Bool */;
1172 val* var41 /* : OptionString */;
1173 val* var43 /* : OptionString */;
1174 static val* varonce44;
1175 val* var45 /* : String */;
1176 char* var46 /* : NativeString */;
1177 long var47 /* : Int */;
1178 val* var48 /* : FlatString */;
1179 short int var50 /* : Bool */;
1180 int cltype;
1181 int idtype;
1182 const struct type* type_struct;
1183 const char* var_class_name;
1184 static val* varonce51;
1185 val* var52 /* : String */;
1186 char* var53 /* : NativeString */;
1187 long var54 /* : Int */;
1188 val* var55 /* : FlatString */;
1189 static val* varonce56;
1190 val* var57 /* : String */;
1191 char* var58 /* : NativeString */;
1192 long var59 /* : Int */;
1193 val* var60 /* : FlatString */;
1194 val* var61 /* : Array[Object] */;
1195 long var62 /* : Int */;
1196 val* var63 /* : NativeArray[Object] */;
1197 val* var64 /* : String */;
1198 long var65 /* : Int */;
1199 short int var67 /* : Bool */;
1200 val* var68 /* : OptionString */;
1201 val* var70 /* : OptionString */;
1202 val* var71 /* : nullable Object */;
1203 val* var73 /* : nullable Object */;
1204 val* var74 /* : null */;
1205 short int var75 /* : Bool */;
1206 short int var76 /* : Bool */;
1207 val* var_other /* var other: nullable Object */;
1208 short int var78 /* : Bool */;
1209 short int var79 /* : Bool */;
1210 short int var80 /* : Bool */;
1211 short int var_81 /* var : Bool */;
1212 val* var82 /* : OptionString */;
1213 val* var84 /* : OptionString */;
1214 val* var85 /* : nullable Object */;
1215 val* var87 /* : nullable Object */;
1216 val* var88 /* : null */;
1217 short int var89 /* : Bool */;
1218 short int var90 /* : Bool */;
1219 short int var92 /* : Bool */;
1220 short int var93 /* : Bool */;
1221 short int var94 /* : Bool */;
1222 static val* varonce95;
1223 val* var96 /* : String */;
1224 char* var97 /* : NativeString */;
1225 long var98 /* : Int */;
1226 val* var99 /* : FlatString */;
1227 long var100 /* : Int */;
1228 var_args = p0;
1229 {
1230 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__process_options]))(self, p0) /* process_options on <self:ToolContext>*/;
1231 }
1232 {
1233 { /* Inline abstract_compiler#ToolContext#opt_stacktrace (self) on <self:ToolContext> */
1234 var2 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_stacktrace].val; /* _opt_stacktrace on <self:ToolContext> */
1235 if (unlikely(var2 == NULL)) {
1236 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_stacktrace");
1237 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 62);
1238 show_backtrace(1);
1239 }
1240 var = var2;
1241 RET_LABEL1:(void)0;
1242 }
1243 }
1244 {
1245 { /* Inline opts#Option#value (var) on <var:OptionString> */
1246 var5 = var->attrs[COLOR_opts__Option___value].val; /* _value on <var:OptionString> */
1247 var3 = var5;
1248 RET_LABEL4:(void)0;
1249 }
1250 }
1251 var_st = var3;
1252 if (varonce) {
1253 var8 = varonce;
1254 } else {
1255 var9 = "none";
1256 var10 = 4;
1257 var11 = string__NativeString__to_s_with_length(var9, var10);
1258 var8 = var11;
1259 varonce = var8;
1260 }
1261 if (var_st == NULL) {
1262 var12 = 0; /* <var8:String> cannot be null */
1263 } else {
1264 var13 = string__FlatString___61d_61d(var_st, var8);
1265 var12 = var13;
1266 }
1267 var_ = var12;
1268 if (var12){
1269 var7 = var_;
1270 } else {
1271 if (varonce14) {
1272 var15 = varonce14;
1273 } else {
1274 var16 = "libunwind";
1275 var17 = 9;
1276 var18 = string__NativeString__to_s_with_length(var16, var17);
1277 var15 = var18;
1278 varonce14 = var15;
1279 }
1280 if (var_st == NULL) {
1281 var19 = 0; /* <var15:String> cannot be null */
1282 } else {
1283 var20 = string__FlatString___61d_61d(var_st, var15);
1284 var19 = var20;
1285 }
1286 var7 = var19;
1287 }
1288 var_21 = var7;
1289 if (var7){
1290 var6 = var_21;
1291 } else {
1292 if (varonce22) {
1293 var23 = varonce22;
1294 } else {
1295 var24 = "nitstack";
1296 var25 = 8;
1297 var26 = string__NativeString__to_s_with_length(var24, var25);
1298 var23 = var26;
1299 varonce22 = var23;
1300 }
1301 if (var_st == NULL) {
1302 var27 = 0; /* <var23:String> cannot be null */
1303 } else {
1304 var28 = string__FlatString___61d_61d(var_st, var23);
1305 var27 = var28;
1306 }
1307 var6 = var27;
1308 }
1309 if (var6){
1310 } else {
1311 if (varonce30) {
1312 var31 = varonce30;
1313 } else {
1314 var32 = "auto";
1315 var33 = 4;
1316 var34 = string__NativeString__to_s_with_length(var32, var33);
1317 var31 = var34;
1318 varonce30 = var31;
1319 }
1320 if (var_st == NULL) {
1321 var35 = 0; /* <var31:String> cannot be null */
1322 } else {
1323 var36 = string__FlatString___61d_61d(var_st, var31);
1324 var35 = var36;
1325 }
1326 var_37 = var35;
1327 if (var35){
1328 var29 = var_37;
1329 } else {
1330 var38 = NULL;
1331 if (var_st == NULL) {
1332 var39 = 1; /* is null */
1333 } else {
1334 var39 = 0; /* arg is null but recv is not */
1335 }
1336 if (0) {
1337 var40 = string__FlatString___61d_61d(var_st, var38);
1338 var39 = var40;
1339 }
1340 var29 = var39;
1341 }
1342 if (var29){
1343 {
1344 { /* Inline abstract_compiler#ToolContext#opt_stacktrace (self) on <self:ToolContext> */
1345 var43 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_stacktrace].val; /* _opt_stacktrace on <self:ToolContext> */
1346 if (unlikely(var43 == NULL)) {
1347 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_stacktrace");
1348 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 62);
1349 show_backtrace(1);
1350 }
1351 var41 = var43;
1352 RET_LABEL42:(void)0;
1353 }
1354 }
1355 if (varonce44) {
1356 var45 = varonce44;
1357 } else {
1358 var46 = "nitstack";
1359 var47 = 8;
1360 var48 = string__NativeString__to_s_with_length(var46, var47);
1361 var45 = var48;
1362 varonce44 = var45;
1363 }
1364 {
1365 { /* Inline opts#Option#value= (var41,var45) on <var41:OptionString> */
1366 /* Covariant cast for argument 0 (value) <var45:String> isa VALUE */
1367 /* <var45:String> isa VALUE */
1368 type_struct = var41->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
1369 cltype = type_struct->color;
1370 idtype = type_struct->id;
1371 if(cltype >= var45->type->table_size) {
1372 var50 = 0;
1373 } else {
1374 var50 = var45->type->type_table[cltype] == idtype;
1375 }
1376 if (unlikely(!var50)) {
1377 var_class_name = var45 == NULL ? "null" : var45->type->name;
1378 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
1379 PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 40);
1380 show_backtrace(1);
1381 }
1382 var41->attrs[COLOR_opts__Option___value].val = var45; /* _value on <var41:OptionString> */
1383 RET_LABEL49:(void)0;
1384 }
1385 }
1386 } else {
1387 if (varonce51) {
1388 var52 = varonce51;
1389 } else {
1390 var53 = "Error: unknown value `";
1391 var54 = 22;
1392 var55 = string__NativeString__to_s_with_length(var53, var54);
1393 var52 = var55;
1394 varonce51 = var52;
1395 }
1396 if (varonce56) {
1397 var57 = varonce56;
1398 } else {
1399 var58 = "` for --stacktrace. Use `none`, `libunwind`, `nitstack` or `auto`.";
1400 var59 = 66;
1401 var60 = string__NativeString__to_s_with_length(var58, var59);
1402 var57 = var60;
1403 varonce56 = var57;
1404 }
1405 var61 = NEW_array__Array(&type_array__Arraykernel__Object);
1406 { /* var61 = array_instance Array[Object] */
1407 var62 = 3;
1408 var63 = NEW_array__NativeArray(var62, &type_array__NativeArraykernel__Object);
1409 ((struct instance_array__NativeArray*)var63)->values[0] = (val*) var52;
1410 ((struct instance_array__NativeArray*)var63)->values[1] = (val*) var_st;
1411 ((struct instance_array__NativeArray*)var63)->values[2] = (val*) var57;
1412 {
1413 ((void (*)(val*, val*, long))(var61->class->vft[COLOR_array__Array__with_native]))(var61, var63, var62) /* with_native on <var61:Array[Object]>*/;
1414 }
1415 }
1416 {
1417 var64 = ((val* (*)(val*))(var61->class->vft[COLOR_string__Object__to_s]))(var61) /* to_s on <var61:Array[Object]>*/;
1418 }
1419 {
1420 file__Object__print(self, var64); /* Direct call file#Object#print on <self:ToolContext>*/
1421 }
1422 var65 = 1;
1423 {
1424 { /* Inline kernel#Object#exit (self,var65) on <self:ToolContext> */
1425 exit(var65);
1426 RET_LABEL66:(void)0;
1427 }
1428 }
1429 }
1430 }
1431 {
1432 { /* Inline abstract_compiler#ToolContext#opt_output (self) on <self:ToolContext> */
1433 var70 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_output].val; /* _opt_output on <self:ToolContext> */
1434 if (unlikely(var70 == NULL)) {
1435 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_output");
1436 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 28);
1437 show_backtrace(1);
1438 }
1439 var68 = var70;
1440 RET_LABEL69:(void)0;
1441 }
1442 }
1443 {
1444 { /* Inline opts#Option#value (var68) on <var68:OptionString> */
1445 var73 = var68->attrs[COLOR_opts__Option___value].val; /* _value on <var68:OptionString> */
1446 var71 = var73;
1447 RET_LABEL72:(void)0;
1448 }
1449 }
1450 var74 = NULL;
1451 if (var71 == NULL) {
1452 var75 = 0; /* is null */
1453 } else {
1454 var75 = 1; /* arg is null and recv is not */
1455 }
1456 if (0) {
1457 { /* Inline kernel#Object#!= (var71,var74) on <var71:nullable Object(nullable String)> */
1458 var_other = var74;
1459 {
1460 var79 = ((short int (*)(val*, val*))(var71->class->vft[COLOR_kernel__Object___61d_61d]))(var71, var_other) /* == on <var71:nullable String(String)>*/;
1461 var78 = var79;
1462 }
1463 var80 = !var78;
1464 var76 = var80;
1465 goto RET_LABEL77;
1466 RET_LABEL77:(void)0;
1467 }
1468 var75 = var76;
1469 }
1470 var_81 = var75;
1471 if (var75){
1472 {
1473 { /* Inline abstract_compiler#ToolContext#opt_dir (self) on <self:ToolContext> */
1474 var84 = self->attrs[COLOR_abstract_compiler__ToolContext___opt_dir].val; /* _opt_dir on <self:ToolContext> */
1475 if (unlikely(var84 == NULL)) {
1476 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_dir");
1477 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 30);
1478 show_backtrace(1);
1479 }
1480 var82 = var84;
1481 RET_LABEL83:(void)0;
1482 }
1483 }
1484 {
1485 { /* Inline opts#Option#value (var82) on <var82:OptionString> */
1486 var87 = var82->attrs[COLOR_opts__Option___value].val; /* _value on <var82:OptionString> */
1487 var85 = var87;
1488 RET_LABEL86:(void)0;
1489 }
1490 }
1491 var88 = NULL;
1492 if (var85 == NULL) {
1493 var89 = 0; /* is null */
1494 } else {
1495 var89 = 1; /* arg is null and recv is not */
1496 }
1497 if (0) {
1498 { /* Inline kernel#Object#!= (var85,var88) on <var85:nullable Object(nullable String)> */
1499 var_other = var88;
1500 {
1501 var93 = ((short int (*)(val*, val*))(var85->class->vft[COLOR_kernel__Object___61d_61d]))(var85, var_other) /* == on <var85:nullable String(String)>*/;
1502 var92 = var93;
1503 }
1504 var94 = !var92;
1505 var90 = var94;
1506 goto RET_LABEL91;
1507 RET_LABEL91:(void)0;
1508 }
1509 var89 = var90;
1510 }
1511 var67 = var89;
1512 } else {
1513 var67 = var_81;
1514 }
1515 if (var67){
1516 if (varonce95) {
1517 var96 = varonce95;
1518 } else {
1519 var97 = "Error: cannot use both --dir and --output";
1520 var98 = 41;
1521 var99 = string__NativeString__to_s_with_length(var97, var98);
1522 var96 = var99;
1523 varonce95 = var96;
1524 }
1525 {
1526 file__Object__print(self, var96); /* Direct call file#Object#print on <self:ToolContext>*/
1527 }
1528 var100 = 1;
1529 {
1530 { /* Inline kernel#Object#exit (self,var100) on <self:ToolContext> */
1531 exit(var100);
1532 RET_LABEL101:(void)0;
1533 }
1534 }
1535 } else {
1536 }
1537 RET_LABEL:;
1538 }
1539 /* method abstract_compiler#ToolContext#process_options for (self: Object, Sequence[String]) */
1540 void VIRTUAL_abstract_compiler__ToolContext__process_options(val* self, val* p0) {
1541 abstract_compiler__ToolContext__process_options(self, p0); /* Direct call abstract_compiler#ToolContext#process_options on <self:Object(ToolContext)>*/
1542 RET_LABEL:;
1543 }
1544 /* method abstract_compiler#ModelBuilder#compile_dir for (self: ModelBuilder): String */
1545 val* abstract_compiler__ModelBuilder__compile_dir(val* self) {
1546 val* var /* : String */;
1547 val* var1 /* : String */;
1548 var1 = self->attrs[COLOR_abstract_compiler__ModelBuilder___compile_dir].val; /* _compile_dir on <self:ModelBuilder> */
1549 if (unlikely(var1 == NULL)) {
1550 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compile_dir");
1551 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 103);
1552 show_backtrace(1);
1553 }
1554 var = var1;
1555 RET_LABEL:;
1556 return var;
1557 }
1558 /* method abstract_compiler#ModelBuilder#compile_dir for (self: Object): String */
1559 val* VIRTUAL_abstract_compiler__ModelBuilder__compile_dir(val* self) {
1560 val* var /* : String */;
1561 val* var1 /* : String */;
1562 val* var3 /* : String */;
1563 { /* Inline abstract_compiler#ModelBuilder#compile_dir (self) on <self:Object(ModelBuilder)> */
1564 var3 = self->attrs[COLOR_abstract_compiler__ModelBuilder___compile_dir].val; /* _compile_dir on <self:Object(ModelBuilder)> */
1565 if (unlikely(var3 == NULL)) {
1566 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compile_dir");
1567 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 103);
1568 show_backtrace(1);
1569 }
1570 var1 = var3;
1571 RET_LABEL2:(void)0;
1572 }
1573 var = var1;
1574 RET_LABEL:;
1575 return var;
1576 }
1577 /* method abstract_compiler#ModelBuilder#compile_dir= for (self: ModelBuilder, String) */
1578 void abstract_compiler__ModelBuilder__compile_dir_61d(val* self, val* p0) {
1579 self->attrs[COLOR_abstract_compiler__ModelBuilder___compile_dir].val = p0; /* _compile_dir on <self:ModelBuilder> */
1580 RET_LABEL:;
1581 }
1582 /* method abstract_compiler#ModelBuilder#compile_dir= for (self: Object, String) */
1583 void VIRTUAL_abstract_compiler__ModelBuilder__compile_dir_61d(val* self, val* p0) {
1584 { /* Inline abstract_compiler#ModelBuilder#compile_dir= (self,p0) on <self:Object(ModelBuilder)> */
1585 self->attrs[COLOR_abstract_compiler__ModelBuilder___compile_dir].val = p0; /* _compile_dir on <self:Object(ModelBuilder)> */
1586 RET_LABEL1:(void)0;
1587 }
1588 RET_LABEL:;
1589 }
1590 /* method abstract_compiler#ModelBuilder#write_and_make for (self: ModelBuilder, AbstractCompiler) */
1591 void abstract_compiler__ModelBuilder__write_and_make(val* self, val* p0) {
1592 val* var_compiler /* var compiler: AbstractCompiler */;
1593 val* var /* : MModule */;
1594 val* var2 /* : MModule */;
1595 val* var3 /* : nullable Platform */;
1596 val* var_platform /* var platform: nullable Platform */;
1597 val* var4 /* : null */;
1598 short int var5 /* : Bool */;
1599 short int var6 /* : Bool */;
1600 val* var7 /* : MakefileToolchain */;
1601 val* var8 /* : ToolContext */;
1602 val* var10 /* : ToolContext */;
1603 val* var_toolchain /* var toolchain: nullable Object */;
1604 val* var12 /* : ToolContext */;
1605 val* var14 /* : ToolContext */;
1606 val* var15 /* : Toolchain */;
1607 val* var16 /* : String */;
1608 var_compiler = p0;
1609 {
1610 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (var_compiler) on <var_compiler:AbstractCompiler> */
1611 var2 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var_compiler:AbstractCompiler> */
1612 if (unlikely(var2 == NULL)) {
1613 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1614 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 436);
1615 show_backtrace(1);
1616 }
1617 var = var2;
1618 RET_LABEL1:(void)0;
1619 }
1620 }
1621 {
1622 var3 = platform__MModule__target_platform(var);
1623 }
1624 var_platform = var3;
1625 var4 = NULL;
1626 if (var_platform == NULL) {
1627 var5 = 1; /* is null */
1628 } else {
1629 var5 = 0; /* arg is null but recv is not */
1630 }
1631 if (0) {
1632 var6 = ((short int (*)(val*, val*))(var_platform->class->vft[COLOR_kernel__Object___61d_61d]))(var_platform, var4) /* == on <var_platform:nullable Platform>*/;
1633 var5 = var6;
1634 }
1635 if (var5){
1636 var7 = NEW_abstract_compiler__MakefileToolchain(&type_abstract_compiler__MakefileToolchain);
1637 {
1638 { /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
1639 var10 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
1640 if (unlikely(var10 == NULL)) {
1641 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1642 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
1643 show_backtrace(1);
1644 }
1645 var8 = var10;
1646 RET_LABEL9:(void)0;
1647 }
1648 }
1649 {
1650 { /* Inline abstract_compiler#Toolchain#init (var7,var8) on <var7:MakefileToolchain> */
1651 var7->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val = var8; /* _toolcontext on <var7:MakefileToolchain> */
1652 RET_LABEL11:(void)0;
1653 }
1654 }
1655 var_toolchain = var7;
1656 } else {
1657 {
1658 { /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
1659 var14 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
1660 if (unlikely(var14 == NULL)) {
1661 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1662 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
1663 show_backtrace(1);
1664 }
1665 var12 = var14;
1666 RET_LABEL13:(void)0;
1667 }
1668 }
1669 {
1670 var15 = ((val* (*)(val*, val*))(var_platform->class->vft[COLOR_abstract_compiler__Platform__toolchain]))(var_platform, var12) /* toolchain on <var_platform:nullable Platform(Platform)>*/;
1671 }
1672 var_toolchain = var15;
1673 }
1674 {
1675 var16 = abstract_compiler__Toolchain__compile_dir(var_toolchain);
1676 }
1677 {
1678 { /* Inline abstract_compiler#ModelBuilder#compile_dir= (self,var16) on <self:ModelBuilder> */
1679 self->attrs[COLOR_abstract_compiler__ModelBuilder___compile_dir].val = var16; /* _compile_dir on <self:ModelBuilder> */
1680 RET_LABEL17:(void)0;
1681 }
1682 }
1683 {
1684 abstract_compiler__MakefileToolchain__write_and_make(var_toolchain, var_compiler); /* Direct call abstract_compiler#MakefileToolchain#write_and_make on <var_toolchain:nullable Object(Toolchain)>*/
1685 }
1686 RET_LABEL:;
1687 }
1688 /* method abstract_compiler#ModelBuilder#write_and_make for (self: Object, AbstractCompiler) */
1689 void VIRTUAL_abstract_compiler__ModelBuilder__write_and_make(val* self, val* p0) {
1690 abstract_compiler__ModelBuilder__write_and_make(self, p0); /* Direct call abstract_compiler#ModelBuilder#write_and_make on <self:Object(ModelBuilder)>*/
1691 RET_LABEL:;
1692 }
1693 /* method abstract_compiler#Platform#toolchain for (self: Platform, ToolContext): Toolchain */
1694 val* abstract_compiler__Platform__toolchain(val* self, val* p0) {
1695 val* var /* : Toolchain */;
1696 const char* var_class_name;
1697 var_class_name = self == NULL ? "null" : self->type->name;
1698 PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "toolchain", var_class_name);
1699 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 122);
1700 show_backtrace(1);
1701 RET_LABEL:;
1702 return var;
1703 }
1704 /* method abstract_compiler#Platform#toolchain for (self: Object, ToolContext): Toolchain */
1705 val* VIRTUAL_abstract_compiler__Platform__toolchain(val* self, val* p0) {
1706 val* var /* : Toolchain */;
1707 val* var1 /* : Toolchain */;
1708 const char* var_class_name;
1709 { /* Inline abstract_compiler#Platform#toolchain (self,p0) on <self:Object(Platform)> */
1710 var_class_name = self == NULL ? "null" : self->type->name;
1711 PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "toolchain", var_class_name);
1712 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 122);
1713 show_backtrace(1);
1714 RET_LABEL2:(void)0;
1715 }
1716 var = var1;
1717 RET_LABEL:;
1718 return var;
1719 }
1720 /* method abstract_compiler#Toolchain#toolcontext for (self: Toolchain): ToolContext */
1721 val* abstract_compiler__Toolchain__toolcontext(val* self) {
1722 val* var /* : ToolContext */;
1723 val* var1 /* : ToolContext */;
1724 var1 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:Toolchain> */
1725 if (unlikely(var1 == NULL)) {
1726 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1727 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
1728 show_backtrace(1);
1729 }
1730 var = var1;
1731 RET_LABEL:;
1732 return var;
1733 }
1734 /* method abstract_compiler#Toolchain#toolcontext for (self: Object): ToolContext */
1735 val* VIRTUAL_abstract_compiler__Toolchain__toolcontext(val* self) {
1736 val* var /* : ToolContext */;
1737 val* var1 /* : ToolContext */;
1738 val* var3 /* : ToolContext */;
1739 { /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:Object(Toolchain)> */
1740 var3 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:Object(Toolchain)> */
1741 if (unlikely(var3 == NULL)) {
1742 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1743 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
1744 show_backtrace(1);
1745 }
1746 var1 = var3;
1747 RET_LABEL2:(void)0;
1748 }
1749 var = var1;
1750 RET_LABEL:;
1751 return var;
1752 }
1753 /* method abstract_compiler#Toolchain#compile_dir for (self: Toolchain): String */
1754 val* abstract_compiler__Toolchain__compile_dir(val* self) {
1755 val* var /* : String */;
1756 val* var1 /* : ToolContext */;
1757 val* var3 /* : ToolContext */;
1758 val* var4 /* : OptionString */;
1759 val* var6 /* : OptionString */;
1760 val* var7 /* : nullable Object */;
1761 val* var9 /* : nullable Object */;
1762 val* var_compile_dir /* var compile_dir: nullable String */;
1763 val* var10 /* : null */;
1764 short int var11 /* : Bool */;
1765 short int var12 /* : Bool */;
1766 static val* varonce;
1767 val* var13 /* : String */;
1768 char* var14 /* : NativeString */;
1769 long var15 /* : Int */;
1770 val* var16 /* : FlatString */;
1771 {
1772 { /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:Toolchain> */
1773 var3 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:Toolchain> */
1774 if (unlikely(var3 == NULL)) {
1775 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1776 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
1777 show_backtrace(1);
1778 }
1779 var1 = var3;
1780 RET_LABEL2:(void)0;
1781 }
1782 }
1783 {
1784 { /* Inline abstract_compiler#ToolContext#opt_compile_dir (var1) on <var1:ToolContext> */
1785 var6 = var1->attrs[COLOR_abstract_compiler__ToolContext___opt_compile_dir].val; /* _opt_compile_dir on <var1:ToolContext> */
1786 if (unlikely(var6 == NULL)) {
1787 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_compile_dir");
1788 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 40);
1789 show_backtrace(1);
1790 }
1791 var4 = var6;
1792 RET_LABEL5:(void)0;
1793 }
1794 }
1795 {
1796 { /* Inline opts#Option#value (var4) on <var4:OptionString> */
1797 var9 = var4->attrs[COLOR_opts__Option___value].val; /* _value on <var4:OptionString> */
1798 var7 = var9;
1799 RET_LABEL8:(void)0;
1800 }
1801 }
1802 var_compile_dir = var7;
1803 var10 = NULL;
1804 if (var_compile_dir == NULL) {
1805 var11 = 1; /* is null */
1806 } else {
1807 var11 = 0; /* arg is null but recv is not */
1808 }
1809 if (0) {
1810 var12 = string__FlatString___61d_61d(var_compile_dir, var10);
1811 var11 = var12;
1812 }
1813 if (var11){
1814 if (varonce) {
1815 var13 = varonce;
1816 } else {
1817 var14 = ".nit_compile";
1818 var15 = 12;
1819 var16 = string__NativeString__to_s_with_length(var14, var15);
1820 var13 = var16;
1821 varonce = var13;
1822 }
1823 var_compile_dir = var13;
1824 } else {
1825 }
1826 var = var_compile_dir;
1827 goto RET_LABEL;
1828 RET_LABEL:;
1829 return var;
1830 }
1831 /* method abstract_compiler#Toolchain#compile_dir for (self: Object): String */
1832 val* VIRTUAL_abstract_compiler__Toolchain__compile_dir(val* self) {
1833 val* var /* : String */;
1834 val* var1 /* : String */;
1835 var1 = abstract_compiler__Toolchain__compile_dir(self);
1836 var = var1;
1837 RET_LABEL:;
1838 return var;
1839 }
1840 /* method abstract_compiler#Toolchain#init for (self: Toolchain, ToolContext) */
1841 void abstract_compiler__Toolchain__init(val* self, val* p0) {
1842 self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val = p0; /* _toolcontext on <self:Toolchain> */
1843 RET_LABEL:;
1844 }
1845 /* method abstract_compiler#Toolchain#init for (self: Object, ToolContext) */
1846 void VIRTUAL_abstract_compiler__Toolchain__init(val* self, val* p0) {
1847 { /* Inline abstract_compiler#Toolchain#init (self,p0) on <self:Object(Toolchain)> */
1848 self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val = p0; /* _toolcontext on <self:Object(Toolchain)> */
1849 RET_LABEL1:(void)0;
1850 }
1851 RET_LABEL:;
1852 }
1853 /* method abstract_compiler#MakefileToolchain#cc_paths for (self: MakefileToolchain): Array[String] */
1854 val* abstract_compiler__MakefileToolchain__cc_paths(val* self) {
1855 val* var /* : Array[String] */;
1856 val* var1 /* : Array[String] */;
1857 var1 = self->attrs[COLOR_abstract_compiler__MakefileToolchain___cc_paths].val; /* _cc_paths on <self:MakefileToolchain> */
1858 if (unlikely(var1 == NULL)) {
1859 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cc_paths");
1860 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 140);
1861 show_backtrace(1);
1862 }
1863 var = var1;
1864 RET_LABEL:;
1865 return var;
1866 }
1867 /* method abstract_compiler#MakefileToolchain#cc_paths for (self: Object): Array[String] */
1868 val* VIRTUAL_abstract_compiler__MakefileToolchain__cc_paths(val* self) {
1869 val* var /* : Array[String] */;
1870 val* var1 /* : Array[String] */;
1871 val* var3 /* : Array[String] */;
1872 { /* Inline abstract_compiler#MakefileToolchain#cc_paths (self) on <self:Object(MakefileToolchain)> */
1873 var3 = self->attrs[COLOR_abstract_compiler__MakefileToolchain___cc_paths].val; /* _cc_paths on <self:Object(MakefileToolchain)> */
1874 if (unlikely(var3 == NULL)) {
1875 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cc_paths");
1876 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 140);
1877 show_backtrace(1);
1878 }
1879 var1 = var3;
1880 RET_LABEL2:(void)0;
1881 }
1882 var = var1;
1883 RET_LABEL:;
1884 return var;
1885 }
1886 /* method abstract_compiler#MakefileToolchain#gather_cc_paths for (self: MakefileToolchain) */
1887 void abstract_compiler__MakefileToolchain__gather_cc_paths(val* self) {
1888 val* var /* : ToolContext */;
1889 val* var2 /* : ToolContext */;
1890 val* var3 /* : nullable String */;
1891 val* var5 /* : nullable String */;
1892 val* var_path_env /* var path_env: nullable String */;
1893 val* var6 /* : null */;
1894 short int var7 /* : Bool */;
1895 short int var8 /* : Bool */;
1896 val* var_other /* var other: nullable Object */;
1897 short int var10 /* : Bool */;
1898 short int var11 /* : Bool */;
1899 short int var12 /* : Bool */;
1900 static val* varonce;
1901 val* var13 /* : String */;
1902 char* var14 /* : NativeString */;
1903 long var15 /* : Int */;
1904 val* var16 /* : FlatString */;
1905 val* var17 /* : Array[Object] */;
1906 long var18 /* : Int */;
1907 val* var19 /* : NativeArray[Object] */;
1908 val* var20 /* : String */;
1909 val* var_libname /* var libname: String */;
1910 short int var21 /* : Bool */;
1911 val* var22 /* : Array[String] */;
1912 val* var24 /* : Array[String] */;
1913 val* var25 /* : Array[String] */;
1914 val* var27 /* : Array[String] */;
1915 short int var28 /* : Bool */;
1916 val* var29 /* : ToolContext */;
1917 val* var31 /* : ToolContext */;
1918 val* var32 /* : null */;
1919 static val* varonce33;
1920 val* var34 /* : String */;
1921 char* var35 /* : NativeString */;
1922 long var36 /* : Int */;
1923 val* var37 /* : FlatString */;
1924 val* var38 /* : Array[String] */;
1925 val* var40 /* : Array[String] */;
1926 val* var41 /* : ToolContext */;
1927 val* var43 /* : ToolContext */;
1928 val* var44 /* : OptionArray */;
1929 val* var46 /* : OptionArray */;
1930 val* var47 /* : nullable Object */;
1931 val* var49 /* : nullable Object */;
1932 static val* varonce50;
1933 val* var51 /* : String */;
1934 char* var52 /* : NativeString */;
1935 long var53 /* : Int */;
1936 val* var54 /* : FlatString */;
1937 val* var55 /* : String */;
1938 short int var56 /* : Bool */;
1939 short int var57 /* : Bool */;
1940 val* var58 /* : Array[String] */;
1941 val* var60 /* : Array[String] */;
1942 char var61 /* : Char */;
1943 val* var62 /* : Array[Text] */;
1944 val* var63 /* : Pattern */;
1945 {
1946 { /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
1947 var2 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
1948 if (unlikely(var2 == NULL)) {
1949 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1950 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
1951 show_backtrace(1);
1952 }
1953 var = var2;
1954 RET_LABEL1:(void)0;
1955 }
1956 }
1957 {
1958 { /* Inline toolcontext#ToolContext#nit_dir (var) on <var:ToolContext> */
1959 var5 = var->attrs[COLOR_toolcontext__ToolContext___nit_dir].val; /* _nit_dir on <var:ToolContext> */
1960 var3 = var5;
1961 RET_LABEL4:(void)0;
1962 }
1963 }
1964 var_path_env = var3;
1965 var6 = NULL;
1966 if (var_path_env == NULL) {
1967 var7 = 0; /* is null */
1968 } else {
1969 var7 = 1; /* arg is null and recv is not */
1970 }
1971 if (0) {
1972 { /* Inline kernel#Object#!= (var_path_env,var6) on <var_path_env:nullable String> */
1973 var_other = var6;
1974 {
1975 var11 = ((short int (*)(val*, val*))(var_path_env->class->vft[COLOR_kernel__Object___61d_61d]))(var_path_env, var_other) /* == on <var_path_env:nullable String(String)>*/;
1976 var10 = var11;
1977 }
1978 var12 = !var10;
1979 var8 = var12;
1980 goto RET_LABEL9;
1981 RET_LABEL9:(void)0;
1982 }
1983 var7 = var8;
1984 }
1985 if (var7){
1986 if (varonce) {
1987 var13 = varonce;
1988 } else {
1989 var14 = "/clib";
1990 var15 = 5;
1991 var16 = string__NativeString__to_s_with_length(var14, var15);
1992 var13 = var16;
1993 varonce = var13;
1994 }
1995 var17 = NEW_array__Array(&type_array__Arraykernel__Object);
1996 { /* var17 = array_instance Array[Object] */
1997 var18 = 2;
1998 var19 = NEW_array__NativeArray(var18, &type_array__NativeArraykernel__Object);
1999 ((struct instance_array__NativeArray*)var19)->values[0] = (val*) var_path_env;
2000 ((struct instance_array__NativeArray*)var19)->values[1] = (val*) var13;
2001 {
2002 ((void (*)(val*, val*, long))(var17->class->vft[COLOR_array__Array__with_native]))(var17, var19, var18) /* with_native on <var17:Array[Object]>*/;
2003 }
2004 }
2005 {
2006 var20 = ((val* (*)(val*))(var17->class->vft[COLOR_string__Object__to_s]))(var17) /* to_s on <var17:Array[Object]>*/;
2007 }
2008 var_libname = var20;
2009 {
2010 var21 = file__String__file_exists(var_libname);
2011 }
2012 if (var21){
2013 {
2014 { /* Inline abstract_compiler#MakefileToolchain#cc_paths (self) on <self:MakefileToolchain> */
2015 var24 = self->attrs[COLOR_abstract_compiler__MakefileToolchain___cc_paths].val; /* _cc_paths on <self:MakefileToolchain> */
2016 if (unlikely(var24 == NULL)) {
2017 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cc_paths");
2018 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 140);
2019 show_backtrace(1);
2020 }
2021 var22 = var24;
2022 RET_LABEL23:(void)0;
2023 }
2024 }
2025 {
2026 array__Array__add(var22, var_libname); /* Direct call array#Array#add on <var22:Array[String]>*/
2027 }
2028 } else {
2029 }
2030 } else {
2031 }
2032 {
2033 { /* Inline abstract_compiler#MakefileToolchain#cc_paths (self) on <self:MakefileToolchain> */
2034 var27 = self->attrs[COLOR_abstract_compiler__MakefileToolchain___cc_paths].val; /* _cc_paths on <self:MakefileToolchain> */
2035 if (unlikely(var27 == NULL)) {
2036 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cc_paths");
2037 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 140);
2038 show_backtrace(1);
2039 }
2040 var25 = var27;
2041 RET_LABEL26:(void)0;
2042 }
2043 }
2044 {
2045 var28 = array__AbstractArrayRead__is_empty(var25);
2046 }
2047 if (var28){
2048 {
2049 { /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
2050 var31 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
2051 if (unlikely(var31 == NULL)) {
2052 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
2053 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
2054 show_backtrace(1);
2055 }
2056 var29 = var31;
2057 RET_LABEL30:(void)0;
2058 }
2059 }
2060 var32 = NULL;
2061 if (varonce33) {
2062 var34 = varonce33;
2063 } else {
2064 var35 = "Cannot determine the nit clib path. define envvar NIT_DIR.";
2065 var36 = 58;
2066 var37 = string__NativeString__to_s_with_length(var35, var36);
2067 var34 = var37;
2068 varonce33 = var34;
2069 }
2070 {
2071 toolcontext__ToolContext__error(var29, var32, var34); /* Direct call toolcontext#ToolContext#error on <var29:ToolContext>*/
2072 }
2073 } else {
2074 }
2075 {
2076 { /* Inline abstract_compiler#MakefileToolchain#cc_paths (self) on <self:MakefileToolchain> */
2077 var40 = self->attrs[COLOR_abstract_compiler__MakefileToolchain___cc_paths].val; /* _cc_paths on <self:MakefileToolchain> */
2078 if (unlikely(var40 == NULL)) {
2079 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cc_paths");
2080 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 140);
2081 show_backtrace(1);
2082 }
2083 var38 = var40;
2084 RET_LABEL39:(void)0;
2085 }
2086 }
2087 {
2088 { /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
2089 var43 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
2090 if (unlikely(var43 == NULL)) {
2091 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
2092 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
2093 show_backtrace(1);
2094 }
2095 var41 = var43;
2096 RET_LABEL42:(void)0;
2097 }
2098 }
2099 {
2100 { /* Inline abstract_compiler#ToolContext#opt_cc_path (var41) on <var41:ToolContext> */
2101 var46 = var41->attrs[COLOR_abstract_compiler__ToolContext___opt_cc_path].val; /* _opt_cc_path on <var41:ToolContext> */
2102 if (unlikely(var46 == NULL)) {
2103 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_cc_path");
2104 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 36);
2105 show_backtrace(1);
2106 }
2107 var44 = var46;
2108 RET_LABEL45:(void)0;
2109 }
2110 }
2111 {
2112 { /* Inline opts#Option#value (var44) on <var44:OptionArray> */
2113 var49 = var44->attrs[COLOR_opts__Option___value].val; /* _value on <var44:OptionArray> */
2114 var47 = var49;
2115 RET_LABEL48:(void)0;
2116 }
2117 }
2118 {
2119 abstract_collection__Sequence__append(var38, var47); /* Direct call abstract_collection#Sequence#append on <var38:Array[String]>*/
2120 }
2121 if (varonce50) {
2122 var51 = varonce50;
2123 } else {
2124 var52 = "NIT_CC_PATH";
2125 var53 = 11;
2126 var54 = string__NativeString__to_s_with_length(var52, var53);
2127 var51 = var54;
2128 varonce50 = var51;
2129 }
2130 {
2131 var55 = environ__String__environ(var51);
2132 }
2133 var_path_env = var55;
2134 {
2135 var56 = string__Text__is_empty(var_path_env);
2136 }
2137 var57 = !var56;
2138 if (var57){
2139 {
2140 { /* Inline abstract_compiler#MakefileToolchain#cc_paths (self) on <self:MakefileToolchain> */
2141 var60 = self->attrs[COLOR_abstract_compiler__MakefileToolchain___cc_paths].val; /* _cc_paths on <self:MakefileToolchain> */
2142 if (unlikely(var60 == NULL)) {
2143 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cc_paths");
2144 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 140);
2145 show_backtrace(1);
2146 }
2147 var58 = var60;
2148 RET_LABEL59:(void)0;
2149 }
2150 }
2151 var61 = ':';
2152 {
2153 var63 = BOX_kernel__Char(var61); /* autobox from Char to Pattern */
2154 var62 = string_search__Text__split_with(var_path_env, var63);
2155 }
2156 {
2157 abstract_collection__Sequence__append(var58, var62); /* Direct call abstract_collection#Sequence#append on <var58:Array[String]>*/
2158 }
2159 } else {
2160 }
2161 RET_LABEL:;
2162 }
2163 /* method abstract_compiler#MakefileToolchain#gather_cc_paths for (self: Object) */
2164 void VIRTUAL_abstract_compiler__MakefileToolchain__gather_cc_paths(val* self) {
2165 abstract_compiler__MakefileToolchain__gather_cc_paths(self); /* Direct call abstract_compiler#MakefileToolchain#gather_cc_paths on <self:Object(MakefileToolchain)>*/
2166 RET_LABEL:;
2167 }
2168 /* method abstract_compiler#MakefileToolchain#write_and_make for (self: MakefileToolchain, AbstractCompiler) */
2169 void abstract_compiler__MakefileToolchain__write_and_make(val* self, val* p0) {
2170 val* var_compiler /* var compiler: AbstractCompiler */;
2171 val* var /* : MModule */;
2172 val* var2 /* : MModule */;
2173 val* var_mainmodule /* var mainmodule: MModule */;
2174 val* var3 /* : String */;
2175 val* var_compile_dir /* var compile_dir: String */;
2176 long var4 /* : Int */;
2177 long var6 /* : Int */;
2178 long var_time0 /* var time0: Int */;
2179 val* var7 /* : ToolContext */;
2180 val* var9 /* : ToolContext */;
2181 static val* varonce;
2182 val* var10 /* : String */;
2183 char* var11 /* : NativeString */;
2184 long var12 /* : Int */;
2185 val* var13 /* : FlatString */;
2186 long var14 /* : Int */;
2187 val* var15 /* : Array[String] */;
2188 val* var_cfiles /* var cfiles: Array[String] */;
2189 long var16 /* : Int */;
2190 long var18 /* : Int */;
2191 long var_time1 /* var time1: Int */;
2192 val* var19 /* : ToolContext */;
2193 val* var21 /* : ToolContext */;
2194 static val* varonce22;
2195 val* var23 /* : String */;
2196 char* var24 /* : NativeString */;
2197 long var25 /* : Int */;
2198 val* var26 /* : FlatString */;
2199 long var27 /* : Int */;
2200 short int var29 /* : Bool */;
2201 int cltype;
2202 int idtype;
2203 const char* var_class_name;
2204 long var30 /* : Int */;
2205 static val* varonce31;
2206 val* var32 /* : String */;
2207 char* var33 /* : NativeString */;
2208 long var34 /* : Int */;
2209 val* var35 /* : FlatString */;
2210 val* var36 /* : Array[Object] */;
2211 long var37 /* : Int */;
2212 val* var38 /* : NativeArray[Object] */;
2213 val* var39 /* : Object */;
2214 val* var40 /* : String */;
2215 long var41 /* : Int */;
2216 val* var42 /* : ToolContext */;
2217 val* var44 /* : ToolContext */;
2218 val* var45 /* : OptionBool */;
2219 val* var47 /* : OptionBool */;
2220 val* var48 /* : nullable Object */;
2221 val* var50 /* : nullable Object */;
2222 short int var51 /* : Bool */;
2223 val* var52 /* : ToolContext */;
2224 val* var54 /* : ToolContext */;
2225 static val* varonce55;
2226 val* var56 /* : String */;
2227 char* var57 /* : NativeString */;
2228 long var58 /* : Int */;
2229 val* var59 /* : FlatString */;
2230 long var60 /* : Int */;
2231 long var61 /* : Int */;
2232 long var63 /* : Int */;
2233 val* var64 /* : ToolContext */;
2234 val* var66 /* : ToolContext */;
2235 static val* varonce67;
2236 val* var68 /* : String */;
2237 char* var69 /* : NativeString */;
2238 long var70 /* : Int */;
2239 val* var71 /* : FlatString */;
2240 long var72 /* : Int */;
2241 short int var74 /* : Bool */;
2242 int cltype75;
2243 int idtype76;
2244 const char* var_class_name77;
2245 long var78 /* : Int */;
2246 static val* varonce79;
2247 val* var80 /* : String */;
2248 char* var81 /* : NativeString */;
2249 long var82 /* : Int */;
2250 val* var83 /* : FlatString */;
2251 val* var84 /* : Array[Object] */;
2252 long var85 /* : Int */;
2253 val* var86 /* : NativeArray[Object] */;
2254 val* var87 /* : Object */;
2255 val* var88 /* : String */;
2256 long var89 /* : Int */;
2257 var_compiler = p0;
2258 {
2259 abstract_compiler__MakefileToolchain__gather_cc_paths(self); /* Direct call abstract_compiler#MakefileToolchain#gather_cc_paths on <self:MakefileToolchain>*/
2260 }
2261 {
2262 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (var_compiler) on <var_compiler:AbstractCompiler> */
2263 var2 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var_compiler:AbstractCompiler> */
2264 if (unlikely(var2 == NULL)) {
2265 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
2266 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 436);
2267 show_backtrace(1);
2268 }
2269 var = var2;
2270 RET_LABEL1:(void)0;
2271 }
2272 }
2273 var_mainmodule = var;
2274 {
2275 var3 = abstract_compiler__Toolchain__compile_dir(self);
2276 }
2277 var_compile_dir = var3;
2278 {
2279 { /* Inline time#Object#get_time (self) on <self:MakefileToolchain> */
2280 var6 = kernel_Any_Any_get_time_0(self);
2281 var4 = var6;
2282 goto RET_LABEL5;
2283 RET_LABEL5:(void)0;
2284 }
2285 }
2286 var_time0 = var4;
2287 {
2288 { /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
2289 var9 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
2290 if (unlikely(var9 == NULL)) {
2291 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
2292 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
2293 show_backtrace(1);
2294 }
2295 var7 = var9;
2296 RET_LABEL8:(void)0;
2297 }
2298 }
2299 if (varonce) {
2300 var10 = varonce;
2301 } else {
2302 var11 = "*** WRITING C ***";
2303 var12 = 17;
2304 var13 = string__NativeString__to_s_with_length(var11, var12);
2305 var10 = var13;
2306 varonce = var10;
2307 }
2308 var14 = 1;
2309 {
2310 toolcontext__ToolContext__info(var7, var10, var14); /* Direct call toolcontext#ToolContext#info on <var7:ToolContext>*/
2311 }
2312 {
2313 file__String__mkdir(var_compile_dir); /* Direct call file#String#mkdir on <var_compile_dir:String>*/
2314 }
2315 var15 = NEW_array__Array(&type_array__Arraystring__String);
2316 {
2317 array__Array__init(var15); /* Direct call array#Array#init on <var15:Array[String]>*/
2318 }
2319 var_cfiles = var15;
2320 {
2321 abstract_compiler__MakefileToolchain__write_files(self, var_compiler, var_compile_dir, var_cfiles); /* Direct call abstract_compiler#MakefileToolchain#write_files on <self:MakefileToolchain>*/
2322 }
2323 {
2324 abstract_compiler__MakefileToolchain__write_makefile(self, var_compiler, var_compile_dir, var_cfiles); /* Direct call abstract_compiler#MakefileToolchain#write_makefile on <self:MakefileToolchain>*/
2325 }
2326 {
2327 { /* Inline time#Object#get_time (self) on <self:MakefileToolchain> */
2328 var18 = kernel_Any_Any_get_time_0(self);
2329 var16 = var18;
2330 goto RET_LABEL17;
2331 RET_LABEL17:(void)0;
2332 }
2333 }
2334 var_time1 = var16;
2335 {
2336 { /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
2337 var21 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
2338 if (unlikely(var21 == NULL)) {
2339 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
2340 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
2341 show_backtrace(1);
2342 }
2343 var19 = var21;
2344 RET_LABEL20:(void)0;
2345 }
2346 }
2347 if (varonce22) {
2348 var23 = varonce22;
2349 } else {
2350 var24 = "*** END WRITING C: ";
2351 var25 = 19;
2352 var26 = string__NativeString__to_s_with_length(var24, var25);
2353 var23 = var26;
2354 varonce22 = var23;
2355 }
2356 {
2357 { /* Inline kernel#Int#- (var_time1,var_time0) on <var_time1:Int> */
2358 /* Covariant cast for argument 0 (i) <var_time0:Int> isa OTHER */
2359 /* <var_time0:Int> isa OTHER */
2360 var29 = 1; /* easy <var_time0:Int> isa OTHER*/
2361 if (unlikely(!var29)) {
2362 var_class_name = type_kernel__Int.name;
2363 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2364 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
2365 show_backtrace(1);
2366 }
2367 var30 = var_time1 - var_time0;
2368 var27 = var30;
2369 goto RET_LABEL28;
2370 RET_LABEL28:(void)0;
2371 }
2372 }
2373 if (varonce31) {
2374 var32 = varonce31;
2375 } else {
2376 var33 = " ***";
2377 var34 = 4;
2378 var35 = string__NativeString__to_s_with_length(var33, var34);
2379 var32 = var35;
2380 varonce31 = var32;
2381 }
2382 var36 = NEW_array__Array(&type_array__Arraykernel__Object);
2383 { /* var36 = array_instance Array[Object] */
2384 var37 = 3;
2385 var38 = NEW_array__NativeArray(var37, &type_array__NativeArraykernel__Object);
2386 ((struct instance_array__NativeArray*)var38)->values[0] = (val*) var23;
2387 var39 = BOX_kernel__Int(var27); /* autobox from Int to Object */
2388 ((struct instance_array__NativeArray*)var38)->values[1] = (val*) var39;
2389 ((struct instance_array__NativeArray*)var38)->values[2] = (val*) var32;
2390 {
2391 ((void (*)(val*, val*, long))(var36->class->vft[COLOR_array__Array__with_native]))(var36, var38, var37) /* with_native on <var36:Array[Object]>*/;
2392 }
2393 }
2394 {
2395 var40 = ((val* (*)(val*))(var36->class->vft[COLOR_string__Object__to_s]))(var36) /* to_s on <var36:Array[Object]>*/;
2396 }
2397 var41 = 2;
2398 {
2399 toolcontext__ToolContext__info(var19, var40, var41); /* Direct call toolcontext#ToolContext#info on <var19:ToolContext>*/
2400 }
2401 {
2402 { /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
2403 var44 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
2404 if (unlikely(var44 == NULL)) {
2405 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
2406 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
2407 show_backtrace(1);
2408 }
2409 var42 = var44;
2410 RET_LABEL43:(void)0;
2411 }
2412 }
2413 {
2414 { /* Inline abstract_compiler#ToolContext#opt_no_cc (var42) on <var42:ToolContext> */
2415 var47 = var42->attrs[COLOR_abstract_compiler__ToolContext___opt_no_cc].val; /* _opt_no_cc on <var42:ToolContext> */
2416 if (unlikely(var47 == NULL)) {
2417 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_cc");
2418 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 32);
2419 show_backtrace(1);
2420 }
2421 var45 = var47;
2422 RET_LABEL46:(void)0;
2423 }
2424 }
2425 {
2426 { /* Inline opts#Option#value (var45) on <var45:OptionBool> */
2427 var50 = var45->attrs[COLOR_opts__Option___value].val; /* _value on <var45:OptionBool> */
2428 var48 = var50;
2429 RET_LABEL49:(void)0;
2430 }
2431 }
2432 var51 = ((struct instance_kernel__Bool*)var48)->value; /* autounbox from nullable Object to Bool */;
2433 if (var51){
2434 goto RET_LABEL;
2435 } else {
2436 }
2437 var_time0 = var_time1;
2438 {
2439 { /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
2440 var54 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
2441 if (unlikely(var54 == NULL)) {
2442 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
2443 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
2444 show_backtrace(1);
2445 }
2446 var52 = var54;
2447 RET_LABEL53:(void)0;
2448 }
2449 }
2450 if (varonce55) {
2451 var56 = varonce55;
2452 } else {
2453 var57 = "*** COMPILING C ***";
2454 var58 = 19;
2455 var59 = string__NativeString__to_s_with_length(var57, var58);
2456 var56 = var59;
2457 varonce55 = var56;
2458 }
2459 var60 = 1;
2460 {
2461 toolcontext__ToolContext__info(var52, var56, var60); /* Direct call toolcontext#ToolContext#info on <var52:ToolContext>*/
2462 }
2463 {
2464 abstract_compiler__MakefileToolchain__compile_c_code(self, var_compiler, var_compile_dir); /* Direct call abstract_compiler#MakefileToolchain#compile_c_code on <self:MakefileToolchain>*/
2465 }
2466 {
2467 { /* Inline time#Object#get_time (self) on <self:MakefileToolchain> */
2468 var63 = kernel_Any_Any_get_time_0(self);
2469 var61 = var63;
2470 goto RET_LABEL62;
2471 RET_LABEL62:(void)0;
2472 }
2473 }
2474 var_time1 = var61;
2475 {
2476 { /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
2477 var66 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
2478 if (unlikely(var66 == NULL)) {
2479 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
2480 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
2481 show_backtrace(1);
2482 }
2483 var64 = var66;
2484 RET_LABEL65:(void)0;
2485 }
2486 }
2487 if (varonce67) {
2488 var68 = varonce67;
2489 } else {
2490 var69 = "*** END COMPILING C: ";
2491 var70 = 21;
2492 var71 = string__NativeString__to_s_with_length(var69, var70);
2493 var68 = var71;
2494 varonce67 = var68;
2495 }
2496 {
2497 { /* Inline kernel#Int#- (var_time1,var_time0) on <var_time1:Int> */
2498 /* Covariant cast for argument 0 (i) <var_time0:Int> isa OTHER */
2499 /* <var_time0:Int> isa OTHER */
2500 var74 = 1; /* easy <var_time0:Int> isa OTHER*/
2501 if (unlikely(!var74)) {
2502 var_class_name77 = type_kernel__Int.name;
2503 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name77);
2504 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
2505 show_backtrace(1);
2506 }
2507 var78 = var_time1 - var_time0;
2508 var72 = var78;
2509 goto RET_LABEL73;
2510 RET_LABEL73:(void)0;
2511 }
2512 }
2513 if (varonce79) {
2514 var80 = varonce79;
2515 } else {
2516 var81 = " ***";
2517 var82 = 4;
2518 var83 = string__NativeString__to_s_with_length(var81, var82);
2519 var80 = var83;
2520 varonce79 = var80;
2521 }
2522 var84 = NEW_array__Array(&type_array__Arraykernel__Object);
2523 { /* var84 = array_instance Array[Object] */
2524 var85 = 3;
2525 var86 = NEW_array__NativeArray(var85, &type_array__NativeArraykernel__Object);
2526 ((struct instance_array__NativeArray*)var86)->values[0] = (val*) var68;
2527 var87 = BOX_kernel__Int(var72); /* autobox from Int to Object */
2528 ((struct instance_array__NativeArray*)var86)->values[1] = (val*) var87;
2529 ((struct instance_array__NativeArray*)var86)->values[2] = (val*) var80;
2530 {
2531 ((void (*)(val*, val*, long))(var84->class->vft[COLOR_array__Array__with_native]))(var84, var86, var85) /* with_native on <var84:Array[Object]>*/;
2532 }
2533 }
2534 {
2535 var88 = ((val* (*)(val*))(var84->class->vft[COLOR_string__Object__to_s]))(var84) /* to_s on <var84:Array[Object]>*/;
2536 }
2537 var89 = 2;
2538 {
2539 toolcontext__ToolContext__info(var64, var88, var89); /* Direct call toolcontext#ToolContext#info on <var64:ToolContext>*/
2540 }
2541 RET_LABEL:;
2542 }
2543 /* method abstract_compiler#MakefileToolchain#write_and_make for (self: Object, AbstractCompiler) */
2544 void VIRTUAL_abstract_compiler__MakefileToolchain__write_and_make(val* self, val* p0) {
2545 abstract_compiler__MakefileToolchain__write_and_make(self, p0); /* Direct call abstract_compiler#MakefileToolchain#write_and_make on <self:Object(MakefileToolchain)>*/
2546 RET_LABEL:;
2547 }
2548 /* method abstract_compiler#MakefileToolchain#write_files for (self: MakefileToolchain, AbstractCompiler, String, Array[String]) */
2549 void abstract_compiler__MakefileToolchain__write_files(val* self, val* p0, val* p1, val* p2) {
2550 val* var_compiler /* var compiler: AbstractCompiler */;
2551 val* var_compile_dir /* var compile_dir: String */;
2552 val* var_cfiles /* var cfiles: Array[String] */;
2553 val* var /* : MModule */;
2554 val* var2 /* : MModule */;
2555 val* var3 /* : nullable Platform */;
2556 val* var_platform /* var platform: nullable Platform */;
2557 short int var4 /* : Bool */;
2558 val* var5 /* : ToolContext */;
2559 val* var7 /* : ToolContext */;
2560 val* var8 /* : OptionString */;
2561 val* var10 /* : OptionString */;
2562 val* var11 /* : nullable Object */;
2563 val* var13 /* : nullable Object */;
2564 static val* varonce;
2565 val* var14 /* : String */;
2566 char* var15 /* : NativeString */;
2567 long var16 /* : Int */;
2568 val* var17 /* : FlatString */;
2569 short int var18 /* : Bool */;
2570 short int var19 /* : Bool */;
2571 short int var_ /* var : Bool */;
2572 short int var20 /* : Bool */;
2573 val* var21 /* : null */;
2574 short int var22 /* : Bool */;
2575 short int var23 /* : Bool */;
2576 short int var_24 /* var : Bool */;
2577 short int var25 /* : Bool */;
2578 static val* varonce26;
2579 val* var27 /* : String */;
2580 char* var28 /* : NativeString */;
2581 long var29 /* : Int */;
2582 val* var30 /* : FlatString */;
2583 val* var_cc_opt_with_libgc /* var cc_opt_with_libgc: String */;
2584 short int var31 /* : Bool */;
2585 val* var32 /* : null */;
2586 short int var33 /* : Bool */;
2587 short int var34 /* : Bool */;
2588 short int var_35 /* var : Bool */;
2589 short int var36 /* : Bool */;
2590 short int var37 /* : Bool */;
2591 static val* varonce38;
2592 val* var39 /* : String */;
2593 char* var40 /* : NativeString */;
2594 long var41 /* : Int */;
2595 val* var42 /* : FlatString */;
2596 val* var43 /* : ExternCFile */;
2597 static val* varonce44;
2598 val* var45 /* : String */;
2599 char* var46 /* : NativeString */;
2600 long var47 /* : Int */;
2601 val* var48 /* : FlatString */;
2602 val* var_gc_chooser /* var gc_chooser: ExternCFile */;
2603 val* var49 /* : Array[ExternFile] */;
2604 val* var51 /* : Array[ExternFile] */;
2605 val* var52 /* : Array[String] */;
2606 val* var54 /* : Array[String] */;
2607 val* var55 /* : Array[String] */;
2608 val* var57 /* : Array[String] */;
2609 val* var58 /* : nullable Object */;
2610 static val* varonce59;
2611 val* var60 /* : String */;
2612 char* var61 /* : NativeString */;
2613 long var62 /* : Int */;
2614 val* var63 /* : FlatString */;
2615 val* var64 /* : Array[Object] */;
2616 long var65 /* : Int */;
2617 val* var66 /* : NativeArray[Object] */;
2618 val* var67 /* : String */;
2619 val* var68 /* : Array[String] */;
2620 val* var70 /* : Array[String] */;
2621 val* var71 /* : Array[String] */;
2622 val* var73 /* : Array[String] */;
2623 val* var74 /* : nullable Object */;
2624 static val* varonce75;
2625 val* var76 /* : String */;
2626 char* var77 /* : NativeString */;
2627 long var78 /* : Int */;
2628 val* var79 /* : FlatString */;
2629 val* var80 /* : Array[Object] */;
2630 long var81 /* : Int */;
2631 val* var82 /* : NativeArray[Object] */;
2632 val* var83 /* : String */;
2633 val* var84 /* : ToolContext */;
2634 val* var86 /* : ToolContext */;
2635 val* var87 /* : ModelBuilder */;
2636 val* var88 /* : HashMap[MModule, AModule] */;
2637 val* var90 /* : HashMap[MModule, AModule] */;
2638 val* var_m2m /* var m2m: HashMap[MModule, AModule] */;
2639 val* var91 /* : MModule */;
2640 val* var93 /* : MModule */;
2641 val* var94 /* : POSetElement[MModule] */;
2642 val* var96 /* : POSetElement[MModule] */;
2643 val* var97 /* : Collection[Object] */;
2644 val* var98 /* : Iterator[nullable Object] */;
2645 short int var99 /* : Bool */;
2646 val* var100 /* : nullable Object */;
2647 val* var_m /* var m: MModule */;
2648 val* var101 /* : Array[String] */;
2649 val* var103 /* : Array[String] */;
2650 val* var104 /* : ArrayIterator[nullable Object] */;
2651 short int var105 /* : Bool */;
2652 val* var106 /* : nullable Object */;
2653 val* var_src /* var src: String */;
2654 static val* varonce107;
2655 val* var108 /* : String */;
2656 char* var109 /* : NativeString */;
2657 long var110 /* : Int */;
2658 val* var111 /* : FlatString */;
2659 val* var112 /* : String */;
2660 val* var_basename /* var basename: String */;
2661 static val* varonce113;
2662 val* var114 /* : String */;
2663 char* var115 /* : NativeString */;
2664 long var116 /* : Int */;
2665 val* var117 /* : FlatString */;
2666 val* var118 /* : Array[Object] */;
2667 long var119 /* : Int */;
2668 val* var120 /* : NativeArray[Object] */;
2669 val* var121 /* : String */;
2670 val* var_dst /* var dst: String */;
2671 val* var123 /* : CodeWriter */;
2672 val* var125 /* : CodeWriter */;
2673 val* var126 /* : CodeFile */;
2674 val* var128 /* : CodeFile */;
2675 val* var129 /* : String */;
2676 val* var131 /* : String */;
2677 static val* varonce132;
2678 val* var133 /* : String */;
2679 char* var134 /* : NativeString */;
2680 long var135 /* : Int */;
2681 val* var136 /* : FlatString */;
2682 val* var137 /* : String */;
2683 val* var_hfilename /* var hfilename: String */;
2684 static val* varonce138;
2685 val* var139 /* : String */;
2686 char* var140 /* : NativeString */;
2687 long var141 /* : Int */;
2688 val* var142 /* : FlatString */;
2689 val* var143 /* : Array[Object] */;
2690 long var144 /* : Int */;
2691 val* var145 /* : NativeArray[Object] */;
2692 val* var146 /* : String */;
2693 val* var_hfilepath /* var hfilepath: String */;
2694 val* var147 /* : OFStream */;
2695 val* var_h /* var h: OFStream */;
2696 val* var148 /* : CodeWriter */;
2697 val* var150 /* : CodeWriter */;
2698 val* var151 /* : List[String] */;
2699 val* var153 /* : List[String] */;
2700 val* var154 /* : ListIterator[nullable Object] */;
2701 short int var155 /* : Bool */;
2702 val* var156 /* : nullable Object */;
2703 val* var_l /* var l: String */;
2704 static val* varonce157;
2705 val* var158 /* : String */;
2706 char* var159 /* : NativeString */;
2707 long var160 /* : Int */;
2708 val* var161 /* : FlatString */;
2709 val* var163 /* : CodeWriter */;
2710 val* var165 /* : CodeWriter */;
2711 val* var166 /* : List[String] */;
2712 val* var168 /* : List[String] */;
2713 val* var169 /* : ListIterator[nullable Object] */;
2714 short int var170 /* : Bool */;
2715 val* var171 /* : nullable Object */;
2716 val* var_l172 /* var l: String */;
2717 static val* varonce173;
2718 val* var174 /* : String */;
2719 char* var175 /* : NativeString */;
2720 long var176 /* : Int */;
2721 val* var177 /* : FlatString */;
2722 val* var179 /* : List[CodeFile] */;
2723 val* var181 /* : List[CodeFile] */;
2724 val* var182 /* : ListIterator[nullable Object] */;
2725 short int var183 /* : Bool */;
2726 val* var184 /* : nullable Object */;
2727 val* var_f /* var f: CodeFile */;
2728 long var185 /* : Int */;
2729 long var_i /* var i: Int */;
2730 val* var186 /* : null */;
2731 val* var_hfile /* var hfile: nullable OFStream */;
2732 long var187 /* : Int */;
2733 long var_count /* var count: Int */;
2734 val* var188 /* : String */;
2735 val* var190 /* : String */;
2736 static val* varonce191;
2737 val* var192 /* : String */;
2738 char* var193 /* : NativeString */;
2739 long var194 /* : Int */;
2740 val* var195 /* : FlatString */;
2741 val* var196 /* : Array[Object] */;
2742 long var197 /* : Int */;
2743 val* var198 /* : NativeArray[Object] */;
2744 val* var199 /* : String */;
2745 val* var_cfilename /* var cfilename: String */;
2746 static val* varonce200;
2747 val* var201 /* : String */;
2748 char* var202 /* : NativeString */;
2749 long var203 /* : Int */;
2750 val* var204 /* : FlatString */;
2751 val* var205 /* : Array[Object] */;
2752 long var206 /* : Int */;
2753 val* var207 /* : NativeArray[Object] */;
2754 val* var208 /* : String */;
2755 val* var_cfilepath /* var cfilepath: String */;
2756 val* var209 /* : OFStream */;
2757 static val* varonce210;
2758 val* var211 /* : String */;
2759 char* var212 /* : NativeString */;
2760 long var213 /* : Int */;
2761 val* var214 /* : FlatString */;
2762 static val* varonce215;
2763 val* var216 /* : String */;
2764 char* var217 /* : NativeString */;
2765 long var218 /* : Int */;
2766 val* var219 /* : FlatString */;
2767 val* var220 /* : Array[Object] */;
2768 long var221 /* : Int */;
2769 val* var222 /* : NativeArray[Object] */;
2770 val* var223 /* : String */;
2771 val* var224 /* : HashSet[String] */;
2772 val* var226 /* : HashSet[String] */;
2773 val* var227 /* : Iterator[Object] */;
2774 short int var228 /* : Bool */;
2775 val* var229 /* : nullable Object */;
2776 val* var_key /* var key: String */;
2777 val* var230 /* : HashMap[String, String] */;
2778 val* var232 /* : HashMap[String, String] */;
2779 short int var233 /* : Bool */;
2780 short int var234 /* : Bool */;
2781 val* var235 /* : HashMap[String, ANode] */;
2782 val* var237 /* : HashMap[String, ANode] */;
2783 val* var238 /* : nullable Object */;
2784 val* var_node /* var node: nullable ANode */;
2785 val* var239 /* : null */;
2786 short int var240 /* : Bool */;
2787 short int var241 /* : Bool */;
2788 val* var_other /* var other: nullable Object */;
2789 short int var243 /* : Bool */;
2790 short int var244 /* : Bool */;
2791 short int var245 /* : Bool */;
2792 static val* varonce246;
2793 val* var247 /* : String */;
2794 char* var248 /* : NativeString */;
2795 long var249 /* : Int */;
2796 val* var250 /* : FlatString */;
2797 val* var251 /* : Array[Object] */;
2798 long var252 /* : Int */;
2799 val* var253 /* : NativeArray[Object] */;
2800 val* var254 /* : String */;
2801 static val* varonce255;
2802 val* var256 /* : String */;
2803 char* var257 /* : NativeString */;
2804 long var258 /* : Int */;
2805 val* var259 /* : FlatString */;
2806 val* var260 /* : Array[Object] */;
2807 long var261 /* : Int */;
2808 val* var262 /* : NativeArray[Object] */;
2809 val* var263 /* : String */;
2810 val* var264 /* : HashMap[String, String] */;
2811 val* var266 /* : HashMap[String, String] */;
2812 val* var267 /* : nullable Object */;
2813 static val* varonce268;
2814 val* var269 /* : String */;
2815 char* var270 /* : NativeString */;
2816 long var271 /* : Int */;
2817 val* var272 /* : FlatString */;
2818 val* var274 /* : null */;
2819 val* var_file /* var file: nullable OFStream */;
2820 val* var275 /* : Array[CodeWriter] */;
2821 val* var277 /* : Array[CodeWriter] */;
2822 val* var278 /* : ArrayIterator[nullable Object] */;
2823 short int var279 /* : Bool */;
2824 val* var280 /* : nullable Object */;
2825 val* var_vis /* var vis: CodeWriter */;
2826 val* var281 /* : CodeWriter */;
2827 val* var283 /* : CodeWriter */;
2828 short int var284 /* : Bool */;
2829 short int var285 /* : Bool */;
2830 val* var_other287 /* var other: nullable Object */;
2831 short int var288 /* : Bool */;
2832 short int var290 /* : Bool */;
2833 val* var292 /* : List[String] */;
2834 val* var294 /* : List[String] */;
2835 long var295 /* : Int */;
2836 val* var296 /* : List[String] */;
2837 val* var298 /* : List[String] */;
2838 long var299 /* : Int */;
2839 long var300 /* : Int */;
2840 short int var302 /* : Bool */;
2841 int cltype;
2842 int idtype;
2843 const char* var_class_name;
2844 long var303 /* : Int */;
2845 long var_total_lines /* var total_lines: Int */;
2846 long var304 /* : Int */;
2847 short int var305 /* : Bool */;
2848 short int var306 /* : Bool */;
2849 short int var308 /* : Bool */;
2850 long var309 /* : Int */;
2851 short int var311 /* : Bool */;
2852 int cltype312;
2853 int idtype313;
2854 const char* var_class_name314;
2855 long var315 /* : Int */;
2856 short int var316 /* : Bool */;
2857 val* var317 /* : null */;
2858 short int var318 /* : Bool */;
2859 short int var319 /* : Bool */;
2860 short int var321 /* : Bool */;
2861 short int var323 /* : Bool */;
2862 short int var_324 /* var : Bool */;
2863 long var325 /* : Int */;
2864 short int var326 /* : Bool */;
2865 short int var328 /* : Bool */;
2866 int cltype329;
2867 int idtype330;
2868 const char* var_class_name331;
2869 short int var332 /* : Bool */;
2870 long var333 /* : Int */;
2871 long var334 /* : Int */;
2872 short int var336 /* : Bool */;
2873 int cltype337;
2874 int idtype338;
2875 const char* var_class_name339;
2876 long var340 /* : Int */;
2877 val* var341 /* : null */;
2878 short int var342 /* : Bool */;
2879 short int var343 /* : Bool */;
2880 short int var345 /* : Bool */;
2881 short int var346 /* : Bool */;
2882 short int var347 /* : Bool */;
2883 val* var348 /* : String */;
2884 val* var350 /* : String */;
2885 static val* varonce351;
2886 val* var352 /* : String */;
2887 char* var353 /* : NativeString */;
2888 long var354 /* : Int */;
2889 val* var355 /* : FlatString */;
2890 static val* varonce356;
2891 val* var357 /* : String */;
2892 char* var358 /* : NativeString */;
2893 long var359 /* : Int */;
2894 val* var360 /* : FlatString */;
2895 val* var361 /* : Array[Object] */;
2896 long var362 /* : Int */;
2897 val* var363 /* : NativeArray[Object] */;
2898 val* var364 /* : Object */;
2899 val* var365 /* : String */;
2900 static val* varonce366;
2901 val* var367 /* : String */;
2902 char* var368 /* : NativeString */;
2903 long var369 /* : Int */;
2904 val* var370 /* : FlatString */;
2905 val* var371 /* : Array[Object] */;
2906 long var372 /* : Int */;
2907 val* var373 /* : NativeArray[Object] */;
2908 val* var374 /* : String */;
2909 val* var375 /* : ToolContext */;
2910 val* var377 /* : ToolContext */;
2911 static val* varonce378;
2912 val* var379 /* : String */;
2913 char* var380 /* : NativeString */;
2914 long var381 /* : Int */;
2915 val* var382 /* : FlatString */;
2916 val* var383 /* : Array[Object] */;
2917 long var384 /* : Int */;
2918 val* var385 /* : NativeArray[Object] */;
2919 val* var386 /* : String */;
2920 long var387 /* : Int */;
2921 val* var388 /* : OFStream */;
2922 static val* varonce389;
2923 val* var390 /* : String */;
2924 char* var391 /* : NativeString */;
2925 long var392 /* : Int */;
2926 val* var393 /* : FlatString */;
2927 val* var394 /* : String */;
2928 val* var396 /* : String */;
2929 static val* varonce397;
2930 val* var398 /* : String */;
2931 char* var399 /* : NativeString */;
2932 long var400 /* : Int */;
2933 val* var401 /* : FlatString */;
2934 val* var402 /* : Array[Object] */;
2935 long var403 /* : Int */;
2936 val* var404 /* : NativeArray[Object] */;
2937 val* var405 /* : String */;
2938 val* var406 /* : List[String] */;
2939 val* var408 /* : List[String] */;
2940 val* var409 /* : ListIterator[nullable Object] */;
2941 short int var410 /* : Bool */;
2942 val* var411 /* : nullable Object */;
2943 val* var_l412 /* var l: String */;
2944 static val* varonce413;
2945 val* var414 /* : String */;
2946 char* var415 /* : NativeString */;
2947 long var416 /* : Int */;
2948 val* var417 /* : FlatString */;
2949 val* var419 /* : List[String] */;
2950 val* var421 /* : List[String] */;
2951 val* var422 /* : ListIterator[nullable Object] */;
2952 short int var423 /* : Bool */;
2953 val* var424 /* : nullable Object */;
2954 val* var_l425 /* var l: String */;
2955 static val* varonce426;
2956 val* var427 /* : String */;
2957 char* var428 /* : NativeString */;
2958 long var429 /* : Int */;
2959 val* var430 /* : FlatString */;
2960 val* var432 /* : null */;
2961 short int var433 /* : Bool */;
2962 short int var434 /* : Bool */;
2963 short int var436 /* : Bool */;
2964 short int var437 /* : Bool */;
2965 short int var438 /* : Bool */;
2966 val* var440 /* : ToolContext */;
2967 val* var442 /* : ToolContext */;
2968 static val* varonce443;
2969 val* var444 /* : String */;
2970 char* var445 /* : NativeString */;
2971 long var446 /* : Int */;
2972 val* var447 /* : FlatString */;
2973 long var448 /* : Int */;
2974 val* var449 /* : Array[Object] */;
2975 long var450 /* : Int */;
2976 val* var451 /* : NativeArray[Object] */;
2977 val* var452 /* : Object */;
2978 val* var453 /* : String */;
2979 long var454 /* : Int */;
2980 var_compiler = p0;
2981 var_compile_dir = p1;
2982 var_cfiles = p2;
2983 {
2984 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (var_compiler) on <var_compiler:AbstractCompiler> */
2985 var2 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var_compiler:AbstractCompiler> */
2986 if (unlikely(var2 == NULL)) {
2987 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
2988 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 436);
2989 show_backtrace(1);
2990 }
2991 var = var2;
2992 RET_LABEL1:(void)0;
2993 }
2994 }
2995 {
2996 var3 = platform__MModule__target_platform(var);
2997 }
2998 var_platform = var3;
2999 {
3000 { /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
3001 var7 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
3002 if (unlikely(var7 == NULL)) {
3003 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
3004 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
3005 show_backtrace(1);
3006 }
3007 var5 = var7;
3008 RET_LABEL6:(void)0;
3009 }
3010 }
3011 {
3012 { /* Inline abstract_compiler#ToolContext#opt_stacktrace (var5) on <var5:ToolContext> */
3013 var10 = var5->attrs[COLOR_abstract_compiler__ToolContext___opt_stacktrace].val; /* _opt_stacktrace on <var5:ToolContext> */
3014 if (unlikely(var10 == NULL)) {
3015 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_stacktrace");
3016 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 62);
3017 show_backtrace(1);
3018 }
3019 var8 = var10;
3020 RET_LABEL9:(void)0;
3021 }
3022 }
3023 {
3024 { /* Inline opts#Option#value (var8) on <var8:OptionString> */
3025 var13 = var8->attrs[COLOR_opts__Option___value].val; /* _value on <var8:OptionString> */
3026 var11 = var13;
3027 RET_LABEL12:(void)0;
3028 }
3029 }
3030 if (varonce) {
3031 var14 = varonce;
3032 } else {
3033 var15 = "nitstack";
3034 var16 = 8;
3035 var17 = string__NativeString__to_s_with_length(var15, var16);
3036 var14 = var17;
3037 varonce = var14;
3038 }
3039 if (var11 == NULL) {
3040 var18 = 0; /* <var14:String> cannot be null */
3041 } else {
3042 var19 = string__FlatString___61d_61d(var11, var14);
3043 var18 = var19;
3044 }
3045 var_ = var18;
3046 if (var18){
3047 var21 = NULL;
3048 if (var_platform == NULL) {
3049 var22 = 1; /* is null */
3050 } else {
3051 var22 = 0; /* arg is null but recv is not */
3052 }
3053 if (0) {
3054 var23 = ((short int (*)(val*, val*))(var_platform->class->vft[COLOR_kernel__Object___61d_61d]))(var_platform, var21) /* == on <var_platform:nullable Platform>*/;
3055 var22 = var23;
3056 }
3057 var_24 = var22;
3058 if (var22){
3059 var20 = var_24;
3060 } else {
3061 {
3062 var25 = ((short int (*)(val*))(var_platform->class->vft[COLOR_platform__Platform__supports_libunwind]))(var_platform) /* supports_libunwind on <var_platform:nullable Platform(Platform)>*/;
3063 }
3064 var20 = var25;
3065 }
3066 var4 = var20;
3067 } else {
3068 var4 = var_;
3069 }
3070 if (var4){
3071 {
3072 abstract_compiler__AbstractCompiler__build_c_to_nit_bindings(var_compiler); /* Direct call abstract_compiler#AbstractCompiler#build_c_to_nit_bindings on <var_compiler:AbstractCompiler>*/
3073 }
3074 } else {
3075 }
3076 if (varonce26) {
3077 var27 = varonce26;
3078 } else {
3079 var28 = "-DWITH_LIBGC";
3080 var29 = 12;
3081 var30 = string__NativeString__to_s_with_length(var28, var29);
3082 var27 = var30;
3083 varonce26 = var27;
3084 }
3085 var_cc_opt_with_libgc = var27;
3086 var32 = NULL;
3087 if (var_platform == NULL) {
3088 var33 = 0; /* is null */
3089 } else {
3090 var33 = 1; /* arg is null and recv is not */
3091 }
3092 if (0) {
3093 var34 = ((short int (*)(val*, val*))(var_platform->class->vft[COLOR_kernel__Object___33d_61d]))(var_platform, var32) /* != on <var_platform:nullable Platform>*/;
3094 var33 = var34;
3095 }
3096 var_35 = var33;
3097 if (var33){
3098 {
3099 var36 = ((short int (*)(val*))(var_platform->class->vft[COLOR_platform__Platform__supports_libgc]))(var_platform) /* supports_libgc on <var_platform:nullable Platform(Platform)>*/;
3100 }
3101 var37 = !var36;
3102 var31 = var37;
3103 } else {
3104 var31 = var_35;
3105 }
3106 if (var31){
3107 if (varonce38) {
3108 var39 = varonce38;
3109 } else {
3110 var40 = "";
3111 var41 = 0;
3112 var42 = string__NativeString__to_s_with_length(var40, var41);
3113 var39 = var42;
3114 varonce38 = var39;
3115 }
3116 var_cc_opt_with_libgc = var39;
3117 } else {
3118 }
3119 var43 = NEW_c_tools__ExternCFile(&type_c_tools__ExternCFile);
3120 if (varonce44) {
3121 var45 = varonce44;
3122 } else {
3123 var46 = "gc_chooser.c";
3124 var47 = 12;
3125 var48 = string__NativeString__to_s_with_length(var46, var47);
3126 var45 = var48;
3127 varonce44 = var45;
3128 }
3129 {
3130 c_tools__ExternCFile__init(var43, var45, var_cc_opt_with_libgc); /* Direct call c_tools#ExternCFile#init on <var43:ExternCFile>*/
3131 }
3132 var_gc_chooser = var43;
3133 {
3134 { /* Inline abstract_compiler#AbstractCompiler#extern_bodies (var_compiler) on <var_compiler:AbstractCompiler> */
3135 var51 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___extern_bodies].val; /* _extern_bodies on <var_compiler:AbstractCompiler> */
3136 if (unlikely(var51 == NULL)) {
3137 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _extern_bodies");
3138 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 847);
3139 show_backtrace(1);
3140 }
3141 var49 = var51;
3142 RET_LABEL50:(void)0;
3143 }
3144 }
3145 {
3146 array__Array__add(var49, var_gc_chooser); /* Direct call array#Array#add on <var49:Array[ExternFile]>*/
3147 }
3148 {
3149 { /* Inline abstract_compiler#AbstractCompiler#files_to_copy (var_compiler) on <var_compiler:AbstractCompiler> */
3150 var54 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___files_to_copy].val; /* _files_to_copy on <var_compiler:AbstractCompiler> */
3151 if (unlikely(var54 == NULL)) {
3152 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files_to_copy");
3153 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 850);
3154 show_backtrace(1);
3155 }
3156 var52 = var54;
3157 RET_LABEL53:(void)0;
3158 }
3159 }
3160 {
3161 { /* Inline abstract_compiler#MakefileToolchain#cc_paths (self) on <self:MakefileToolchain> */
3162 var57 = self->attrs[COLOR_abstract_compiler__MakefileToolchain___cc_paths].val; /* _cc_paths on <self:MakefileToolchain> */
3163 if (unlikely(var57 == NULL)) {
3164 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cc_paths");
3165 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 140);
3166 show_backtrace(1);
3167 }
3168 var55 = var57;
3169 RET_LABEL56:(void)0;
3170 }
3171 }
3172 {
3173 var58 = abstract_collection__SequenceRead__first(var55);
3174 }
3175 if (varonce59) {
3176 var60 = varonce59;
3177 } else {
3178 var61 = "/gc_chooser.c";
3179 var62 = 13;
3180 var63 = string__NativeString__to_s_with_length(var61, var62);
3181 var60 = var63;
3182 varonce59 = var60;
3183 }
3184 var64 = NEW_array__Array(&type_array__Arraykernel__Object);
3185 { /* var64 = array_instance Array[Object] */
3186 var65 = 2;
3187 var66 = NEW_array__NativeArray(var65, &type_array__NativeArraykernel__Object);
3188 ((struct instance_array__NativeArray*)var66)->values[0] = (val*) var58;
3189 ((struct instance_array__NativeArray*)var66)->values[1] = (val*) var60;
3190 {
3191 ((void (*)(val*, val*, long))(var64->class->vft[COLOR_array__Array__with_native]))(var64, var66, var65) /* with_native on <var64:Array[Object]>*/;
3192 }
3193 }
3194 {
3195 var67 = ((val* (*)(val*))(var64->class->vft[COLOR_string__Object__to_s]))(var64) /* to_s on <var64:Array[Object]>*/;
3196 }
3197 {
3198 array__Array__add(var52, var67); /* Direct call array#Array#add on <var52:Array[String]>*/
3199 }
3200 {
3201 { /* Inline abstract_compiler#AbstractCompiler#files_to_copy (var_compiler) on <var_compiler:AbstractCompiler> */
3202 var70 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___files_to_copy].val; /* _files_to_copy on <var_compiler:AbstractCompiler> */
3203 if (unlikely(var70 == NULL)) {
3204 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files_to_copy");
3205 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 850);
3206 show_backtrace(1);
3207 }
3208 var68 = var70;
3209 RET_LABEL69:(void)0;
3210 }
3211 }
3212 {
3213 { /* Inline abstract_compiler#MakefileToolchain#cc_paths (self) on <self:MakefileToolchain> */
3214 var73 = self->attrs[COLOR_abstract_compiler__MakefileToolchain___cc_paths].val; /* _cc_paths on <self:MakefileToolchain> */
3215 if (unlikely(var73 == NULL)) {
3216 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cc_paths");
3217 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 140);
3218 show_backtrace(1);
3219 }
3220 var71 = var73;
3221 RET_LABEL72:(void)0;
3222 }
3223 }
3224 {
3225 var74 = abstract_collection__SequenceRead__first(var71);
3226 }
3227 if (varonce75) {
3228 var76 = varonce75;
3229 } else {
3230 var77 = "/gc_chooser.h";
3231 var78 = 13;
3232 var79 = string__NativeString__to_s_with_length(var77, var78);
3233 var76 = var79;
3234 varonce75 = var76;
3235 }
3236 var80 = NEW_array__Array(&type_array__Arraykernel__Object);
3237 { /* var80 = array_instance Array[Object] */
3238 var81 = 2;
3239 var82 = NEW_array__NativeArray(var81, &type_array__NativeArraykernel__Object);
3240 ((struct instance_array__NativeArray*)var82)->values[0] = (val*) var74;
3241 ((struct instance_array__NativeArray*)var82)->values[1] = (val*) var76;
3242 {
3243 ((void (*)(val*, val*, long))(var80->class->vft[COLOR_array__Array__with_native]))(var80, var82, var81) /* with_native on <var80:Array[Object]>*/;
3244 }
3245 }
3246 {
3247 var83 = ((val* (*)(val*))(var80->class->vft[COLOR_string__Object__to_s]))(var80) /* to_s on <var80:Array[Object]>*/;
3248 }
3249 {
3250 array__Array__add(var68, var83); /* Direct call array#Array#add on <var68:Array[String]>*/
3251 }
3252 {
3253 { /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
3254 var86 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
3255 if (unlikely(var86 == NULL)) {
3256 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
3257 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
3258 show_backtrace(1);
3259 }
3260 var84 = var86;
3261 RET_LABEL85:(void)0;
3262 }
3263 }
3264 {
3265 var87 = modelbuilder__ToolContext__modelbuilder(var84);
3266 }
3267 {
3268 { /* Inline modelbuilder#ModelBuilder#mmodule2nmodule (var87) on <var87:ModelBuilder> */
3269 var90 = var87->attrs[COLOR_modelbuilder__ModelBuilder___mmodule2nmodule].val; /* _mmodule2nmodule on <var87:ModelBuilder> */
3270 if (unlikely(var90 == NULL)) {
3271 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule2nmodule");
3272 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 697);
3273 show_backtrace(1);
3274 }
3275 var88 = var90;
3276 RET_LABEL89:(void)0;
3277 }
3278 }
3279 var_m2m = var88;
3280 {
3281 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (var_compiler) on <var_compiler:AbstractCompiler> */
3282 var93 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var_compiler:AbstractCompiler> */
3283 if (unlikely(var93 == NULL)) {
3284 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
3285 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 436);
3286 show_backtrace(1);
3287 }
3288 var91 = var93;
3289 RET_LABEL92:(void)0;
3290 }
3291 }
3292 {
3293 { /* Inline mmodule#MModule#in_importation (var91) on <var91:MModule> */
3294 var96 = var91->attrs[COLOR_mmodule__MModule___in_importation].val; /* _in_importation on <var91:MModule> */
3295 if (unlikely(var96 == NULL)) {
3296 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
3297 PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 101);
3298 show_backtrace(1);
3299 }
3300 var94 = var96;
3301 RET_LABEL95:(void)0;
3302 }
3303 }
3304 {
3305 var97 = poset__POSetElement__greaters(var94);
3306 }
3307 {
3308 var98 = ((val* (*)(val*))(var97->class->vft[COLOR_abstract_collection__Collection__iterator]))(var97) /* iterator on <var97:Collection[Object](Collection[MModule])>*/;
3309 }
3310 for(;;) {
3311 {
3312 var99 = ((short int (*)(val*))(var98->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var98) /* is_ok on <var98:Iterator[nullable Object]>*/;
3313 }
3314 if(!var99) break;
3315 {
3316 var100 = ((val* (*)(val*))(var98->class->vft[COLOR_abstract_collection__Iterator__item]))(var98) /* item on <var98:Iterator[nullable Object]>*/;
3317 }
3318 var_m = var100;
3319 {
3320 separate_compiler__SeparateCompiler__finalize_ffi_for_module(var_compiler, var_m); /* Direct call separate_compiler#SeparateCompiler#finalize_ffi_for_module on <var_compiler:AbstractCompiler>*/
3321 }
3322 CONTINUE_label: (void)0;
3323 {
3324 ((void (*)(val*))(var98->class->vft[COLOR_abstract_collection__Iterator__next]))(var98) /* next on <var98:Iterator[nullable Object]>*/;
3325 }
3326 }
3327 BREAK_label: (void)0;
3328 {
3329 { /* Inline abstract_compiler#AbstractCompiler#files_to_copy (var_compiler) on <var_compiler:AbstractCompiler> */
3330 var103 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___files_to_copy].val; /* _files_to_copy on <var_compiler:AbstractCompiler> */
3331 if (unlikely(var103 == NULL)) {
3332 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files_to_copy");
3333 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 850);
3334 show_backtrace(1);
3335 }
3336 var101 = var103;
3337 RET_LABEL102:(void)0;
3338 }
3339 }
3340 {
3341 var104 = array__AbstractArrayRead__iterator(var101);
3342 }
3343 for(;;) {
3344 {
3345 var105 = array__ArrayIterator__is_ok(var104);
3346 }
3347 if(!var105) break;
3348 {
3349 var106 = array__ArrayIterator__item(var104);
3350 }
3351 var_src = var106;
3352 if (varonce107) {
3353 var108 = varonce107;
3354 } else {
3355 var109 = "";
3356 var110 = 0;
3357 var111 = string__NativeString__to_s_with_length(var109, var110);
3358 var108 = var111;
3359 varonce107 = var108;
3360 }
3361 {
3362 var112 = file__String__basename(var_src, var108);
3363 }
3364 var_basename = var112;
3365 if (varonce113) {
3366 var114 = varonce113;
3367 } else {
3368 var115 = "/";
3369 var116 = 1;
3370 var117 = string__NativeString__to_s_with_length(var115, var116);
3371 var114 = var117;
3372 varonce113 = var114;
3373 }
3374 var118 = NEW_array__Array(&type_array__Arraykernel__Object);
3375 { /* var118 = array_instance Array[Object] */
3376 var119 = 3;
3377 var120 = NEW_array__NativeArray(var119, &type_array__NativeArraykernel__Object);
3378 ((struct instance_array__NativeArray*)var120)->values[0] = (val*) var_compile_dir;
3379 ((struct instance_array__NativeArray*)var120)->values[1] = (val*) var114;
3380 ((struct instance_array__NativeArray*)var120)->values[2] = (val*) var_basename;
3381 {
3382 ((void (*)(val*, val*, long))(var118->class->vft[COLOR_array__Array__with_native]))(var118, var120, var119) /* with_native on <var118:Array[Object]>*/;
3383 }
3384 }
3385 {
3386 var121 = ((val* (*)(val*))(var118->class->vft[COLOR_string__Object__to_s]))(var118) /* to_s on <var118:Array[Object]>*/;
3387 }
3388 var_dst = var121;
3389 {
3390 file__String__file_copy_to(var_src, var_dst); /* Direct call file#String#file_copy_to on <var_src:String>*/
3391 }
3392 CONTINUE_label122: (void)0;
3393 {
3394 array__ArrayIterator__next(var104); /* Direct call array#ArrayIterator#next on <var104:ArrayIterator[nullable Object]>*/
3395 }
3396 }
3397 BREAK_label122: (void)0;
3398 {
3399 { /* Inline abstract_compiler#AbstractCompiler#header (var_compiler) on <var_compiler:AbstractCompiler> */
3400 var125 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <var_compiler:AbstractCompiler> */
3401 if (unlikely(var125 == NULL)) {
3402 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
3403 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
3404 show_backtrace(1);
3405 }
3406 var123 = var125;
3407 RET_LABEL124:(void)0;
3408 }
3409 }
3410 {
3411 { /* Inline abstract_compiler#CodeWriter#file (var123) on <var123:CodeWriter> */
3412 var128 = var123->attrs[COLOR_abstract_compiler__CodeWriter___file].val; /* _file on <var123:CodeWriter> */
3413 if (unlikely(var128 == NULL)) {
3414 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _file");
3415 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 961);
3416 show_backtrace(1);
3417 }
3418 var126 = var128;
3419 RET_LABEL127:(void)0;
3420 }
3421 }
3422 {
3423 { /* Inline abstract_compiler#CodeFile#name (var126) on <var126:CodeFile> */
3424 var131 = var126->attrs[COLOR_abstract_compiler__CodeFile___name].val; /* _name on <var126:CodeFile> */
3425 if (unlikely(var131 == NULL)) {
3426 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
3427 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 954);
3428 show_backtrace(1);
3429 }
3430 var129 = var131;
3431 RET_LABEL130:(void)0;
3432 }
3433 }
3434 if (varonce132) {
3435 var133 = varonce132;
3436 } else {
3437 var134 = ".h";
3438 var135 = 2;
3439 var136 = string__NativeString__to_s_with_length(var134, var135);
3440 var133 = var136;
3441 varonce132 = var133;
3442 }
3443 {
3444 var137 = string__FlatString___43d(var129, var133);
3445 }
3446 var_hfilename = var137;
3447 if (varonce138) {
3448 var139 = varonce138;
3449 } else {
3450 var140 = "/";
3451 var141 = 1;
3452 var142 = string__NativeString__to_s_with_length(var140, var141);
3453 var139 = var142;
3454 varonce138 = var139;
3455 }
3456 var143 = NEW_array__Array(&type_array__Arraykernel__Object);
3457 { /* var143 = array_instance Array[Object] */
3458 var144 = 3;
3459 var145 = NEW_array__NativeArray(var144, &type_array__NativeArraykernel__Object);
3460 ((struct instance_array__NativeArray*)var145)->values[0] = (val*) var_compile_dir;
3461 ((struct instance_array__NativeArray*)var145)->values[1] = (val*) var139;
3462 ((struct instance_array__NativeArray*)var145)->values[2] = (val*) var_hfilename;
3463 {
3464 ((void (*)(val*, val*, long))(var143->class->vft[COLOR_array__Array__with_native]))(var143, var145, var144) /* with_native on <var143:Array[Object]>*/;
3465 }
3466 }
3467 {
3468 var146 = ((val* (*)(val*))(var143->class->vft[COLOR_string__Object__to_s]))(var143) /* to_s on <var143:Array[Object]>*/;
3469 }
3470 var_hfilepath = var146;
3471 var147 = NEW_file__OFStream(&type_file__OFStream);
3472 {
3473 file__OFStream__open(var147, var_hfilepath); /* Direct call file#OFStream#open on <var147:OFStream>*/
3474 }
3475 var_h = var147;
3476 {
3477 { /* Inline abstract_compiler#AbstractCompiler#header (var_compiler) on <var_compiler:AbstractCompiler> */
3478 var150 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <var_compiler:AbstractCompiler> */
3479 if (unlikely(var150 == NULL)) {
3480 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
3481 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
3482 show_backtrace(1);
3483 }
3484 var148 = var150;
3485 RET_LABEL149:(void)0;
3486 }
3487 }
3488 {
3489 { /* Inline abstract_compiler#CodeWriter#decl_lines (var148) on <var148:CodeWriter> */
3490 var153 = var148->attrs[COLOR_abstract_compiler__CodeWriter___decl_lines].val; /* _decl_lines on <var148:CodeWriter> */
3491 if (unlikely(var153 == NULL)) {
3492 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _decl_lines");
3493 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 963);
3494 show_backtrace(1);
3495 }
3496 var151 = var153;
3497 RET_LABEL152:(void)0;
3498 }
3499 }
3500 {
3501 var154 = list__List__iterator(var151);
3502 }
3503 for(;;) {
3504 {
3505 var155 = list__ListIterator__is_ok(var154);
3506 }
3507 if(!var155) break;
3508 {
3509 var156 = list__ListIterator__item(var154);
3510 }
3511 var_l = var156;
3512 {
3513 file__OFStream__write(var_h, var_l); /* Direct call file#OFStream#write on <var_h:OFStream>*/
3514 }
3515 if (varonce157) {
3516 var158 = varonce157;
3517 } else {
3518 var159 = "\n";
3519 var160 = 1;
3520 var161 = string__NativeString__to_s_with_length(var159, var160);
3521 var158 = var161;
3522 varonce157 = var158;
3523 }
3524 {
3525 file__OFStream__write(var_h, var158); /* Direct call file#OFStream#write on <var_h:OFStream>*/
3526 }
3527 CONTINUE_label162: (void)0;
3528 {
3529 list__ListIterator__next(var154); /* Direct call list#ListIterator#next on <var154:ListIterator[nullable Object]>*/
3530 }
3531 }
3532 BREAK_label162: (void)0;
3533 {
3534 { /* Inline abstract_compiler#AbstractCompiler#header (var_compiler) on <var_compiler:AbstractCompiler> */
3535 var165 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <var_compiler:AbstractCompiler> */
3536 if (unlikely(var165 == NULL)) {
3537 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
3538 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
3539 show_backtrace(1);
3540 }
3541 var163 = var165;
3542 RET_LABEL164:(void)0;
3543 }
3544 }
3545 {
3546 { /* Inline abstract_compiler#CodeWriter#lines (var163) on <var163:CodeWriter> */
3547 var168 = var163->attrs[COLOR_abstract_compiler__CodeWriter___lines].val; /* _lines on <var163:CodeWriter> */
3548 if (unlikely(var168 == NULL)) {
3549 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lines");
3550 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 962);
3551 show_backtrace(1);
3552 }
3553 var166 = var168;
3554 RET_LABEL167:(void)0;
3555 }
3556 }
3557 {
3558 var169 = list__List__iterator(var166);
3559 }
3560 for(;;) {
3561 {
3562 var170 = list__ListIterator__is_ok(var169);
3563 }
3564 if(!var170) break;
3565 {
3566 var171 = list__ListIterator__item(var169);
3567 }
3568 var_l172 = var171;
3569 {
3570 file__OFStream__write(var_h, var_l172); /* Direct call file#OFStream#write on <var_h:OFStream>*/
3571 }
3572 if (varonce173) {
3573 var174 = varonce173;
3574 } else {
3575 var175 = "\n";
3576 var176 = 1;
3577 var177 = string__NativeString__to_s_with_length(var175, var176);
3578 var174 = var177;
3579 varonce173 = var174;
3580 }
3581 {
3582 file__OFStream__write(var_h, var174); /* Direct call file#OFStream#write on <var_h:OFStream>*/
3583 }
3584 CONTINUE_label178: (void)0;
3585 {
3586 list__ListIterator__next(var169); /* Direct call list#ListIterator#next on <var169:ListIterator[nullable Object]>*/
3587 }
3588 }
3589 BREAK_label178: (void)0;
3590 {
3591 file__OFStream__close(var_h); /* Direct call file#OFStream#close on <var_h:OFStream>*/
3592 }
3593 {
3594 { /* Inline abstract_compiler#AbstractCompiler#files (var_compiler) on <var_compiler:AbstractCompiler> */
3595 var181 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___files].val; /* _files on <var_compiler:AbstractCompiler> */
3596 if (unlikely(var181 == NULL)) {
3597 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files");
3598 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 465);
3599 show_backtrace(1);
3600 }
3601 var179 = var181;
3602 RET_LABEL180:(void)0;
3603 }
3604 }
3605 {
3606 var182 = list__List__iterator(var179);
3607 }
3608 for(;;) {
3609 {
3610 var183 = list__ListIterator__is_ok(var182);
3611 }
3612 if(!var183) break;
3613 {
3614 var184 = list__ListIterator__item(var182);
3615 }
3616 var_f = var184;
3617 var185 = 0;
3618 var_i = var185;
3619 var186 = NULL;
3620 var_hfile = var186;
3621 var187 = 0;
3622 var_count = var187;
3623 {
3624 { /* Inline abstract_compiler#CodeFile#name (var_f) on <var_f:CodeFile> */
3625 var190 = var_f->attrs[COLOR_abstract_compiler__CodeFile___name].val; /* _name on <var_f:CodeFile> */
3626 if (unlikely(var190 == NULL)) {
3627 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
3628 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 954);
3629 show_backtrace(1);
3630 }
3631 var188 = var190;
3632 RET_LABEL189:(void)0;
3633 }
3634 }
3635 if (varonce191) {
3636 var192 = varonce191;
3637 } else {
3638 var193 = ".0.h";
3639 var194 = 4;
3640 var195 = string__NativeString__to_s_with_length(var193, var194);
3641 var192 = var195;
3642 varonce191 = var192;
3643 }
3644 var196 = NEW_array__Array(&type_array__Arraykernel__Object);
3645 { /* var196 = array_instance Array[Object] */
3646 var197 = 2;
3647 var198 = NEW_array__NativeArray(var197, &type_array__NativeArraykernel__Object);
3648 ((struct instance_array__NativeArray*)var198)->values[0] = (val*) var188;
3649 ((struct instance_array__NativeArray*)var198)->values[1] = (val*) var192;
3650 {
3651 ((void (*)(val*, val*, long))(var196->class->vft[COLOR_array__Array__with_native]))(var196, var198, var197) /* with_native on <var196:Array[Object]>*/;
3652 }
3653 }
3654 {
3655 var199 = ((val* (*)(val*))(var196->class->vft[COLOR_string__Object__to_s]))(var196) /* to_s on <var196:Array[Object]>*/;
3656 }
3657 var_cfilename = var199;
3658 if (varonce200) {
3659 var201 = varonce200;
3660 } else {
3661 var202 = "/";
3662 var203 = 1;
3663 var204 = string__NativeString__to_s_with_length(var202, var203);
3664 var201 = var204;
3665 varonce200 = var201;
3666 }
3667 var205 = NEW_array__Array(&type_array__Arraykernel__Object);
3668 { /* var205 = array_instance Array[Object] */
3669 var206 = 3;
3670 var207 = NEW_array__NativeArray(var206, &type_array__NativeArraykernel__Object);
3671 ((struct instance_array__NativeArray*)var207)->values[0] = (val*) var_compile_dir;
3672 ((struct instance_array__NativeArray*)var207)->values[1] = (val*) var201;
3673 ((struct instance_array__NativeArray*)var207)->values[2] = (val*) var_cfilename;
3674 {
3675 ((void (*)(val*, val*, long))(var205->class->vft[COLOR_array__Array__with_native]))(var205, var207, var206) /* with_native on <var205:Array[Object]>*/;
3676 }
3677 }
3678 {
3679 var208 = ((val* (*)(val*))(var205->class->vft[COLOR_string__Object__to_s]))(var205) /* to_s on <var205:Array[Object]>*/;
3680 }
3681 var_cfilepath = var208;
3682 var209 = NEW_file__OFStream(&type_file__OFStream);
3683 {
3684 file__OFStream__open(var209, var_cfilepath); /* Direct call file#OFStream#open on <var209:OFStream>*/
3685 }
3686 var_hfile = var209;
3687 if (varonce210) {
3688 var211 = varonce210;
3689 } else {
3690 var212 = "#include \"";
3691 var213 = 10;
3692 var214 = string__NativeString__to_s_with_length(var212, var213);
3693 var211 = var214;
3694 varonce210 = var211;
3695 }
3696 if (varonce215) {
3697 var216 = varonce215;
3698 } else {
3699 var217 = "\"\n";
3700 var218 = 2;
3701 var219 = string__NativeString__to_s_with_length(var217, var218);
3702 var216 = var219;
3703 varonce215 = var216;
3704 }
3705 var220 = NEW_array__Array(&type_array__Arraykernel__Object);
3706 { /* var220 = array_instance Array[Object] */
3707 var221 = 3;
3708 var222 = NEW_array__NativeArray(var221, &type_array__NativeArraykernel__Object);
3709 ((struct instance_array__NativeArray*)var222)->values[0] = (val*) var211;
3710 ((struct instance_array__NativeArray*)var222)->values[1] = (val*) var_hfilename;
3711 ((struct instance_array__NativeArray*)var222)->values[2] = (val*) var216;
3712 {
3713 ((void (*)(val*, val*, long))(var220->class->vft[COLOR_array__Array__with_native]))(var220, var222, var221) /* with_native on <var220:Array[Object]>*/;
3714 }
3715 }
3716 {
3717 var223 = ((val* (*)(val*))(var220->class->vft[COLOR_string__Object__to_s]))(var220) /* to_s on <var220:Array[Object]>*/;
3718 }
3719 {
3720 file__OFStream__write(var_hfile, var223); /* Direct call file#OFStream#write on <var_hfile:nullable OFStream(OFStream)>*/
3721 }
3722 {
3723 { /* Inline abstract_compiler#CodeFile#required_declarations (var_f) on <var_f:CodeFile> */
3724 var226 = var_f->attrs[COLOR_abstract_compiler__CodeFile___required_declarations].val; /* _required_declarations on <var_f:CodeFile> */
3725 if (unlikely(var226 == NULL)) {
3726 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _required_declarations");
3727 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 956);
3728 show_backtrace(1);
3729 }
3730 var224 = var226;
3731 RET_LABEL225:(void)0;
3732 }
3733 }
3734 {
3735 var227 = hash_collection__HashSet__iterator(var224);
3736 }
3737 for(;;) {
3738 {
3739 var228 = ((short int (*)(val*))(var227->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var227) /* is_ok on <var227:Iterator[Object]>*/;
3740 }
3741 if(!var228) break;
3742 {
3743 var229 = ((val* (*)(val*))(var227->class->vft[COLOR_abstract_collection__Iterator__item]))(var227) /* item on <var227:Iterator[Object]>*/;
3744 }
3745 var_key = var229;
3746 {
3747 { /* Inline abstract_compiler#AbstractCompiler#provided_declarations (var_compiler) on <var_compiler:AbstractCompiler> */
3748 var232 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___provided_declarations].val; /* _provided_declarations on <var_compiler:AbstractCompiler> */
3749 if (unlikely(var232 == NULL)) {
3750 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _provided_declarations");
3751 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 484);
3752 show_backtrace(1);
3753 }
3754 var230 = var232;
3755 RET_LABEL231:(void)0;
3756 }
3757 }
3758 {
3759 var233 = abstract_collection__MapRead__has_key(var230, var_key);
3760 }
3761 var234 = !var233;
3762 if (var234){
3763 {
3764 { /* Inline abstract_compiler#AbstractCompiler#requirers_of_declarations (var_compiler) on <var_compiler:AbstractCompiler> */
3765 var237 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___requirers_of_declarations].val; /* _requirers_of_declarations on <var_compiler:AbstractCompiler> */
3766 if (unlikely(var237 == NULL)) {
3767 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _requirers_of_declarations");
3768 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 486);
3769 show_backtrace(1);
3770 }
3771 var235 = var237;
3772 RET_LABEL236:(void)0;
3773 }
3774 }
3775 {
3776 var238 = abstract_collection__MapRead__get_or_null(var235, var_key);
3777 }
3778 var_node = var238;
3779 var239 = NULL;
3780 if (var_node == NULL) {
3781 var240 = 0; /* is null */
3782 } else {
3783 var240 = 1; /* arg is null and recv is not */
3784 }
3785 if (0) {
3786 { /* Inline kernel#Object#!= (var_node,var239) on <var_node:nullable ANode> */
3787 var_other = var239;
3788 {
3789 var244 = ((short int (*)(val*, val*))(var_node->class->vft[COLOR_kernel__Object___61d_61d]))(var_node, var_other) /* == on <var_node:nullable ANode(ANode)>*/;
3790 var243 = var244;
3791 }
3792 var245 = !var243;
3793 var241 = var245;
3794 goto RET_LABEL242;
3795 RET_LABEL242:(void)0;
3796 }
3797 var240 = var241;
3798 }
3799 if (var240){
3800 if (varonce246) {
3801 var247 = varonce246;
3802 } else {
3803 var248 = "No provided declaration for ";
3804 var249 = 28;
3805 var250 = string__NativeString__to_s_with_length(var248, var249);
3806 var247 = var250;
3807 varonce246 = var247;
3808 }
3809 var251 = NEW_array__Array(&type_array__Arraykernel__Object);
3810 { /* var251 = array_instance Array[Object] */
3811 var252 = 2;
3812 var253 = NEW_array__NativeArray(var252, &type_array__NativeArraykernel__Object);
3813 ((struct instance_array__NativeArray*)var253)->values[0] = (val*) var247;
3814 ((struct instance_array__NativeArray*)var253)->values[1] = (val*) var_key;
3815 {
3816 ((void (*)(val*, val*, long))(var251->class->vft[COLOR_array__Array__with_native]))(var251, var253, var252) /* with_native on <var251:Array[Object]>*/;
3817 }
3818 }
3819 {
3820 var254 = ((val* (*)(val*))(var251->class->vft[COLOR_string__Object__to_s]))(var251) /* to_s on <var251:Array[Object]>*/;
3821 }
3822 {
3823 parser_nodes__ANode__debug(var_node, var254); /* Direct call parser_nodes#ANode#debug on <var_node:nullable ANode(ANode)>*/
3824 }
3825 } else {
3826 if (varonce255) {
3827 var256 = varonce255;
3828 } else {
3829 var257 = "No provided declaration for ";
3830 var258 = 28;
3831 var259 = string__NativeString__to_s_with_length(var257, var258);
3832 var256 = var259;
3833 varonce255 = var256;
3834 }
3835 var260 = NEW_array__Array(&type_array__Arraykernel__Object);
3836 { /* var260 = array_instance Array[Object] */
3837 var261 = 2;
3838 var262 = NEW_array__NativeArray(var261, &type_array__NativeArraykernel__Object);
3839 ((struct instance_array__NativeArray*)var262)->values[0] = (val*) var256;
3840 ((struct instance_array__NativeArray*)var262)->values[1] = (val*) var_key;
3841 {
3842 ((void (*)(val*, val*, long))(var260->class->vft[COLOR_array__Array__with_native]))(var260, var262, var261) /* with_native on <var260:Array[Object]>*/;
3843 }
3844 }
3845 {
3846 var263 = ((val* (*)(val*))(var260->class->vft[COLOR_string__Object__to_s]))(var260) /* to_s on <var260:Array[Object]>*/;
3847 }
3848 {
3849 file__Object__print(self, var263); /* Direct call file#Object#print on <self:MakefileToolchain>*/
3850 }
3851 }
3852 PRINT_ERROR("Runtime error: %s", "Aborted");
3853 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 263);
3854 show_backtrace(1);
3855 } else {
3856 }
3857 {
3858 { /* Inline abstract_compiler#AbstractCompiler#provided_declarations (var_compiler) on <var_compiler:AbstractCompiler> */
3859 var266 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___provided_declarations].val; /* _provided_declarations on <var_compiler:AbstractCompiler> */
3860 if (unlikely(var266 == NULL)) {
3861 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _provided_declarations");
3862 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 484);
3863 show_backtrace(1);
3864 }
3865 var264 = var266;
3866 RET_LABEL265:(void)0;
3867 }
3868 }
3869 {
3870 var267 = hash_collection__HashMap___91d_93d(var264, var_key);
3871 }
3872 {
3873 file__OFStream__write(var_hfile, var267); /* Direct call file#OFStream#write on <var_hfile:nullable OFStream(OFStream)>*/
3874 }
3875 if (varonce268) {
3876 var269 = varonce268;
3877 } else {
3878 var270 = "\n";
3879 var271 = 1;
3880 var272 = string__NativeString__to_s_with_length(var270, var271);
3881 var269 = var272;
3882 varonce268 = var269;
3883 }
3884 {
3885 file__OFStream__write(var_hfile, var269); /* Direct call file#OFStream#write on <var_hfile:nullable OFStream(OFStream)>*/
3886 }
3887 CONTINUE_label273: (void)0;
3888 {
3889 ((void (*)(val*))(var227->class->vft[COLOR_abstract_collection__Iterator__next]))(var227) /* next on <var227:Iterator[Object]>*/;
3890 }
3891 }
3892 BREAK_label273: (void)0;
3893 {
3894 file__OFStream__close(var_hfile); /* Direct call file#OFStream#close on <var_hfile:nullable OFStream(OFStream)>*/
3895 }
3896 var274 = NULL;
3897 var_file = var274;
3898 {
3899 { /* Inline abstract_compiler#CodeFile#writers (var_f) on <var_f:CodeFile> */
3900 var277 = var_f->attrs[COLOR_abstract_compiler__CodeFile___writers].val; /* _writers on <var_f:CodeFile> */
3901 if (unlikely(var277 == NULL)) {
3902 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _writers");
3903 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 955);
3904 show_backtrace(1);
3905 }
3906 var275 = var277;
3907 RET_LABEL276:(void)0;
3908 }
3909 }
3910 {
3911 var278 = array__AbstractArrayRead__iterator(var275);
3912 }
3913 for(;;) {
3914 {
3915 var279 = array__ArrayIterator__is_ok(var278);
3916 }
3917 if(!var279) break;
3918 {
3919 var280 = array__ArrayIterator__item(var278);
3920 }
3921 var_vis = var280;
3922 {
3923 { /* Inline abstract_compiler#AbstractCompiler#header (var_compiler) on <var_compiler:AbstractCompiler> */
3924 var283 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <var_compiler:AbstractCompiler> */
3925 if (unlikely(var283 == NULL)) {
3926 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
3927 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
3928 show_backtrace(1);
3929 }
3930 var281 = var283;
3931 RET_LABEL282:(void)0;
3932 }
3933 }
3934 {
3935 { /* Inline kernel#Object#== (var_vis,var281) on <var_vis:CodeWriter> */
3936 var_other287 = var281;
3937 {
3938 { /* Inline kernel#Object#is_same_instance (var_vis,var_other287) on <var_vis:CodeWriter> */
3939 var290 = var_vis == var_other287;
3940 var288 = var290;
3941 goto RET_LABEL289;
3942 RET_LABEL289:(void)0;
3943 }
3944 }
3945 var285 = var288;
3946 goto RET_LABEL286;
3947 RET_LABEL286:(void)0;
3948 }
3949 var284 = var285;
3950 }
3951 if (var284){
3952 goto CONTINUE_label291;
3953 } else {
3954 }
3955 {
3956 { /* Inline abstract_compiler#CodeWriter#lines (var_vis) on <var_vis:CodeWriter> */
3957 var294 = var_vis->attrs[COLOR_abstract_compiler__CodeWriter___lines].val; /* _lines on <var_vis:CodeWriter> */
3958 if (unlikely(var294 == NULL)) {
3959 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lines");
3960 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 962);
3961 show_backtrace(1);
3962 }
3963 var292 = var294;
3964 RET_LABEL293:(void)0;
3965 }
3966 }
3967 {
3968 var295 = list__List__length(var292);
3969 }
3970 {
3971 { /* Inline abstract_compiler#CodeWriter#decl_lines (var_vis) on <var_vis:CodeWriter> */
3972 var298 = var_vis->attrs[COLOR_abstract_compiler__CodeWriter___decl_lines].val; /* _decl_lines on <var_vis:CodeWriter> */
3973 if (unlikely(var298 == NULL)) {
3974 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _decl_lines");
3975 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 963);
3976 show_backtrace(1);
3977 }
3978 var296 = var298;
3979 RET_LABEL297:(void)0;
3980 }
3981 }
3982 {
3983 var299 = list__List__length(var296);
3984 }
3985 {
3986 { /* Inline kernel#Int#+ (var295,var299) on <var295:Int> */
3987 /* Covariant cast for argument 0 (i) <var299:Int> isa OTHER */
3988 /* <var299:Int> isa OTHER */
3989 var302 = 1; /* easy <var299:Int> isa OTHER*/
3990 if (unlikely(!var302)) {
3991 var_class_name = type_kernel__Int.name;
3992 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3993 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
3994 show_backtrace(1);
3995 }
3996 var303 = var295 + var299;
3997 var300 = var303;
3998 goto RET_LABEL301;
3999 RET_LABEL301:(void)0;
4000 }
4001 }
4002 var_total_lines = var300;
4003 var304 = 0;
4004 {
4005 { /* Inline kernel#Int#== (var_total_lines,var304) on <var_total_lines:Int> */
4006 var308 = var_total_lines == var304;
4007 var306 = var308;
4008 goto RET_LABEL307;
4009 RET_LABEL307:(void)0;
4010 }
4011 var305 = var306;
4012 }
4013 if (var305){
4014 goto CONTINUE_label291;
4015 } else {
4016 }
4017 {
4018 { /* Inline kernel#Int#+ (var_count,var_total_lines) on <var_count:Int> */
4019 /* Covariant cast for argument 0 (i) <var_total_lines:Int> isa OTHER */
4020 /* <var_total_lines:Int> isa OTHER */
4021 var311 = 1; /* easy <var_total_lines:Int> isa OTHER*/
4022 if (unlikely(!var311)) {
4023 var_class_name314 = type_kernel__Int.name;
4024 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name314);
4025 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
4026 show_backtrace(1);
4027 }
4028 var315 = var_count + var_total_lines;
4029 var309 = var315;
4030 goto RET_LABEL310;
4031 RET_LABEL310:(void)0;
4032 }
4033 }
4034 var_count = var309;
4035 var317 = NULL;
4036 if (var_file == NULL) {
4037 var318 = 1; /* is null */
4038 } else {
4039 var318 = 0; /* arg is null but recv is not */
4040 }
4041 if (0) {
4042 { /* Inline kernel#Object#== (var_file,var317) on <var_file:nullable OFStream> */
4043 var_other287 = var317;
4044 {
4045 { /* Inline kernel#Object#is_same_instance (var_file,var_other287) on <var_file:nullable OFStream(OFStream)> */
4046 var323 = var_file == var_other287;
4047 var321 = var323;
4048 goto RET_LABEL322;
4049 RET_LABEL322:(void)0;
4050 }
4051 }
4052 var319 = var321;
4053 goto RET_LABEL320;
4054 RET_LABEL320:(void)0;
4055 }
4056 var318 = var319;
4057 }
4058 var_324 = var318;
4059 if (var318){
4060 var316 = var_324;
4061 } else {
4062 var325 = 10000;
4063 {
4064 { /* Inline kernel#Int#> (var_count,var325) on <var_count:Int> */
4065 /* Covariant cast for argument 0 (i) <var325:Int> isa OTHER */
4066 /* <var325:Int> isa OTHER */
4067 var328 = 1; /* easy <var325:Int> isa OTHER*/
4068 if (unlikely(!var328)) {
4069 var_class_name331 = type_kernel__Int.name;
4070 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name331);
4071 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 327);
4072 show_backtrace(1);
4073 }
4074 var332 = var_count > var325;
4075 var326 = var332;
4076 goto RET_LABEL327;
4077 RET_LABEL327:(void)0;
4078 }
4079 }
4080 var316 = var326;
4081 }
4082 if (var316){
4083 var333 = 1;
4084 {
4085 { /* Inline kernel#Int#+ (var_i,var333) on <var_i:Int> */
4086 /* Covariant cast for argument 0 (i) <var333:Int> isa OTHER */
4087 /* <var333:Int> isa OTHER */
4088 var336 = 1; /* easy <var333:Int> isa OTHER*/
4089 if (unlikely(!var336)) {
4090 var_class_name339 = type_kernel__Int.name;
4091 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name339);
4092 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
4093 show_backtrace(1);
4094 }
4095 var340 = var_i + var333;
4096 var334 = var340;
4097 goto RET_LABEL335;
4098 RET_LABEL335:(void)0;
4099 }
4100 }
4101 var_i = var334;
4102 var341 = NULL;
4103 if (var_file == NULL) {
4104 var342 = 0; /* is null */
4105 } else {
4106 var342 = 1; /* arg is null and recv is not */
4107 }
4108 if (0) {
4109 { /* Inline kernel#Object#!= (var_file,var341) on <var_file:nullable OFStream> */
4110 var_other = var341;
4111 {
4112 var346 = ((short int (*)(val*, val*))(var_file->class->vft[COLOR_kernel__Object___61d_61d]))(var_file, var_other) /* == on <var_file:nullable OFStream(OFStream)>*/;
4113 var345 = var346;
4114 }
4115 var347 = !var345;
4116 var343 = var347;
4117 goto RET_LABEL344;
4118 RET_LABEL344:(void)0;
4119 }
4120 var342 = var343;
4121 }
4122 if (var342){
4123 {
4124 file__OFStream__close(var_file); /* Direct call file#OFStream#close on <var_file:nullable OFStream(OFStream)>*/
4125 }
4126 } else {
4127 }
4128 {
4129 { /* Inline abstract_compiler#CodeFile#name (var_f) on <var_f:CodeFile> */
4130 var350 = var_f->attrs[COLOR_abstract_compiler__CodeFile___name].val; /* _name on <var_f:CodeFile> */
4131 if (unlikely(var350 == NULL)) {
4132 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4133 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 954);
4134 show_backtrace(1);
4135 }
4136 var348 = var350;
4137 RET_LABEL349:(void)0;
4138 }
4139 }
4140 if (varonce351) {
4141 var352 = varonce351;
4142 } else {
4143 var353 = ".";
4144 var354 = 1;
4145 var355 = string__NativeString__to_s_with_length(var353, var354);
4146 var352 = var355;
4147 varonce351 = var352;
4148 }
4149 if (varonce356) {
4150 var357 = varonce356;
4151 } else {
4152 var358 = ".c";
4153 var359 = 2;
4154 var360 = string__NativeString__to_s_with_length(var358, var359);
4155 var357 = var360;
4156 varonce356 = var357;
4157 }
4158 var361 = NEW_array__Array(&type_array__Arraykernel__Object);
4159 { /* var361 = array_instance Array[Object] */
4160 var362 = 4;
4161 var363 = NEW_array__NativeArray(var362, &type_array__NativeArraykernel__Object);
4162 ((struct instance_array__NativeArray*)var363)->values[0] = (val*) var348;
4163 ((struct instance_array__NativeArray*)var363)->values[1] = (val*) var352;
4164 var364 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
4165 ((struct instance_array__NativeArray*)var363)->values[2] = (val*) var364;
4166 ((struct instance_array__NativeArray*)var363)->values[3] = (val*) var357;
4167 {
4168 ((void (*)(val*, val*, long))(var361->class->vft[COLOR_array__Array__with_native]))(var361, var363, var362) /* with_native on <var361:Array[Object]>*/;
4169 }
4170 }
4171 {
4172 var365 = ((val* (*)(val*))(var361->class->vft[COLOR_string__Object__to_s]))(var361) /* to_s on <var361:Array[Object]>*/;
4173 }
4174 var_cfilename = var365;
4175 if (varonce366) {
4176 var367 = varonce366;
4177 } else {
4178 var368 = "/";
4179 var369 = 1;
4180 var370 = string__NativeString__to_s_with_length(var368, var369);
4181 var367 = var370;
4182 varonce366 = var367;
4183 }
4184 var371 = NEW_array__Array(&type_array__Arraykernel__Object);
4185 { /* var371 = array_instance Array[Object] */
4186 var372 = 3;
4187 var373 = NEW_array__NativeArray(var372, &type_array__NativeArraykernel__Object);
4188 ((struct instance_array__NativeArray*)var373)->values[0] = (val*) var_compile_dir;
4189 ((struct instance_array__NativeArray*)var373)->values[1] = (val*) var367;
4190 ((struct instance_array__NativeArray*)var373)->values[2] = (val*) var_cfilename;
4191 {
4192 ((void (*)(val*, val*, long))(var371->class->vft[COLOR_array__Array__with_native]))(var371, var373, var372) /* with_native on <var371:Array[Object]>*/;
4193 }
4194 }
4195 {
4196 var374 = ((val* (*)(val*))(var371->class->vft[COLOR_string__Object__to_s]))(var371) /* to_s on <var371:Array[Object]>*/;
4197 }
4198 var_cfilepath = var374;
4199 {
4200 { /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
4201 var377 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
4202 if (unlikely(var377 == NULL)) {
4203 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4204 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
4205 show_backtrace(1);
4206 }
4207 var375 = var377;
4208 RET_LABEL376:(void)0;
4209 }
4210 }
4211 if (varonce378) {
4212 var379 = varonce378;
4213 } else {
4214 var380 = "new C source files to compile: ";
4215 var381 = 31;
4216 var382 = string__NativeString__to_s_with_length(var380, var381);
4217 var379 = var382;
4218 varonce378 = var379;
4219 }
4220 var383 = NEW_array__Array(&type_array__Arraykernel__Object);
4221 { /* var383 = array_instance Array[Object] */
4222 var384 = 2;
4223 var385 = NEW_array__NativeArray(var384, &type_array__NativeArraykernel__Object);
4224 ((struct instance_array__NativeArray*)var385)->values[0] = (val*) var379;
4225 ((struct instance_array__NativeArray*)var385)->values[1] = (val*) var_cfilepath;
4226 {
4227 ((void (*)(val*, val*, long))(var383->class->vft[COLOR_array__Array__with_native]))(var383, var385, var384) /* with_native on <var383:Array[Object]>*/;
4228 }
4229 }
4230 {
4231 var386 = ((val* (*)(val*))(var383->class->vft[COLOR_string__Object__to_s]))(var383) /* to_s on <var383:Array[Object]>*/;
4232 }
4233 var387 = 3;
4234 {
4235 toolcontext__ToolContext__info(var375, var386, var387); /* Direct call toolcontext#ToolContext#info on <var375:ToolContext>*/
4236 }
4237 {
4238 array__Array__add(var_cfiles, var_cfilename); /* Direct call array#Array#add on <var_cfiles:Array[String]>*/
4239 }
4240 var388 = NEW_file__OFStream(&type_file__OFStream);
4241 {
4242 file__OFStream__open(var388, var_cfilepath); /* Direct call file#OFStream#open on <var388:OFStream>*/
4243 }
4244 var_file = var388;
4245 if (varonce389) {
4246 var390 = varonce389;
4247 } else {
4248 var391 = "#include \"";
4249 var392 = 10;
4250 var393 = string__NativeString__to_s_with_length(var391, var392);
4251 var390 = var393;
4252 varonce389 = var390;
4253 }
4254 {
4255 { /* Inline abstract_compiler#CodeFile#name (var_f) on <var_f:CodeFile> */
4256 var396 = var_f->attrs[COLOR_abstract_compiler__CodeFile___name].val; /* _name on <var_f:CodeFile> */
4257 if (unlikely(var396 == NULL)) {
4258 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4259 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 954);
4260 show_backtrace(1);
4261 }
4262 var394 = var396;
4263 RET_LABEL395:(void)0;
4264 }
4265 }
4266 if (varonce397) {
4267 var398 = varonce397;
4268 } else {
4269 var399 = ".0.h\"\n";
4270 var400 = 6;
4271 var401 = string__NativeString__to_s_with_length(var399, var400);
4272 var398 = var401;
4273 varonce397 = var398;
4274 }
4275 var402 = NEW_array__Array(&type_array__Arraykernel__Object);
4276 { /* var402 = array_instance Array[Object] */
4277 var403 = 3;
4278 var404 = NEW_array__NativeArray(var403, &type_array__NativeArraykernel__Object);
4279 ((struct instance_array__NativeArray*)var404)->values[0] = (val*) var390;
4280 ((struct instance_array__NativeArray*)var404)->values[1] = (val*) var394;
4281 ((struct instance_array__NativeArray*)var404)->values[2] = (val*) var398;
4282 {
4283 ((void (*)(val*, val*, long))(var402->class->vft[COLOR_array__Array__with_native]))(var402, var404, var403) /* with_native on <var402:Array[Object]>*/;
4284 }
4285 }
4286 {
4287 var405 = ((val* (*)(val*))(var402->class->vft[COLOR_string__Object__to_s]))(var402) /* to_s on <var402:Array[Object]>*/;
4288 }
4289 {
4290 file__OFStream__write(var_file, var405); /* Direct call file#OFStream#write on <var_file:nullable OFStream(OFStream)>*/
4291 }
4292 var_count = var_total_lines;
4293 } else {
4294 }
4295 {
4296 { /* Inline abstract_compiler#CodeWriter#decl_lines (var_vis) on <var_vis:CodeWriter> */
4297 var408 = var_vis->attrs[COLOR_abstract_compiler__CodeWriter___decl_lines].val; /* _decl_lines on <var_vis:CodeWriter> */
4298 if (unlikely(var408 == NULL)) {
4299 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _decl_lines");
4300 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 963);
4301 show_backtrace(1);
4302 }
4303 var406 = var408;
4304 RET_LABEL407:(void)0;
4305 }
4306 }
4307 {
4308 var409 = list__List__iterator(var406);
4309 }
4310 for(;;) {
4311 {
4312 var410 = list__ListIterator__is_ok(var409);
4313 }
4314 if(!var410) break;
4315 {
4316 var411 = list__ListIterator__item(var409);
4317 }
4318 var_l412 = var411;
4319 {
4320 file__OFStream__write(var_file, var_l412); /* Direct call file#OFStream#write on <var_file:nullable OFStream(OFStream)>*/
4321 }
4322 if (varonce413) {
4323 var414 = varonce413;
4324 } else {
4325 var415 = "\n";
4326 var416 = 1;
4327 var417 = string__NativeString__to_s_with_length(var415, var416);
4328 var414 = var417;
4329 varonce413 = var414;
4330 }
4331 {
4332 file__OFStream__write(var_file, var414); /* Direct call file#OFStream#write on <var_file:nullable OFStream(OFStream)>*/
4333 }
4334 CONTINUE_label418: (void)0;
4335 {
4336 list__ListIterator__next(var409); /* Direct call list#ListIterator#next on <var409:ListIterator[nullable Object]>*/
4337 }
4338 }
4339 BREAK_label418: (void)0;
4340 {
4341 { /* Inline abstract_compiler#CodeWriter#lines (var_vis) on <var_vis:CodeWriter> */
4342 var421 = var_vis->attrs[COLOR_abstract_compiler__CodeWriter___lines].val; /* _lines on <var_vis:CodeWriter> */
4343 if (unlikely(var421 == NULL)) {
4344 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lines");
4345 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 962);
4346 show_backtrace(1);
4347 }
4348 var419 = var421;
4349 RET_LABEL420:(void)0;
4350 }
4351 }
4352 {
4353 var422 = list__List__iterator(var419);
4354 }
4355 for(;;) {
4356 {
4357 var423 = list__ListIterator__is_ok(var422);
4358 }
4359 if(!var423) break;
4360 {
4361 var424 = list__ListIterator__item(var422);
4362 }
4363 var_l425 = var424;
4364 {
4365 file__OFStream__write(var_file, var_l425); /* Direct call file#OFStream#write on <var_file:nullable OFStream(OFStream)>*/
4366 }
4367 if (varonce426) {
4368 var427 = varonce426;
4369 } else {
4370 var428 = "\n";
4371 var429 = 1;
4372 var430 = string__NativeString__to_s_with_length(var428, var429);
4373 var427 = var430;
4374 varonce426 = var427;
4375 }
4376 {
4377 file__OFStream__write(var_file, var427); /* Direct call file#OFStream#write on <var_file:nullable OFStream(OFStream)>*/
4378 }
4379 CONTINUE_label431: (void)0;
4380 {
4381 list__ListIterator__next(var422); /* Direct call list#ListIterator#next on <var422:ListIterator[nullable Object]>*/
4382 }
4383 }
4384 BREAK_label431: (void)0;
4385 CONTINUE_label291: (void)0;
4386 {
4387 array__ArrayIterator__next(var278); /* Direct call array#ArrayIterator#next on <var278:ArrayIterator[nullable Object]>*/
4388 }
4389 }
4390 BREAK_label291: (void)0;
4391 var432 = NULL;
4392 if (var_file == NULL) {
4393 var433 = 0; /* is null */
4394 } else {
4395 var433 = 1; /* arg is null and recv is not */
4396 }
4397 if (0) {
4398 { /* Inline kernel#Object#!= (var_file,var432) on <var_file:nullable OFStream> */
4399 var_other = var432;
4400 {
4401 var437 = ((short int (*)(val*, val*))(var_file->class->vft[COLOR_kernel__Object___61d_61d]))(var_file, var_other) /* == on <var_file:nullable OFStream(OFStream)>*/;
4402 var436 = var437;
4403 }
4404 var438 = !var436;
4405 var434 = var438;
4406 goto RET_LABEL435;
4407 RET_LABEL435:(void)0;
4408 }
4409 var433 = var434;
4410 }
4411 if (var433){
4412 {
4413 file__OFStream__close(var_file); /* Direct call file#OFStream#close on <var_file:nullable OFStream(OFStream)>*/
4414 }
4415 } else {
4416 }
4417 CONTINUE_label439: (void)0;
4418 {
4419 list__ListIterator__next(var182); /* Direct call list#ListIterator#next on <var182:ListIterator[nullable Object]>*/
4420 }
4421 }
4422 BREAK_label439: (void)0;
4423 {
4424 { /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
4425 var442 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
4426 if (unlikely(var442 == NULL)) {
4427 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4428 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
4429 show_backtrace(1);
4430 }
4431 var440 = var442;
4432 RET_LABEL441:(void)0;
4433 }
4434 }
4435 if (varonce443) {
4436 var444 = varonce443;
4437 } else {
4438 var445 = "Total C source files to compile: ";
4439 var446 = 33;
4440 var447 = string__NativeString__to_s_with_length(var445, var446);
4441 var444 = var447;
4442 varonce443 = var444;
4443 }
4444 {
4445 var448 = array__AbstractArrayRead__length(var_cfiles);
4446 }
4447 var449 = NEW_array__Array(&type_array__Arraykernel__Object);
4448 { /* var449 = array_instance Array[Object] */
4449 var450 = 2;
4450 var451 = NEW_array__NativeArray(var450, &type_array__NativeArraykernel__Object);
4451 ((struct instance_array__NativeArray*)var451)->values[0] = (val*) var444;
4452 var452 = BOX_kernel__Int(var448); /* autobox from Int to Object */
4453 ((struct instance_array__NativeArray*)var451)->values[1] = (val*) var452;
4454 {
4455 ((void (*)(val*, val*, long))(var449->class->vft[COLOR_array__Array__with_native]))(var449, var451, var450) /* with_native on <var449:Array[Object]>*/;
4456 }
4457 }
4458 {
4459 var453 = ((val* (*)(val*))(var449->class->vft[COLOR_string__Object__to_s]))(var449) /* to_s on <var449:Array[Object]>*/;
4460 }
4461 var454 = 2;
4462 {
4463 toolcontext__ToolContext__info(var440, var453, var454); /* Direct call toolcontext#ToolContext#info on <var440:ToolContext>*/
4464 }
4465 RET_LABEL:;
4466 }
4467 /* method abstract_compiler#MakefileToolchain#write_files for (self: Object, AbstractCompiler, String, Array[String]) */
4468 void VIRTUAL_abstract_compiler__MakefileToolchain__write_files(val* self, val* p0, val* p1, val* p2) {
4469 abstract_compiler__MakefileToolchain__write_files(self, p0, p1, p2); /* Direct call abstract_compiler#MakefileToolchain#write_files on <self:Object(MakefileToolchain)>*/
4470 RET_LABEL:;
4471 }
4472 /* method abstract_compiler#MakefileToolchain#makefile_name for (self: MakefileToolchain, MModule): String */
4473 val* abstract_compiler__MakefileToolchain__makefile_name(val* self, val* p0) {
4474 val* var /* : String */;
4475 val* var_mainmodule /* var mainmodule: MModule */;
4476 val* var1 /* : String */;
4477 val* var3 /* : String */;
4478 static val* varonce;
4479 val* var4 /* : String */;
4480 char* var5 /* : NativeString */;
4481 long var6 /* : Int */;
4482 val* var7 /* : FlatString */;
4483 val* var8 /* : Array[Object] */;
4484 long var9 /* : Int */;
4485 val* var10 /* : NativeArray[Object] */;
4486 val* var11 /* : String */;
4487 var_mainmodule = p0;
4488 {
4489 { /* Inline mmodule#MModule#name (var_mainmodule) on <var_mainmodule:MModule> */
4490 var3 = var_mainmodule->attrs[COLOR_mmodule__MModule___name].val; /* _name on <var_mainmodule:MModule> */
4491 if (unlikely(var3 == NULL)) {
4492 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4493 PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 86);
4494 show_backtrace(1);
4495 }
4496 var1 = var3;
4497 RET_LABEL2:(void)0;
4498 }
4499 }
4500 if (varonce) {
4501 var4 = varonce;
4502 } else {
4503 var5 = ".mk";
4504 var6 = 3;
4505 var7 = string__NativeString__to_s_with_length(var5, var6);
4506 var4 = var7;
4507 varonce = var4;
4508 }
4509 var8 = NEW_array__Array(&type_array__Arraykernel__Object);
4510 { /* var8 = array_instance Array[Object] */
4511 var9 = 2;
4512 var10 = NEW_array__NativeArray(var9, &type_array__NativeArraykernel__Object);
4513 ((struct instance_array__NativeArray*)var10)->values[0] = (val*) var1;
4514 ((struct instance_array__NativeArray*)var10)->values[1] = (val*) var4;
4515 {
4516 ((void (*)(val*, val*, long))(var8->class->vft[COLOR_array__Array__with_native]))(var8, var10, var9) /* with_native on <var8:Array[Object]>*/;
4517 }
4518 }
4519 {
4520 var11 = ((val* (*)(val*))(var8->class->vft[COLOR_string__Object__to_s]))(var8) /* to_s on <var8:Array[Object]>*/;
4521 }
4522 var = var11;
4523 goto RET_LABEL;
4524 RET_LABEL:;
4525 return var;
4526 }
4527 /* method abstract_compiler#MakefileToolchain#makefile_name for (self: Object, MModule): String */
4528 val* VIRTUAL_abstract_compiler__MakefileToolchain__makefile_name(val* self, val* p0) {
4529 val* var /* : String */;
4530 val* var1 /* : String */;
4531 var1 = abstract_compiler__MakefileToolchain__makefile_name(self, p0);
4532 var = var1;
4533 RET_LABEL:;
4534 return var;
4535 }
4536 /* method abstract_compiler#MakefileToolchain#default_outname for (self: MakefileToolchain, MModule): String */
4537 val* abstract_compiler__MakefileToolchain__default_outname(val* self, val* p0) {
4538 val* var /* : String */;
4539 val* var_mainmodule /* var mainmodule: MModule */;
4540 val* var1 /* : String */;
4541 val* var3 /* : String */;
4542 var_mainmodule = p0;
4543 {
4544 { /* Inline mmodule#MModule#name (var_mainmodule) on <var_mainmodule:MModule> */
4545 var3 = var_mainmodule->attrs[COLOR_mmodule__MModule___name].val; /* _name on <var_mainmodule:MModule> */
4546 if (unlikely(var3 == NULL)) {
4547 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4548 PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 86);
4549 show_backtrace(1);
4550 }
4551 var1 = var3;
4552 RET_LABEL2:(void)0;
4553 }
4554 }
4555 var = var1;
4556 goto RET_LABEL;
4557 RET_LABEL:;
4558 return var;
4559 }
4560 /* method abstract_compiler#MakefileToolchain#default_outname for (self: Object, MModule): String */
4561 val* VIRTUAL_abstract_compiler__MakefileToolchain__default_outname(val* self, val* p0) {
4562 val* var /* : String */;
4563 val* var1 /* : String */;
4564 var1 = abstract_compiler__MakefileToolchain__default_outname(self, p0);
4565 var = var1;
4566 RET_LABEL:;
4567 return var;
4568 }
4569 /* method abstract_compiler#MakefileToolchain#outfile for (self: MakefileToolchain, MModule): String */
4570 val* abstract_compiler__MakefileToolchain__outfile(val* self, val* p0) {
4571 val* var /* : String */;
4572 val* var_mainmodule /* var mainmodule: MModule */;
4573 val* var1 /* : ToolContext */;
4574 val* var3 /* : ToolContext */;
4575 val* var4 /* : OptionString */;
4576 val* var6 /* : OptionString */;
4577 val* var7 /* : nullable Object */;
4578 val* var9 /* : nullable Object */;
4579 val* var_res /* var res: nullable String */;
4580 val* var10 /* : null */;
4581 short int var11 /* : Bool */;
4582 short int var12 /* : Bool */;
4583 val* var_other /* var other: nullable Object */;
4584 short int var14 /* : Bool */;
4585 short int var15 /* : Bool */;
4586 short int var16 /* : Bool */;
4587 val* var17 /* : String */;
4588 val* var18 /* : ToolContext */;
4589 val* var20 /* : ToolContext */;
4590 val* var21 /* : OptionString */;
4591 val* var23 /* : OptionString */;
4592 val* var24 /* : nullable Object */;
4593 val* var26 /* : nullable Object */;
4594 val* var_dir /* var dir: nullable String */;
4595 val* var27 /* : null */;
4596 short int var28 /* : Bool */;
4597 short int var29 /* : Bool */;
4598 short int var31 /* : Bool */;
4599 short int var32 /* : Bool */;
4600 short int var33 /* : Bool */;
4601 val* var34 /* : String */;
4602 var_mainmodule = p0;
4603 {
4604 { /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
4605 var3 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
4606 if (unlikely(var3 == NULL)) {
4607 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4608 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
4609 show_backtrace(1);
4610 }
4611 var1 = var3;
4612 RET_LABEL2:(void)0;
4613 }
4614 }
4615 {
4616 { /* Inline abstract_compiler#ToolContext#opt_output (var1) on <var1:ToolContext> */
4617 var6 = var1->attrs[COLOR_abstract_compiler__ToolContext___opt_output].val; /* _opt_output on <var1:ToolContext> */
4618 if (unlikely(var6 == NULL)) {
4619 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_output");
4620 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 28);
4621 show_backtrace(1);
4622 }
4623 var4 = var6;
4624 RET_LABEL5:(void)0;
4625 }
4626 }
4627 {
4628 { /* Inline opts#Option#value (var4) on <var4:OptionString> */
4629 var9 = var4->attrs[COLOR_opts__Option___value].val; /* _value on <var4:OptionString> */
4630 var7 = var9;
4631 RET_LABEL8:(void)0;
4632 }
4633 }
4634 var_res = var7;
4635 var10 = NULL;
4636 if (var_res == NULL) {
4637 var11 = 0; /* is null */
4638 } else {
4639 var11 = 1; /* arg is null and recv is not */
4640 }
4641 if (0) {
4642 { /* Inline kernel#Object#!= (var_res,var10) on <var_res:nullable String> */
4643 var_other = var10;
4644 {
4645 var15 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable String(String)>*/;
4646 var14 = var15;
4647 }
4648 var16 = !var14;
4649 var12 = var16;
4650 goto RET_LABEL13;
4651 RET_LABEL13:(void)0;
4652 }
4653 var11 = var12;
4654 }
4655 if (var11){
4656 var = var_res;
4657 goto RET_LABEL;
4658 } else {
4659 }
4660 {
4661 var17 = abstract_compiler__MakefileToolchain__default_outname(self, var_mainmodule);
4662 }
4663 var_res = var17;
4664 {
4665 { /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
4666 var20 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
4667 if (unlikely(var20 == NULL)) {
4668 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4669 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
4670 show_backtrace(1);
4671 }
4672 var18 = var20;
4673 RET_LABEL19:(void)0;
4674 }
4675 }
4676 {
4677 { /* Inline abstract_compiler#ToolContext#opt_dir (var18) on <var18:ToolContext> */
4678 var23 = var18->attrs[COLOR_abstract_compiler__ToolContext___opt_dir].val; /* _opt_dir on <var18:ToolContext> */
4679 if (unlikely(var23 == NULL)) {
4680 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_dir");
4681 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 30);
4682 show_backtrace(1);
4683 }
4684 var21 = var23;
4685 RET_LABEL22:(void)0;
4686 }
4687 }
4688 {
4689 { /* Inline opts#Option#value (var21) on <var21:OptionString> */
4690 var26 = var21->attrs[COLOR_opts__Option___value].val; /* _value on <var21:OptionString> */
4691 var24 = var26;
4692 RET_LABEL25:(void)0;
4693 }
4694 }
4695 var_dir = var24;
4696 var27 = NULL;
4697 if (var_dir == NULL) {
4698 var28 = 0; /* is null */
4699 } else {
4700 var28 = 1; /* arg is null and recv is not */
4701 }
4702 if (0) {
4703 { /* Inline kernel#Object#!= (var_dir,var27) on <var_dir:nullable String> */
4704 var_other = var27;
4705 {
4706 var32 = ((short int (*)(val*, val*))(var_dir->class->vft[COLOR_kernel__Object___61d_61d]))(var_dir, var_other) /* == on <var_dir:nullable String(String)>*/;
4707 var31 = var32;
4708 }
4709 var33 = !var31;
4710 var29 = var33;
4711 goto RET_LABEL30;
4712 RET_LABEL30:(void)0;
4713 }
4714 var28 = var29;
4715 }
4716 if (var28){
4717 {
4718 var34 = file__String__join_path(var_dir, var_res);
4719 }
4720 var = var34;
4721 goto RET_LABEL;
4722 } else {
4723 }
4724 var = var_res;
4725 goto RET_LABEL;
4726 RET_LABEL:;
4727 return var;
4728 }
4729 /* method abstract_compiler#MakefileToolchain#outfile for (self: Object, MModule): String */
4730 val* VIRTUAL_abstract_compiler__MakefileToolchain__outfile(val* self, val* p0) {
4731 val* var /* : String */;
4732 val* var1 /* : String */;
4733 var1 = abstract_compiler__MakefileToolchain__outfile(self, p0);
4734 var = var1;
4735 RET_LABEL:;
4736 return var;
4737 }
4738 /* method abstract_compiler#MakefileToolchain#write_makefile for (self: MakefileToolchain, AbstractCompiler, String, Array[String]) */
4739 void abstract_compiler__MakefileToolchain__write_makefile(val* self, val* p0, val* p1, val* p2) {
4740 val* var_compiler /* var compiler: AbstractCompiler */;
4741 val* var_compile_dir /* var compile_dir: String */;
4742 val* var_cfiles /* var cfiles: Array[String] */;
4743 val* var /* : MModule */;
4744 val* var2 /* : MModule */;
4745 val* var_mainmodule /* var mainmodule: MModule */;
4746 val* var3 /* : MModule */;
4747 val* var5 /* : MModule */;
4748 val* var6 /* : nullable Platform */;
4749 val* var_platform /* var platform: nullable Platform */;
4750 val* var7 /* : String */;
4751 val* var_outname /* var outname: String */;
4752 static val* varonce;
4753 val* var8 /* : String */;
4754 char* var9 /* : NativeString */;
4755 long var10 /* : Int */;
4756 val* var11 /* : FlatString */;
4757 val* var_orig_dir /* var orig_dir: String */;
4758 val* var12 /* : String */;
4759 val* var13 /* : String */;
4760 val* var_outpath /* var outpath: String */;
4761 val* var14 /* : String */;
4762 val* var_makename /* var makename: String */;
4763 static val* varonce15;
4764 val* var16 /* : String */;
4765 char* var17 /* : NativeString */;
4766 long var18 /* : Int */;
4767 val* var19 /* : FlatString */;
4768 val* var20 /* : Array[Object] */;
4769 long var21 /* : Int */;
4770 val* var22 /* : NativeArray[Object] */;
4771 val* var23 /* : String */;
4772 val* var_makepath /* var makepath: String */;
4773 val* var24 /* : OFStream */;
4774 val* var_makefile /* var makefile: OFStream */;
4775 static val* varonce25;
4776 val* var26 /* : String */;
4777 char* var27 /* : NativeString */;
4778 long var28 /* : Int */;
4779 val* var29 /* : FlatString */;
4780 val* var_cc_includes /* var cc_includes: String */;
4781 val* var30 /* : Array[String] */;
4782 val* var32 /* : Array[String] */;
4783 val* var33 /* : ArrayIterator[nullable Object] */;
4784 short int var34 /* : Bool */;
4785 val* var35 /* : nullable Object */;
4786 val* var_p /* var p: String */;
4787 static val* varonce36;
4788 val* var37 /* : String */;
4789 char* var38 /* : NativeString */;
4790 long var39 /* : Int */;
4791 val* var40 /* : FlatString */;
4792 val* var41 /* : String */;
4793 static val* varonce42;
4794 val* var43 /* : String */;
4795 char* var44 /* : NativeString */;
4796 long var45 /* : Int */;
4797 val* var46 /* : FlatString */;
4798 val* var47 /* : String */;
4799 val* var48 /* : String */;
4800 val* var49 /* : HashSet[String] */;
4801 val* var_linker_options /* var linker_options: HashSet[String] */;
4802 val* var50 /* : ToolContext */;
4803 val* var52 /* : ToolContext */;
4804 val* var53 /* : ModelBuilder */;
4805 val* var54 /* : HashMap[MModule, AModule] */;
4806 val* var56 /* : HashMap[MModule, AModule] */;
4807 val* var_m2m /* var m2m: HashMap[MModule, AModule] */;
4808 val* var57 /* : POSetElement[MModule] */;
4809 val* var59 /* : POSetElement[MModule] */;
4810 val* var60 /* : Collection[Object] */;
4811 val* var61 /* : Iterator[nullable Object] */;
4812 short int var62 /* : Bool */;
4813 val* var63 /* : nullable Object */;
4814 val* var_m /* var m: MModule */;
4815 val* var64 /* : nullable Set[String] */;
4816 val* var_libs /* var libs: nullable Set[String] */;
4817 val* var65 /* : null */;
4818 short int var66 /* : Bool */;
4819 short int var67 /* : Bool */;
4820 val* var_other /* var other: nullable Object */;
4821 short int var69 /* : Bool */;
4822 short int var70 /* : Bool */;
4823 short int var71 /* : Bool */;
4824 static val* varonce73;
4825 val* var74 /* : String */;
4826 char* var75 /* : NativeString */;
4827 long var76 /* : Int */;
4828 val* var77 /* : FlatString */;
4829 static val* varonce78;
4830 val* var79 /* : String */;
4831 char* var80 /* : NativeString */;
4832 long var81 /* : Int */;
4833 val* var82 /* : FlatString */;
4834 static val* varonce83;
4835 val* var84 /* : String */;
4836 char* var85 /* : NativeString */;
4837 long var86 /* : Int */;
4838 val* var87 /* : FlatString */;
4839 val* var88 /* : String */;
4840 static val* varonce89;
4841 val* var90 /* : String */;
4842 char* var91 /* : NativeString */;
4843 long var92 /* : Int */;
4844 val* var93 /* : FlatString */;
4845 val* var94 /* : Array[Object] */;
4846 long var95 /* : Int */;
4847 val* var96 /* : NativeArray[Object] */;
4848 val* var97 /* : String */;
4849 val* var98 /* : ToolContext */;
4850 val* var100 /* : ToolContext */;
4851 val* var101 /* : OptionString */;
4852 val* var103 /* : OptionString */;
4853 val* var104 /* : nullable Object */;
4854 val* var106 /* : nullable Object */;
4855 val* var_ost /* var ost: nullable String */;
4856 short int var107 /* : Bool */;
4857 short int var108 /* : Bool */;
4858 static val* varonce109;
4859 val* var110 /* : String */;
4860 char* var111 /* : NativeString */;
4861 long var112 /* : Int */;
4862 val* var113 /* : FlatString */;
4863 short int var114 /* : Bool */;
4864 short int var115 /* : Bool */;
4865 short int var_ /* var : Bool */;
4866 static val* varonce116;
4867 val* var117 /* : String */;
4868 char* var118 /* : NativeString */;
4869 long var119 /* : Int */;
4870 val* var120 /* : FlatString */;
4871 short int var121 /* : Bool */;
4872 short int var122 /* : Bool */;
4873 short int var_123 /* var : Bool */;
4874 short int var124 /* : Bool */;
4875 val* var125 /* : null */;
4876 short int var126 /* : Bool */;
4877 short int var127 /* : Bool */;
4878 short int var_128 /* var : Bool */;
4879 short int var129 /* : Bool */;
4880 static val* varonce130;
4881 val* var131 /* : String */;
4882 char* var132 /* : NativeString */;
4883 long var133 /* : Int */;
4884 val* var134 /* : FlatString */;
4885 static val* varonce135;
4886 val* var136 /* : String */;
4887 char* var137 /* : NativeString */;
4888 long var138 /* : Int */;
4889 val* var139 /* : FlatString */;
4890 static val* varonce140;
4891 val* var141 /* : String */;
4892 char* var142 /* : NativeString */;
4893 long var143 /* : Int */;
4894 val* var144 /* : FlatString */;
4895 static val* varonce145;
4896 val* var146 /* : String */;
4897 char* var147 /* : NativeString */;
4898 long var148 /* : Int */;
4899 val* var149 /* : FlatString */;
4900 static val* varonce150;
4901 val* var151 /* : String */;
4902 char* var152 /* : NativeString */;
4903 long var153 /* : Int */;
4904 val* var154 /* : FlatString */;
4905 static val* varonce155;
4906 val* var156 /* : String */;
4907 char* var157 /* : NativeString */;
4908 long var158 /* : Int */;
4909 val* var159 /* : FlatString */;
4910 static val* varonce160;
4911 val* var161 /* : String */;
4912 char* var162 /* : NativeString */;
4913 long var163 /* : Int */;
4914 val* var164 /* : FlatString */;
4915 static val* varonce165;
4916 val* var166 /* : String */;
4917 char* var167 /* : NativeString */;
4918 long var168 /* : Int */;
4919 val* var169 /* : FlatString */;
4920 static val* varonce170;
4921 val* var171 /* : String */;
4922 char* var172 /* : NativeString */;
4923 long var173 /* : Int */;
4924 val* var174 /* : FlatString */;
4925 val* var175 /* : Array[Object] */;
4926 long var176 /* : Int */;
4927 val* var177 /* : NativeArray[Object] */;
4928 val* var178 /* : String */;
4929 val* var179 /* : Array[String] */;
4930 val* var_ofiles /* var ofiles: Array[String] */;
4931 val* var180 /* : Array[String] */;
4932 val* var_dep_rules /* var dep_rules: Array[String] */;
4933 val* var181 /* : ArrayIterator[nullable Object] */;
4934 short int var182 /* : Bool */;
4935 val* var183 /* : nullable Object */;
4936 val* var_f /* var f: String */;
4937 static val* varonce184;
4938 val* var185 /* : String */;
4939 char* var186 /* : NativeString */;
4940 long var187 /* : Int */;
4941 val* var188 /* : FlatString */;
4942 val* var189 /* : String */;
4943 static val* varonce190;
4944 val* var191 /* : String */;
4945 char* var192 /* : NativeString */;
4946 long var193 /* : Int */;
4947 val* var194 /* : FlatString */;
4948 val* var195 /* : String */;
4949 val* var_o /* var o: String */;
4950 static val* varonce196;
4951 val* var197 /* : String */;
4952 char* var198 /* : NativeString */;
4953 long var199 /* : Int */;
4954 val* var200 /* : FlatString */;
4955 static val* varonce201;
4956 val* var202 /* : String */;
4957 char* var203 /* : NativeString */;
4958 long var204 /* : Int */;
4959 val* var205 /* : FlatString */;
4960 static val* varonce206;
4961 val* var207 /* : String */;
4962 char* var208 /* : NativeString */;
4963 long var209 /* : Int */;
4964 val* var210 /* : FlatString */;
4965 static val* varonce211;
4966 val* var212 /* : String */;
4967 char* var213 /* : NativeString */;
4968 long var214 /* : Int */;
4969 val* var215 /* : FlatString */;
4970 val* var216 /* : Array[Object] */;
4971 long var217 /* : Int */;
4972 val* var218 /* : NativeArray[Object] */;
4973 val* var219 /* : String */;
4974 val* var221 /* : Array[ExternFile] */;
4975 val* var_java_files /* var java_files: Array[ExternFile] */;
4976 val* var222 /* : Array[ExternFile] */;
4977 val* var224 /* : Array[ExternFile] */;
4978 val* var225 /* : ArrayIterator[nullable Object] */;
4979 short int var226 /* : Bool */;
4980 val* var227 /* : nullable Object */;
4981 val* var_f228 /* var f: ExternFile */;
4982 val* var229 /* : String */;
4983 val* var_o230 /* var o: String */;
4984 val* var231 /* : String */;
4985 val* var233 /* : String */;
4986 static val* varonce234;
4987 val* var235 /* : String */;
4988 char* var236 /* : NativeString */;
4989 long var237 /* : Int */;
4990 val* var238 /* : FlatString */;
4991 val* var239 /* : String */;
4992 val* var_ff /* var ff: String */;
4993 static val* varonce240;
4994 val* var241 /* : String */;
4995 char* var242 /* : NativeString */;
4996 long var243 /* : Int */;
4997 val* var244 /* : FlatString */;
4998 static val* varonce245;
4999 val* var246 /* : String */;
5000 char* var247 /* : NativeString */;
5001 long var248 /* : Int */;
5002 val* var249 /* : FlatString */;
5003 val* var250 /* : Array[Object] */;
5004 long var251 /* : Int */;
5005 val* var252 /* : NativeArray[Object] */;
5006 val* var253 /* : String */;
5007 static val* varonce254;
5008 val* var255 /* : String */;
5009 char* var256 /* : NativeString */;
5010 long var257 /* : Int */;
5011 val* var258 /* : FlatString */;
5012 val* var259 /* : String */;
5013 static val* varonce260;
5014 val* var261 /* : String */;
5015 char* var262 /* : NativeString */;
5016 long var263 /* : Int */;
5017 val* var264 /* : FlatString */;
5018 val* var265 /* : Array[Object] */;
5019 long var266 /* : Int */;
5020 val* var267 /* : NativeArray[Object] */;
5021 val* var268 /* : String */;
5022 val* var269 /* : String */;
5023 short int var270 /* : Bool */;
5024 short int var271 /* : Bool */;
5025 short int var273 /* : Bool */;
5026 short int var274 /* : Bool */;
5027 static val* varonce275;
5028 val* var276 /* : String */;
5029 char* var277 /* : NativeString */;
5030 long var278 /* : Int */;
5031 val* var279 /* : FlatString */;
5032 val* var280 /* : Array[Object] */;
5033 long var281 /* : Int */;
5034 val* var282 /* : NativeArray[Object] */;
5035 val* var283 /* : String */;
5036 val* var_jar_file /* var jar_file: String */;
5037 val* var284 /* : Array[String] */;
5038 val* var_class_files_array /* var class_files_array: Array[String] */;
5039 val* var285 /* : ArrayIterator[nullable Object] */;
5040 short int var286 /* : Bool */;
5041 val* var287 /* : nullable Object */;
5042 val* var_f288 /* var f: ExternFile */;
5043 val* var289 /* : String */;
5044 static val* varonce291;
5045 val* var292 /* : String */;
5046 char* var293 /* : NativeString */;
5047 long var294 /* : Int */;
5048 val* var295 /* : FlatString */;
5049 val* var296 /* : String */;
5050 val* var_class_files /* var class_files: String */;
5051 static val* varonce297;
5052 val* var298 /* : String */;
5053 char* var299 /* : NativeString */;
5054 long var300 /* : Int */;
5055 val* var301 /* : FlatString */;
5056 static val* varonce302;
5057 val* var303 /* : String */;
5058 char* var304 /* : NativeString */;
5059 long var305 /* : Int */;
5060 val* var306 /* : FlatString */;
5061 val* var307 /* : Array[Object] */;
5062 long var308 /* : Int */;
5063 val* var309 /* : NativeArray[Object] */;
5064 val* var310 /* : String */;
5065 static val* varonce311;
5066 val* var312 /* : String */;
5067 char* var313 /* : NativeString */;
5068 long var314 /* : Int */;
5069 val* var315 /* : FlatString */;
5070 static val* varonce316;
5071 val* var317 /* : String */;
5072 char* var318 /* : NativeString */;
5073 long var319 /* : Int */;
5074 val* var320 /* : FlatString */;
5075 static val* varonce321;
5076 val* var322 /* : String */;
5077 char* var323 /* : NativeString */;
5078 long var324 /* : Int */;
5079 val* var325 /* : FlatString */;
5080 val* var326 /* : Array[Object] */;
5081 long var327 /* : Int */;
5082 val* var328 /* : NativeArray[Object] */;
5083 val* var329 /* : String */;
5084 static val* varonce330;
5085 val* var331 /* : String */;
5086 char* var332 /* : NativeString */;
5087 long var333 /* : Int */;
5088 val* var334 /* : FlatString */;
5089 static val* varonce335;
5090 val* var336 /* : String */;
5091 char* var337 /* : NativeString */;
5092 long var338 /* : Int */;
5093 val* var339 /* : FlatString */;
5094 val* var340 /* : String */;
5095 static val* varonce341;
5096 val* var342 /* : String */;
5097 char* var343 /* : NativeString */;
5098 long var344 /* : Int */;
5099 val* var345 /* : FlatString */;
5100 static val* varonce346;
5101 val* var347 /* : String */;
5102 char* var348 /* : NativeString */;
5103 long var349 /* : Int */;
5104 val* var350 /* : FlatString */;
5105 static val* varonce351;
5106 val* var352 /* : String */;
5107 char* var353 /* : NativeString */;
5108 long var354 /* : Int */;
5109 val* var355 /* : FlatString */;
5110 val* var356 /* : String */;
5111 static val* varonce357;
5112 val* var358 /* : String */;
5113 char* var359 /* : NativeString */;
5114 long var360 /* : Int */;
5115 val* var361 /* : FlatString */;
5116 val* var362 /* : Array[Object] */;
5117 long var363 /* : Int */;
5118 val* var364 /* : NativeArray[Object] */;
5119 val* var365 /* : String */;
5120 static val* varonce366;
5121 val* var367 /* : String */;
5122 char* var368 /* : NativeString */;
5123 long var369 /* : Int */;
5124 val* var370 /* : FlatString */;
5125 static val* varonce371;
5126 val* var372 /* : String */;
5127 char* var373 /* : NativeString */;
5128 long var374 /* : Int */;
5129 val* var375 /* : FlatString */;
5130 val* var376 /* : String */;
5131 static val* varonce377;
5132 val* var378 /* : String */;
5133 char* var379 /* : NativeString */;
5134 long var380 /* : Int */;
5135 val* var381 /* : FlatString */;
5136 val* var382 /* : Array[Object] */;
5137 long var383 /* : Int */;
5138 val* var384 /* : NativeArray[Object] */;
5139 val* var385 /* : String */;
5140 val* var386 /* : ToolContext */;
5141 val* var388 /* : ToolContext */;
5142 static val* varonce389;
5143 val* var390 /* : String */;
5144 char* var391 /* : NativeString */;
5145 long var392 /* : Int */;
5146 val* var393 /* : FlatString */;
5147 val* var394 /* : Array[Object] */;
5148 long var395 /* : Int */;
5149 val* var396 /* : NativeArray[Object] */;
5150 val* var397 /* : String */;
5151 long var398 /* : Int */;
5152 var_compiler = p0;
5153 var_compile_dir = p1;
5154 var_cfiles = p2;
5155 {
5156 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (var_compiler) on <var_compiler:AbstractCompiler> */
5157 var2 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var_compiler:AbstractCompiler> */
5158 if (unlikely(var2 == NULL)) {
5159 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
5160 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 436);
5161 show_backtrace(1);
5162 }
5163 var = var2;
5164 RET_LABEL1:(void)0;
5165 }
5166 }
5167 var_mainmodule = var;
5168 {
5169 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (var_compiler) on <var_compiler:AbstractCompiler> */
5170 var5 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var_compiler:AbstractCompiler> */
5171 if (unlikely(var5 == NULL)) {
5172 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
5173 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 436);
5174 show_backtrace(1);
5175 }
5176 var3 = var5;
5177 RET_LABEL4:(void)0;
5178 }
5179 }
5180 {
5181 var6 = platform__MModule__target_platform(var3);
5182 }
5183 var_platform = var6;
5184 {
5185 var7 = abstract_compiler__MakefileToolchain__outfile(self, var_mainmodule);
5186 }
5187 var_outname = var7;
5188 if (varonce) {
5189 var8 = varonce;
5190 } else {
5191 var9 = "..";
5192 var10 = 2;
5193 var11 = string__NativeString__to_s_with_length(var9, var10);
5194 var8 = var11;
5195 varonce = var8;
5196 }
5197 var_orig_dir = var8;
5198 {
5199 var12 = file__String__join_path(var_orig_dir, var_outname);
5200 }
5201 {
5202 var13 = file__String__simplify_path(var12);
5203 }
5204 var_outpath = var13;
5205 {
5206 var14 = abstract_compiler__MakefileToolchain__makefile_name(self, var_mainmodule);
5207 }
5208 var_makename = var14;
5209 if (varonce15) {
5210 var16 = varonce15;
5211 } else {
5212 var17 = "/";
5213 var18 = 1;
5214 var19 = string__NativeString__to_s_with_length(var17, var18);
5215 var16 = var19;
5216 varonce15 = var16;
5217 }
5218 var20 = NEW_array__Array(&type_array__Arraykernel__Object);
5219 { /* var20 = array_instance Array[Object] */
5220 var21 = 3;
5221 var22 = NEW_array__NativeArray(var21, &type_array__NativeArraykernel__Object);
5222 ((struct instance_array__NativeArray*)var22)->values[0] = (val*) var_compile_dir;
5223 ((struct instance_array__NativeArray*)var22)->values[1] = (val*) var16;
5224 ((struct instance_array__NativeArray*)var22)->values[2] = (val*) var_makename;
5225 {
5226 ((void (*)(val*, val*, long))(var20->class->vft[COLOR_array__Array__with_native]))(var20, var22, var21) /* with_native on <var20:Array[Object]>*/;
5227 }
5228 }
5229 {
5230 var23 = ((val* (*)(val*))(var20->class->vft[COLOR_string__Object__to_s]))(var20) /* to_s on <var20:Array[Object]>*/;
5231 }
5232 var_makepath = var23;
5233 var24 = NEW_file__OFStream(&type_file__OFStream);
5234 {
5235 file__OFStream__open(var24, var_makepath); /* Direct call file#OFStream#open on <var24:OFStream>*/
5236 }
5237 var_makefile = var24;
5238 if (varonce25) {
5239 var26 = varonce25;
5240 } else {
5241 var27 = "";
5242 var28 = 0;
5243 var29 = string__NativeString__to_s_with_length(var27, var28);
5244 var26 = var29;
5245 varonce25 = var26;
5246 }
5247 var_cc_includes = var26;
5248 {
5249 { /* Inline abstract_compiler#MakefileToolchain#cc_paths (self) on <self:MakefileToolchain> */
5250 var32 = self->attrs[COLOR_abstract_compiler__MakefileToolchain___cc_paths].val; /* _cc_paths on <self:MakefileToolchain> */
5251 if (unlikely(var32 == NULL)) {
5252 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cc_paths");
5253 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 140);
5254 show_backtrace(1);
5255 }
5256 var30 = var32;
5257 RET_LABEL31:(void)0;
5258 }
5259 }
5260 {
5261 var33 = array__AbstractArrayRead__iterator(var30);
5262 }
5263 for(;;) {
5264 {
5265 var34 = array__ArrayIterator__is_ok(var33);
5266 }
5267 if(!var34) break;
5268 {
5269 var35 = array__ArrayIterator__item(var33);
5270 }
5271 var_p = var35;
5272 if (varonce36) {
5273 var37 = varonce36;
5274 } else {
5275 var38 = " -I \"";
5276 var39 = 5;
5277 var40 = string__NativeString__to_s_with_length(var38, var39);
5278 var37 = var40;
5279 varonce36 = var37;
5280 }
5281 {
5282 var41 = string__FlatString___43d(var37, var_p);
5283 }
5284 if (varonce42) {
5285 var43 = varonce42;
5286 } else {
5287 var44 = "\"";
5288 var45 = 1;
5289 var46 = string__NativeString__to_s_with_length(var44, var45);
5290 var43 = var46;
5291 varonce42 = var43;
5292 }
5293 {
5294 var47 = string__FlatString___43d(var41, var43);
5295 }
5296 {
5297 var48 = string__FlatString___43d(var_cc_includes, var47);
5298 }
5299 var_cc_includes = var48;
5300 CONTINUE_label: (void)0;
5301 {
5302 array__ArrayIterator__next(var33); /* Direct call array#ArrayIterator#next on <var33:ArrayIterator[nullable Object]>*/
5303 }
5304 }
5305 BREAK_label: (void)0;
5306 var49 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetstring__String);
5307 {
5308 hash_collection__HashSet__init(var49); /* Direct call hash_collection#HashSet#init on <var49:HashSet[String]>*/
5309 }
5310 var_linker_options = var49;
5311 {
5312 { /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
5313 var52 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
5314 if (unlikely(var52 == NULL)) {
5315 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
5316 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
5317 show_backtrace(1);
5318 }
5319 var50 = var52;
5320 RET_LABEL51:(void)0;
5321 }
5322 }
5323 {
5324 var53 = modelbuilder__ToolContext__modelbuilder(var50);
5325 }
5326 {
5327 { /* Inline modelbuilder#ModelBuilder#mmodule2nmodule (var53) on <var53:ModelBuilder> */
5328 var56 = var53->attrs[COLOR_modelbuilder__ModelBuilder___mmodule2nmodule].val; /* _mmodule2nmodule on <var53:ModelBuilder> */
5329 if (unlikely(var56 == NULL)) {
5330 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule2nmodule");
5331 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 697);
5332 show_backtrace(1);
5333 }
5334 var54 = var56;
5335 RET_LABEL55:(void)0;
5336 }
5337 }
5338 var_m2m = var54;
5339 {
5340 { /* Inline mmodule#MModule#in_importation (var_mainmodule) on <var_mainmodule:MModule> */
5341 var59 = var_mainmodule->attrs[COLOR_mmodule__MModule___in_importation].val; /* _in_importation on <var_mainmodule:MModule> */
5342 if (unlikely(var59 == NULL)) {
5343 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
5344 PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 101);
5345 show_backtrace(1);
5346 }
5347 var57 = var59;
5348 RET_LABEL58:(void)0;
5349 }
5350 }
5351 {
5352 var60 = poset__POSetElement__greaters(var57);
5353 }
5354 {
5355 var61 = ((val* (*)(val*))(var60->class->vft[COLOR_abstract_collection__Collection__iterator]))(var60) /* iterator on <var60:Collection[Object](Collection[MModule])>*/;
5356 }
5357 for(;;) {
5358 {
5359 var62 = ((short int (*)(val*))(var61->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var61) /* is_ok on <var61:Iterator[nullable Object]>*/;
5360 }
5361 if(!var62) break;
5362 {
5363 var63 = ((val* (*)(val*))(var61->class->vft[COLOR_abstract_collection__Iterator__item]))(var61) /* item on <var61:Iterator[nullable Object]>*/;
5364 }
5365 var_m = var63;
5366 {
5367 var64 = abstract_compiler__MModule__collect_linker_libs(var_m);
5368 }
5369 var_libs = var64;
5370 var65 = NULL;
5371 if (var_libs == NULL) {
5372 var66 = 0; /* is null */
5373 } else {
5374 var66 = 1; /* arg is null and recv is not */
5375 }
5376 if (0) {
5377 { /* Inline kernel#Object#!= (var_libs,var65) on <var_libs:nullable Set[String]> */
5378 var_other = var65;
5379 {
5380 var70 = ((short int (*)(val*, val*))(var_libs->class->vft[COLOR_kernel__Object___61d_61d]))(var_libs, var_other) /* == on <var_libs:nullable Set[String](Set[String])>*/;
5381 var69 = var70;
5382 }
5383 var71 = !var69;
5384 var67 = var71;
5385 goto RET_LABEL68;
5386 RET_LABEL68:(void)0;
5387 }
5388 var66 = var67;
5389 }
5390 if (var66){
5391 {
5392 abstract_collection__SimpleCollection__add_all(var_linker_options, var_libs); /* Direct call abstract_collection#SimpleCollection#add_all on <var_linker_options:HashSet[String]>*/
5393 }
5394 } else {
5395 }
5396 CONTINUE_label72: (void)0;
5397 {
5398 ((void (*)(val*))(var61->class->vft[COLOR_abstract_collection__Iterator__next]))(var61) /* next on <var61:Iterator[nullable Object]>*/;
5399 }
5400 }
5401 BREAK_label72: (void)0;
5402 if (varonce73) {
5403 var74 = varonce73;
5404 } else {
5405 var75 = "CC = ccache cc\nCXX = ccache c++\nCFLAGS = -g -O2 -Wno-unused-value -Wno-switch\nCINCL = ";
5406 var76 = 86;
5407 var77 = string__NativeString__to_s_with_length(var75, var76);
5408 var74 = var77;
5409 varonce73 = var74;
5410 }
5411 if (varonce78) {
5412 var79 = varonce78;
5413 } else {
5414 var80 = "\nLDFLAGS ?= \nLDLIBS ?= -lm -lgc ";
5415 var81 = 33;
5416 var82 = string__NativeString__to_s_with_length(var80, var81);
5417 var79 = var82;
5418 varonce78 = var79;
5419 }
5420 if (varonce83) {
5421 var84 = varonce83;
5422 } else {
5423 var85 = " ";
5424 var86 = 1;
5425 var87 = string__NativeString__to_s_with_length(var85, var86);
5426 var84 = var87;
5427 varonce83 = var84;
5428 }
5429 {
5430 var88 = string__Collection__join(var_linker_options, var84);
5431 }
5432 if (varonce89) {
5433 var90 = varonce89;
5434 } else {
5435 var91 = "\n\n";
5436 var92 = 2;
5437 var93 = string__NativeString__to_s_with_length(var91, var92);
5438 var90 = var93;
5439 varonce89 = var90;
5440 }
5441 var94 = NEW_array__Array(&type_array__Arraykernel__Object);
5442 { /* var94 = array_instance Array[Object] */
5443 var95 = 5;
5444 var96 = NEW_array__NativeArray(var95, &type_array__NativeArraykernel__Object);
5445 ((struct instance_array__NativeArray*)var96)->values[0] = (val*) var74;
5446 ((struct instance_array__NativeArray*)var96)->values[1] = (val*) var_cc_includes;
5447 ((struct instance_array__NativeArray*)var96)->values[2] = (val*) var79;
5448 ((struct instance_array__NativeArray*)var96)->values[3] = (val*) var88;
5449 ((struct instance_array__NativeArray*)var96)->values[4] = (val*) var90;
5450 {
5451 ((void (*)(val*, val*, long))(var94->class->vft[COLOR_array__Array__with_native]))(var94, var96, var95) /* with_native on <var94:Array[Object]>*/;
5452 }
5453 }
5454 {
5455 var97 = ((val* (*)(val*))(var94->class->vft[COLOR_string__Object__to_s]))(var94) /* to_s on <var94:Array[Object]>*/;
5456 }
5457 {
5458 file__OFStream__write(var_makefile, var97); /* Direct call file#OFStream#write on <var_makefile:OFStream>*/
5459 }
5460 {
5461 { /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
5462 var100 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
5463 if (unlikely(var100 == NULL)) {
5464 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
5465 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
5466 show_backtrace(1);
5467 }
5468 var98 = var100;
5469 RET_LABEL99:(void)0;
5470 }
5471 }
5472 {
5473 { /* Inline abstract_compiler#ToolContext#opt_stacktrace (var98) on <var98:ToolContext> */
5474 var103 = var98->attrs[COLOR_abstract_compiler__ToolContext___opt_stacktrace].val; /* _opt_stacktrace on <var98:ToolContext> */
5475 if (unlikely(var103 == NULL)) {
5476 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_stacktrace");
5477 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 62);
5478 show_backtrace(1);
5479 }
5480 var101 = var103;
5481 RET_LABEL102:(void)0;
5482 }
5483 }
5484 {
5485 { /* Inline opts#Option#value (var101) on <var101:OptionString> */
5486 var106 = var101->attrs[COLOR_opts__Option___value].val; /* _value on <var101:OptionString> */
5487 var104 = var106;
5488 RET_LABEL105:(void)0;
5489 }
5490 }
5491 var_ost = var104;
5492 if (varonce109) {
5493 var110 = varonce109;
5494 } else {
5495 var111 = "libunwind";
5496 var112 = 9;
5497 var113 = string__NativeString__to_s_with_length(var111, var112);
5498 var110 = var113;
5499 varonce109 = var110;
5500 }
5501 if (var_ost == NULL) {
5502 var114 = 0; /* <var110:String> cannot be null */
5503 } else {
5504 var115 = string__FlatString___61d_61d(var_ost, var110);
5505 var114 = var115;
5506 }
5507 var_ = var114;
5508 if (var114){
5509 var108 = var_;
5510 } else {
5511 if (varonce116) {
5512 var117 = varonce116;
5513 } else {
5514 var118 = "nitstack";
5515 var119 = 8;
5516 var120 = string__NativeString__to_s_with_length(var118, var119);
5517 var117 = var120;
5518 varonce116 = var117;
5519 }
5520 if (var_ost == NULL) {
5521 var121 = 0; /* <var117:String> cannot be null */
5522 } else {
5523 var122 = string__FlatString___61d_61d(var_ost, var117);
5524 var121 = var122;
5525 }
5526 var108 = var121;
5527 }
5528 var_123 = var108;
5529 if (var108){
5530 var125 = NULL;
5531 if (var_platform == NULL) {
5532 var126 = 1; /* is null */
5533 } else {
5534 var126 = 0; /* arg is null but recv is not */
5535 }
5536 if (0) {
5537 var127 = ((short int (*)(val*, val*))(var_platform->class->vft[COLOR_kernel__Object___61d_61d]))(var_platform, var125) /* == on <var_platform:nullable Platform>*/;
5538 var126 = var127;
5539 }
5540 var_128 = var126;
5541 if (var126){
5542 var124 = var_128;
5543 } else {
5544 {
5545 var129 = ((short int (*)(val*))(var_platform->class->vft[COLOR_platform__Platform__supports_libunwind]))(var_platform) /* supports_libunwind on <var_platform:nullable Platform(Platform)>*/;
5546 }
5547 var124 = var129;
5548 }
5549 var107 = var124;
5550 } else {
5551 var107 = var_123;
5552 }
5553 if (var107){
5554 if (varonce130) {
5555 var131 = varonce130;
5556 } else {
5557 var132 = "NEED_LIBUNWIND := YesPlease\n";
5558 var133 = 28;
5559 var134 = string__NativeString__to_s_with_length(var132, var133);
5560 var131 = var134;
5561 varonce130 = var131;
5562 }
5563 {
5564 file__OFStream__write(var_makefile, var131); /* Direct call file#OFStream#write on <var_makefile:OFStream>*/
5565 }
5566 } else {
5567 }
5568 if (varonce135) {
5569 var136 = varonce135;
5570 } else {
5571 var137 = "uname_S := $(shell sh -c \'uname -s 2>/dev/null || echo not\')\n";
5572 var138 = 61;
5573 var139 = string__NativeString__to_s_with_length(var137, var138);
5574 var136 = var139;
5575 varonce135 = var136;
5576 }
5577 {
5578 file__OFStream__write(var_makefile, var136); /* Direct call file#OFStream#write on <var_makefile:OFStream>*/
5579 }
5580 if (varonce140) {
5581 var141 = varonce140;
5582 } else {
5583 var142 = "ifeq ($(uname_S),Darwin)\n";
5584 var143 = 25;
5585 var144 = string__NativeString__to_s_with_length(var142, var143);
5586 var141 = var144;
5587 varonce140 = var141;
5588 }
5589 {
5590 file__OFStream__write(var_makefile, var141); /* Direct call file#OFStream#write on <var_makefile:OFStream>*/
5591 }
5592 if (varonce145) {
5593 var146 = varonce145;
5594 } else {
5595 var147 = "\11NEED_LIBUNWIND :=\n";
5596 var148 = 19;
5597 var149 = string__NativeString__to_s_with_length(var147, var148);
5598 var146 = var149;
5599 varonce145 = var146;
5600 }
5601 {
5602 file__OFStream__write(var_makefile, var146); /* Direct call file#OFStream#write on <var_makefile:OFStream>*/
5603 }
5604 if (varonce150) {
5605 var151 = varonce150;
5606 } else {
5607 var152 = "endif\n\n";
5608 var153 = 7;
5609 var154 = string__NativeString__to_s_with_length(var152, var153);
5610 var151 = var154;
5611 varonce150 = var151;
5612 }
5613 {
5614 file__OFStream__write(var_makefile, var151); /* Direct call file#OFStream#write on <var_makefile:OFStream>*/
5615 }
5616 if (varonce155) {
5617 var156 = varonce155;
5618 } else {
5619 var157 = "clang_check := $(shell sh -c \'$(CC) -v 2>&1 | grep -q clang; echo $$?\')\nifeq ($(clang_check), 0)\n\11CFLAGS += -Qunused-arguments\nendif\n";
5620 var158 = 133;
5621 var159 = string__NativeString__to_s_with_length(var157, var158);
5622 var156 = var159;
5623 varonce155 = var156;
5624 }
5625 {
5626 file__OFStream__write(var_makefile, var156); /* Direct call file#OFStream#write on <var_makefile:OFStream>*/
5627 }
5628 if (varonce160) {
5629 var161 = varonce160;
5630 } else {
5631 var162 = "ifdef NEED_LIBUNWIND\n\11LDLIBS += -lunwind\nendif\n";
5632 var163 = 47;
5633 var164 = string__NativeString__to_s_with_length(var162, var163);
5634 var161 = var164;
5635 varonce160 = var161;
5636 }
5637 {
5638 file__OFStream__write(var_makefile, var161); /* Direct call file#OFStream#write on <var_makefile:OFStream>*/
5639 }
5640 if (varonce165) {
5641 var166 = varonce165;
5642 } else {
5643 var167 = "all: ";
5644 var168 = 5;
5645 var169 = string__NativeString__to_s_with_length(var167, var168);
5646 var166 = var169;
5647 varonce165 = var166;
5648 }
5649 if (varonce170) {
5650 var171 = varonce170;
5651 } else {
5652 var172 = "\n\n";
5653 var173 = 2;
5654 var174 = string__NativeString__to_s_with_length(var172, var173);
5655 var171 = var174;
5656 varonce170 = var171;
5657 }
5658 var175 = NEW_array__Array(&type_array__Arraykernel__Object);
5659 { /* var175 = array_instance Array[Object] */
5660 var176 = 3;
5661 var177 = NEW_array__NativeArray(var176, &type_array__NativeArraykernel__Object);
5662 ((struct instance_array__NativeArray*)var177)->values[0] = (val*) var166;
5663 ((struct instance_array__NativeArray*)var177)->values[1] = (val*) var_outpath;
5664 ((struct instance_array__NativeArray*)var177)->values[2] = (val*) var171;
5665 {
5666 ((void (*)(val*, val*, long))(var175->class->vft[COLOR_array__Array__with_native]))(var175, var177, var176) /* with_native on <var175:Array[Object]>*/;
5667 }
5668 }
5669 {
5670 var178 = ((val* (*)(val*))(var175->class->vft[COLOR_string__Object__to_s]))(var175) /* to_s on <var175:Array[Object]>*/;
5671 }
5672 {
5673 file__OFStream__write(var_makefile, var178); /* Direct call file#OFStream#write on <var_makefile:OFStream>*/
5674 }
5675 var179 = NEW_array__Array(&type_array__Arraystring__String);
5676 {
5677 array__Array__init(var179); /* Direct call array#Array#init on <var179:Array[String]>*/
5678 }
5679 var_ofiles = var179;
5680 var180 = NEW_array__Array(&type_array__Arraystring__String);
5681 {
5682 array__Array__init(var180); /* Direct call array#Array#init on <var180:Array[String]>*/
5683 }
5684 var_dep_rules = var180;
5685 {
5686 var181 = array__AbstractArrayRead__iterator(var_cfiles);
5687 }
5688 for(;;) {
5689 {
5690 var182 = array__ArrayIterator__is_ok(var181);
5691 }
5692 if(!var182) break;
5693 {
5694 var183 = array__ArrayIterator__item(var181);
5695 }
5696 var_f = var183;
5697 if (varonce184) {
5698 var185 = varonce184;
5699 } else {
5700 var186 = ".c";
5701 var187 = 2;
5702 var188 = string__NativeString__to_s_with_length(var186, var187);
5703 var185 = var188;
5704 varonce184 = var185;
5705 }
5706 {
5707 var189 = file__String__strip_extension(var_f, var185);
5708 }
5709 if (varonce190) {
5710 var191 = varonce190;
5711 } else {
5712 var192 = ".o";
5713 var193 = 2;
5714 var194 = string__NativeString__to_s_with_length(var192, var193);
5715 var191 = var194;
5716 varonce190 = var191;
5717 }
5718 {
5719 var195 = string__FlatString___43d(var189, var191);
5720 }
5721 var_o = var195;
5722 if (varonce196) {
5723 var197 = varonce196;
5724 } else {
5725 var198 = ": ";
5726 var199 = 2;
5727 var200 = string__NativeString__to_s_with_length(var198, var199);
5728 var197 = var200;
5729 varonce196 = var197;
5730 }
5731 if (varonce201) {
5732 var202 = varonce201;
5733 } else {
5734 var203 = "\n\11$(CC) $(CFLAGS) $(CINCL) -c -o ";
5735 var204 = 33;
5736 var205 = string__NativeString__to_s_with_length(var203, var204);
5737 var202 = var205;
5738 varonce201 = var202;
5739 }
5740 if (varonce206) {
5741 var207 = varonce206;
5742 } else {
5743 var208 = " ";
5744 var209 = 1;
5745 var210 = string__NativeString__to_s_with_length(var208, var209);
5746 var207 = var210;
5747 varonce206 = var207;
5748 }
5749 if (varonce211) {
5750 var212 = varonce211;
5751 } else {
5752 var213 = "\n\n";
5753 var214 = 2;
5754 var215 = string__NativeString__to_s_with_length(var213, var214);
5755 var212 = var215;
5756 varonce211 = var212;
5757 }
5758 var216 = NEW_array__Array(&type_array__Arraykernel__Object);
5759 { /* var216 = array_instance Array[Object] */
5760 var217 = 8;
5761 var218 = NEW_array__NativeArray(var217, &type_array__NativeArraykernel__Object);
5762 ((struct instance_array__NativeArray*)var218)->values[0] = (val*) var_o;
5763 ((struct instance_array__NativeArray*)var218)->values[1] = (val*) var197;
5764 ((struct instance_array__NativeArray*)var218)->values[2] = (val*) var_f;
5765 ((struct instance_array__NativeArray*)var218)->values[3] = (val*) var202;
5766 ((struct instance_array__NativeArray*)var218)->values[4] = (val*) var_o;
5767 ((struct instance_array__NativeArray*)var218)->values[5] = (val*) var207;
5768 ((struct instance_array__NativeArray*)var218)->values[6] = (val*) var_f;
5769 ((struct instance_array__NativeArray*)var218)->values[7] = (val*) var212;
5770 {
5771 ((void (*)(val*, val*, long))(var216->class->vft[COLOR_array__Array__with_native]))(var216, var218, var217) /* with_native on <var216:Array[Object]>*/;
5772 }
5773 }
5774 {
5775 var219 = ((val* (*)(val*))(var216->class->vft[COLOR_string__Object__to_s]))(var216) /* to_s on <var216:Array[Object]>*/;
5776 }
5777 {
5778 file__OFStream__write(var_makefile, var219); /* Direct call file#OFStream#write on <var_makefile:OFStream>*/
5779 }
5780 {
5781 array__Array__add(var_ofiles, var_o); /* Direct call array#Array#add on <var_ofiles:Array[String]>*/
5782 }
5783 {
5784 array__Array__add(var_dep_rules, var_o); /* Direct call array#Array#add on <var_dep_rules:Array[String]>*/
5785 }
5786 CONTINUE_label220: (void)0;
5787 {
5788 array__ArrayIterator__next(var181); /* Direct call array#ArrayIterator#next on <var181:ArrayIterator[nullable Object]>*/
5789 }
5790 }
5791 BREAK_label220: (void)0;
5792 var221 = NEW_array__Array(&type_array__Arrayc_tools__ExternFile);
5793 {
5794 array__Array__init(var221); /* Direct call array#Array#init on <var221:Array[ExternFile]>*/
5795 }
5796 var_java_files = var221;
5797 {
5798 { /* Inline abstract_compiler#AbstractCompiler#extern_bodies (var_compiler) on <var_compiler:AbstractCompiler> */
5799 var224 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___extern_bodies].val; /* _extern_bodies on <var_compiler:AbstractCompiler> */
5800 if (unlikely(var224 == NULL)) {
5801 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _extern_bodies");
5802 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 847);
5803 show_backtrace(1);
5804 }
5805 var222 = var224;
5806 RET_LABEL223:(void)0;
5807 }
5808 }
5809 {
5810 var225 = array__AbstractArrayRead__iterator(var222);
5811 }
5812 for(;;) {
5813 {
5814 var226 = array__ArrayIterator__is_ok(var225);
5815 }
5816 if(!var226) break;
5817 {
5818 var227 = array__ArrayIterator__item(var225);
5819 }
5820 var_f228 = var227;
5821 {
5822 var229 = c_tools__ExternCFile__makefile_rule_name(var_f228);
5823 }
5824 var_o230 = var229;
5825 {
5826 { /* Inline c_tools#ExternFile#filename (var_f228) on <var_f228:ExternFile> */
5827 var233 = var_f228->attrs[COLOR_c_tools__ExternFile___filename].val; /* _filename on <var_f228:ExternFile> */
5828 if (unlikely(var233 == NULL)) {
5829 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filename");
5830 PRINT_ERROR(" (%s:%d)\n", "src/c_tools.nit", 104);
5831 show_backtrace(1);
5832 }
5833 var231 = var233;
5834 RET_LABEL232:(void)0;
5835 }
5836 }
5837 if (varonce234) {
5838 var235 = varonce234;
5839 } else {
5840 var236 = "";
5841 var237 = 0;
5842 var238 = string__NativeString__to_s_with_length(var236, var237);
5843 var235 = var238;
5844 varonce234 = var235;
5845 }
5846 {
5847 var239 = file__String__basename(var231, var235);
5848 }
5849 var_ff = var239;
5850 if (varonce240) {
5851 var241 = varonce240;
5852 } else {
5853 var242 = ": ";
5854 var243 = 2;
5855 var244 = string__NativeString__to_s_with_length(var242, var243);
5856 var241 = var244;
5857 varonce240 = var241;
5858 }
5859 if (varonce245) {
5860 var246 = varonce245;
5861 } else {
5862 var247 = "\n";
5863 var248 = 1;
5864 var249 = string__NativeString__to_s_with_length(var247, var248);
5865 var246 = var249;
5866 varonce245 = var246;
5867 }
5868 var250 = NEW_array__Array(&type_array__Arraykernel__Object);
5869 { /* var250 = array_instance Array[Object] */
5870 var251 = 4;
5871 var252 = NEW_array__NativeArray(var251, &type_array__NativeArraykernel__Object);
5872 ((struct instance_array__NativeArray*)var252)->values[0] = (val*) var_o230;
5873 ((struct instance_array__NativeArray*)var252)->values[1] = (val*) var241;
5874 ((struct instance_array__NativeArray*)var252)->values[2] = (val*) var_ff;
5875 ((struct instance_array__NativeArray*)var252)->values[3] = (val*) var246;
5876 {
5877 ((void (*)(val*, val*, long))(var250->class->vft[COLOR_array__Array__with_native]))(var250, var252, var251) /* with_native on <var250:Array[Object]>*/;
5878 }
5879 }
5880 {
5881 var253 = ((val* (*)(val*))(var250->class->vft[COLOR_string__Object__to_s]))(var250) /* to_s on <var250:Array[Object]>*/;
5882 }
5883 {
5884 file__OFStream__write(var_makefile, var253); /* Direct call file#OFStream#write on <var_makefile:OFStream>*/
5885 }
5886 if (varonce254) {
5887 var255 = varonce254;
5888 } else {
5889 var256 = "\11";
5890 var257 = 1;
5891 var258 = string__NativeString__to_s_with_length(var256, var257);
5892 var255 = var258;
5893 varonce254 = var255;
5894 }
5895 {
5896 var259 = c_tools__ExternCFile__makefile_rule_content(var_f228);
5897 }
5898 if (varonce260) {
5899 var261 = varonce260;
5900 } else {
5901 var262 = "\n\n";
5902 var263 = 2;
5903 var264 = string__NativeString__to_s_with_length(var262, var263);
5904 var261 = var264;
5905 varonce260 = var261;
5906 }
5907 var265 = NEW_array__Array(&type_array__Arraykernel__Object);
5908 { /* var265 = array_instance Array[Object] */
5909 var266 = 3;
5910 var267 = NEW_array__NativeArray(var266, &type_array__NativeArraykernel__Object);
5911 ((struct instance_array__NativeArray*)var267)->values[0] = (val*) var255;
5912 ((struct instance_array__NativeArray*)var267)->values[1] = (val*) var259;
5913 ((struct instance_array__NativeArray*)var267)->values[2] = (val*) var261;
5914 {
5915 ((void (*)(val*, val*, long))(var265->class->vft[COLOR_array__Array__with_native]))(var265, var267, var266) /* with_native on <var265:Array[Object]>*/;
5916 }
5917 }
5918 {
5919 var268 = ((val* (*)(val*))(var265->class->vft[COLOR_string__Object__to_s]))(var265) /* to_s on <var265:Array[Object]>*/;
5920 }
5921 {
5922 file__OFStream__write(var_makefile, var268); /* Direct call file#OFStream#write on <var_makefile:OFStream>*/
5923 }
5924 {
5925 var269 = c_tools__ExternCFile__makefile_rule_name(var_f228);
5926 }
5927 {
5928 array__Array__add(var_dep_rules, var269); /* Direct call array#Array#add on <var_dep_rules:Array[String]>*/
5929 }
5930 {
5931 var270 = c_tools__ExternCFile__compiles_to_o_file(var_f228);
5932 }
5933 if (var270){
5934 {
5935 array__Array__add(var_ofiles, var_o230); /* Direct call array#Array#add on <var_ofiles:Array[String]>*/
5936 }
5937 } else {
5938 }
5939 {
5940 var271 = c_tools__ExternFile__add_to_jar(var_f228);
5941 }
5942 if (var271){
5943 {
5944 array__Array__add(var_java_files, var_f228); /* Direct call array#Array#add on <var_java_files:Array[ExternFile]>*/
5945 }
5946 } else {
5947 }
5948 CONTINUE_label272: (void)0;
5949 {
5950 array__ArrayIterator__next(var225); /* Direct call array#ArrayIterator#next on <var225:ArrayIterator[nullable Object]>*/
5951 }
5952 }
5953 BREAK_label272: (void)0;
5954 {
5955 var273 = array__AbstractArrayRead__is_empty(var_java_files);
5956 }
5957 var274 = !var273;
5958 if (var274){
5959 if (varonce275) {
5960 var276 = varonce275;
5961 } else {
5962 var277 = ".jar";
5963 var278 = 4;
5964 var279 = string__NativeString__to_s_with_length(var277, var278);
5965 var276 = var279;
5966 varonce275 = var276;
5967 }
5968 var280 = NEW_array__Array(&type_array__Arraykernel__Object);
5969 { /* var280 = array_instance Array[Object] */
5970 var281 = 2;
5971 var282 = NEW_array__NativeArray(var281, &type_array__NativeArraykernel__Object);
5972 ((struct instance_array__NativeArray*)var282)->values[0] = (val*) var_outpath;
5973 ((struct instance_array__NativeArray*)var282)->values[1] = (val*) var276;
5974 {
5975 ((void (*)(val*, val*, long))(var280->class->vft[COLOR_array__Array__with_native]))(var280, var282, var281) /* with_native on <var280:Array[Object]>*/;
5976 }
5977 }
5978 {
5979 var283 = ((val* (*)(val*))(var280->class->vft[COLOR_string__Object__to_s]))(var280) /* to_s on <var280:Array[Object]>*/;
5980 }
5981 var_jar_file = var283;
5982 var284 = NEW_array__Array(&type_array__Arraystring__String);
5983 {
5984 array__Array__init(var284); /* Direct call array#Array#init on <var284:Array[String]>*/
5985 }
5986 var_class_files_array = var284;
5987 {
5988 var285 = array__AbstractArrayRead__iterator(var_java_files);
5989 }
5990 for(;;) {
5991 {
5992 var286 = array__ArrayIterator__is_ok(var285);
5993 }
5994 if(!var286) break;
5995 {
5996 var287 = array__ArrayIterator__item(var285);
5997 }
5998 var_f288 = var287;
5999 {
6000 var289 = c_tools__ExternCFile__makefile_rule_name(var_f288);
6001 }
6002 {
6003 array__Array__add(var_class_files_array, var289); /* Direct call array#Array#add on <var_class_files_array:Array[String]>*/
6004 }
6005 CONTINUE_label290: (void)0;
6006 {
6007 array__ArrayIterator__next(var285); /* Direct call array#ArrayIterator#next on <var285:ArrayIterator[nullable Object]>*/
6008 }
6009 }
6010 BREAK_label290: (void)0;
6011 if (varonce291) {
6012 var292 = varonce291;
6013 } else {
6014 var293 = " ";
6015 var294 = 1;
6016 var295 = string__NativeString__to_s_with_length(var293, var294);
6017 var292 = var295;
6018 varonce291 = var292;
6019 }
6020 {
6021 var296 = string__Collection__join(var_class_files_array, var292);
6022 }
6023 var_class_files = var296;
6024 if (varonce297) {
6025 var298 = varonce297;
6026 } else {
6027 var299 = ": ";
6028 var300 = 2;
6029 var301 = string__NativeString__to_s_with_length(var299, var300);
6030 var298 = var301;
6031 varonce297 = var298;
6032 }
6033 if (varonce302) {
6034 var303 = varonce302;
6035 } else {
6036 var304 = "\n";
6037 var305 = 1;
6038 var306 = string__NativeString__to_s_with_length(var304, var305);
6039 var303 = var306;
6040 varonce302 = var303;
6041 }
6042 var307 = NEW_array__Array(&type_array__Arraykernel__Object);
6043 { /* var307 = array_instance Array[Object] */
6044 var308 = 4;
6045 var309 = NEW_array__NativeArray(var308, &type_array__NativeArraykernel__Object);
6046 ((struct instance_array__NativeArray*)var309)->values[0] = (val*) var_jar_file;
6047 ((struct instance_array__NativeArray*)var309)->values[1] = (val*) var298;
6048 ((struct instance_array__NativeArray*)var309)->values[2] = (val*) var_class_files;
6049 ((struct instance_array__NativeArray*)var309)->values[3] = (val*) var303;
6050 {
6051 ((void (*)(val*, val*, long))(var307->class->vft[COLOR_array__Array__with_native]))(var307, var309, var308) /* with_native on <var307:Array[Object]>*/;
6052 }
6053 }
6054 {
6055 var310 = ((val* (*)(val*))(var307->class->vft[COLOR_string__Object__to_s]))(var307) /* to_s on <var307:Array[Object]>*/;
6056 }
6057 {
6058 file__OFStream__write(var_makefile, var310); /* Direct call file#OFStream#write on <var_makefile:OFStream>*/
6059 }
6060 if (varonce311) {
6061 var312 = varonce311;
6062 } else {
6063 var313 = "\11jar cf ";
6064 var314 = 8;
6065 var315 = string__NativeString__to_s_with_length(var313, var314);
6066 var312 = var315;
6067 varonce311 = var312;
6068 }
6069 if (varonce316) {
6070 var317 = varonce316;
6071 } else {
6072 var318 = " ";
6073 var319 = 1;
6074 var320 = string__NativeString__to_s_with_length(var318, var319);
6075 var317 = var320;
6076 varonce316 = var317;
6077 }
6078 if (varonce321) {
6079 var322 = varonce321;
6080 } else {
6081 var323 = "\n\n";
6082 var324 = 2;
6083 var325 = string__NativeString__to_s_with_length(var323, var324);
6084 var322 = var325;
6085 varonce321 = var322;
6086 }
6087 var326 = NEW_array__Array(&type_array__Arraykernel__Object);
6088 { /* var326 = array_instance Array[Object] */
6089 var327 = 5;
6090 var328 = NEW_array__NativeArray(var327, &type_array__NativeArraykernel__Object);
6091 ((struct instance_array__NativeArray*)var328)->values[0] = (val*) var312;
6092 ((struct instance_array__NativeArray*)var328)->values[1] = (val*) var_jar_file;
6093 ((struct instance_array__NativeArray*)var328)->values[2] = (val*) var317;
6094 ((struct instance_array__NativeArray*)var328)->values[3] = (val*) var_class_files;
6095 ((struct instance_array__NativeArray*)var328)->values[4] = (val*) var322;
6096 {
6097 ((void (*)(val*, val*, long))(var326->class->vft[COLOR_array__Array__with_native]))(var326, var328, var327) /* with_native on <var326:Array[Object]>*/;
6098 }
6099 }
6100 {
6101 var329 = ((val* (*)(val*))(var326->class->vft[COLOR_string__Object__to_s]))(var326) /* to_s on <var326:Array[Object]>*/;
6102 }
6103 {
6104 file__OFStream__write(var_makefile, var329); /* Direct call file#OFStream#write on <var_makefile:OFStream>*/
6105 }
6106 {
6107 array__Array__add(var_dep_rules, var_jar_file); /* Direct call array#Array#add on <var_dep_rules:Array[String]>*/
6108 }
6109 } else {
6110 }
6111 if (varonce330) {
6112 var331 = varonce330;
6113 } else {
6114 var332 = ": ";
6115 var333 = 2;
6116 var334 = string__NativeString__to_s_with_length(var332, var333);
6117 var331 = var334;
6118 varonce330 = var331;
6119 }
6120 if (varonce335) {
6121 var336 = varonce335;
6122 } else {
6123 var337 = " ";
6124 var338 = 1;
6125 var339 = string__NativeString__to_s_with_length(var337, var338);
6126 var336 = var339;
6127 varonce335 = var336;
6128 }
6129 {
6130 var340 = string__Collection__join(var_dep_rules, var336);
6131 }
6132 if (varonce341) {
6133 var342 = varonce341;
6134 } else {
6135 var343 = "\n\11$(CC) $(LDFLAGS) -o ";
6136 var344 = 22;
6137 var345 = string__NativeString__to_s_with_length(var343, var344);
6138 var342 = var345;
6139 varonce341 = var342;
6140 }
6141 if (varonce346) {
6142 var347 = varonce346;
6143 } else {
6144 var348 = " ";
6145 var349 = 1;
6146 var350 = string__NativeString__to_s_with_length(var348, var349);
6147 var347 = var350;
6148 varonce346 = var347;
6149 }
6150 if (varonce351) {
6151 var352 = varonce351;
6152 } else {
6153 var353 = " ";
6154 var354 = 1;
6155 var355 = string__NativeString__to_s_with_length(var353, var354);
6156 var352 = var355;
6157 varonce351 = var352;
6158 }
6159 {
6160 var356 = string__Collection__join(var_ofiles, var352);
6161 }
6162 if (varonce357) {
6163 var358 = varonce357;
6164 } else {
6165 var359 = " $(LDLIBS)\n\n";
6166 var360 = 12;
6167 var361 = string__NativeString__to_s_with_length(var359, var360);
6168 var358 = var361;
6169 varonce357 = var358;
6170 }
6171 var362 = NEW_array__Array(&type_array__Arraykernel__Object);
6172 { /* var362 = array_instance Array[Object] */
6173 var363 = 8;
6174 var364 = NEW_array__NativeArray(var363, &type_array__NativeArraykernel__Object);
6175 ((struct instance_array__NativeArray*)var364)->values[0] = (val*) var_outpath;
6176 ((struct instance_array__NativeArray*)var364)->values[1] = (val*) var331;
6177 ((struct instance_array__NativeArray*)var364)->values[2] = (val*) var340;
6178 ((struct instance_array__NativeArray*)var364)->values[3] = (val*) var342;
6179 ((struct instance_array__NativeArray*)var364)->values[4] = (val*) var_outpath;
6180 ((struct instance_array__NativeArray*)var364)->values[5] = (val*) var347;
6181 ((struct instance_array__NativeArray*)var364)->values[6] = (val*) var356;
6182 ((struct instance_array__NativeArray*)var364)->values[7] = (val*) var358;
6183 {
6184 ((void (*)(val*, val*, long))(var362->class->vft[COLOR_array__Array__with_native]))(var362, var364, var363) /* with_native on <var362:Array[Object]>*/;
6185 }
6186 }
6187 {
6188 var365 = ((val* (*)(val*))(var362->class->vft[COLOR_string__Object__to_s]))(var362) /* to_s on <var362:Array[Object]>*/;
6189 }
6190 {
6191 file__OFStream__write(var_makefile, var365); /* Direct call file#OFStream#write on <var_makefile:OFStream>*/
6192 }
6193 if (varonce366) {
6194 var367 = varonce366;
6195 } else {
6196 var368 = "clean:\n\11rm ";
6197 var369 = 11;
6198 var370 = string__NativeString__to_s_with_length(var368, var369);
6199 var367 = var370;
6200 varonce366 = var367;
6201 }
6202 if (varonce371) {
6203 var372 = varonce371;
6204 } else {
6205 var373 = " ";
6206 var374 = 1;
6207 var375 = string__NativeString__to_s_with_length(var373, var374);
6208 var372 = var375;
6209 varonce371 = var372;
6210 }
6211 {
6212 var376 = string__Collection__join(var_ofiles, var372);
6213 }
6214 if (varonce377) {
6215 var378 = varonce377;
6216 } else {
6217 var379 = " 2>/dev/null\n\n";
6218 var380 = 14;
6219 var381 = string__NativeString__to_s_with_length(var379, var380);
6220 var378 = var381;
6221 varonce377 = var378;
6222 }
6223 var382 = NEW_array__Array(&type_array__Arraykernel__Object);
6224 { /* var382 = array_instance Array[Object] */
6225 var383 = 3;
6226 var384 = NEW_array__NativeArray(var383, &type_array__NativeArraykernel__Object);
6227 ((struct instance_array__NativeArray*)var384)->values[0] = (val*) var367;
6228 ((struct instance_array__NativeArray*)var384)->values[1] = (val*) var376;
6229 ((struct instance_array__NativeArray*)var384)->values[2] = (val*) var378;
6230 {
6231 ((void (*)(val*, val*, long))(var382->class->vft[COLOR_array__Array__with_native]))(var382, var384, var383) /* with_native on <var382:Array[Object]>*/;
6232 }
6233 }
6234 {
6235 var385 = ((val* (*)(val*))(var382->class->vft[COLOR_string__Object__to_s]))(var382) /* to_s on <var382:Array[Object]>*/;
6236 }
6237 {
6238 file__OFStream__write(var_makefile, var385); /* Direct call file#OFStream#write on <var_makefile:OFStream>*/
6239 }
6240 {
6241 file__OFStream__close(var_makefile); /* Direct call file#OFStream#close on <var_makefile:OFStream>*/
6242 }
6243 {
6244 { /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
6245 var388 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
6246 if (unlikely(var388 == NULL)) {
6247 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6248 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
6249 show_backtrace(1);
6250 }
6251 var386 = var388;
6252 RET_LABEL387:(void)0;
6253 }
6254 }
6255 if (varonce389) {
6256 var390 = varonce389;
6257 } else {
6258 var391 = "Generated makefile: ";
6259 var392 = 20;
6260 var393 = string__NativeString__to_s_with_length(var391, var392);
6261 var390 = var393;
6262 varonce389 = var390;
6263 }
6264 var394 = NEW_array__Array(&type_array__Arraykernel__Object);
6265 { /* var394 = array_instance Array[Object] */
6266 var395 = 2;
6267 var396 = NEW_array__NativeArray(var395, &type_array__NativeArraykernel__Object);
6268 ((struct instance_array__NativeArray*)var396)->values[0] = (val*) var390;
6269 ((struct instance_array__NativeArray*)var396)->values[1] = (val*) var_makepath;
6270 {
6271 ((void (*)(val*, val*, long))(var394->class->vft[COLOR_array__Array__with_native]))(var394, var396, var395) /* with_native on <var394:Array[Object]>*/;
6272 }
6273 }
6274 {
6275 var397 = ((val* (*)(val*))(var394->class->vft[COLOR_string__Object__to_s]))(var394) /* to_s on <var394:Array[Object]>*/;
6276 }
6277 var398 = 2;
6278 {
6279 toolcontext__ToolContext__info(var386, var397, var398); /* Direct call toolcontext#ToolContext#info on <var386:ToolContext>*/
6280 }
6281 RET_LABEL:;
6282 }
6283 /* method abstract_compiler#MakefileToolchain#write_makefile for (self: Object, AbstractCompiler, String, Array[String]) */
6284 void VIRTUAL_abstract_compiler__MakefileToolchain__write_makefile(val* self, val* p0, val* p1, val* p2) {
6285 abstract_compiler__MakefileToolchain__write_makefile(self, p0, p1, p2); /* Direct call abstract_compiler#MakefileToolchain#write_makefile on <self:Object(MakefileToolchain)>*/
6286 RET_LABEL:;
6287 }
6288 /* method abstract_compiler#MakefileToolchain#compile_c_code for (self: MakefileToolchain, AbstractCompiler, String) */
6289 void abstract_compiler__MakefileToolchain__compile_c_code(val* self, val* p0, val* p1) {
6290 val* var_compiler /* var compiler: AbstractCompiler */;
6291 val* var_compile_dir /* var compile_dir: String */;
6292 val* var /* : MModule */;
6293 val* var2 /* : MModule */;
6294 val* var3 /* : String */;
6295 val* var_makename /* var makename: String */;
6296 val* var4 /* : ToolContext */;
6297 val* var6 /* : ToolContext */;
6298 val* var7 /* : OptionString */;
6299 val* var9 /* : OptionString */;
6300 val* var10 /* : nullable Object */;
6301 val* var12 /* : nullable Object */;
6302 val* var_makeflags /* var makeflags: nullable String */;
6303 val* var13 /* : null */;
6304 short int var14 /* : Bool */;
6305 short int var15 /* : Bool */;
6306 static val* varonce;
6307 val* var16 /* : String */;
6308 char* var17 /* : NativeString */;
6309 long var18 /* : Int */;
6310 val* var19 /* : FlatString */;
6311 val* var20 /* : ToolContext */;
6312 val* var22 /* : ToolContext */;
6313 static val* varonce23;
6314 val* var24 /* : String */;
6315 char* var25 /* : NativeString */;
6316 long var26 /* : Int */;
6317 val* var27 /* : FlatString */;
6318 static val* varonce28;
6319 val* var29 /* : String */;
6320 char* var30 /* : NativeString */;
6321 long var31 /* : Int */;
6322 val* var32 /* : FlatString */;
6323 static val* varonce33;
6324 val* var34 /* : String */;
6325 char* var35 /* : NativeString */;
6326 long var36 /* : Int */;
6327 val* var37 /* : FlatString */;
6328 val* var38 /* : Array[Object] */;
6329 long var39 /* : Int */;
6330 val* var40 /* : NativeArray[Object] */;
6331 val* var41 /* : String */;
6332 long var42 /* : Int */;
6333 val* var43 /* : ToolContext */;
6334 val* var45 /* : ToolContext */;
6335 long var46 /* : Int */;
6336 long var48 /* : Int */;
6337 long var49 /* : Int */;
6338 short int var50 /* : Bool */;
6339 short int var52 /* : Bool */;
6340 int cltype;
6341 int idtype;
6342 const char* var_class_name;
6343 short int var53 /* : Bool */;
6344 val* var54 /* : Sys */;
6345 val* var56 /* : Sys */;
6346 static val* varonce57;
6347 val* var58 /* : String */;
6348 char* var59 /* : NativeString */;
6349 long var60 /* : Int */;
6350 val* var61 /* : FlatString */;
6351 static val* varonce62;
6352 val* var63 /* : String */;
6353 char* var64 /* : NativeString */;
6354 long var65 /* : Int */;
6355 val* var66 /* : FlatString */;
6356 static val* varonce67;
6357 val* var68 /* : String */;
6358 char* var69 /* : NativeString */;
6359 long var70 /* : Int */;
6360 val* var71 /* : FlatString */;
6361 static val* varonce72;
6362 val* var73 /* : String */;
6363 char* var74 /* : NativeString */;
6364 long var75 /* : Int */;
6365 val* var76 /* : FlatString */;
6366 val* var77 /* : Array[Object] */;
6367 long var78 /* : Int */;
6368 val* var79 /* : NativeArray[Object] */;
6369 val* var80 /* : String */;
6370 long var81 /* : Int */;
6371 val* var82 /* : nullable Object */;
6372 val* var_res /* var res: nullable Object */;
6373 val* var83 /* : Sys */;
6374 val* var85 /* : Sys */;
6375 static val* varonce86;
6376 val* var87 /* : String */;
6377 char* var88 /* : NativeString */;
6378 long var89 /* : Int */;
6379 val* var90 /* : FlatString */;
6380 static val* varonce91;
6381 val* var92 /* : String */;
6382 char* var93 /* : NativeString */;
6383 long var94 /* : Int */;
6384 val* var95 /* : FlatString */;
6385 static val* varonce96;
6386 val* var97 /* : String */;
6387 char* var98 /* : NativeString */;
6388 long var99 /* : Int */;
6389 val* var100 /* : FlatString */;
6390 static val* varonce101;
6391 val* var102 /* : String */;
6392 char* var103 /* : NativeString */;
6393 long var104 /* : Int */;
6394 val* var105 /* : FlatString */;
6395 val* var106 /* : Array[Object] */;
6396 long var107 /* : Int */;
6397 val* var108 /* : NativeArray[Object] */;
6398 val* var109 /* : String */;
6399 long var110 /* : Int */;
6400 val* var111 /* : nullable Object */;
6401 long var112 /* : Int */;
6402 short int var113 /* : Bool */;
6403 short int var114 /* : Bool */;
6404 short int var116 /* : Bool */;
6405 long var117 /* : Int */;
6406 short int var118 /* : Bool */;
6407 val* var119 /* : ToolContext */;
6408 val* var121 /* : ToolContext */;
6409 val* var122 /* : null */;
6410 static val* varonce123;
6411 val* var124 /* : String */;
6412 char* var125 /* : NativeString */;
6413 long var126 /* : Int */;
6414 val* var127 /* : FlatString */;
6415 static val* varonce128;
6416 val* var129 /* : String */;
6417 char* var130 /* : NativeString */;
6418 long var131 /* : Int */;
6419 val* var132 /* : FlatString */;
6420 val* var133 /* : Array[Object] */;
6421 long var134 /* : Int */;
6422 val* var135 /* : NativeArray[Object] */;
6423 val* var136 /* : String */;
6424 var_compiler = p0;
6425 var_compile_dir = p1;
6426 {
6427 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (var_compiler) on <var_compiler:AbstractCompiler> */
6428 var2 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var_compiler:AbstractCompiler> */
6429 if (unlikely(var2 == NULL)) {
6430 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
6431 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 436);
6432 show_backtrace(1);
6433 }
6434 var = var2;
6435 RET_LABEL1:(void)0;
6436 }
6437 }
6438 {
6439 var3 = abstract_compiler__MakefileToolchain__makefile_name(self, var);
6440 }
6441 var_makename = var3;
6442 {
6443 { /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
6444 var6 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
6445 if (unlikely(var6 == NULL)) {
6446 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6447 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
6448 show_backtrace(1);
6449 }
6450 var4 = var6;
6451 RET_LABEL5:(void)0;
6452 }
6453 }
6454 {
6455 { /* Inline abstract_compiler#ToolContext#opt_make_flags (var4) on <var4:ToolContext> */
6456 var9 = var4->attrs[COLOR_abstract_compiler__ToolContext___opt_make_flags].val; /* _opt_make_flags on <var4:ToolContext> */
6457 if (unlikely(var9 == NULL)) {
6458 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_make_flags");
6459 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 38);
6460 show_backtrace(1);
6461 }
6462 var7 = var9;
6463 RET_LABEL8:(void)0;
6464 }
6465 }
6466 {
6467 { /* Inline opts#Option#value (var7) on <var7:OptionString> */
6468 var12 = var7->attrs[COLOR_opts__Option___value].val; /* _value on <var7:OptionString> */
6469 var10 = var12;
6470 RET_LABEL11:(void)0;
6471 }
6472 }
6473 var_makeflags = var10;
6474 var13 = NULL;
6475 if (var_makeflags == NULL) {
6476 var14 = 1; /* is null */
6477 } else {
6478 var14 = 0; /* arg is null but recv is not */
6479 }
6480 if (0) {
6481 var15 = string__FlatString___61d_61d(var_makeflags, var13);
6482 var14 = var15;
6483 }
6484 if (var14){
6485 if (varonce) {
6486 var16 = varonce;
6487 } else {
6488 var17 = "";
6489 var18 = 0;
6490 var19 = string__NativeString__to_s_with_length(var17, var18);
6491 var16 = var19;
6492 varonce = var16;
6493 }
6494 var_makeflags = var16;
6495 } else {
6496 }
6497 {
6498 { /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
6499 var22 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
6500 if (unlikely(var22 == NULL)) {
6501 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6502 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
6503 show_backtrace(1);
6504 }
6505 var20 = var22;
6506 RET_LABEL21:(void)0;
6507 }
6508 }
6509 if (varonce23) {
6510 var24 = varonce23;
6511 } else {
6512 var25 = "make -B -C ";
6513 var26 = 11;
6514 var27 = string__NativeString__to_s_with_length(var25, var26);
6515 var24 = var27;
6516 varonce23 = var24;
6517 }
6518 if (varonce28) {
6519 var29 = varonce28;
6520 } else {
6521 var30 = " -f ";
6522 var31 = 4;
6523 var32 = string__NativeString__to_s_with_length(var30, var31);
6524 var29 = var32;
6525 varonce28 = var29;
6526 }
6527 if (varonce33) {
6528 var34 = varonce33;
6529 } else {
6530 var35 = " -j 4 ";
6531 var36 = 6;
6532 var37 = string__NativeString__to_s_with_length(var35, var36);
6533 var34 = var37;
6534 varonce33 = var34;
6535 }
6536 var38 = NEW_array__Array(&type_array__Arraykernel__Object);
6537 { /* var38 = array_instance Array[Object] */
6538 var39 = 6;
6539 var40 = NEW_array__NativeArray(var39, &type_array__NativeArraykernel__Object);
6540 ((struct instance_array__NativeArray*)var40)->values[0] = (val*) var24;
6541 ((struct instance_array__NativeArray*)var40)->values[1] = (val*) var_compile_dir;
6542 ((struct instance_array__NativeArray*)var40)->values[2] = (val*) var29;
6543 ((struct instance_array__NativeArray*)var40)->values[3] = (val*) var_makename;
6544 ((struct instance_array__NativeArray*)var40)->values[4] = (val*) var34;
6545 ((struct instance_array__NativeArray*)var40)->values[5] = (val*) var_makeflags;
6546 {
6547 ((void (*)(val*, val*, long))(var38->class->vft[COLOR_array__Array__with_native]))(var38, var40, var39) /* with_native on <var38:Array[Object]>*/;
6548 }
6549 }
6550 {
6551 var41 = ((val* (*)(val*))(var38->class->vft[COLOR_string__Object__to_s]))(var38) /* to_s on <var38:Array[Object]>*/;
6552 }
6553 var42 = 2;
6554 {
6555 toolcontext__ToolContext__info(var20, var41, var42); /* Direct call toolcontext#ToolContext#info on <var20:ToolContext>*/
6556 }
6557 {
6558 { /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
6559 var45 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
6560 if (unlikely(var45 == NULL)) {
6561 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6562 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
6563 show_backtrace(1);
6564 }
6565 var43 = var45;
6566 RET_LABEL44:(void)0;
6567 }
6568 }
6569 {
6570 { /* Inline toolcontext#ToolContext#verbose_level (var43) on <var43:ToolContext> */
6571 var48 = var43->attrs[COLOR_toolcontext__ToolContext___verbose_level].l; /* _verbose_level on <var43:ToolContext> */
6572 var46 = var48;
6573 RET_LABEL47:(void)0;
6574 }
6575 }
6576 var49 = 3;
6577 {
6578 { /* Inline kernel#Int#>= (var46,var49) on <var46:Int> */
6579 /* Covariant cast for argument 0 (i) <var49:Int> isa OTHER */
6580 /* <var49:Int> isa OTHER */
6581 var52 = 1; /* easy <var49:Int> isa OTHER*/
6582 if (unlikely(!var52)) {
6583 var_class_name = type_kernel__Int.name;
6584 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
6585 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 326);
6586 show_backtrace(1);
6587 }
6588 var53 = var46 >= var49;
6589 var50 = var53;
6590 goto RET_LABEL51;
6591 RET_LABEL51:(void)0;
6592 }
6593 }
6594 if (var50){
6595 {
6596 { /* Inline kernel#Object#sys (self) on <self:MakefileToolchain> */
6597 var56 = glob_sys;
6598 var54 = var56;
6599 goto RET_LABEL55;
6600 RET_LABEL55:(void)0;
6601 }
6602 }
6603 if (varonce57) {
6604 var58 = varonce57;
6605 } else {
6606 var59 = "make -B -C ";
6607 var60 = 11;
6608 var61 = string__NativeString__to_s_with_length(var59, var60);
6609 var58 = var61;
6610 varonce57 = var58;
6611 }
6612 if (varonce62) {
6613 var63 = varonce62;
6614 } else {
6615 var64 = " -f ";
6616 var65 = 4;
6617 var66 = string__NativeString__to_s_with_length(var64, var65);
6618 var63 = var66;
6619 varonce62 = var63;
6620 }
6621 if (varonce67) {
6622 var68 = varonce67;
6623 } else {
6624 var69 = " -j 4 ";
6625 var70 = 6;
6626 var71 = string__NativeString__to_s_with_length(var69, var70);
6627 var68 = var71;
6628 varonce67 = var68;
6629 }
6630 if (varonce72) {
6631 var73 = varonce72;
6632 } else {
6633 var74 = " 2>&1";
6634 var75 = 5;
6635 var76 = string__NativeString__to_s_with_length(var74, var75);
6636 var73 = var76;
6637 varonce72 = var73;
6638 }
6639 var77 = NEW_array__Array(&type_array__Arraykernel__Object);
6640 { /* var77 = array_instance Array[Object] */
6641 var78 = 7;
6642 var79 = NEW_array__NativeArray(var78, &type_array__NativeArraykernel__Object);
6643 ((struct instance_array__NativeArray*)var79)->values[0] = (val*) var58;
6644 ((struct instance_array__NativeArray*)var79)->values[1] = (val*) var_compile_dir;
6645 ((struct instance_array__NativeArray*)var79)->values[2] = (val*) var63;
6646 ((struct instance_array__NativeArray*)var79)->values[3] = (val*) var_makename;
6647 ((struct instance_array__NativeArray*)var79)->values[4] = (val*) var68;
6648 ((struct instance_array__NativeArray*)var79)->values[5] = (val*) var_makeflags;
6649 ((struct instance_array__NativeArray*)var79)->values[6] = (val*) var73;
6650 {
6651 ((void (*)(val*, val*, long))(var77->class->vft[COLOR_array__Array__with_native]))(var77, var79, var78) /* with_native on <var77:Array[Object]>*/;
6652 }
6653 }
6654 {
6655 var80 = ((val* (*)(val*))(var77->class->vft[COLOR_string__Object__to_s]))(var77) /* to_s on <var77:Array[Object]>*/;
6656 }
6657 {
6658 var81 = exec__Sys__system(var54, var80);
6659 }
6660 var82 = BOX_kernel__Int(var81); /* autobox from Int to nullable Object */
6661 var_res = var82;
6662 } else {
6663 {
6664 { /* Inline kernel#Object#sys (self) on <self:MakefileToolchain> */
6665 var85 = glob_sys;
6666 var83 = var85;
6667 goto RET_LABEL84;
6668 RET_LABEL84:(void)0;
6669 }
6670 }
6671 if (varonce86) {
6672 var87 = varonce86;
6673 } else {
6674 var88 = "make -B -C ";
6675 var89 = 11;
6676 var90 = string__NativeString__to_s_with_length(var88, var89);
6677 var87 = var90;
6678 varonce86 = var87;
6679 }
6680 if (varonce91) {
6681 var92 = varonce91;
6682 } else {
6683 var93 = " -f ";
6684 var94 = 4;
6685 var95 = string__NativeString__to_s_with_length(var93, var94);
6686 var92 = var95;
6687 varonce91 = var92;
6688 }
6689 if (varonce96) {
6690 var97 = varonce96;
6691 } else {
6692 var98 = " -j 4 ";
6693 var99 = 6;
6694 var100 = string__NativeString__to_s_with_length(var98, var99);
6695 var97 = var100;
6696 varonce96 = var97;
6697 }
6698 if (varonce101) {
6699 var102 = varonce101;
6700 } else {
6701 var103 = " 2>&1 >/dev/null";
6702 var104 = 16;
6703 var105 = string__NativeString__to_s_with_length(var103, var104);
6704 var102 = var105;
6705 varonce101 = var102;
6706 }
6707 var106 = NEW_array__Array(&type_array__Arraykernel__Object);
6708 { /* var106 = array_instance Array[Object] */
6709 var107 = 7;
6710 var108 = NEW_array__NativeArray(var107, &type_array__NativeArraykernel__Object);
6711 ((struct instance_array__NativeArray*)var108)->values[0] = (val*) var87;
6712 ((struct instance_array__NativeArray*)var108)->values[1] = (val*) var_compile_dir;
6713 ((struct instance_array__NativeArray*)var108)->values[2] = (val*) var92;
6714 ((struct instance_array__NativeArray*)var108)->values[3] = (val*) var_makename;
6715 ((struct instance_array__NativeArray*)var108)->values[4] = (val*) var97;
6716 ((struct instance_array__NativeArray*)var108)->values[5] = (val*) var_makeflags;
6717 ((struct instance_array__NativeArray*)var108)->values[6] = (val*) var102;
6718 {
6719 ((void (*)(val*, val*, long))(var106->class->vft[COLOR_array__Array__with_native]))(var106, var108, var107) /* with_native on <var106:Array[Object]>*/;
6720 }
6721 }
6722 {
6723 var109 = ((val* (*)(val*))(var106->class->vft[COLOR_string__Object__to_s]))(var106) /* to_s on <var106:Array[Object]>*/;
6724 }
6725 {
6726 var110 = exec__Sys__system(var83, var109);
6727 }
6728 var111 = BOX_kernel__Int(var110); /* autobox from Int to nullable Object */
6729 var_res = var111;
6730 }
6731 var112 = 0;
6732 {
6733 { /* Inline kernel#Int#!= (var_res,var112) on <var_res:nullable Object(Int)> */
6734 var116 = (var_res != NULL) && (var_res->class == &class_kernel__Int);
6735 if (var116) {
6736 var117 = ((struct instance_kernel__Int*)var_res)->value; /* autounbox from nullable Object to Int */;
6737 var116 = (var117 == var112);
6738 }
6739 var118 = !var116;
6740 var114 = var118;
6741 goto RET_LABEL115;
6742 RET_LABEL115:(void)0;
6743 }
6744 var113 = var114;
6745 }
6746 if (var113){
6747 {
6748 { /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
6749 var121 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
6750 if (unlikely(var121 == NULL)) {
6751 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6752 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 126);
6753 show_backtrace(1);
6754 }
6755 var119 = var121;
6756 RET_LABEL120:(void)0;
6757 }
6758 }
6759 var122 = NULL;
6760 if (varonce123) {
6761 var124 = varonce123;
6762 } else {
6763 var125 = "make failed! Error code: ";
6764 var126 = 25;
6765 var127 = string__NativeString__to_s_with_length(var125, var126);
6766 var124 = var127;
6767 varonce123 = var124;
6768 }
6769 if (varonce128) {
6770 var129 = varonce128;
6771 } else {
6772 var130 = ".";
6773 var131 = 1;
6774 var132 = string__NativeString__to_s_with_length(var130, var131);
6775 var129 = var132;
6776 varonce128 = var129;
6777 }
6778 var133 = NEW_array__Array(&type_array__Arraykernel__Object);
6779 { /* var133 = array_instance Array[Object] */
6780 var134 = 3;
6781 var135 = NEW_array__NativeArray(var134, &type_array__NativeArraykernel__Object);
6782 ((struct instance_array__NativeArray*)var135)->values[0] = (val*) var124;
6783 ((struct instance_array__NativeArray*)var135)->values[1] = (val*) var_res;
6784 ((struct instance_array__NativeArray*)var135)->values[2] = (val*) var129;
6785 {
6786 ((void (*)(val*, val*, long))(var133->class->vft[COLOR_array__Array__with_native]))(var133, var135, var134) /* with_native on <var133:Array[Object]>*/;
6787 }
6788 }
6789 {
6790 var136 = ((val* (*)(val*))(var133->class->vft[COLOR_string__Object__to_s]))(var133) /* to_s on <var133:Array[Object]>*/;
6791 }
6792 {
6793 toolcontext__ToolContext__error(var119, var122, var136); /* Direct call toolcontext#ToolContext#error on <var119:ToolContext>*/
6794 }
6795 } else {
6796 }
6797 RET_LABEL:;
6798 }
6799 /* method abstract_compiler#MakefileToolchain#compile_c_code for (self: Object, AbstractCompiler, String) */
6800 void VIRTUAL_abstract_compiler__MakefileToolchain__compile_c_code(val* self, val* p0, val* p1) {
6801 abstract_compiler__MakefileToolchain__compile_c_code(self, p0, p1); /* Direct call abstract_compiler#MakefileToolchain#compile_c_code on <self:Object(MakefileToolchain)>*/
6802 RET_LABEL:;
6803 }
6804 /* method abstract_compiler#AbstractCompiler#names for (self: AbstractCompiler): HashMap[String, String] */
6805 val* abstract_compiler__AbstractCompiler__names(val* self) {
6806 val* var /* : HashMap[String, String] */;
6807 val* var1 /* : HashMap[String, String] */;
6808 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___names].val; /* _names on <self:AbstractCompiler> */
6809 if (unlikely(var1 == NULL)) {
6810 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
6811 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 433);
6812 show_backtrace(1);
6813 }
6814 var = var1;
6815 RET_LABEL:;
6816 return var;
6817 }
6818 /* method abstract_compiler#AbstractCompiler#names for (self: Object): HashMap[String, String] */
6819 val* VIRTUAL_abstract_compiler__AbstractCompiler__names(val* self) {
6820 val* var /* : HashMap[String, String] */;
6821 val* var1 /* : HashMap[String, String] */;
6822 val* var3 /* : HashMap[String, String] */;
6823 { /* Inline abstract_compiler#AbstractCompiler#names (self) on <self:Object(AbstractCompiler)> */
6824 var3 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___names].val; /* _names on <self:Object(AbstractCompiler)> */
6825 if (unlikely(var3 == NULL)) {
6826 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
6827 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 433);
6828 show_backtrace(1);
6829 }
6830 var1 = var3;
6831 RET_LABEL2:(void)0;
6832 }
6833 var = var1;
6834 RET_LABEL:;
6835 return var;
6836 }
6837 /* method abstract_compiler#AbstractCompiler#mainmodule for (self: AbstractCompiler): MModule */
6838 val* abstract_compiler__AbstractCompiler__mainmodule(val* self) {
6839 val* var /* : MModule */;
6840 val* var1 /* : MModule */;
6841 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:AbstractCompiler> */
6842 if (unlikely(var1 == NULL)) {
6843 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
6844 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 436);
6845 show_backtrace(1);
6846 }
6847 var = var1;
6848 RET_LABEL:;
6849 return var;
6850 }
6851 /* method abstract_compiler#AbstractCompiler#mainmodule for (self: Object): MModule */
6852 val* VIRTUAL_abstract_compiler__AbstractCompiler__mainmodule(val* self) {
6853 val* var /* : MModule */;
6854 val* var1 /* : MModule */;
6855 val* var3 /* : MModule */;
6856 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:Object(AbstractCompiler)> */
6857 var3 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:Object(AbstractCompiler)> */
6858 if (unlikely(var3 == NULL)) {
6859 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
6860 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 436);
6861 show_backtrace(1);
6862 }
6863 var1 = var3;
6864 RET_LABEL2:(void)0;
6865 }
6866 var = var1;
6867 RET_LABEL:;
6868 return var;
6869 }
6870 /* method abstract_compiler#AbstractCompiler#mainmodule= for (self: AbstractCompiler, MModule) */
6871 void abstract_compiler__AbstractCompiler__mainmodule_61d(val* self, val* p0) {
6872 self->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val = p0; /* _mainmodule on <self:AbstractCompiler> */
6873 RET_LABEL:;
6874 }
6875 /* method abstract_compiler#AbstractCompiler#mainmodule= for (self: Object, MModule) */
6876 void VIRTUAL_abstract_compiler__AbstractCompiler__mainmodule_61d(val* self, val* p0) {
6877 { /* Inline abstract_compiler#AbstractCompiler#mainmodule= (self,p0) on <self:Object(AbstractCompiler)> */
6878 self->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val = p0; /* _mainmodule on <self:Object(AbstractCompiler)> */
6879 RET_LABEL1:(void)0;
6880 }
6881 RET_LABEL:;
6882 }
6883 /* method abstract_compiler#AbstractCompiler#realmainmodule for (self: AbstractCompiler): MModule */
6884 val* abstract_compiler__AbstractCompiler__realmainmodule(val* self) {
6885 val* var /* : MModule */;
6886 val* var1 /* : MModule */;
6887 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___realmainmodule].val; /* _realmainmodule on <self:AbstractCompiler> */
6888 if (unlikely(var1 == NULL)) {
6889 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _realmainmodule");
6890 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 440);
6891 show_backtrace(1);
6892 }
6893 var = var1;
6894 RET_LABEL:;
6895 return var;
6896 }
6897 /* method abstract_compiler#AbstractCompiler#realmainmodule for (self: Object): MModule */
6898 val* VIRTUAL_abstract_compiler__AbstractCompiler__realmainmodule(val* self) {
6899 val* var /* : MModule */;
6900 val* var1 /* : MModule */;
6901 val* var3 /* : MModule */;
6902 { /* Inline abstract_compiler#AbstractCompiler#realmainmodule (self) on <self:Object(AbstractCompiler)> */
6903 var3 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___realmainmodule].val; /* _realmainmodule on <self:Object(AbstractCompiler)> */
6904 if (unlikely(var3 == NULL)) {
6905 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _realmainmodule");
6906 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 440);
6907 show_backtrace(1);
6908 }
6909 var1 = var3;
6910 RET_LABEL2:(void)0;
6911 }
6912 var = var1;
6913 RET_LABEL:;
6914 return var;
6915 }
6916 /* method abstract_compiler#AbstractCompiler#realmainmodule= for (self: AbstractCompiler, MModule) */
6917 void abstract_compiler__AbstractCompiler__realmainmodule_61d(val* self, val* p0) {
6918 self->attrs[COLOR_abstract_compiler__AbstractCompiler___realmainmodule].val = p0; /* _realmainmodule on <self:AbstractCompiler> */
6919 RET_LABEL:;
6920 }
6921 /* method abstract_compiler#AbstractCompiler#realmainmodule= for (self: Object, MModule) */
6922 void VIRTUAL_abstract_compiler__AbstractCompiler__realmainmodule_61d(val* self, val* p0) {
6923 { /* Inline abstract_compiler#AbstractCompiler#realmainmodule= (self,p0) on <self:Object(AbstractCompiler)> */
6924 self->attrs[COLOR_abstract_compiler__AbstractCompiler___realmainmodule].val = p0; /* _realmainmodule on <self:Object(AbstractCompiler)> */
6925 RET_LABEL1:(void)0;
6926 }
6927 RET_LABEL:;
6928 }
6929 /* method abstract_compiler#AbstractCompiler#modelbuilder for (self: AbstractCompiler): ModelBuilder */
6930 val* abstract_compiler__AbstractCompiler__modelbuilder(val* self) {
6931 val* var /* : ModelBuilder */;
6932 val* var1 /* : ModelBuilder */;
6933 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:AbstractCompiler> */
6934 if (unlikely(var1 == NULL)) {
6935 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6936 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 443);
6937 show_backtrace(1);
6938 }
6939 var = var1;
6940 RET_LABEL:;
6941 return var;
6942 }
6943 /* method abstract_compiler#AbstractCompiler#modelbuilder for (self: Object): ModelBuilder */
6944 val* VIRTUAL_abstract_compiler__AbstractCompiler__modelbuilder(val* self) {
6945 val* var /* : ModelBuilder */;
6946 val* var1 /* : ModelBuilder */;
6947 val* var3 /* : ModelBuilder */;
6948 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:Object(AbstractCompiler)> */
6949 var3 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:Object(AbstractCompiler)> */
6950 if (unlikely(var3 == NULL)) {
6951 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6952 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 443);
6953 show_backtrace(1);
6954 }
6955 var1 = var3;
6956 RET_LABEL2:(void)0;
6957 }
6958 var = var1;
6959 RET_LABEL:;
6960 return var;
6961 }
6962 /* method abstract_compiler#AbstractCompiler#modelbuilder= for (self: AbstractCompiler, ModelBuilder) */
6963 void abstract_compiler__AbstractCompiler__modelbuilder_61d(val* self, val* p0) {
6964 self->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val = p0; /* _modelbuilder on <self:AbstractCompiler> */
6965 RET_LABEL:;
6966 }
6967 /* method abstract_compiler#AbstractCompiler#modelbuilder= for (self: Object, ModelBuilder) */
6968 void VIRTUAL_abstract_compiler__AbstractCompiler__modelbuilder_61d(val* self, val* p0) {
6969 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder= (self,p0) on <self:Object(AbstractCompiler)> */
6970 self->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val = p0; /* _modelbuilder on <self:Object(AbstractCompiler)> */
6971 RET_LABEL1:(void)0;
6972 }
6973 RET_LABEL:;
6974 }
6975 /* method abstract_compiler#AbstractCompiler#init for (self: AbstractCompiler, MModule, ModelBuilder) */
6976 void abstract_compiler__AbstractCompiler__init(val* self, val* p0, val* p1) {
6977 val* var_mainmodule /* var mainmodule: MModule */;
6978 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
6979 var_mainmodule = p0;
6980 var_modelbuilder = p1;
6981 {
6982 { /* Inline abstract_compiler#AbstractCompiler#mainmodule= (self,var_mainmodule) on <self:AbstractCompiler> */
6983 self->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val = var_mainmodule; /* _mainmodule on <self:AbstractCompiler> */
6984 RET_LABEL1:(void)0;
6985 }
6986 }
6987 {
6988 { /* Inline abstract_compiler#AbstractCompiler#realmainmodule= (self,var_mainmodule) on <self:AbstractCompiler> */
6989 self->attrs[COLOR_abstract_compiler__AbstractCompiler___realmainmodule].val = var_mainmodule; /* _realmainmodule on <self:AbstractCompiler> */
6990 RET_LABEL2:(void)0;
6991 }
6992 }
6993 {
6994 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder= (self,var_modelbuilder) on <self:AbstractCompiler> */
6995 self->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val = var_modelbuilder; /* _modelbuilder on <self:AbstractCompiler> */
6996 RET_LABEL3:(void)0;
6997 }
6998 }
6999 RET_LABEL:;
7000 }
7001 /* method abstract_compiler#AbstractCompiler#init for (self: Object, MModule, ModelBuilder) */
7002 void VIRTUAL_abstract_compiler__AbstractCompiler__init(val* self, val* p0, val* p1) {
7003 abstract_compiler__AbstractCompiler__init(self, p0, p1); /* Direct call abstract_compiler#AbstractCompiler#init on <self:Object(AbstractCompiler)>*/
7004 RET_LABEL:;
7005 }
7006 /* method abstract_compiler#AbstractCompiler#new_file for (self: AbstractCompiler, String): CodeFile */
7007 val* abstract_compiler__AbstractCompiler__new_file(val* self, val* p0) {
7008 val* var /* : CodeFile */;
7009 val* var_name /* var name: String */;
7010 val* var1 /* : CodeFile */;
7011 val* var_f /* var f: CodeFile */;
7012 val* var3 /* : List[CodeFile] */;
7013 val* var5 /* : List[CodeFile] */;
7014 var_name = p0;
7015 var1 = NEW_abstract_compiler__CodeFile(&type_abstract_compiler__CodeFile);
7016 {
7017 { /* Inline abstract_compiler#CodeFile#init (var1,var_name) on <var1:CodeFile> */
7018 var1->attrs[COLOR_abstract_compiler__CodeFile___name].val = var_name; /* _name on <var1:CodeFile> */
7019 RET_LABEL2:(void)0;
7020 }
7021 }
7022 var_f = var1;
7023 {
7024 { /* Inline abstract_compiler#AbstractCompiler#files (self) on <self:AbstractCompiler> */
7025 var5 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___files].val; /* _files on <self:AbstractCompiler> */
7026 if (unlikely(var5 == NULL)) {
7027 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files");
7028 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 465);
7029 show_backtrace(1);
7030 }
7031 var3 = var5;
7032 RET_LABEL4:(void)0;
7033 }
7034 }
7035 {
7036 abstract_collection__Sequence__add(var3, var_f); /* Direct call abstract_collection#Sequence#add on <var3:List[CodeFile]>*/
7037 }
7038 var = var_f;
7039 goto RET_LABEL;
7040 RET_LABEL:;
7041 return var;
7042 }
7043 /* method abstract_compiler#AbstractCompiler#new_file for (self: Object, String): CodeFile */
7044 val* VIRTUAL_abstract_compiler__AbstractCompiler__new_file(val* self, val* p0) {
7045 val* var /* : CodeFile */;
7046 val* var1 /* : CodeFile */;
7047 var1 = abstract_compiler__AbstractCompiler__new_file(self, p0);
7048 var = var1;
7049 RET_LABEL:;
7050 return var;
7051 }
7052 /* method abstract_compiler#AbstractCompiler#files for (self: AbstractCompiler): List[CodeFile] */
7053 val* abstract_compiler__AbstractCompiler__files(val* self) {
7054 val* var /* : List[CodeFile] */;
7055 val* var1 /* : List[CodeFile] */;
7056 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___files].val; /* _files on <self:AbstractCompiler> */
7057 if (unlikely(var1 == NULL)) {
7058 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files");
7059 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 465);
7060 show_backtrace(1);
7061 }
7062 var = var1;
7063 RET_LABEL:;
7064 return var;
7065 }
7066 /* method abstract_compiler#AbstractCompiler#files for (self: Object): List[CodeFile] */
7067 val* VIRTUAL_abstract_compiler__AbstractCompiler__files(val* self) {
7068 val* var /* : List[CodeFile] */;
7069 val* var1 /* : List[CodeFile] */;
7070 val* var3 /* : List[CodeFile] */;
7071 { /* Inline abstract_compiler#AbstractCompiler#files (self) on <self:Object(AbstractCompiler)> */
7072 var3 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___files].val; /* _files on <self:Object(AbstractCompiler)> */
7073 if (unlikely(var3 == NULL)) {
7074 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files");
7075 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 465);
7076 show_backtrace(1);
7077 }
7078 var1 = var3;
7079 RET_LABEL2:(void)0;
7080 }
7081 var = var1;
7082 RET_LABEL:;
7083 return var;
7084 }
7085 /* method abstract_compiler#AbstractCompiler#header for (self: AbstractCompiler): CodeWriter */
7086 val* abstract_compiler__AbstractCompiler__header(val* self) {
7087 val* var /* : CodeWriter */;
7088 val* var1 /* : CodeWriter */;
7089 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
7090 if (unlikely(var1 == NULL)) {
7091 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
7092 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
7093 show_backtrace(1);
7094 }
7095 var = var1;
7096 RET_LABEL:;
7097 return var;
7098 }
7099 /* method abstract_compiler#AbstractCompiler#header for (self: Object): CodeWriter */
7100 val* VIRTUAL_abstract_compiler__AbstractCompiler__header(val* self) {
7101 val* var /* : CodeWriter */;
7102 val* var1 /* : CodeWriter */;
7103 val* var3 /* : CodeWriter */;
7104 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:Object(AbstractCompiler)> */
7105 var3 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:Object(AbstractCompiler)> */
7106 if (unlikely(var3 == NULL)) {
7107 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
7108 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
7109 show_backtrace(1);
7110 }
7111 var1 = var3;
7112 RET_LABEL2:(void)0;
7113 }
7114 var = var1;
7115 RET_LABEL:;
7116 return var;
7117 }
7118 /* method abstract_compiler#AbstractCompiler#header= for (self: AbstractCompiler, CodeWriter) */
7119 void abstract_compiler__AbstractCompiler__header_61d(val* self, val* p0) {
7120 self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val = p0; /* _header on <self:AbstractCompiler> */
7121 RET_LABEL:;
7122 }
7123 /* method abstract_compiler#AbstractCompiler#header= for (self: Object, CodeWriter) */
7124 void VIRTUAL_abstract_compiler__AbstractCompiler__header_61d(val* self, val* p0) {
7125 { /* Inline abstract_compiler#AbstractCompiler#header= (self,p0) on <self:Object(AbstractCompiler)> */
7126 self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val = p0; /* _header on <self:Object(AbstractCompiler)> */
7127 RET_LABEL1:(void)0;
7128 }
7129 RET_LABEL:;
7130 }
7131 /* method abstract_compiler#AbstractCompiler#provide_declaration for (self: AbstractCompiler, String, String) */
7132 void abstract_compiler__AbstractCompiler__provide_declaration(val* self, val* p0, val* p1) {
7133 val* var_key /* var key: String */;
7134 val* var_s /* var s: String */;
7135 val* var /* : HashMap[String, String] */;
7136 val* var2 /* : HashMap[String, String] */;
7137 short int var3 /* : Bool */;
7138 val* var4 /* : HashMap[String, String] */;
7139 val* var6 /* : HashMap[String, String] */;
7140 val* var7 /* : nullable Object */;
7141 short int var8 /* : Bool */;
7142 short int var9 /* : Bool */;
7143 val* var10 /* : HashMap[String, String] */;
7144 val* var12 /* : HashMap[String, String] */;
7145 var_key = p0;
7146 var_s = p1;
7147 {
7148 { /* Inline abstract_compiler#AbstractCompiler#provided_declarations (self) on <self:AbstractCompiler> */
7149 var2 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___provided_declarations].val; /* _provided_declarations on <self:AbstractCompiler> */
7150 if (unlikely(var2 == NULL)) {
7151 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _provided_declarations");
7152 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 484);
7153 show_backtrace(1);
7154 }
7155 var = var2;
7156 RET_LABEL1:(void)0;
7157 }
7158 }
7159 {
7160 var3 = abstract_collection__MapRead__has_key(var, var_key);
7161 }
7162 if (var3){
7163 {
7164 { /* Inline abstract_compiler#AbstractCompiler#provided_declarations (self) on <self:AbstractCompiler> */
7165 var6 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___provided_declarations].val; /* _provided_declarations on <self:AbstractCompiler> */
7166 if (unlikely(var6 == NULL)) {
7167 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _provided_declarations");
7168 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 484);
7169 show_backtrace(1);
7170 }
7171 var4 = var6;
7172 RET_LABEL5:(void)0;
7173 }
7174 }
7175 {
7176 var7 = hash_collection__HashMap___91d_93d(var4, var_key);
7177 }
7178 {
7179 var9 = string__FlatString___61d_61d(var7, var_s);
7180 var8 = var9;
7181 }
7182 if (unlikely(!var8)) {
7183 PRINT_ERROR("Runtime error: %s", "Assert failed");
7184 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 479);
7185 show_backtrace(1);
7186 }
7187 } else {
7188 }
7189 {
7190 { /* Inline abstract_compiler#AbstractCompiler#provided_declarations (self) on <self:AbstractCompiler> */
7191 var12 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___provided_declarations].val; /* _provided_declarations on <self:AbstractCompiler> */
7192 if (unlikely(var12 == NULL)) {
7193 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _provided_declarations");
7194 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 484);
7195 show_backtrace(1);
7196 }
7197 var10 = var12;
7198 RET_LABEL11:(void)0;
7199 }
7200 }
7201 {
7202 hash_collection__HashMap___91d_93d_61d(var10, var_key, var_s); /* Direct call hash_collection#HashMap#[]= on <var10:HashMap[String, String]>*/
7203 }
7204 RET_LABEL:;
7205 }
7206 /* method abstract_compiler#AbstractCompiler#provide_declaration for (self: Object, String, String) */
7207 void VIRTUAL_abstract_compiler__AbstractCompiler__provide_declaration(val* self, val* p0, val* p1) {
7208 abstract_compiler__AbstractCompiler__provide_declaration(self, p0, p1); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:Object(AbstractCompiler)>*/
7209 RET_LABEL:;
7210 }
7211 /* method abstract_compiler#AbstractCompiler#provided_declarations for (self: AbstractCompiler): HashMap[String, String] */
7212 val* abstract_compiler__AbstractCompiler__provided_declarations(val* self) {
7213 val* var /* : HashMap[String, String] */;
7214 val* var1 /* : HashMap[String, String] */;
7215 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___provided_declarations].val; /* _provided_declarations on <self:AbstractCompiler> */
7216 if (unlikely(var1 == NULL)) {
7217 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _provided_declarations");
7218 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 484);
7219 show_backtrace(1);
7220 }
7221 var = var1;
7222 RET_LABEL:;
7223 return var;
7224 }
7225 /* method abstract_compiler#AbstractCompiler#provided_declarations for (self: Object): HashMap[String, String] */
7226 val* VIRTUAL_abstract_compiler__AbstractCompiler__provided_declarations(val* self) {
7227 val* var /* : HashMap[String, String] */;
7228 val* var1 /* : HashMap[String, String] */;
7229 val* var3 /* : HashMap[String, String] */;
7230 { /* Inline abstract_compiler#AbstractCompiler#provided_declarations (self) on <self:Object(AbstractCompiler)> */
7231 var3 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___provided_declarations].val; /* _provided_declarations on <self:Object(AbstractCompiler)> */
7232 if (unlikely(var3 == NULL)) {
7233 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _provided_declarations");
7234 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 484);
7235 show_backtrace(1);
7236 }
7237 var1 = var3;
7238 RET_LABEL2:(void)0;
7239 }
7240 var = var1;
7241 RET_LABEL:;
7242 return var;
7243 }
7244 /* method abstract_compiler#AbstractCompiler#requirers_of_declarations for (self: AbstractCompiler): HashMap[String, ANode] */
7245 val* abstract_compiler__AbstractCompiler__requirers_of_declarations(val* self) {
7246 val* var /* : HashMap[String, ANode] */;
7247 val* var1 /* : HashMap[String, ANode] */;
7248 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___requirers_of_declarations].val; /* _requirers_of_declarations on <self:AbstractCompiler> */
7249 if (unlikely(var1 == NULL)) {
7250 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _requirers_of_declarations");
7251 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 486);
7252 show_backtrace(1);
7253 }
7254 var = var1;
7255 RET_LABEL:;
7256 return var;
7257 }
7258 /* method abstract_compiler#AbstractCompiler#requirers_of_declarations for (self: Object): HashMap[String, ANode] */
7259 val* VIRTUAL_abstract_compiler__AbstractCompiler__requirers_of_declarations(val* self) {
7260 val* var /* : HashMap[String, ANode] */;
7261 val* var1 /* : HashMap[String, ANode] */;
7262 val* var3 /* : HashMap[String, ANode] */;
7263 { /* Inline abstract_compiler#AbstractCompiler#requirers_of_declarations (self) on <self:Object(AbstractCompiler)> */
7264 var3 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___requirers_of_declarations].val; /* _requirers_of_declarations on <self:Object(AbstractCompiler)> */
7265 if (unlikely(var3 == NULL)) {
7266 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _requirers_of_declarations");
7267 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 486);
7268 show_backtrace(1);
7269 }
7270 var1 = var3;
7271 RET_LABEL2:(void)0;
7272 }
7273 var = var1;
7274 RET_LABEL:;
7275 return var;
7276 }
7277 /* method abstract_compiler#AbstractCompiler#build_c_to_nit_bindings for (self: AbstractCompiler) */
7278 void abstract_compiler__AbstractCompiler__build_c_to_nit_bindings(val* self) {
7279 val* var /* : ModelBuilder */;
7280 val* var2 /* : ModelBuilder */;
7281 val* var3 /* : String */;
7282 val* var5 /* : String */;
7283 val* var_compile_dir /* var compile_dir: String */;
7284 val* var6 /* : OFStream */;
7285 static val* varonce;
7286 val* var7 /* : String */;
7287 char* var8 /* : NativeString */;
7288 long var9 /* : Int */;
7289 val* var10 /* : FlatString */;
7290 val* var11 /* : Array[Object] */;
7291 long var12 /* : Int */;
7292 val* var13 /* : NativeArray[Object] */;
7293 val* var14 /* : String */;
7294 val* var_stream /* var stream: OFStream */;
7295 static val* varonce15;
7296 val* var16 /* : String */;
7297 char* var17 /* : NativeString */;
7298 long var18 /* : Int */;
7299 val* var19 /* : FlatString */;
7300 static val* varonce20;
7301 val* var21 /* : String */;
7302 char* var22 /* : NativeString */;
7303 long var23 /* : Int */;
7304 val* var24 /* : FlatString */;
7305 static val* varonce25;
7306 val* var26 /* : String */;
7307 char* var27 /* : NativeString */;
7308 long var28 /* : Int */;
7309 val* var29 /* : FlatString */;
7310 static val* varonce30;
7311 val* var31 /* : String */;
7312 char* var32 /* : NativeString */;
7313 long var33 /* : Int */;
7314 val* var34 /* : FlatString */;
7315 static val* varonce35;
7316 val* var36 /* : String */;
7317 char* var37 /* : NativeString */;
7318 long var38 /* : Int */;
7319 val* var39 /* : FlatString */;
7320 static val* varonce40;
7321 val* var41 /* : String */;
7322 char* var42 /* : NativeString */;
7323 long var43 /* : Int */;
7324 val* var44 /* : FlatString */;
7325 static val* varonce45;
7326 val* var46 /* : String */;
7327 char* var47 /* : NativeString */;
7328 long var48 /* : Int */;
7329 val* var49 /* : FlatString */;
7330 static val* varonce50;
7331 val* var51 /* : String */;
7332 char* var52 /* : NativeString */;
7333 long var53 /* : Int */;
7334 val* var54 /* : FlatString */;
7335 static val* varonce55;
7336 val* var56 /* : String */;
7337 char* var57 /* : NativeString */;
7338 long var58 /* : Int */;
7339 val* var59 /* : FlatString */;
7340 val* var60 /* : HashMap[String, String] */;
7341 val* var62 /* : HashMap[String, String] */;
7342 long var63 /* : Int */;
7343 static val* varonce64;
7344 val* var65 /* : String */;
7345 char* var66 /* : NativeString */;
7346 long var67 /* : Int */;
7347 val* var68 /* : FlatString */;
7348 val* var69 /* : Array[Object] */;
7349 long var70 /* : Int */;
7350 val* var71 /* : NativeArray[Object] */;
7351 val* var72 /* : Object */;
7352 val* var73 /* : String */;
7353 val* var74 /* : HashMap[String, String] */;
7354 val* var76 /* : HashMap[String, String] */;
7355 val* var77 /* : RemovableCollection[Object] */;
7356 val* var79 /* : RemovableCollection[Object] */;
7357 val* var80 /* : Iterator[nullable Object] */;
7358 short int var81 /* : Bool */;
7359 val* var82 /* : nullable Object */;
7360 val* var_i /* var i: String */;
7361 static val* varonce83;
7362 val* var84 /* : String */;
7363 char* var85 /* : NativeString */;
7364 long var86 /* : Int */;
7365 val* var87 /* : FlatString */;
7366 static val* varonce88;
7367 val* var89 /* : String */;
7368 char* var90 /* : NativeString */;
7369 long var91 /* : Int */;
7370 val* var92 /* : FlatString */;
7371 val* var93 /* : HashMap[String, String] */;
7372 val* var95 /* : HashMap[String, String] */;
7373 val* var96 /* : nullable Object */;
7374 static val* varonce97;
7375 val* var98 /* : String */;
7376 char* var99 /* : NativeString */;
7377 long var100 /* : Int */;
7378 val* var101 /* : FlatString */;
7379 static val* varonce102;
7380 val* var103 /* : String */;
7381 char* var104 /* : NativeString */;
7382 long var105 /* : Int */;
7383 val* var106 /* : FlatString */;
7384 static val* varonce107;
7385 val* var108 /* : String */;
7386 char* var109 /* : NativeString */;
7387 long var110 /* : Int */;
7388 val* var111 /* : FlatString */;
7389 static val* varonce112;
7390 val* var113 /* : String */;
7391 char* var114 /* : NativeString */;
7392 long var115 /* : Int */;
7393 val* var116 /* : FlatString */;
7394 val* var117 /* : HashMap[String, String] */;
7395 val* var119 /* : HashMap[String, String] */;
7396 long var120 /* : Int */;
7397 static val* varonce121;
7398 val* var122 /* : String */;
7399 char* var123 /* : NativeString */;
7400 long var124 /* : Int */;
7401 val* var125 /* : FlatString */;
7402 val* var126 /* : Array[Object] */;
7403 long var127 /* : Int */;
7404 val* var128 /* : NativeArray[Object] */;
7405 val* var129 /* : Object */;
7406 val* var130 /* : String */;
7407 static val* varonce131;
7408 val* var132 /* : String */;
7409 char* var133 /* : NativeString */;
7410 long var134 /* : Int */;
7411 val* var135 /* : FlatString */;
7412 static val* varonce136;
7413 val* var137 /* : String */;
7414 char* var138 /* : NativeString */;
7415 long var139 /* : Int */;
7416 val* var140 /* : FlatString */;
7417 static val* varonce141;
7418 val* var142 /* : String */;
7419 char* var143 /* : NativeString */;
7420 long var144 /* : Int */;
7421 val* var145 /* : FlatString */;
7422 static val* varonce146;
7423 val* var147 /* : String */;
7424 char* var148 /* : NativeString */;
7425 long var149 /* : Int */;
7426 val* var150 /* : FlatString */;
7427 static val* varonce151;
7428 val* var152 /* : String */;
7429 char* var153 /* : NativeString */;
7430 long var154 /* : Int */;
7431 val* var155 /* : FlatString */;
7432 static val* varonce156;
7433 val* var157 /* : String */;
7434 char* var158 /* : NativeString */;
7435 long var159 /* : Int */;
7436 val* var160 /* : FlatString */;
7437 static val* varonce161;
7438 val* var162 /* : String */;
7439 char* var163 /* : NativeString */;
7440 long var164 /* : Int */;
7441 val* var165 /* : FlatString */;
7442 static val* varonce166;
7443 val* var167 /* : String */;
7444 char* var168 /* : NativeString */;
7445 long var169 /* : Int */;
7446 val* var170 /* : FlatString */;
7447 val* var171 /* : OFStream */;
7448 static val* varonce172;
7449 val* var173 /* : String */;
7450 char* var174 /* : NativeString */;
7451 long var175 /* : Int */;
7452 val* var176 /* : FlatString */;
7453 val* var177 /* : Array[Object] */;
7454 long var178 /* : Int */;
7455 val* var179 /* : NativeArray[Object] */;
7456 val* var180 /* : String */;
7457 static val* varonce181;
7458 val* var182 /* : String */;
7459 char* var183 /* : NativeString */;
7460 long var184 /* : Int */;
7461 val* var185 /* : FlatString */;
7462 val* var186 /* : Array[ExternFile] */;
7463 val* var188 /* : Array[ExternFile] */;
7464 val* var189 /* : ExternCFile */;
7465 static val* varonce190;
7466 val* var191 /* : String */;
7467 char* var192 /* : NativeString */;
7468 long var193 /* : Int */;
7469 val* var194 /* : FlatString */;
7470 val* var195 /* : Array[Object] */;
7471 long var196 /* : Int */;
7472 val* var197 /* : NativeArray[Object] */;
7473 val* var198 /* : String */;
7474 static val* varonce199;
7475 val* var200 /* : String */;
7476 char* var201 /* : NativeString */;
7477 long var202 /* : Int */;
7478 val* var203 /* : FlatString */;
7479 {
7480 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:AbstractCompiler> */
7481 var2 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:AbstractCompiler> */
7482 if (unlikely(var2 == NULL)) {
7483 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
7484 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 443);
7485 show_backtrace(1);
7486 }
7487 var = var2;
7488 RET_LABEL1:(void)0;
7489 }
7490 }
7491 {
7492 { /* Inline abstract_compiler#ModelBuilder#compile_dir (var) on <var:ModelBuilder> */
7493 var5 = var->attrs[COLOR_abstract_compiler__ModelBuilder___compile_dir].val; /* _compile_dir on <var:ModelBuilder> */
7494 if (unlikely(var5 == NULL)) {
7495 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compile_dir");
7496 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 103);
7497 show_backtrace(1);
7498 }
7499 var3 = var5;
7500 RET_LABEL4:(void)0;
7501 }
7502 }
7503 var_compile_dir = var3;
7504 var6 = NEW_file__OFStream(&type_file__OFStream);
7505 if (varonce) {
7506 var7 = varonce;
7507 } else {
7508 var8 = "/c_functions_hash.c";
7509 var9 = 19;
7510 var10 = string__NativeString__to_s_with_length(var8, var9);
7511 var7 = var10;
7512 varonce = var7;
7513 }
7514 var11 = NEW_array__Array(&type_array__Arraykernel__Object);
7515 { /* var11 = array_instance Array[Object] */
7516 var12 = 2;
7517 var13 = NEW_array__NativeArray(var12, &type_array__NativeArraykernel__Object);
7518 ((struct instance_array__NativeArray*)var13)->values[0] = (val*) var_compile_dir;
7519 ((struct instance_array__NativeArray*)var13)->values[1] = (val*) var7;
7520 {
7521 ((void (*)(val*, val*, long))(var11->class->vft[COLOR_array__Array__with_native]))(var11, var13, var12) /* with_native on <var11:Array[Object]>*/;
7522 }
7523 }
7524 {
7525 var14 = ((val* (*)(val*))(var11->class->vft[COLOR_string__Object__to_s]))(var11) /* to_s on <var11:Array[Object]>*/;
7526 }
7527 {
7528 file__OFStream__open(var6, var14); /* Direct call file#OFStream#open on <var6:OFStream>*/
7529 }
7530 var_stream = var6;
7531 if (varonce15) {
7532 var16 = varonce15;
7533 } else {
7534 var17 = "#include <string.h>\n";
7535 var18 = 20;
7536 var19 = string__NativeString__to_s_with_length(var17, var18);
7537 var16 = var19;
7538 varonce15 = var16;
7539 }
7540 {
7541 file__OFStream__write(var_stream, var16); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7542 }
7543 if (varonce20) {
7544 var21 = varonce20;
7545 } else {
7546 var22 = "#include <stdlib.h>\n";
7547 var23 = 20;
7548 var24 = string__NativeString__to_s_with_length(var22, var23);
7549 var21 = var24;
7550 varonce20 = var21;
7551 }
7552 {
7553 file__OFStream__write(var_stream, var21); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7554 }
7555 if (varonce25) {
7556 var26 = varonce25;
7557 } else {
7558 var27 = "#include \"c_functions_hash.h\"\n";
7559 var28 = 30;
7560 var29 = string__NativeString__to_s_with_length(var27, var28);
7561 var26 = var29;
7562 varonce25 = var26;
7563 }
7564 {
7565 file__OFStream__write(var_stream, var26); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7566 }
7567 if (varonce30) {
7568 var31 = varonce30;
7569 } else {
7570 var32 = "typedef struct C_Nit_Names{char* name; char* nit_name;}C_Nit_Names;\n";
7571 var33 = 68;
7572 var34 = string__NativeString__to_s_with_length(var32, var33);
7573 var31 = var34;
7574 varonce30 = var31;
7575 }
7576 {
7577 file__OFStream__write(var_stream, var31); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7578 }
7579 if (varonce35) {
7580 var36 = varonce35;
7581 } else {
7582 var37 = "const char* get_nit_name(register const char* procproc, register unsigned int len){\n";
7583 var38 = 84;
7584 var39 = string__NativeString__to_s_with_length(var37, var38);
7585 var36 = var39;
7586 varonce35 = var36;
7587 }
7588 {
7589 file__OFStream__write(var_stream, var36); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7590 }
7591 if (varonce40) {
7592 var41 = varonce40;
7593 } else {
7594 var42 = "char* procname = malloc(len+1);";
7595 var43 = 31;
7596 var44 = string__NativeString__to_s_with_length(var42, var43);
7597 var41 = var44;
7598 varonce40 = var41;
7599 }
7600 {
7601 file__OFStream__write(var_stream, var41); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7602 }
7603 if (varonce45) {
7604 var46 = varonce45;
7605 } else {
7606 var47 = "memcpy(procname, procproc, len);";
7607 var48 = 32;
7608 var49 = string__NativeString__to_s_with_length(var47, var48);
7609 var46 = var49;
7610 varonce45 = var46;
7611 }
7612 {
7613 file__OFStream__write(var_stream, var46); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7614 }
7615 if (varonce50) {
7616 var51 = varonce50;
7617 } else {
7618 var52 = "procname[len] = \'\\0\';";
7619 var53 = 21;
7620 var54 = string__NativeString__to_s_with_length(var52, var53);
7621 var51 = var54;
7622 varonce50 = var51;
7623 }
7624 {
7625 file__OFStream__write(var_stream, var51); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7626 }
7627 if (varonce55) {
7628 var56 = varonce55;
7629 } else {
7630 var57 = "static const C_Nit_Names map[";
7631 var58 = 29;
7632 var59 = string__NativeString__to_s_with_length(var57, var58);
7633 var56 = var59;
7634 varonce55 = var56;
7635 }
7636 {
7637 { /* Inline abstract_compiler#AbstractCompiler#names (self) on <self:AbstractCompiler> */
7638 var62 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___names].val; /* _names on <self:AbstractCompiler> */
7639 if (unlikely(var62 == NULL)) {
7640 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
7641 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 433);
7642 show_backtrace(1);
7643 }
7644 var60 = var62;
7645 RET_LABEL61:(void)0;
7646 }
7647 }
7648 {
7649 var63 = hash_collection__HashMap__length(var60);
7650 }
7651 if (varonce64) {
7652 var65 = varonce64;
7653 } else {
7654 var66 = "] = {\n";
7655 var67 = 6;
7656 var68 = string__NativeString__to_s_with_length(var66, var67);
7657 var65 = var68;
7658 varonce64 = var65;
7659 }
7660 var69 = NEW_array__Array(&type_array__Arraykernel__Object);
7661 { /* var69 = array_instance Array[Object] */
7662 var70 = 3;
7663 var71 = NEW_array__NativeArray(var70, &type_array__NativeArraykernel__Object);
7664 ((struct instance_array__NativeArray*)var71)->values[0] = (val*) var56;
7665 var72 = BOX_kernel__Int(var63); /* autobox from Int to Object */
7666 ((struct instance_array__NativeArray*)var71)->values[1] = (val*) var72;
7667 ((struct instance_array__NativeArray*)var71)->values[2] = (val*) var65;
7668 {
7669 ((void (*)(val*, val*, long))(var69->class->vft[COLOR_array__Array__with_native]))(var69, var71, var70) /* with_native on <var69:Array[Object]>*/;
7670 }
7671 }
7672 {
7673 var73 = ((val* (*)(val*))(var69->class->vft[COLOR_string__Object__to_s]))(var69) /* to_s on <var69:Array[Object]>*/;
7674 }
7675 {
7676 file__OFStream__write(var_stream, var73); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7677 }
7678 {
7679 { /* Inline abstract_compiler#AbstractCompiler#names (self) on <self:AbstractCompiler> */
7680 var76 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___names].val; /* _names on <self:AbstractCompiler> */
7681 if (unlikely(var76 == NULL)) {
7682 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
7683 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 433);
7684 show_backtrace(1);
7685 }
7686 var74 = var76;
7687 RET_LABEL75:(void)0;
7688 }
7689 }
7690 {
7691 { /* Inline hash_collection#HashMap#keys (var74) on <var74:HashMap[String, String]> */
7692 var79 = var74->attrs[COLOR_hash_collection__HashMap___keys].val; /* _keys on <var74:HashMap[String, String]> */
7693 if (unlikely(var79 == NULL)) {
7694 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _keys");
7695 PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/hash_collection.nit", 245);
7696 show_backtrace(1);
7697 }
7698 var77 = var79;
7699 RET_LABEL78:(void)0;
7700 }
7701 }
7702 {
7703 var80 = ((val* (*)(val*))(var77->class->vft[COLOR_abstract_collection__Collection__iterator]))(var77) /* iterator on <var77:RemovableCollection[Object](RemovableCollection[String])>*/;
7704 }
7705 for(;;) {
7706 {
7707 var81 = ((short int (*)(val*))(var80->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var80) /* is_ok on <var80:Iterator[nullable Object]>*/;
7708 }
7709 if(!var81) break;
7710 {
7711 var82 = ((val* (*)(val*))(var80->class->vft[COLOR_abstract_collection__Iterator__item]))(var80) /* item on <var80:Iterator[nullable Object]>*/;
7712 }
7713 var_i = var82;
7714 if (varonce83) {
7715 var84 = varonce83;
7716 } else {
7717 var85 = "{\"";
7718 var86 = 2;
7719 var87 = string__NativeString__to_s_with_length(var85, var86);
7720 var84 = var87;
7721 varonce83 = var84;
7722 }
7723 {
7724 file__OFStream__write(var_stream, var84); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7725 }
7726 {
7727 file__OFStream__write(var_stream, var_i); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7728 }
7729 if (varonce88) {
7730 var89 = varonce88;
7731 } else {
7732 var90 = "\",\"";
7733 var91 = 3;
7734 var92 = string__NativeString__to_s_with_length(var90, var91);
7735 var89 = var92;
7736 varonce88 = var89;
7737 }
7738 {
7739 file__OFStream__write(var_stream, var89); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7740 }
7741 {
7742 { /* Inline abstract_compiler#AbstractCompiler#names (self) on <self:AbstractCompiler> */
7743 var95 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___names].val; /* _names on <self:AbstractCompiler> */
7744 if (unlikely(var95 == NULL)) {
7745 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
7746 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 433);
7747 show_backtrace(1);
7748 }
7749 var93 = var95;
7750 RET_LABEL94:(void)0;
7751 }
7752 }
7753 {
7754 var96 = hash_collection__HashMap___91d_93d(var93, var_i);
7755 }
7756 {
7757 file__OFStream__write(var_stream, var96); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7758 }
7759 if (varonce97) {
7760 var98 = varonce97;
7761 } else {
7762 var99 = "\"},\n";
7763 var100 = 4;
7764 var101 = string__NativeString__to_s_with_length(var99, var100);
7765 var98 = var101;
7766 varonce97 = var98;
7767 }
7768 {
7769 file__OFStream__write(var_stream, var98); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7770 }
7771 CONTINUE_label: (void)0;
7772 {
7773 ((void (*)(val*))(var80->class->vft[COLOR_abstract_collection__Iterator__next]))(var80) /* next on <var80:Iterator[nullable Object]>*/;
7774 }
7775 }
7776 BREAK_label: (void)0;
7777 if (varonce102) {
7778 var103 = varonce102;
7779 } else {
7780 var104 = "};\n";
7781 var105 = 3;
7782 var106 = string__NativeString__to_s_with_length(var104, var105);
7783 var103 = var106;
7784 varonce102 = var103;
7785 }
7786 {
7787 file__OFStream__write(var_stream, var103); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7788 }
7789 if (varonce107) {
7790 var108 = varonce107;
7791 } else {
7792 var109 = "int i;";
7793 var110 = 6;
7794 var111 = string__NativeString__to_s_with_length(var109, var110);
7795 var108 = var111;
7796 varonce107 = var108;
7797 }
7798 {
7799 file__OFStream__write(var_stream, var108); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7800 }
7801 if (varonce112) {
7802 var113 = varonce112;
7803 } else {
7804 var114 = "for(i = 0; i < ";
7805 var115 = 15;
7806 var116 = string__NativeString__to_s_with_length(var114, var115);
7807 var113 = var116;
7808 varonce112 = var113;
7809 }
7810 {
7811 { /* Inline abstract_compiler#AbstractCompiler#names (self) on <self:AbstractCompiler> */
7812 var119 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___names].val; /* _names on <self:AbstractCompiler> */
7813 if (unlikely(var119 == NULL)) {
7814 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
7815 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 433);
7816 show_backtrace(1);
7817 }
7818 var117 = var119;
7819 RET_LABEL118:(void)0;
7820 }
7821 }
7822 {
7823 var120 = hash_collection__HashMap__length(var117);
7824 }
7825 if (varonce121) {
7826 var122 = varonce121;
7827 } else {
7828 var123 = "; i++){";
7829 var124 = 7;
7830 var125 = string__NativeString__to_s_with_length(var123, var124);
7831 var122 = var125;
7832 varonce121 = var122;
7833 }
7834 var126 = NEW_array__Array(&type_array__Arraykernel__Object);
7835 { /* var126 = array_instance Array[Object] */
7836 var127 = 3;
7837 var128 = NEW_array__NativeArray(var127, &type_array__NativeArraykernel__Object);
7838 ((struct instance_array__NativeArray*)var128)->values[0] = (val*) var113;
7839 var129 = BOX_kernel__Int(var120); /* autobox from Int to Object */
7840 ((struct instance_array__NativeArray*)var128)->values[1] = (val*) var129;
7841 ((struct instance_array__NativeArray*)var128)->values[2] = (val*) var122;
7842 {
7843 ((void (*)(val*, val*, long))(var126->class->vft[COLOR_array__Array__with_native]))(var126, var128, var127) /* with_native on <var126:Array[Object]>*/;
7844 }
7845 }
7846 {
7847 var130 = ((val* (*)(val*))(var126->class->vft[COLOR_string__Object__to_s]))(var126) /* to_s on <var126:Array[Object]>*/;
7848 }
7849 {
7850 file__OFStream__write(var_stream, var130); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7851 }
7852 if (varonce131) {
7853 var132 = varonce131;
7854 } else {
7855 var133 = "if(strcmp(procname,map[i].name) == 0){";
7856 var134 = 38;
7857 var135 = string__NativeString__to_s_with_length(var133, var134);
7858 var132 = var135;
7859 varonce131 = var132;
7860 }
7861 {
7862 file__OFStream__write(var_stream, var132); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7863 }
7864 if (varonce136) {
7865 var137 = varonce136;
7866 } else {
7867 var138 = "free(procname);";
7868 var139 = 15;
7869 var140 = string__NativeString__to_s_with_length(var138, var139);
7870 var137 = var140;
7871 varonce136 = var137;
7872 }
7873 {
7874 file__OFStream__write(var_stream, var137); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7875 }
7876 if (varonce141) {
7877 var142 = varonce141;
7878 } else {
7879 var143 = "return map[i].nit_name;";
7880 var144 = 23;
7881 var145 = string__NativeString__to_s_with_length(var143, var144);
7882 var142 = var145;
7883 varonce141 = var142;
7884 }
7885 {
7886 file__OFStream__write(var_stream, var142); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7887 }
7888 if (varonce146) {
7889 var147 = varonce146;
7890 } else {
7891 var148 = "}";
7892 var149 = 1;
7893 var150 = string__NativeString__to_s_with_length(var148, var149);
7894 var147 = var150;
7895 varonce146 = var147;
7896 }
7897 {
7898 file__OFStream__write(var_stream, var147); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7899 }
7900 if (varonce151) {
7901 var152 = varonce151;
7902 } else {
7903 var153 = "}";
7904 var154 = 1;
7905 var155 = string__NativeString__to_s_with_length(var153, var154);
7906 var152 = var155;
7907 varonce151 = var152;
7908 }
7909 {
7910 file__OFStream__write(var_stream, var152); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7911 }
7912 if (varonce156) {
7913 var157 = varonce156;
7914 } else {
7915 var158 = "free(procname);";
7916 var159 = 15;
7917 var160 = string__NativeString__to_s_with_length(var158, var159);
7918 var157 = var160;
7919 varonce156 = var157;
7920 }
7921 {
7922 file__OFStream__write(var_stream, var157); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7923 }
7924 if (varonce161) {
7925 var162 = varonce161;
7926 } else {
7927 var163 = "return NULL;";
7928 var164 = 12;
7929 var165 = string__NativeString__to_s_with_length(var163, var164);
7930 var162 = var165;
7931 varonce161 = var162;
7932 }
7933 {
7934 file__OFStream__write(var_stream, var162); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7935 }
7936 if (varonce166) {
7937 var167 = varonce166;
7938 } else {
7939 var168 = "}\n";
7940 var169 = 2;
7941 var170 = string__NativeString__to_s_with_length(var168, var169);
7942 var167 = var170;
7943 varonce166 = var167;
7944 }
7945 {
7946 file__OFStream__write(var_stream, var167); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7947 }
7948 {
7949 file__OFStream__close(var_stream); /* Direct call file#OFStream#close on <var_stream:OFStream>*/
7950 }
7951 var171 = NEW_file__OFStream(&type_file__OFStream);
7952 if (varonce172) {
7953 var173 = varonce172;
7954 } else {
7955 var174 = "/c_functions_hash.h";
7956 var175 = 19;
7957 var176 = string__NativeString__to_s_with_length(var174, var175);
7958 var173 = var176;
7959 varonce172 = var173;
7960 }
7961 var177 = NEW_array__Array(&type_array__Arraykernel__Object);
7962 { /* var177 = array_instance Array[Object] */
7963 var178 = 2;
7964 var179 = NEW_array__NativeArray(var178, &type_array__NativeArraykernel__Object);
7965 ((struct instance_array__NativeArray*)var179)->values[0] = (val*) var_compile_dir;
7966 ((struct instance_array__NativeArray*)var179)->values[1] = (val*) var173;
7967 {
7968 ((void (*)(val*, val*, long))(var177->class->vft[COLOR_array__Array__with_native]))(var177, var179, var178) /* with_native on <var177:Array[Object]>*/;
7969 }
7970 }
7971 {
7972 var180 = ((val* (*)(val*))(var177->class->vft[COLOR_string__Object__to_s]))(var177) /* to_s on <var177:Array[Object]>*/;
7973 }
7974 {
7975 file__OFStream__open(var171, var180); /* Direct call file#OFStream#open on <var171:OFStream>*/
7976 }
7977 var_stream = var171;
7978 if (varonce181) {
7979 var182 = varonce181;
7980 } else {
7981 var183 = "const char* get_nit_name(register const char* procname, register unsigned int len);\n";
7982 var184 = 84;
7983 var185 = string__NativeString__to_s_with_length(var183, var184);
7984 var182 = var185;
7985 varonce181 = var182;
7986 }
7987 {
7988 file__OFStream__write(var_stream, var182); /* Direct call file#OFStream#write on <var_stream:OFStream>*/
7989 }
7990 {
7991 file__OFStream__close(var_stream); /* Direct call file#OFStream#close on <var_stream:OFStream>*/
7992 }
7993 {
7994 { /* Inline abstract_compiler#AbstractCompiler#extern_bodies (self) on <self:AbstractCompiler> */
7995 var188 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___extern_bodies].val; /* _extern_bodies on <self:AbstractCompiler> */
7996 if (unlikely(var188 == NULL)) {
7997 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _extern_bodies");
7998 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 847);
7999 show_backtrace(1);
8000 }
8001 var186 = var188;
8002 RET_LABEL187:(void)0;
8003 }
8004 }
8005 var189 = NEW_c_tools__ExternCFile(&type_c_tools__ExternCFile);
8006 if (varonce190) {
8007 var191 = varonce190;
8008 } else {
8009 var192 = "/c_functions_hash.c";
8010 var193 = 19;
8011 var194 = string__NativeString__to_s_with_length(var192, var193);
8012 var191 = var194;
8013 varonce190 = var191;
8014 }
8015 var195 = NEW_array__Array(&type_array__Arraykernel__Object);
8016 { /* var195 = array_instance Array[Object] */
8017 var196 = 2;
8018 var197 = NEW_array__NativeArray(var196, &type_array__NativeArraykernel__Object);
8019 ((struct instance_array__NativeArray*)var197)->values[0] = (val*) var_compile_dir;
8020 ((struct instance_array__NativeArray*)var197)->values[1] = (val*) var191;
8021 {
8022 ((void (*)(val*, val*, long))(var195->class->vft[COLOR_array__Array__with_native]))(var195, var197, var196) /* with_native on <var195:Array[Object]>*/;
8023 }
8024 }
8025 {
8026 var198 = ((val* (*)(val*))(var195->class->vft[COLOR_string__Object__to_s]))(var195) /* to_s on <var195:Array[Object]>*/;
8027 }
8028 if (varonce199) {
8029 var200 = varonce199;
8030 } else {
8031 var201 = "";
8032 var202 = 0;
8033 var203 = string__NativeString__to_s_with_length(var201, var202);
8034 var200 = var203;
8035 varonce199 = var200;
8036 }
8037 {
8038 c_tools__ExternCFile__init(var189, var198, var200); /* Direct call c_tools#ExternCFile#init on <var189:ExternCFile>*/
8039 }
8040 {
8041 array__Array__add(var186, var189); /* Direct call array#Array#add on <var186:Array[ExternFile]>*/
8042 }
8043 RET_LABEL:;
8044 }
8045 /* method abstract_compiler#AbstractCompiler#build_c_to_nit_bindings for (self: Object) */
8046 void VIRTUAL_abstract_compiler__AbstractCompiler__build_c_to_nit_bindings(val* self) {
8047 abstract_compiler__AbstractCompiler__build_c_to_nit_bindings(self); /* Direct call abstract_compiler#AbstractCompiler#build_c_to_nit_bindings on <self:Object(AbstractCompiler)>*/
8048 RET_LABEL:;
8049 }
8050 /* method abstract_compiler#AbstractCompiler#compile_header for (self: AbstractCompiler) */
8051 void abstract_compiler__AbstractCompiler__compile_header(val* self) {
8052 val* var /* : CodeWriter */;
8053 val* var2 /* : CodeWriter */;
8054 val* var_v /* var v: CodeWriter */;
8055 val* var3 /* : ModelBuilder */;
8056 val* var5 /* : ModelBuilder */;
8057 val* var6 /* : ToolContext */;
8058 val* var8 /* : ToolContext */;
8059 val* var_toolctx /* var toolctx: ToolContext */;
8060 val* var9 /* : CodeWriter */;
8061 val* var11 /* : CodeWriter */;
8062 static val* varonce;
8063 val* var12 /* : String */;
8064 char* var13 /* : NativeString */;
8065 long var14 /* : Int */;
8066 val* var15 /* : FlatString */;
8067 val* var16 /* : CodeWriter */;
8068 val* var18 /* : CodeWriter */;
8069 static val* varonce19;
8070 val* var20 /* : String */;
8071 char* var21 /* : NativeString */;
8072 long var22 /* : Int */;
8073 val* var23 /* : FlatString */;
8074 val* var24 /* : CodeWriter */;
8075 val* var26 /* : CodeWriter */;
8076 static val* varonce27;
8077 val* var28 /* : String */;
8078 char* var29 /* : NativeString */;
8079 long var30 /* : Int */;
8080 val* var31 /* : FlatString */;
8081 val* var32 /* : CodeWriter */;
8082 val* var34 /* : CodeWriter */;
8083 static val* varonce35;
8084 val* var36 /* : String */;
8085 char* var37 /* : NativeString */;
8086 long var38 /* : Int */;
8087 val* var39 /* : FlatString */;
8088 val* var40 /* : CodeWriter */;
8089 val* var42 /* : CodeWriter */;
8090 static val* varonce43;
8091 val* var44 /* : String */;
8092 char* var45 /* : NativeString */;
8093 long var46 /* : Int */;
8094 val* var47 /* : FlatString */;
8095 val* var48 /* : CodeWriter */;
8096 val* var50 /* : CodeWriter */;
8097 static val* varonce51;
8098 val* var52 /* : String */;
8099 char* var53 /* : NativeString */;
8100 long var54 /* : Int */;
8101 val* var55 /* : FlatString */;
8102 val* var56 /* : CodeWriter */;
8103 val* var58 /* : CodeWriter */;
8104 static val* varonce59;
8105 val* var60 /* : String */;
8106 char* var61 /* : NativeString */;
8107 long var62 /* : Int */;
8108 val* var63 /* : FlatString */;
8109 val* var64 /* : CodeWriter */;
8110 val* var66 /* : CodeWriter */;
8111 static val* varonce67;
8112 val* var68 /* : String */;
8113 char* var69 /* : NativeString */;
8114 long var70 /* : Int */;
8115 val* var71 /* : FlatString */;
8116 val* var72 /* : CodeWriter */;
8117 val* var74 /* : CodeWriter */;
8118 static val* varonce75;
8119 val* var76 /* : String */;
8120 char* var77 /* : NativeString */;
8121 long var78 /* : Int */;
8122 val* var79 /* : FlatString */;
8123 val* var80 /* : CodeWriter */;
8124 val* var82 /* : CodeWriter */;
8125 static val* varonce83;
8126 val* var84 /* : String */;
8127 char* var85 /* : NativeString */;
8128 long var86 /* : Int */;
8129 val* var87 /* : FlatString */;
8130 val* var88 /* : ModelBuilder */;
8131 val* var90 /* : ModelBuilder */;
8132 val* var91 /* : ToolContext */;
8133 val* var93 /* : ToolContext */;
8134 val* var94 /* : OptionArray */;
8135 val* var96 /* : OptionArray */;
8136 val* var97 /* : nullable Object */;
8137 val* var99 /* : nullable Object */;
8138 val* var_gccd_disable /* var gccd_disable: Array[String] */;
8139 short int var100 /* : Bool */;
8140 static val* varonce101;
8141 val* var102 /* : String */;
8142 char* var103 /* : NativeString */;
8143 long var104 /* : Int */;
8144 val* var105 /* : FlatString */;
8145 short int var106 /* : Bool */;
8146 short int var_ /* var : Bool */;
8147 static val* varonce107;
8148 val* var108 /* : String */;
8149 char* var109 /* : NativeString */;
8150 long var110 /* : Int */;
8151 val* var111 /* : FlatString */;
8152 short int var112 /* : Bool */;
8153 val* var113 /* : CodeWriter */;
8154 val* var115 /* : CodeWriter */;
8155 static val* varonce116;
8156 val* var117 /* : String */;
8157 char* var118 /* : NativeString */;
8158 long var119 /* : Int */;
8159 val* var120 /* : FlatString */;
8160 val* var121 /* : CodeWriter */;
8161 val* var123 /* : CodeWriter */;
8162 static val* varonce124;
8163 val* var125 /* : String */;
8164 char* var126 /* : NativeString */;
8165 long var127 /* : Int */;
8166 val* var128 /* : FlatString */;
8167 short int var129 /* : Bool */;
8168 static val* varonce130;
8169 val* var131 /* : String */;
8170 char* var132 /* : NativeString */;
8171 long var133 /* : Int */;
8172 val* var134 /* : FlatString */;
8173 short int var135 /* : Bool */;
8174 short int var_136 /* var : Bool */;
8175 static val* varonce137;
8176 val* var138 /* : String */;
8177 char* var139 /* : NativeString */;
8178 long var140 /* : Int */;
8179 val* var141 /* : FlatString */;
8180 short int var142 /* : Bool */;
8181 val* var143 /* : CodeWriter */;
8182 val* var145 /* : CodeWriter */;
8183 static val* varonce146;
8184 val* var147 /* : String */;
8185 char* var148 /* : NativeString */;
8186 long var149 /* : Int */;
8187 val* var150 /* : FlatString */;
8188 val* var151 /* : CodeWriter */;
8189 val* var153 /* : CodeWriter */;
8190 static val* varonce154;
8191 val* var155 /* : String */;
8192 char* var156 /* : NativeString */;
8193 long var157 /* : Int */;
8194 val* var158 /* : FlatString */;
8195 static val* varonce159;
8196 val* var160 /* : String */;
8197 char* var161 /* : NativeString */;
8198 long var162 /* : Int */;
8199 val* var163 /* : FlatString */;
8200 short int var164 /* : Bool */;
8201 val* var165 /* : CodeWriter */;
8202 val* var167 /* : CodeWriter */;
8203 static val* varonce168;
8204 val* var169 /* : String */;
8205 char* var170 /* : NativeString */;
8206 long var171 /* : Int */;
8207 val* var172 /* : FlatString */;
8208 val* var173 /* : CodeWriter */;
8209 val* var175 /* : CodeWriter */;
8210 static val* varonce176;
8211 val* var177 /* : String */;
8212 char* var178 /* : NativeString */;
8213 long var179 /* : Int */;
8214 val* var180 /* : FlatString */;
8215 val* var181 /* : CodeWriter */;
8216 val* var183 /* : CodeWriter */;
8217 static val* varonce184;
8218 val* var185 /* : String */;
8219 char* var186 /* : NativeString */;
8220 long var187 /* : Int */;
8221 val* var188 /* : FlatString */;
8222 val* var189 /* : CodeWriter */;
8223 val* var191 /* : CodeWriter */;
8224 static val* varonce192;
8225 val* var193 /* : String */;
8226 char* var194 /* : NativeString */;
8227 long var195 /* : Int */;
8228 val* var196 /* : FlatString */;
8229 val* var197 /* : CodeWriter */;
8230 val* var199 /* : CodeWriter */;
8231 static val* varonce200;
8232 val* var201 /* : String */;
8233 char* var202 /* : NativeString */;
8234 long var203 /* : Int */;
8235 val* var204 /* : FlatString */;
8236 val* var205 /* : CodeWriter */;
8237 val* var207 /* : CodeWriter */;
8238 static val* varonce208;
8239 val* var209 /* : String */;
8240 char* var210 /* : NativeString */;
8241 long var211 /* : Int */;
8242 val* var212 /* : FlatString */;
8243 val* var213 /* : CodeWriter */;
8244 val* var215 /* : CodeWriter */;
8245 static val* varonce216;
8246 val* var217 /* : String */;
8247 char* var218 /* : NativeString */;
8248 long var219 /* : Int */;
8249 val* var220 /* : FlatString */;
8250 {
8251 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:AbstractCompiler> */
8252 var2 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8253 if (unlikely(var2 == NULL)) {
8254 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8255 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
8256 show_backtrace(1);
8257 }
8258 var = var2;
8259 RET_LABEL1:(void)0;
8260 }
8261 }
8262 var_v = var;
8263 {
8264 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:AbstractCompiler> */
8265 var5 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:AbstractCompiler> */
8266 if (unlikely(var5 == NULL)) {
8267 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
8268 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 443);
8269 show_backtrace(1);
8270 }
8271 var3 = var5;
8272 RET_LABEL4:(void)0;
8273 }
8274 }
8275 {
8276 { /* Inline modelbuilder#ModelBuilder#toolcontext (var3) on <var3:ModelBuilder> */
8277 var8 = var3->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var3:ModelBuilder> */
8278 if (unlikely(var8 == NULL)) {
8279 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
8280 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
8281 show_backtrace(1);
8282 }
8283 var6 = var8;
8284 RET_LABEL7:(void)0;
8285 }
8286 }
8287 var_toolctx = var6;
8288 {
8289 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:AbstractCompiler> */
8290 var11 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8291 if (unlikely(var11 == NULL)) {
8292 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8293 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
8294 show_backtrace(1);
8295 }
8296 var9 = var11;
8297 RET_LABEL10:(void)0;
8298 }
8299 }
8300 if (varonce) {
8301 var12 = varonce;
8302 } else {
8303 var13 = "#include <stdlib.h>";
8304 var14 = 19;
8305 var15 = string__NativeString__to_s_with_length(var13, var14);
8306 var12 = var15;
8307 varonce = var12;
8308 }
8309 {
8310 abstract_compiler__CodeWriter__add_decl(var9, var12); /* Direct call abstract_compiler#CodeWriter#add_decl on <var9:CodeWriter>*/
8311 }
8312 {
8313 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:AbstractCompiler> */
8314 var18 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8315 if (unlikely(var18 == NULL)) {
8316 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8317 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
8318 show_backtrace(1);
8319 }
8320 var16 = var18;
8321 RET_LABEL17:(void)0;
8322 }
8323 }
8324 if (varonce19) {
8325 var20 = varonce19;
8326 } else {
8327 var21 = "#include <stdio.h>";
8328 var22 = 18;
8329 var23 = string__NativeString__to_s_with_length(var21, var22);
8330 var20 = var23;
8331 varonce19 = var20;
8332 }
8333 {
8334 abstract_compiler__CodeWriter__add_decl(var16, var20); /* Direct call abstract_compiler#CodeWriter#add_decl on <var16:CodeWriter>*/
8335 }
8336 {
8337 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:AbstractCompiler> */
8338 var26 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8339 if (unlikely(var26 == NULL)) {
8340 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8341 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
8342 show_backtrace(1);
8343 }
8344 var24 = var26;
8345 RET_LABEL25:(void)0;
8346 }
8347 }
8348 if (varonce27) {
8349 var28 = varonce27;
8350 } else {
8351 var29 = "#include <string.h>";
8352 var30 = 19;
8353 var31 = string__NativeString__to_s_with_length(var29, var30);
8354 var28 = var31;
8355 varonce27 = var28;
8356 }
8357 {
8358 abstract_compiler__CodeWriter__add_decl(var24, var28); /* Direct call abstract_compiler#CodeWriter#add_decl on <var24:CodeWriter>*/
8359 }
8360 {
8361 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:AbstractCompiler> */
8362 var34 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8363 if (unlikely(var34 == NULL)) {
8364 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8365 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
8366 show_backtrace(1);
8367 }
8368 var32 = var34;
8369 RET_LABEL33:(void)0;
8370 }
8371 }
8372 if (varonce35) {
8373 var36 = varonce35;
8374 } else {
8375 var37 = "#include \"gc_chooser.h\"";
8376 var38 = 23;
8377 var39 = string__NativeString__to_s_with_length(var37, var38);
8378 var36 = var39;
8379 varonce35 = var36;
8380 }
8381 {
8382 abstract_compiler__CodeWriter__add_decl(var32, var36); /* Direct call abstract_compiler#CodeWriter#add_decl on <var32:CodeWriter>*/
8383 }
8384 {
8385 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:AbstractCompiler> */
8386 var42 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8387 if (unlikely(var42 == NULL)) {
8388 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8389 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
8390 show_backtrace(1);
8391 }
8392 var40 = var42;
8393 RET_LABEL41:(void)0;
8394 }
8395 }
8396 if (varonce43) {
8397 var44 = varonce43;
8398 } else {
8399 var45 = "#ifdef ANDROID";
8400 var46 = 14;
8401 var47 = string__NativeString__to_s_with_length(var45, var46);
8402 var44 = var47;
8403 varonce43 = var44;
8404 }
8405 {
8406 abstract_compiler__CodeWriter__add_decl(var40, var44); /* Direct call abstract_compiler#CodeWriter#add_decl on <var40:CodeWriter>*/
8407 }
8408 {
8409 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:AbstractCompiler> */
8410 var50 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8411 if (unlikely(var50 == NULL)) {
8412 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8413 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
8414 show_backtrace(1);
8415 }
8416 var48 = var50;
8417 RET_LABEL49:(void)0;
8418 }
8419 }
8420 if (varonce51) {
8421 var52 = varonce51;
8422 } else {
8423 var53 = "\11#include <android/log.h>";
8424 var54 = 25;
8425 var55 = string__NativeString__to_s_with_length(var53, var54);
8426 var52 = var55;
8427 varonce51 = var52;
8428 }
8429 {
8430 abstract_compiler__CodeWriter__add_decl(var48, var52); /* Direct call abstract_compiler#CodeWriter#add_decl on <var48:CodeWriter>*/
8431 }
8432 {
8433 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:AbstractCompiler> */
8434 var58 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8435 if (unlikely(var58 == NULL)) {
8436 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8437 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
8438 show_backtrace(1);
8439 }
8440 var56 = var58;
8441 RET_LABEL57:(void)0;
8442 }
8443 }
8444 if (varonce59) {
8445 var60 = varonce59;
8446 } else {
8447 var61 = "\11#define PRINT_ERROR(...) (void)__android_log_print(ANDROID_LOG_WARN, \"Nit\", __VA_ARGS__)";
8448 var62 = 89;
8449 var63 = string__NativeString__to_s_with_length(var61, var62);
8450 var60 = var63;
8451 varonce59 = var60;
8452 }
8453 {
8454 abstract_compiler__CodeWriter__add_decl(var56, var60); /* Direct call abstract_compiler#CodeWriter#add_decl on <var56:CodeWriter>*/
8455 }
8456 {
8457 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:AbstractCompiler> */
8458 var66 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8459 if (unlikely(var66 == NULL)) {
8460 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8461 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
8462 show_backtrace(1);
8463 }
8464 var64 = var66;
8465 RET_LABEL65:(void)0;
8466 }
8467 }
8468 if (varonce67) {
8469 var68 = varonce67;
8470 } else {
8471 var69 = "#else";
8472 var70 = 5;
8473 var71 = string__NativeString__to_s_with_length(var69, var70);
8474 var68 = var71;
8475 varonce67 = var68;
8476 }
8477 {
8478 abstract_compiler__CodeWriter__add_decl(var64, var68); /* Direct call abstract_compiler#CodeWriter#add_decl on <var64:CodeWriter>*/
8479 }
8480 {
8481 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:AbstractCompiler> */
8482 var74 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8483 if (unlikely(var74 == NULL)) {
8484 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8485 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
8486 show_backtrace(1);
8487 }
8488 var72 = var74;
8489 RET_LABEL73:(void)0;
8490 }
8491 }
8492 if (varonce75) {
8493 var76 = varonce75;
8494 } else {
8495 var77 = "\11#define PRINT_ERROR(...) fprintf(stderr, __VA_ARGS__)";
8496 var78 = 54;
8497 var79 = string__NativeString__to_s_with_length(var77, var78);
8498 var76 = var79;
8499 varonce75 = var76;
8500 }
8501 {
8502 abstract_compiler__CodeWriter__add_decl(var72, var76); /* Direct call abstract_compiler#CodeWriter#add_decl on <var72:CodeWriter>*/
8503 }
8504 {
8505 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:AbstractCompiler> */
8506 var82 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8507 if (unlikely(var82 == NULL)) {
8508 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8509 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
8510 show_backtrace(1);
8511 }
8512 var80 = var82;
8513 RET_LABEL81:(void)0;
8514 }
8515 }
8516 if (varonce83) {
8517 var84 = varonce83;
8518 } else {
8519 var85 = "#endif";
8520 var86 = 6;
8521 var87 = string__NativeString__to_s_with_length(var85, var86);
8522 var84 = var87;
8523 varonce83 = var84;
8524 }
8525 {
8526 abstract_compiler__CodeWriter__add_decl(var80, var84); /* Direct call abstract_compiler#CodeWriter#add_decl on <var80:CodeWriter>*/
8527 }
8528 {
8529 ((void (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__compile_header_structs]))(self) /* compile_header_structs on <self:AbstractCompiler>*/;
8530 }
8531 {
8532 separate_compiler__SeparateCompiler__compile_nitni_structs(self); /* Direct call separate_compiler#SeparateCompiler#compile_nitni_structs on <self:AbstractCompiler>*/
8533 }
8534 {
8535 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:AbstractCompiler> */
8536 var90 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:AbstractCompiler> */
8537 if (unlikely(var90 == NULL)) {
8538 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
8539 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 443);
8540 show_backtrace(1);
8541 }
8542 var88 = var90;
8543 RET_LABEL89:(void)0;
8544 }
8545 }
8546 {
8547 { /* Inline modelbuilder#ModelBuilder#toolcontext (var88) on <var88:ModelBuilder> */
8548 var93 = var88->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var88:ModelBuilder> */
8549 if (unlikely(var93 == NULL)) {
8550 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
8551 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
8552 show_backtrace(1);
8553 }
8554 var91 = var93;
8555 RET_LABEL92:(void)0;
8556 }
8557 }
8558 {
8559 { /* Inline abstract_compiler#ToolContext#opt_no_gcc_directive (var91) on <var91:ToolContext> */
8560 var96 = var91->attrs[COLOR_abstract_compiler__ToolContext___opt_no_gcc_directive].val; /* _opt_no_gcc_directive on <var91:ToolContext> */
8561 if (unlikely(var96 == NULL)) {
8562 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_gcc_directive");
8563 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 64);
8564 show_backtrace(1);
8565 }
8566 var94 = var96;
8567 RET_LABEL95:(void)0;
8568 }
8569 }
8570 {
8571 { /* Inline opts#Option#value (var94) on <var94:OptionArray> */
8572 var99 = var94->attrs[COLOR_opts__Option___value].val; /* _value on <var94:OptionArray> */
8573 var97 = var99;
8574 RET_LABEL98:(void)0;
8575 }
8576 }
8577 var_gccd_disable = var97;
8578 if (varonce101) {
8579 var102 = varonce101;
8580 } else {
8581 var103 = "noreturn";
8582 var104 = 8;
8583 var105 = string__NativeString__to_s_with_length(var103, var104);
8584 var102 = var105;
8585 varonce101 = var102;
8586 }
8587 {
8588 var106 = array__AbstractArrayRead__has(var_gccd_disable, var102);
8589 }
8590 var_ = var106;
8591 if (var106){
8592 var100 = var_;
8593 } else {
8594 if (varonce107) {
8595 var108 = varonce107;
8596 } else {
8597 var109 = "all";
8598 var110 = 3;
8599 var111 = string__NativeString__to_s_with_length(var109, var110);
8600 var108 = var111;
8601 varonce107 = var108;
8602 }
8603 {
8604 var112 = array__AbstractArrayRead__has(var_gccd_disable, var108);
8605 }
8606 var100 = var112;
8607 }
8608 if (var100){
8609 {
8610 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:AbstractCompiler> */
8611 var115 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8612 if (unlikely(var115 == NULL)) {
8613 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8614 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
8615 show_backtrace(1);
8616 }
8617 var113 = var115;
8618 RET_LABEL114:(void)0;
8619 }
8620 }
8621 if (varonce116) {
8622 var117 = varonce116;
8623 } else {
8624 var118 = "void show_backtrace(int);";
8625 var119 = 25;
8626 var120 = string__NativeString__to_s_with_length(var118, var119);
8627 var117 = var120;
8628 varonce116 = var117;
8629 }
8630 {
8631 abstract_compiler__CodeWriter__add_decl(var113, var117); /* Direct call abstract_compiler#CodeWriter#add_decl on <var113:CodeWriter>*/
8632 }
8633 } else {
8634 {
8635 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:AbstractCompiler> */
8636 var123 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8637 if (unlikely(var123 == NULL)) {
8638 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8639 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
8640 show_backtrace(1);
8641 }
8642 var121 = var123;
8643 RET_LABEL122:(void)0;
8644 }
8645 }
8646 if (varonce124) {
8647 var125 = varonce124;
8648 } else {
8649 var126 = "void show_backtrace(int) __attribute__ ((noreturn));";
8650 var127 = 52;
8651 var128 = string__NativeString__to_s_with_length(var126, var127);
8652 var125 = var128;
8653 varonce124 = var125;
8654 }
8655 {
8656 abstract_compiler__CodeWriter__add_decl(var121, var125); /* Direct call abstract_compiler#CodeWriter#add_decl on <var121:CodeWriter>*/
8657 }
8658 }
8659 if (varonce130) {
8660 var131 = varonce130;
8661 } else {
8662 var132 = "likely";
8663 var133 = 6;
8664 var134 = string__NativeString__to_s_with_length(var132, var133);
8665 var131 = var134;
8666 varonce130 = var131;
8667 }
8668 {
8669 var135 = array__AbstractArrayRead__has(var_gccd_disable, var131);
8670 }
8671 var_136 = var135;
8672 if (var135){
8673 var129 = var_136;
8674 } else {
8675 if (varonce137) {
8676 var138 = varonce137;
8677 } else {
8678 var139 = "all";
8679 var140 = 3;
8680 var141 = string__NativeString__to_s_with_length(var139, var140);
8681 var138 = var141;
8682 varonce137 = var138;
8683 }
8684 {
8685 var142 = array__AbstractArrayRead__has(var_gccd_disable, var138);
8686 }
8687 var129 = var142;
8688 }
8689 if (var129){
8690 {
8691 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:AbstractCompiler> */
8692 var145 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8693 if (unlikely(var145 == NULL)) {
8694 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8695 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
8696 show_backtrace(1);
8697 }
8698 var143 = var145;
8699 RET_LABEL144:(void)0;
8700 }
8701 }
8702 if (varonce146) {
8703 var147 = varonce146;
8704 } else {
8705 var148 = "#define likely(x) (x)";
8706 var149 = 27;
8707 var150 = string__NativeString__to_s_with_length(var148, var149);
8708 var147 = var150;
8709 varonce146 = var147;
8710 }
8711 {
8712 abstract_compiler__CodeWriter__add_decl(var143, var147); /* Direct call abstract_compiler#CodeWriter#add_decl on <var143:CodeWriter>*/
8713 }
8714 {
8715 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:AbstractCompiler> */
8716 var153 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8717 if (unlikely(var153 == NULL)) {
8718 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8719 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
8720 show_backtrace(1);
8721 }
8722 var151 = var153;
8723 RET_LABEL152:(void)0;
8724 }
8725 }
8726 if (varonce154) {
8727 var155 = varonce154;
8728 } else {
8729 var156 = "#define unlikely(x) (x)";
8730 var157 = 27;
8731 var158 = string__NativeString__to_s_with_length(var156, var157);
8732 var155 = var158;
8733 varonce154 = var155;
8734 }
8735 {
8736 abstract_compiler__CodeWriter__add_decl(var151, var155); /* Direct call abstract_compiler#CodeWriter#add_decl on <var151:CodeWriter>*/
8737 }
8738 } else {
8739 if (varonce159) {
8740 var160 = varonce159;
8741 } else {
8742 var161 = "correct-likely";
8743 var162 = 14;
8744 var163 = string__NativeString__to_s_with_length(var161, var162);
8745 var160 = var163;
8746 varonce159 = var160;
8747 }
8748 {
8749 var164 = array__AbstractArrayRead__has(var_gccd_disable, var160);
8750 }
8751 if (var164){
8752 {
8753 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:AbstractCompiler> */
8754 var167 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8755 if (unlikely(var167 == NULL)) {
8756 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8757 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
8758 show_backtrace(1);
8759 }
8760 var165 = var167;
8761 RET_LABEL166:(void)0;
8762 }
8763 }
8764 if (varonce168) {
8765 var169 = varonce168;
8766 } else {
8767 var170 = "#define likely(x) __builtin_expect((x),0)";
8768 var171 = 47;
8769 var172 = string__NativeString__to_s_with_length(var170, var171);
8770 var169 = var172;
8771 varonce168 = var169;
8772 }
8773 {
8774 abstract_compiler__CodeWriter__add_decl(var165, var169); /* Direct call abstract_compiler#CodeWriter#add_decl on <var165:CodeWriter>*/
8775 }
8776 {
8777 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:AbstractCompiler> */
8778 var175 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8779 if (unlikely(var175 == NULL)) {
8780 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8781 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
8782 show_backtrace(1);
8783 }
8784 var173 = var175;
8785 RET_LABEL174:(void)0;
8786 }
8787 }
8788 if (varonce176) {
8789 var177 = varonce176;
8790 } else {
8791 var178 = "#define unlikely(x) __builtin_expect((x),1)";
8792 var179 = 47;
8793 var180 = string__NativeString__to_s_with_length(var178, var179);
8794 var177 = var180;
8795 varonce176 = var177;
8796 }
8797 {
8798 abstract_compiler__CodeWriter__add_decl(var173, var177); /* Direct call abstract_compiler#CodeWriter#add_decl on <var173:CodeWriter>*/
8799 }
8800 } else {
8801 {
8802 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:AbstractCompiler> */
8803 var183 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8804 if (unlikely(var183 == NULL)) {
8805 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8806 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
8807 show_backtrace(1);
8808 }
8809 var181 = var183;
8810 RET_LABEL182:(void)0;
8811 }
8812 }
8813 if (varonce184) {
8814 var185 = varonce184;
8815 } else {
8816 var186 = "#define likely(x) __builtin_expect((x),1)";
8817 var187 = 47;
8818 var188 = string__NativeString__to_s_with_length(var186, var187);
8819 var185 = var188;
8820 varonce184 = var185;
8821 }
8822 {
8823 abstract_compiler__CodeWriter__add_decl(var181, var185); /* Direct call abstract_compiler#CodeWriter#add_decl on <var181:CodeWriter>*/
8824 }
8825 {
8826 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:AbstractCompiler> */
8827 var191 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8828 if (unlikely(var191 == NULL)) {
8829 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8830 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
8831 show_backtrace(1);
8832 }
8833 var189 = var191;
8834 RET_LABEL190:(void)0;
8835 }
8836 }
8837 if (varonce192) {
8838 var193 = varonce192;
8839 } else {
8840 var194 = "#define unlikely(x) __builtin_expect((x),0)";
8841 var195 = 47;
8842 var196 = string__NativeString__to_s_with_length(var194, var195);
8843 var193 = var196;
8844 varonce192 = var193;
8845 }
8846 {
8847 abstract_compiler__CodeWriter__add_decl(var189, var193); /* Direct call abstract_compiler#CodeWriter#add_decl on <var189:CodeWriter>*/
8848 }
8849 }
8850 }
8851 {
8852 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:AbstractCompiler> */
8853 var199 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8854 if (unlikely(var199 == NULL)) {
8855 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8856 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
8857 show_backtrace(1);
8858 }
8859 var197 = var199;
8860 RET_LABEL198:(void)0;
8861 }
8862 }
8863 if (varonce200) {
8864 var201 = varonce200;
8865 } else {
8866 var202 = "extern int glob_argc;";
8867 var203 = 21;
8868 var204 = string__NativeString__to_s_with_length(var202, var203);
8869 var201 = var204;
8870 varonce200 = var201;
8871 }
8872 {
8873 abstract_compiler__CodeWriter__add_decl(var197, var201); /* Direct call abstract_compiler#CodeWriter#add_decl on <var197:CodeWriter>*/
8874 }
8875 {
8876 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:AbstractCompiler> */
8877 var207 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8878 if (unlikely(var207 == NULL)) {
8879 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8880 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
8881 show_backtrace(1);
8882 }
8883 var205 = var207;
8884 RET_LABEL206:(void)0;
8885 }
8886 }
8887 if (varonce208) {
8888 var209 = varonce208;
8889 } else {
8890 var210 = "extern char **glob_argv;";
8891 var211 = 24;
8892 var212 = string__NativeString__to_s_with_length(var210, var211);
8893 var209 = var212;
8894 varonce208 = var209;
8895 }
8896 {
8897 abstract_compiler__CodeWriter__add_decl(var205, var209); /* Direct call abstract_compiler#CodeWriter#add_decl on <var205:CodeWriter>*/
8898 }
8899 {
8900 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:AbstractCompiler> */
8901 var215 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8902 if (unlikely(var215 == NULL)) {
8903 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8904 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
8905 show_backtrace(1);
8906 }
8907 var213 = var215;
8908 RET_LABEL214:(void)0;
8909 }
8910 }
8911 if (varonce216) {
8912 var217 = varonce216;
8913 } else {
8914 var218 = "extern val *glob_sys;";
8915 var219 = 21;
8916 var220 = string__NativeString__to_s_with_length(var218, var219);
8917 var217 = var220;
8918 varonce216 = var217;
8919 }
8920 {
8921 abstract_compiler__CodeWriter__add_decl(var213, var217); /* Direct call abstract_compiler#CodeWriter#add_decl on <var213:CodeWriter>*/
8922 }
8923 RET_LABEL:;
8924 }
8925 /* method abstract_compiler#AbstractCompiler#compile_header for (self: Object) */
8926 void VIRTUAL_abstract_compiler__AbstractCompiler__compile_header(val* self) {
8927 abstract_compiler__AbstractCompiler__compile_header(self); /* Direct call abstract_compiler#AbstractCompiler#compile_header on <self:Object(AbstractCompiler)>*/
8928 RET_LABEL:;
8929 }
8930 /* method abstract_compiler#AbstractCompiler#compile_nitni_structs for (self: AbstractCompiler) */
8931 void abstract_compiler__AbstractCompiler__compile_nitni_structs(val* self) {
8932 val* var /* : CodeWriter */;
8933 val* var2 /* : CodeWriter */;
8934 static val* varonce;
8935 val* var3 /* : String */;
8936 char* var4 /* : NativeString */;
8937 long var5 /* : Int */;
8938 val* var6 /* : FlatString */;
8939 {
8940 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:AbstractCompiler> */
8941 var2 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8942 if (unlikely(var2 == NULL)) {
8943 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8944 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
8945 show_backtrace(1);
8946 }
8947 var = var2;
8948 RET_LABEL1:(void)0;
8949 }
8950 }
8951 if (varonce) {
8952 var3 = varonce;
8953 } else {
8954 var4 = "/* Native reference to Nit objects */\n/* This structure is used to represent every Nit type in extern methods and custom C code. */\nstruct nitni_ref {\n\11struct nitni_ref *next,\n\11\11*prev; /* adjacent global references in global list */\n\11int count; /* number of time this global reference has been marked */\n};\n\n/* List of global references from C code to Nit objects */\n/* Instanciated empty at init of Nit system and filled explicitly by user in C code */\nstruct nitni_global_ref_list_t {\n\11struct nitni_ref *head, *tail;\n};\nextern struct nitni_global_ref_list_t *nitni_global_ref_list;\n\n/* Initializer of global reference list */\nextern void nitni_global_ref_list_init();\n\n/* Intern function to add a global reference to the list */\nextern void nitni_global_ref_add( struct nitni_ref *ref );\n\n/* Intern function to remove a global reference from the list */\nextern void nitni_global_ref_remove( struct nitni_ref *ref );\n\n/* Increase count on an existing global reference */\nextern void nitni_global_ref_incr( struct nitni_ref *ref );\n\n/* Decrease count on an existing global reference */\nextern void nitni_global_ref_decr( struct nitni_ref *ref );\n";
8955 var5 = 1146;
8956 var6 = string__NativeString__to_s_with_length(var4, var5);
8957 var3 = var6;
8958 varonce = var3;
8959 }
8960 {
8961 abstract_compiler__CodeWriter__add_decl(var, var3); /* Direct call abstract_compiler#CodeWriter#add_decl on <var:CodeWriter>*/
8962 }
8963 RET_LABEL:;
8964 }
8965 /* method abstract_compiler#AbstractCompiler#compile_nitni_structs for (self: Object) */
8966 void VIRTUAL_abstract_compiler__AbstractCompiler__compile_nitni_structs(val* self) {
8967 abstract_compiler__AbstractCompiler__compile_nitni_structs(self); /* Direct call abstract_compiler#AbstractCompiler#compile_nitni_structs on <self:Object(AbstractCompiler)>*/
8968 RET_LABEL:;
8969 }