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