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