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