Merge: doc: fixed some typos and other misc. corrections
[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 if(catchStack.cursor >= 0){
9 longjmp(catchStack.envs[catchStack.cursor], 1);
10 }
11 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_output");
12 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 30);
13 fatal_exit(1);
14 }
15 var = var1;
16 RET_LABEL:;
17 return var;
18 }
19 /* method abstract_compiler$ToolContext$opt_dir for (self: ToolContext): OptionString */
20 val* nitc__abstract_compiler___ToolContext___opt_dir(val* self) {
21 val* var /* : OptionString */;
22 val* var1 /* : OptionString */;
23 var1 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_dir].val; /* _opt_dir on <self:ToolContext> */
24 if (unlikely(var1 == NULL)) {
25 if(catchStack.cursor >= 0){
26 longjmp(catchStack.envs[catchStack.cursor], 1);
27 }
28 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_dir");
29 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 32);
30 fatal_exit(1);
31 }
32 var = var1;
33 RET_LABEL:;
34 return var;
35 }
36 /* method abstract_compiler$ToolContext$opt_no_cc for (self: ToolContext): OptionBool */
37 val* nitc__abstract_compiler___ToolContext___opt_no_cc(val* self) {
38 val* var /* : OptionBool */;
39 val* var1 /* : OptionBool */;
40 var1 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_cc].val; /* _opt_no_cc on <self:ToolContext> */
41 if (unlikely(var1 == NULL)) {
42 if(catchStack.cursor >= 0){
43 longjmp(catchStack.envs[catchStack.cursor], 1);
44 }
45 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_cc");
46 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 34);
47 fatal_exit(1);
48 }
49 var = var1;
50 RET_LABEL:;
51 return var;
52 }
53 /* method abstract_compiler$ToolContext$opt_no_main for (self: ToolContext): OptionBool */
54 val* nitc__abstract_compiler___ToolContext___opt_no_main(val* self) {
55 val* var /* : OptionBool */;
56 val* var1 /* : OptionBool */;
57 var1 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_main].val; /* _opt_no_main on <self:ToolContext> */
58 if (unlikely(var1 == NULL)) {
59 if(catchStack.cursor >= 0){
60 longjmp(catchStack.envs[catchStack.cursor], 1);
61 }
62 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_main");
63 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 36);
64 fatal_exit(1);
65 }
66 var = var1;
67 RET_LABEL:;
68 return var;
69 }
70 /* method abstract_compiler$ToolContext$opt_make_flags for (self: ToolContext): OptionString */
71 val* nitc__abstract_compiler___ToolContext___opt_make_flags(val* self) {
72 val* var /* : OptionString */;
73 val* var1 /* : OptionString */;
74 var1 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_make_flags].val; /* _opt_make_flags on <self:ToolContext> */
75 if (unlikely(var1 == NULL)) {
76 if(catchStack.cursor >= 0){
77 longjmp(catchStack.envs[catchStack.cursor], 1);
78 }
79 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_make_flags");
80 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 38);
81 fatal_exit(1);
82 }
83 var = var1;
84 RET_LABEL:;
85 return var;
86 }
87 /* method abstract_compiler$ToolContext$opt_max_c_lines for (self: ToolContext): OptionInt */
88 val* nitc__abstract_compiler___ToolContext___opt_max_c_lines(val* self) {
89 val* var /* : OptionInt */;
90 val* var1 /* : OptionInt */;
91 var1 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_max_c_lines].val; /* _opt_max_c_lines on <self:ToolContext> */
92 if (unlikely(var1 == NULL)) {
93 if(catchStack.cursor >= 0){
94 longjmp(catchStack.envs[catchStack.cursor], 1);
95 }
96 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_max_c_lines");
97 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 40);
98 fatal_exit(1);
99 }
100 var = var1;
101 RET_LABEL:;
102 return var;
103 }
104 /* method abstract_compiler$ToolContext$opt_group_c_files for (self: ToolContext): OptionBool */
105 val* nitc__abstract_compiler___ToolContext___opt_group_c_files(val* self) {
106 val* var /* : OptionBool */;
107 val* var1 /* : OptionBool */;
108 var1 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_group_c_files].val; /* _opt_group_c_files on <self:ToolContext> */
109 if (unlikely(var1 == NULL)) {
110 if(catchStack.cursor >= 0){
111 longjmp(catchStack.envs[catchStack.cursor], 1);
112 }
113 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_group_c_files");
114 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 42);
115 fatal_exit(1);
116 }
117 var = var1;
118 RET_LABEL:;
119 return var;
120 }
121 /* method abstract_compiler$ToolContext$opt_compile_dir for (self: ToolContext): OptionString */
122 val* nitc__abstract_compiler___ToolContext___opt_compile_dir(val* self) {
123 val* var /* : OptionString */;
124 val* var1 /* : OptionString */;
125 var1 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_compile_dir].val; /* _opt_compile_dir on <self:ToolContext> */
126 if (unlikely(var1 == NULL)) {
127 if(catchStack.cursor >= 0){
128 longjmp(catchStack.envs[catchStack.cursor], 1);
129 }
130 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_compile_dir");
131 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 44);
132 fatal_exit(1);
133 }
134 var = var1;
135 RET_LABEL:;
136 return var;
137 }
138 /* method abstract_compiler$ToolContext$opt_hardening for (self: ToolContext): OptionBool */
139 val* nitc__abstract_compiler___ToolContext___opt_hardening(val* self) {
140 val* var /* : OptionBool */;
141 val* var1 /* : OptionBool */;
142 var1 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_hardening].val; /* _opt_hardening on <self:ToolContext> */
143 if (unlikely(var1 == NULL)) {
144 if(catchStack.cursor >= 0){
145 longjmp(catchStack.envs[catchStack.cursor], 1);
146 }
147 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_hardening");
148 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 46);
149 fatal_exit(1);
150 }
151 var = var1;
152 RET_LABEL:;
153 return var;
154 }
155 /* method abstract_compiler$ToolContext$opt_no_check_covariance for (self: ToolContext): OptionBool */
156 val* nitc__abstract_compiler___ToolContext___opt_no_check_covariance(val* self) {
157 val* var /* : OptionBool */;
158 val* var1 /* : OptionBool */;
159 var1 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_check_covariance].val; /* _opt_no_check_covariance on <self:ToolContext> */
160 if (unlikely(var1 == NULL)) {
161 if(catchStack.cursor >= 0){
162 longjmp(catchStack.envs[catchStack.cursor], 1);
163 }
164 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_covariance");
165 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 48);
166 fatal_exit(1);
167 }
168 var = var1;
169 RET_LABEL:;
170 return var;
171 }
172 /* method abstract_compiler$ToolContext$opt_no_check_attr_isset for (self: ToolContext): OptionBool */
173 val* nitc__abstract_compiler___ToolContext___opt_no_check_attr_isset(val* self) {
174 val* var /* : OptionBool */;
175 val* var1 /* : OptionBool */;
176 var1 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_check_attr_isset].val; /* _opt_no_check_attr_isset on <self:ToolContext> */
177 if (unlikely(var1 == NULL)) {
178 if(catchStack.cursor >= 0){
179 longjmp(catchStack.envs[catchStack.cursor], 1);
180 }
181 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_attr_isset");
182 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 50);
183 fatal_exit(1);
184 }
185 var = var1;
186 RET_LABEL:;
187 return var;
188 }
189 /* method abstract_compiler$ToolContext$opt_no_check_assert for (self: ToolContext): OptionBool */
190 val* nitc__abstract_compiler___ToolContext___opt_no_check_assert(val* self) {
191 val* var /* : OptionBool */;
192 val* var1 /* : OptionBool */;
193 var1 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_check_assert].val; /* _opt_no_check_assert on <self:ToolContext> */
194 if (unlikely(var1 == NULL)) {
195 if(catchStack.cursor >= 0){
196 longjmp(catchStack.envs[catchStack.cursor], 1);
197 }
198 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_assert");
199 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 52);
200 fatal_exit(1);
201 }
202 var = var1;
203 RET_LABEL:;
204 return var;
205 }
206 /* method abstract_compiler$ToolContext$opt_no_check_autocast for (self: ToolContext): OptionBool */
207 val* nitc__abstract_compiler___ToolContext___opt_no_check_autocast(val* self) {
208 val* var /* : OptionBool */;
209 val* var1 /* : OptionBool */;
210 var1 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_check_autocast].val; /* _opt_no_check_autocast on <self:ToolContext> */
211 if (unlikely(var1 == NULL)) {
212 if(catchStack.cursor >= 0){
213 longjmp(catchStack.envs[catchStack.cursor], 1);
214 }
215 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_autocast");
216 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 54);
217 fatal_exit(1);
218 }
219 var = var1;
220 RET_LABEL:;
221 return var;
222 }
223 /* method abstract_compiler$ToolContext$opt_no_check_null for (self: ToolContext): OptionBool */
224 val* nitc__abstract_compiler___ToolContext___opt_no_check_null(val* self) {
225 val* var /* : OptionBool */;
226 val* var1 /* : OptionBool */;
227 var1 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_check_null].val; /* _opt_no_check_null on <self:ToolContext> */
228 if (unlikely(var1 == NULL)) {
229 if(catchStack.cursor >= 0){
230 longjmp(catchStack.envs[catchStack.cursor], 1);
231 }
232 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_null");
233 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 56);
234 fatal_exit(1);
235 }
236 var = var1;
237 RET_LABEL:;
238 return var;
239 }
240 /* method abstract_compiler$ToolContext$opt_no_check_all for (self: ToolContext): OptionBool */
241 val* nitc__abstract_compiler___ToolContext___opt_no_check_all(val* self) {
242 val* var /* : OptionBool */;
243 val* var1 /* : OptionBool */;
244 var1 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_check_all].val; /* _opt_no_check_all on <self:ToolContext> */
245 if (unlikely(var1 == NULL)) {
246 if(catchStack.cursor >= 0){
247 longjmp(catchStack.envs[catchStack.cursor], 1);
248 }
249 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_all");
250 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 58);
251 fatal_exit(1);
252 }
253 var = var1;
254 RET_LABEL:;
255 return var;
256 }
257 /* method abstract_compiler$ToolContext$opt_typing_test_metrics for (self: ToolContext): OptionBool */
258 val* nitc__abstract_compiler___ToolContext___opt_typing_test_metrics(val* self) {
259 val* var /* : OptionBool */;
260 val* var1 /* : OptionBool */;
261 var1 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_typing_test_metrics].val; /* _opt_typing_test_metrics on <self:ToolContext> */
262 if (unlikely(var1 == NULL)) {
263 if(catchStack.cursor >= 0){
264 longjmp(catchStack.envs[catchStack.cursor], 1);
265 }
266 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_typing_test_metrics");
267 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 60);
268 fatal_exit(1);
269 }
270 var = var1;
271 RET_LABEL:;
272 return var;
273 }
274 /* method abstract_compiler$ToolContext$opt_invocation_metrics for (self: ToolContext): OptionBool */
275 val* nitc__abstract_compiler___ToolContext___opt_invocation_metrics(val* self) {
276 val* var /* : OptionBool */;
277 val* var1 /* : OptionBool */;
278 var1 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_invocation_metrics].val; /* _opt_invocation_metrics on <self:ToolContext> */
279 if (unlikely(var1 == NULL)) {
280 if(catchStack.cursor >= 0){
281 longjmp(catchStack.envs[catchStack.cursor], 1);
282 }
283 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_invocation_metrics");
284 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 62);
285 fatal_exit(1);
286 }
287 var = var1;
288 RET_LABEL:;
289 return var;
290 }
291 /* method abstract_compiler$ToolContext$opt_isset_checks_metrics for (self: ToolContext): OptionBool */
292 val* nitc__abstract_compiler___ToolContext___opt_isset_checks_metrics(val* self) {
293 val* var /* : OptionBool */;
294 val* var1 /* : OptionBool */;
295 var1 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_isset_checks_metrics].val; /* _opt_isset_checks_metrics on <self:ToolContext> */
296 if (unlikely(var1 == NULL)) {
297 if(catchStack.cursor >= 0){
298 longjmp(catchStack.envs[catchStack.cursor], 1);
299 }
300 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_isset_checks_metrics");
301 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 64);
302 fatal_exit(1);
303 }
304 var = var1;
305 RET_LABEL:;
306 return var;
307 }
308 /* method abstract_compiler$ToolContext$opt_no_stacktrace for (self: ToolContext): OptionBool */
309 val* nitc__abstract_compiler___ToolContext___opt_no_stacktrace(val* self) {
310 val* var /* : OptionBool */;
311 val* var1 /* : OptionBool */;
312 var1 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_stacktrace].val; /* _opt_no_stacktrace on <self:ToolContext> */
313 if (unlikely(var1 == NULL)) {
314 if(catchStack.cursor >= 0){
315 longjmp(catchStack.envs[catchStack.cursor], 1);
316 }
317 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_stacktrace");
318 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 66);
319 fatal_exit(1);
320 }
321 var = var1;
322 RET_LABEL:;
323 return var;
324 }
325 /* method abstract_compiler$ToolContext$opt_no_gcc_directive for (self: ToolContext): OptionArray */
326 val* nitc__abstract_compiler___ToolContext___opt_no_gcc_directive(val* self) {
327 val* var /* : OptionArray */;
328 val* var1 /* : OptionArray */;
329 var1 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_gcc_directive].val; /* _opt_no_gcc_directive on <self:ToolContext> */
330 if (unlikely(var1 == NULL)) {
331 if(catchStack.cursor >= 0){
332 longjmp(catchStack.envs[catchStack.cursor], 1);
333 }
334 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_gcc_directive");
335 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 68);
336 fatal_exit(1);
337 }
338 var = var1;
339 RET_LABEL:;
340 return var;
341 }
342 /* method abstract_compiler$ToolContext$opt_release for (self: ToolContext): OptionBool */
343 val* nitc__abstract_compiler___ToolContext___opt_release(val* self) {
344 val* var /* : OptionBool */;
345 val* var1 /* : OptionBool */;
346 var1 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_release].val; /* _opt_release on <self:ToolContext> */
347 if (unlikely(var1 == NULL)) {
348 if(catchStack.cursor >= 0){
349 longjmp(catchStack.envs[catchStack.cursor], 1);
350 }
351 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_release");
352 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 70);
353 fatal_exit(1);
354 }
355 var = var1;
356 RET_LABEL:;
357 return var;
358 }
359 /* method abstract_compiler$ToolContext$opt_debug for (self: ToolContext): OptionBool */
360 val* nitc__abstract_compiler___ToolContext___opt_debug(val* self) {
361 val* var /* : OptionBool */;
362 val* var1 /* : OptionBool */;
363 var1 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_debug].val; /* _opt_debug on <self:ToolContext> */
364 if (unlikely(var1 == NULL)) {
365 if(catchStack.cursor >= 0){
366 longjmp(catchStack.envs[catchStack.cursor], 1);
367 }
368 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_debug");
369 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 72);
370 fatal_exit(1);
371 }
372 var = var1;
373 RET_LABEL:;
374 return var;
375 }
376 /* method abstract_compiler$ToolContext$init for (self: ToolContext) */
377 void nitc__abstract_compiler___ToolContext___core__kernel__Object__init(val* self) {
378 val* var /* : OptionContext */;
379 val* var2 /* : OptionContext */;
380 val* var3 /* : OptionString */;
381 val* var5 /* : OptionString */;
382 val* var6 /* : OptionString */;
383 val* var8 /* : OptionString */;
384 val* var9 /* : OptionBool */;
385 val* var11 /* : OptionBool */;
386 val* var12 /* : OptionBool */;
387 val* var14 /* : OptionBool */;
388 val* var15 /* : OptionString */;
389 val* var17 /* : OptionString */;
390 val* var18 /* : OptionString */;
391 val* var20 /* : OptionString */;
392 val* var21 /* : OptionBool */;
393 val* var23 /* : OptionBool */;
394 val* var24 /* : Array[Option] */;
395 val* var25 /* : NativeArray[Option] */;
396 val* var26 /* : OptionContext */;
397 val* var28 /* : OptionContext */;
398 val* var29 /* : OptionBool */;
399 val* var31 /* : OptionBool */;
400 val* var32 /* : OptionBool */;
401 val* var34 /* : OptionBool */;
402 val* var35 /* : OptionBool */;
403 val* var37 /* : OptionBool */;
404 val* var38 /* : OptionBool */;
405 val* var40 /* : OptionBool */;
406 val* var41 /* : OptionBool */;
407 val* var43 /* : OptionBool */;
408 val* var44 /* : OptionBool */;
409 val* var46 /* : OptionBool */;
410 val* var47 /* : Array[Option] */;
411 val* var48 /* : NativeArray[Option] */;
412 val* var49 /* : OptionContext */;
413 val* var51 /* : OptionContext */;
414 val* var52 /* : OptionBool */;
415 val* var54 /* : OptionBool */;
416 val* var55 /* : OptionBool */;
417 val* var57 /* : OptionBool */;
418 val* var58 /* : OptionBool */;
419 val* var60 /* : OptionBool */;
420 val* var61 /* : Array[Option] */;
421 val* var62 /* : NativeArray[Option] */;
422 val* var63 /* : OptionContext */;
423 val* var65 /* : OptionContext */;
424 val* var66 /* : OptionBool */;
425 val* var68 /* : OptionBool */;
426 val* var69 /* : Array[Option] */;
427 val* var70 /* : NativeArray[Option] */;
428 val* var71 /* : OptionContext */;
429 val* var73 /* : OptionContext */;
430 val* var74 /* : OptionArray */;
431 val* var76 /* : OptionArray */;
432 val* var77 /* : Array[Option] */;
433 val* var78 /* : NativeArray[Option] */;
434 val* var79 /* : OptionContext */;
435 val* var81 /* : OptionContext */;
436 val* var82 /* : OptionBool */;
437 val* var84 /* : OptionBool */;
438 val* var85 /* : Array[Option] */;
439 val* var86 /* : NativeArray[Option] */;
440 val* var87 /* : OptionContext */;
441 val* var89 /* : OptionContext */;
442 val* var90 /* : OptionInt */;
443 val* var92 /* : OptionInt */;
444 val* var93 /* : OptionBool */;
445 val* var95 /* : OptionBool */;
446 val* var96 /* : Array[Option] */;
447 val* var97 /* : NativeArray[Option] */;
448 val* var98 /* : OptionContext */;
449 val* var100 /* : OptionContext */;
450 val* var101 /* : OptionBool */;
451 val* var103 /* : OptionBool */;
452 val* var104 /* : Array[Option] */;
453 val* var105 /* : NativeArray[Option] */;
454 val* var106 /* : OptionBool */;
455 val* var108 /* : OptionBool */;
456 {
457 ((void(*)(val* self))(self->class->vft[COLOR_nitc__abstract_compiler___ToolContext___core__kernel__Object__init]))(self); /* init on <self:ToolContext>*/
458 }
459 {
460 { /* Inline toolcontext$ToolContext$option_context (self) on <self:ToolContext> */
461 var2 = self->attrs[COLOR_nitc__toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
462 if (unlikely(var2 == NULL)) {
463 if(catchStack.cursor >= 0){
464 longjmp(catchStack.envs[catchStack.cursor], 1);
465 }
466 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
467 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__toolcontext, 357);
468 fatal_exit(1);
469 }
470 var = var2;
471 RET_LABEL1:(void)0;
472 }
473 }
474 {
475 { /* Inline abstract_compiler$ToolContext$opt_output (self) on <self:ToolContext> */
476 var5 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_output].val; /* _opt_output on <self:ToolContext> */
477 if (unlikely(var5 == NULL)) {
478 if(catchStack.cursor >= 0){
479 longjmp(catchStack.envs[catchStack.cursor], 1);
480 }
481 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_output");
482 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 30);
483 fatal_exit(1);
484 }
485 var3 = var5;
486 RET_LABEL4:(void)0;
487 }
488 }
489 {
490 { /* Inline abstract_compiler$ToolContext$opt_dir (self) on <self:ToolContext> */
491 var8 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_dir].val; /* _opt_dir on <self:ToolContext> */
492 if (unlikely(var8 == NULL)) {
493 if(catchStack.cursor >= 0){
494 longjmp(catchStack.envs[catchStack.cursor], 1);
495 }
496 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_dir");
497 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 32);
498 fatal_exit(1);
499 }
500 var6 = var8;
501 RET_LABEL7:(void)0;
502 }
503 }
504 {
505 { /* Inline abstract_compiler$ToolContext$opt_no_cc (self) on <self:ToolContext> */
506 var11 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_cc].val; /* _opt_no_cc on <self:ToolContext> */
507 if (unlikely(var11 == NULL)) {
508 if(catchStack.cursor >= 0){
509 longjmp(catchStack.envs[catchStack.cursor], 1);
510 }
511 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_cc");
512 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 34);
513 fatal_exit(1);
514 }
515 var9 = var11;
516 RET_LABEL10:(void)0;
517 }
518 }
519 {
520 { /* Inline abstract_compiler$ToolContext$opt_no_main (self) on <self:ToolContext> */
521 var14 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_main].val; /* _opt_no_main on <self:ToolContext> */
522 if (unlikely(var14 == NULL)) {
523 if(catchStack.cursor >= 0){
524 longjmp(catchStack.envs[catchStack.cursor], 1);
525 }
526 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_main");
527 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 36);
528 fatal_exit(1);
529 }
530 var12 = var14;
531 RET_LABEL13:(void)0;
532 }
533 }
534 {
535 { /* Inline abstract_compiler$ToolContext$opt_make_flags (self) on <self:ToolContext> */
536 var17 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_make_flags].val; /* _opt_make_flags on <self:ToolContext> */
537 if (unlikely(var17 == NULL)) {
538 if(catchStack.cursor >= 0){
539 longjmp(catchStack.envs[catchStack.cursor], 1);
540 }
541 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_make_flags");
542 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 38);
543 fatal_exit(1);
544 }
545 var15 = var17;
546 RET_LABEL16:(void)0;
547 }
548 }
549 {
550 { /* Inline abstract_compiler$ToolContext$opt_compile_dir (self) on <self:ToolContext> */
551 var20 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_compile_dir].val; /* _opt_compile_dir on <self:ToolContext> */
552 if (unlikely(var20 == NULL)) {
553 if(catchStack.cursor >= 0){
554 longjmp(catchStack.envs[catchStack.cursor], 1);
555 }
556 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_compile_dir");
557 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 44);
558 fatal_exit(1);
559 }
560 var18 = var20;
561 RET_LABEL19:(void)0;
562 }
563 }
564 {
565 { /* Inline abstract_compiler$ToolContext$opt_hardening (self) on <self:ToolContext> */
566 var23 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_hardening].val; /* _opt_hardening on <self:ToolContext> */
567 if (unlikely(var23 == NULL)) {
568 if(catchStack.cursor >= 0){
569 longjmp(catchStack.envs[catchStack.cursor], 1);
570 }
571 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_hardening");
572 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 46);
573 fatal_exit(1);
574 }
575 var21 = var23;
576 RET_LABEL22:(void)0;
577 }
578 }
579 var24 = NEW_core__Array(&type_core__Array__opts__Option);
580 { /* var24 = array_instance Array[Option] */
581 var25 = NEW_core__NativeArray((int)7l, &type_core__NativeArray__opts__Option);
582 ((struct instance_core__NativeArray*)var25)->values[0] = (val*) var3;
583 ((struct instance_core__NativeArray*)var25)->values[1] = (val*) var6;
584 ((struct instance_core__NativeArray*)var25)->values[2] = (val*) var9;
585 ((struct instance_core__NativeArray*)var25)->values[3] = (val*) var12;
586 ((struct instance_core__NativeArray*)var25)->values[4] = (val*) var15;
587 ((struct instance_core__NativeArray*)var25)->values[5] = (val*) var18;
588 ((struct instance_core__NativeArray*)var25)->values[6] = (val*) var21;
589 {
590 ((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]>*/
591 }
592 }
593 {
594 opts___opts__OptionContext___add_option(var, var24); /* Direct call opts$OptionContext$add_option on <var:OptionContext>*/
595 }
596 {
597 { /* Inline toolcontext$ToolContext$option_context (self) on <self:ToolContext> */
598 var28 = self->attrs[COLOR_nitc__toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
599 if (unlikely(var28 == NULL)) {
600 if(catchStack.cursor >= 0){
601 longjmp(catchStack.envs[catchStack.cursor], 1);
602 }
603 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
604 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__toolcontext, 357);
605 fatal_exit(1);
606 }
607 var26 = var28;
608 RET_LABEL27:(void)0;
609 }
610 }
611 {
612 { /* Inline abstract_compiler$ToolContext$opt_no_check_covariance (self) on <self:ToolContext> */
613 var31 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_check_covariance].val; /* _opt_no_check_covariance on <self:ToolContext> */
614 if (unlikely(var31 == NULL)) {
615 if(catchStack.cursor >= 0){
616 longjmp(catchStack.envs[catchStack.cursor], 1);
617 }
618 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_covariance");
619 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 48);
620 fatal_exit(1);
621 }
622 var29 = var31;
623 RET_LABEL30:(void)0;
624 }
625 }
626 {
627 { /* Inline abstract_compiler$ToolContext$opt_no_check_attr_isset (self) on <self:ToolContext> */
628 var34 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_check_attr_isset].val; /* _opt_no_check_attr_isset on <self:ToolContext> */
629 if (unlikely(var34 == NULL)) {
630 if(catchStack.cursor >= 0){
631 longjmp(catchStack.envs[catchStack.cursor], 1);
632 }
633 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_attr_isset");
634 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 50);
635 fatal_exit(1);
636 }
637 var32 = var34;
638 RET_LABEL33:(void)0;
639 }
640 }
641 {
642 { /* Inline abstract_compiler$ToolContext$opt_no_check_assert (self) on <self:ToolContext> */
643 var37 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_check_assert].val; /* _opt_no_check_assert on <self:ToolContext> */
644 if (unlikely(var37 == NULL)) {
645 if(catchStack.cursor >= 0){
646 longjmp(catchStack.envs[catchStack.cursor], 1);
647 }
648 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_assert");
649 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 52);
650 fatal_exit(1);
651 }
652 var35 = var37;
653 RET_LABEL36:(void)0;
654 }
655 }
656 {
657 { /* Inline abstract_compiler$ToolContext$opt_no_check_autocast (self) on <self:ToolContext> */
658 var40 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_check_autocast].val; /* _opt_no_check_autocast on <self:ToolContext> */
659 if (unlikely(var40 == NULL)) {
660 if(catchStack.cursor >= 0){
661 longjmp(catchStack.envs[catchStack.cursor], 1);
662 }
663 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_autocast");
664 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 54);
665 fatal_exit(1);
666 }
667 var38 = var40;
668 RET_LABEL39:(void)0;
669 }
670 }
671 {
672 { /* Inline abstract_compiler$ToolContext$opt_no_check_null (self) on <self:ToolContext> */
673 var43 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_check_null].val; /* _opt_no_check_null on <self:ToolContext> */
674 if (unlikely(var43 == NULL)) {
675 if(catchStack.cursor >= 0){
676 longjmp(catchStack.envs[catchStack.cursor], 1);
677 }
678 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_null");
679 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 56);
680 fatal_exit(1);
681 }
682 var41 = var43;
683 RET_LABEL42:(void)0;
684 }
685 }
686 {
687 { /* Inline abstract_compiler$ToolContext$opt_no_check_all (self) on <self:ToolContext> */
688 var46 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_check_all].val; /* _opt_no_check_all on <self:ToolContext> */
689 if (unlikely(var46 == NULL)) {
690 if(catchStack.cursor >= 0){
691 longjmp(catchStack.envs[catchStack.cursor], 1);
692 }
693 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_all");
694 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 58);
695 fatal_exit(1);
696 }
697 var44 = var46;
698 RET_LABEL45:(void)0;
699 }
700 }
701 var47 = NEW_core__Array(&type_core__Array__opts__Option);
702 { /* var47 = array_instance Array[Option] */
703 var48 = NEW_core__NativeArray((int)6l, &type_core__NativeArray__opts__Option);
704 ((struct instance_core__NativeArray*)var48)->values[0] = (val*) var29;
705 ((struct instance_core__NativeArray*)var48)->values[1] = (val*) var32;
706 ((struct instance_core__NativeArray*)var48)->values[2] = (val*) var35;
707 ((struct instance_core__NativeArray*)var48)->values[3] = (val*) var38;
708 ((struct instance_core__NativeArray*)var48)->values[4] = (val*) var41;
709 ((struct instance_core__NativeArray*)var48)->values[5] = (val*) var44;
710 {
711 ((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]>*/
712 }
713 }
714 {
715 opts___opts__OptionContext___add_option(var26, var47); /* Direct call opts$OptionContext$add_option on <var26:OptionContext>*/
716 }
717 {
718 { /* Inline toolcontext$ToolContext$option_context (self) on <self:ToolContext> */
719 var51 = self->attrs[COLOR_nitc__toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
720 if (unlikely(var51 == NULL)) {
721 if(catchStack.cursor >= 0){
722 longjmp(catchStack.envs[catchStack.cursor], 1);
723 }
724 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
725 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__toolcontext, 357);
726 fatal_exit(1);
727 }
728 var49 = var51;
729 RET_LABEL50:(void)0;
730 }
731 }
732 {
733 { /* Inline abstract_compiler$ToolContext$opt_typing_test_metrics (self) on <self:ToolContext> */
734 var54 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_typing_test_metrics].val; /* _opt_typing_test_metrics on <self:ToolContext> */
735 if (unlikely(var54 == NULL)) {
736 if(catchStack.cursor >= 0){
737 longjmp(catchStack.envs[catchStack.cursor], 1);
738 }
739 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_typing_test_metrics");
740 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 60);
741 fatal_exit(1);
742 }
743 var52 = var54;
744 RET_LABEL53:(void)0;
745 }
746 }
747 {
748 { /* Inline abstract_compiler$ToolContext$opt_invocation_metrics (self) on <self:ToolContext> */
749 var57 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_invocation_metrics].val; /* _opt_invocation_metrics on <self:ToolContext> */
750 if (unlikely(var57 == NULL)) {
751 if(catchStack.cursor >= 0){
752 longjmp(catchStack.envs[catchStack.cursor], 1);
753 }
754 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_invocation_metrics");
755 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 62);
756 fatal_exit(1);
757 }
758 var55 = var57;
759 RET_LABEL56:(void)0;
760 }
761 }
762 {
763 { /* Inline abstract_compiler$ToolContext$opt_isset_checks_metrics (self) on <self:ToolContext> */
764 var60 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_isset_checks_metrics].val; /* _opt_isset_checks_metrics on <self:ToolContext> */
765 if (unlikely(var60 == NULL)) {
766 if(catchStack.cursor >= 0){
767 longjmp(catchStack.envs[catchStack.cursor], 1);
768 }
769 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_isset_checks_metrics");
770 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 64);
771 fatal_exit(1);
772 }
773 var58 = var60;
774 RET_LABEL59:(void)0;
775 }
776 }
777 var61 = NEW_core__Array(&type_core__Array__opts__Option);
778 { /* var61 = array_instance Array[Option] */
779 var62 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__opts__Option);
780 ((struct instance_core__NativeArray*)var62)->values[0] = (val*) var52;
781 ((struct instance_core__NativeArray*)var62)->values[1] = (val*) var55;
782 ((struct instance_core__NativeArray*)var62)->values[2] = (val*) var58;
783 {
784 ((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]>*/
785 }
786 }
787 {
788 opts___opts__OptionContext___add_option(var49, var61); /* Direct call opts$OptionContext$add_option on <var49:OptionContext>*/
789 }
790 {
791 { /* Inline toolcontext$ToolContext$option_context (self) on <self:ToolContext> */
792 var65 = self->attrs[COLOR_nitc__toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
793 if (unlikely(var65 == NULL)) {
794 if(catchStack.cursor >= 0){
795 longjmp(catchStack.envs[catchStack.cursor], 1);
796 }
797 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
798 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__toolcontext, 357);
799 fatal_exit(1);
800 }
801 var63 = var65;
802 RET_LABEL64:(void)0;
803 }
804 }
805 {
806 { /* Inline abstract_compiler$ToolContext$opt_no_stacktrace (self) on <self:ToolContext> */
807 var68 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_stacktrace].val; /* _opt_no_stacktrace on <self:ToolContext> */
808 if (unlikely(var68 == NULL)) {
809 if(catchStack.cursor >= 0){
810 longjmp(catchStack.envs[catchStack.cursor], 1);
811 }
812 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_stacktrace");
813 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 66);
814 fatal_exit(1);
815 }
816 var66 = var68;
817 RET_LABEL67:(void)0;
818 }
819 }
820 var69 = NEW_core__Array(&type_core__Array__opts__Option);
821 { /* var69 = array_instance Array[Option] */
822 var70 = NEW_core__NativeArray((int)1l, &type_core__NativeArray__opts__Option);
823 ((struct instance_core__NativeArray*)var70)->values[0] = (val*) var66;
824 {
825 ((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]>*/
826 }
827 }
828 {
829 opts___opts__OptionContext___add_option(var63, var69); /* Direct call opts$OptionContext$add_option on <var63:OptionContext>*/
830 }
831 {
832 { /* Inline toolcontext$ToolContext$option_context (self) on <self:ToolContext> */
833 var73 = self->attrs[COLOR_nitc__toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
834 if (unlikely(var73 == NULL)) {
835 if(catchStack.cursor >= 0){
836 longjmp(catchStack.envs[catchStack.cursor], 1);
837 }
838 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
839 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__toolcontext, 357);
840 fatal_exit(1);
841 }
842 var71 = var73;
843 RET_LABEL72:(void)0;
844 }
845 }
846 {
847 { /* Inline abstract_compiler$ToolContext$opt_no_gcc_directive (self) on <self:ToolContext> */
848 var76 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_gcc_directive].val; /* _opt_no_gcc_directive on <self:ToolContext> */
849 if (unlikely(var76 == NULL)) {
850 if(catchStack.cursor >= 0){
851 longjmp(catchStack.envs[catchStack.cursor], 1);
852 }
853 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_gcc_directive");
854 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 68);
855 fatal_exit(1);
856 }
857 var74 = var76;
858 RET_LABEL75:(void)0;
859 }
860 }
861 var77 = NEW_core__Array(&type_core__Array__opts__Option);
862 { /* var77 = array_instance Array[Option] */
863 var78 = NEW_core__NativeArray((int)1l, &type_core__NativeArray__opts__Option);
864 ((struct instance_core__NativeArray*)var78)->values[0] = (val*) var74;
865 {
866 ((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]>*/
867 }
868 }
869 {
870 opts___opts__OptionContext___add_option(var71, var77); /* Direct call opts$OptionContext$add_option on <var71:OptionContext>*/
871 }
872 {
873 { /* Inline toolcontext$ToolContext$option_context (self) on <self:ToolContext> */
874 var81 = self->attrs[COLOR_nitc__toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
875 if (unlikely(var81 == NULL)) {
876 if(catchStack.cursor >= 0){
877 longjmp(catchStack.envs[catchStack.cursor], 1);
878 }
879 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
880 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__toolcontext, 357);
881 fatal_exit(1);
882 }
883 var79 = var81;
884 RET_LABEL80:(void)0;
885 }
886 }
887 {
888 { /* Inline abstract_compiler$ToolContext$opt_release (self) on <self:ToolContext> */
889 var84 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_release].val; /* _opt_release on <self:ToolContext> */
890 if (unlikely(var84 == NULL)) {
891 if(catchStack.cursor >= 0){
892 longjmp(catchStack.envs[catchStack.cursor], 1);
893 }
894 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_release");
895 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 70);
896 fatal_exit(1);
897 }
898 var82 = var84;
899 RET_LABEL83:(void)0;
900 }
901 }
902 var85 = NEW_core__Array(&type_core__Array__opts__Option);
903 { /* var85 = array_instance Array[Option] */
904 var86 = NEW_core__NativeArray((int)1l, &type_core__NativeArray__opts__Option);
905 ((struct instance_core__NativeArray*)var86)->values[0] = (val*) var82;
906 {
907 ((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]>*/
908 }
909 }
910 {
911 opts___opts__OptionContext___add_option(var79, var85); /* Direct call opts$OptionContext$add_option on <var79:OptionContext>*/
912 }
913 {
914 { /* Inline toolcontext$ToolContext$option_context (self) on <self:ToolContext> */
915 var89 = self->attrs[COLOR_nitc__toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
916 if (unlikely(var89 == NULL)) {
917 if(catchStack.cursor >= 0){
918 longjmp(catchStack.envs[catchStack.cursor], 1);
919 }
920 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
921 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__toolcontext, 357);
922 fatal_exit(1);
923 }
924 var87 = var89;
925 RET_LABEL88:(void)0;
926 }
927 }
928 {
929 { /* Inline abstract_compiler$ToolContext$opt_max_c_lines (self) on <self:ToolContext> */
930 var92 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_max_c_lines].val; /* _opt_max_c_lines on <self:ToolContext> */
931 if (unlikely(var92 == NULL)) {
932 if(catchStack.cursor >= 0){
933 longjmp(catchStack.envs[catchStack.cursor], 1);
934 }
935 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_max_c_lines");
936 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 40);
937 fatal_exit(1);
938 }
939 var90 = var92;
940 RET_LABEL91:(void)0;
941 }
942 }
943 {
944 { /* Inline abstract_compiler$ToolContext$opt_group_c_files (self) on <self:ToolContext> */
945 var95 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_group_c_files].val; /* _opt_group_c_files on <self:ToolContext> */
946 if (unlikely(var95 == NULL)) {
947 if(catchStack.cursor >= 0){
948 longjmp(catchStack.envs[catchStack.cursor], 1);
949 }
950 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_group_c_files");
951 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 42);
952 fatal_exit(1);
953 }
954 var93 = var95;
955 RET_LABEL94:(void)0;
956 }
957 }
958 var96 = NEW_core__Array(&type_core__Array__opts__Option);
959 { /* var96 = array_instance Array[Option] */
960 var97 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__opts__Option);
961 ((struct instance_core__NativeArray*)var97)->values[0] = (val*) var90;
962 ((struct instance_core__NativeArray*)var97)->values[1] = (val*) var93;
963 {
964 ((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]>*/
965 }
966 }
967 {
968 opts___opts__OptionContext___add_option(var87, var96); /* Direct call opts$OptionContext$add_option on <var87:OptionContext>*/
969 }
970 {
971 { /* Inline toolcontext$ToolContext$option_context (self) on <self:ToolContext> */
972 var100 = self->attrs[COLOR_nitc__toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
973 if (unlikely(var100 == NULL)) {
974 if(catchStack.cursor >= 0){
975 longjmp(catchStack.envs[catchStack.cursor], 1);
976 }
977 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
978 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__toolcontext, 357);
979 fatal_exit(1);
980 }
981 var98 = var100;
982 RET_LABEL99:(void)0;
983 }
984 }
985 {
986 { /* Inline abstract_compiler$ToolContext$opt_debug (self) on <self:ToolContext> */
987 var103 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_debug].val; /* _opt_debug on <self:ToolContext> */
988 if (unlikely(var103 == NULL)) {
989 if(catchStack.cursor >= 0){
990 longjmp(catchStack.envs[catchStack.cursor], 1);
991 }
992 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_debug");
993 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 72);
994 fatal_exit(1);
995 }
996 var101 = var103;
997 RET_LABEL102:(void)0;
998 }
999 }
1000 var104 = NEW_core__Array(&type_core__Array__opts__Option);
1001 { /* var104 = array_instance Array[Option] */
1002 var105 = NEW_core__NativeArray((int)1l, &type_core__NativeArray__opts__Option);
1003 ((struct instance_core__NativeArray*)var105)->values[0] = (val*) var101;
1004 {
1005 ((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]>*/
1006 }
1007 }
1008 {
1009 opts___opts__OptionContext___add_option(var98, var104); /* Direct call opts$OptionContext$add_option on <var98:OptionContext>*/
1010 }
1011 {
1012 { /* Inline abstract_compiler$ToolContext$opt_no_main (self) on <self:ToolContext> */
1013 var108 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_main].val; /* _opt_no_main on <self:ToolContext> */
1014 if (unlikely(var108 == NULL)) {
1015 if(catchStack.cursor >= 0){
1016 longjmp(catchStack.envs[catchStack.cursor], 1);
1017 }
1018 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_main");
1019 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 36);
1020 fatal_exit(1);
1021 }
1022 var106 = var108;
1023 RET_LABEL107:(void)0;
1024 }
1025 }
1026 {
1027 { /* Inline opts$Option$hidden= (var106,1) on <var106:OptionBool> */
1028 var106->attrs[COLOR_opts__Option___hidden].s = 1; /* _hidden on <var106:OptionBool> */
1029 RET_LABEL109:(void)0;
1030 }
1031 }
1032 RET_LABEL:;
1033 }
1034 /* method abstract_compiler$ToolContext$process_options for (self: ToolContext, Sequence[String]) */
1035 void nitc__abstract_compiler___ToolContext___process_options(val* self, val* p0) {
1036 val* var_args /* var args: Sequence[String] */;
1037 short int var /* : Bool */;
1038 val* var1 /* : OptionString */;
1039 val* var3 /* : OptionString */;
1040 val* var4 /* : nullable Object */;
1041 val* var6 /* : nullable Object */;
1042 short int var7 /* : Bool */;
1043 short int var8 /* : Bool */;
1044 val* var_other /* var other: nullable Object */;
1045 short int var10 /* : Bool */;
1046 short int var11 /* : Bool */;
1047 short int var_ /* var : Bool */;
1048 val* var12 /* : OptionString */;
1049 val* var14 /* : OptionString */;
1050 val* var15 /* : nullable Object */;
1051 val* var17 /* : nullable Object */;
1052 short int var18 /* : Bool */;
1053 short int var19 /* : Bool */;
1054 short int var21 /* : Bool */;
1055 short int var22 /* : Bool */;
1056 val* var23 /* : Sys */;
1057 static val* varonce;
1058 val* var24 /* : String */;
1059 char* var25 /* : CString */;
1060 val* var26 /* : String */;
1061 val* var27 /* : nullable Int */;
1062 val* var28 /* : nullable Int */;
1063 val* var29 /* : nullable Bool */;
1064 val* var30 /* : nullable Bool */;
1065 val* var31 /* : Sys */;
1066 val* var33 /* : OptionBool */;
1067 val* var35 /* : OptionBool */;
1068 val* var36 /* : nullable Object */;
1069 val* var38 /* : nullable Object */;
1070 short int var39 /* : Bool */;
1071 val* var40 /* : OptionBool */;
1072 val* var42 /* : OptionBool */;
1073 short int var44 /* : Bool */;
1074 int cltype;
1075 int idtype;
1076 const struct type* type_struct;
1077 const char* var_class_name;
1078 val* var45 /* : nullable Object */;
1079 val* var46 /* : OptionBool */;
1080 val* var48 /* : OptionBool */;
1081 short int var50 /* : Bool */;
1082 int cltype51;
1083 int idtype52;
1084 const struct type* type_struct53;
1085 const char* var_class_name54;
1086 val* var55 /* : nullable Object */;
1087 val* var56 /* : OptionBool */;
1088 val* var58 /* : OptionBool */;
1089 short int var60 /* : Bool */;
1090 int cltype61;
1091 int idtype62;
1092 const struct type* type_struct63;
1093 const char* var_class_name64;
1094 val* var65 /* : nullable Object */;
1095 val* var66 /* : OptionBool */;
1096 val* var68 /* : OptionBool */;
1097 short int var70 /* : Bool */;
1098 int cltype71;
1099 int idtype72;
1100 const struct type* type_struct73;
1101 const char* var_class_name74;
1102 val* var75 /* : nullable Object */;
1103 val* var76 /* : OptionBool */;
1104 val* var78 /* : OptionBool */;
1105 short int var80 /* : Bool */;
1106 int cltype81;
1107 int idtype82;
1108 const struct type* type_struct83;
1109 const char* var_class_name84;
1110 val* var85 /* : nullable Object */;
1111 var_args = p0;
1112 {
1113 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nitc__abstract_compiler___ToolContext___process_options]))(self, p0); /* process_options on <self:ToolContext>*/
1114 }
1115 {
1116 { /* Inline abstract_compiler$ToolContext$opt_output (self) on <self:ToolContext> */
1117 var3 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_output].val; /* _opt_output on <self:ToolContext> */
1118 if (unlikely(var3 == NULL)) {
1119 if(catchStack.cursor >= 0){
1120 longjmp(catchStack.envs[catchStack.cursor], 1);
1121 }
1122 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_output");
1123 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 30);
1124 fatal_exit(1);
1125 }
1126 var1 = var3;
1127 RET_LABEL2:(void)0;
1128 }
1129 }
1130 {
1131 { /* Inline opts$Option$value (var1) on <var1:OptionString> */
1132 var6 = var1->attrs[COLOR_opts__Option___value].val; /* _value on <var1:OptionString> */
1133 var4 = var6;
1134 RET_LABEL5:(void)0;
1135 }
1136 }
1137 if (var4 == NULL) {
1138 var7 = 0; /* is null */
1139 } else {
1140 var7 = 1; /* arg is null and recv is not */
1141 }
1142 if (0) {
1143 { /* Inline kernel$Object$!= (var4,((val*)NULL)) on <var4:nullable Object(nullable String)> */
1144 var_other = ((val*)NULL);
1145 {
1146 var10 = ((short int(*)(val* self, val* p0))(var4->class->vft[COLOR_core__kernel__Object___61d_61d]))(var4, var_other); /* == on <var4:nullable Object(String)>*/
1147 }
1148 var11 = !var10;
1149 var8 = var11;
1150 goto RET_LABEL9;
1151 RET_LABEL9:(void)0;
1152 }
1153 var7 = var8;
1154 }
1155 var_ = var7;
1156 if (var7){
1157 {
1158 { /* Inline abstract_compiler$ToolContext$opt_dir (self) on <self:ToolContext> */
1159 var14 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_dir].val; /* _opt_dir on <self:ToolContext> */
1160 if (unlikely(var14 == NULL)) {
1161 if(catchStack.cursor >= 0){
1162 longjmp(catchStack.envs[catchStack.cursor], 1);
1163 }
1164 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_dir");
1165 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 32);
1166 fatal_exit(1);
1167 }
1168 var12 = var14;
1169 RET_LABEL13:(void)0;
1170 }
1171 }
1172 {
1173 { /* Inline opts$Option$value (var12) on <var12:OptionString> */
1174 var17 = var12->attrs[COLOR_opts__Option___value].val; /* _value on <var12:OptionString> */
1175 var15 = var17;
1176 RET_LABEL16:(void)0;
1177 }
1178 }
1179 if (var15 == NULL) {
1180 var18 = 0; /* is null */
1181 } else {
1182 var18 = 1; /* arg is null and recv is not */
1183 }
1184 if (0) {
1185 { /* Inline kernel$Object$!= (var15,((val*)NULL)) on <var15:nullable Object(nullable String)> */
1186 var_other = ((val*)NULL);
1187 {
1188 var21 = ((short int(*)(val* self, val* p0))(var15->class->vft[COLOR_core__kernel__Object___61d_61d]))(var15, var_other); /* == on <var15:nullable Object(String)>*/
1189 }
1190 var22 = !var21;
1191 var19 = var22;
1192 goto RET_LABEL20;
1193 RET_LABEL20:(void)0;
1194 }
1195 var18 = var19;
1196 }
1197 var = var18;
1198 } else {
1199 var = var_;
1200 }
1201 if (var){
1202 var23 = glob_sys;
1203 if (likely(varonce!=NULL)) {
1204 var24 = varonce;
1205 } else {
1206 var25 = "Option Error: cannot use both --dir and --output";
1207 var27 = (val*)(48l<<2|1);
1208 var28 = (val*)(48l<<2|1);
1209 var29 = (val*)((long)(0)<<2|3);
1210 var30 = (val*)((long)(0)<<2|3);
1211 var26 = core__flat___CString___to_s_unsafe(var25, var27, var28, var29, var30);
1212 var24 = var26;
1213 varonce = var24;
1214 }
1215 {
1216 core__file___Sys___print(var23, var24); /* Direct call file$Sys$print on <var23:Sys>*/
1217 }
1218 var31 = glob_sys;
1219 {
1220 { /* Inline kernel$Sys$exit (var31,1l) on <var31:Sys> */
1221 exit((int)1l);
1222 RET_LABEL32:(void)0;
1223 }
1224 }
1225 } else {
1226 }
1227 {
1228 { /* Inline abstract_compiler$ToolContext$opt_no_check_all (self) on <self:ToolContext> */
1229 var35 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_check_all].val; /* _opt_no_check_all on <self:ToolContext> */
1230 if (unlikely(var35 == NULL)) {
1231 if(catchStack.cursor >= 0){
1232 longjmp(catchStack.envs[catchStack.cursor], 1);
1233 }
1234 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_all");
1235 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 58);
1236 fatal_exit(1);
1237 }
1238 var33 = var35;
1239 RET_LABEL34:(void)0;
1240 }
1241 }
1242 {
1243 { /* Inline opts$Option$value (var33) on <var33:OptionBool> */
1244 var38 = var33->attrs[COLOR_opts__Option___value].val; /* _value on <var33:OptionBool> */
1245 var36 = var38;
1246 RET_LABEL37:(void)0;
1247 }
1248 }
1249 var39 = (short int)((long)(var36)>>2);
1250 if (var39){
1251 {
1252 { /* Inline abstract_compiler$ToolContext$opt_no_check_covariance (self) on <self:ToolContext> */
1253 var42 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_check_covariance].val; /* _opt_no_check_covariance on <self:ToolContext> */
1254 if (unlikely(var42 == NULL)) {
1255 if(catchStack.cursor >= 0){
1256 longjmp(catchStack.envs[catchStack.cursor], 1);
1257 }
1258 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_covariance");
1259 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 48);
1260 fatal_exit(1);
1261 }
1262 var40 = var42;
1263 RET_LABEL41:(void)0;
1264 }
1265 }
1266 {
1267 { /* Inline opts$Option$value= (var40,1) on <var40:OptionBool> */
1268 /* Covariant cast for argument 0 (value) <1:Bool> isa VALUE */
1269 /* <1:Bool> isa VALUE */
1270 type_struct = var40->type->resolution_table->types[COLOR_opts__Option__VALUE];
1271 cltype = type_struct->color;
1272 idtype = type_struct->id;
1273 if(cltype >= (&type_core__Bool)->table_size) {
1274 var44 = 0;
1275 } else {
1276 var44 = (&type_core__Bool)->type_table[cltype] == idtype;
1277 }
1278 if (unlikely(!var44)) {
1279 var_class_name = type_core__Bool.name;
1280 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
1281 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40);
1282 fatal_exit(1);
1283 }
1284 var45 = (val*)((long)(1)<<2|3);
1285 var40->attrs[COLOR_opts__Option___value].val = var45; /* _value on <var40:OptionBool> */
1286 RET_LABEL43:(void)0;
1287 }
1288 }
1289 {
1290 { /* Inline abstract_compiler$ToolContext$opt_no_check_attr_isset (self) on <self:ToolContext> */
1291 var48 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_check_attr_isset].val; /* _opt_no_check_attr_isset on <self:ToolContext> */
1292 if (unlikely(var48 == NULL)) {
1293 if(catchStack.cursor >= 0){
1294 longjmp(catchStack.envs[catchStack.cursor], 1);
1295 }
1296 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_attr_isset");
1297 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 50);
1298 fatal_exit(1);
1299 }
1300 var46 = var48;
1301 RET_LABEL47:(void)0;
1302 }
1303 }
1304 {
1305 { /* Inline opts$Option$value= (var46,1) on <var46:OptionBool> */
1306 /* Covariant cast for argument 0 (value) <1:Bool> isa VALUE */
1307 /* <1:Bool> isa VALUE */
1308 type_struct53 = var46->type->resolution_table->types[COLOR_opts__Option__VALUE];
1309 cltype51 = type_struct53->color;
1310 idtype52 = type_struct53->id;
1311 if(cltype51 >= (&type_core__Bool)->table_size) {
1312 var50 = 0;
1313 } else {
1314 var50 = (&type_core__Bool)->type_table[cltype51] == idtype52;
1315 }
1316 if (unlikely(!var50)) {
1317 var_class_name54 = type_core__Bool.name;
1318 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name54);
1319 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40);
1320 fatal_exit(1);
1321 }
1322 var55 = (val*)((long)(1)<<2|3);
1323 var46->attrs[COLOR_opts__Option___value].val = var55; /* _value on <var46:OptionBool> */
1324 RET_LABEL49:(void)0;
1325 }
1326 }
1327 {
1328 { /* Inline abstract_compiler$ToolContext$opt_no_check_assert (self) on <self:ToolContext> */
1329 var58 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_check_assert].val; /* _opt_no_check_assert on <self:ToolContext> */
1330 if (unlikely(var58 == NULL)) {
1331 if(catchStack.cursor >= 0){
1332 longjmp(catchStack.envs[catchStack.cursor], 1);
1333 }
1334 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_assert");
1335 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 52);
1336 fatal_exit(1);
1337 }
1338 var56 = var58;
1339 RET_LABEL57:(void)0;
1340 }
1341 }
1342 {
1343 { /* Inline opts$Option$value= (var56,1) on <var56:OptionBool> */
1344 /* Covariant cast for argument 0 (value) <1:Bool> isa VALUE */
1345 /* <1:Bool> isa VALUE */
1346 type_struct63 = var56->type->resolution_table->types[COLOR_opts__Option__VALUE];
1347 cltype61 = type_struct63->color;
1348 idtype62 = type_struct63->id;
1349 if(cltype61 >= (&type_core__Bool)->table_size) {
1350 var60 = 0;
1351 } else {
1352 var60 = (&type_core__Bool)->type_table[cltype61] == idtype62;
1353 }
1354 if (unlikely(!var60)) {
1355 var_class_name64 = type_core__Bool.name;
1356 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name64);
1357 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40);
1358 fatal_exit(1);
1359 }
1360 var65 = (val*)((long)(1)<<2|3);
1361 var56->attrs[COLOR_opts__Option___value].val = var65; /* _value on <var56:OptionBool> */
1362 RET_LABEL59:(void)0;
1363 }
1364 }
1365 {
1366 { /* Inline abstract_compiler$ToolContext$opt_no_check_autocast (self) on <self:ToolContext> */
1367 var68 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_check_autocast].val; /* _opt_no_check_autocast on <self:ToolContext> */
1368 if (unlikely(var68 == NULL)) {
1369 if(catchStack.cursor >= 0){
1370 longjmp(catchStack.envs[catchStack.cursor], 1);
1371 }
1372 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_autocast");
1373 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 54);
1374 fatal_exit(1);
1375 }
1376 var66 = var68;
1377 RET_LABEL67:(void)0;
1378 }
1379 }
1380 {
1381 { /* Inline opts$Option$value= (var66,1) on <var66:OptionBool> */
1382 /* Covariant cast for argument 0 (value) <1:Bool> isa VALUE */
1383 /* <1:Bool> isa VALUE */
1384 type_struct73 = var66->type->resolution_table->types[COLOR_opts__Option__VALUE];
1385 cltype71 = type_struct73->color;
1386 idtype72 = type_struct73->id;
1387 if(cltype71 >= (&type_core__Bool)->table_size) {
1388 var70 = 0;
1389 } else {
1390 var70 = (&type_core__Bool)->type_table[cltype71] == idtype72;
1391 }
1392 if (unlikely(!var70)) {
1393 var_class_name74 = type_core__Bool.name;
1394 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name74);
1395 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40);
1396 fatal_exit(1);
1397 }
1398 var75 = (val*)((long)(1)<<2|3);
1399 var66->attrs[COLOR_opts__Option___value].val = var75; /* _value on <var66:OptionBool> */
1400 RET_LABEL69:(void)0;
1401 }
1402 }
1403 {
1404 { /* Inline abstract_compiler$ToolContext$opt_no_check_null (self) on <self:ToolContext> */
1405 var78 = self->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_check_null].val; /* _opt_no_check_null on <self:ToolContext> */
1406 if (unlikely(var78 == NULL)) {
1407 if(catchStack.cursor >= 0){
1408 longjmp(catchStack.envs[catchStack.cursor], 1);
1409 }
1410 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_null");
1411 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 56);
1412 fatal_exit(1);
1413 }
1414 var76 = var78;
1415 RET_LABEL77:(void)0;
1416 }
1417 }
1418 {
1419 { /* Inline opts$Option$value= (var76,1) on <var76:OptionBool> */
1420 /* Covariant cast for argument 0 (value) <1:Bool> isa VALUE */
1421 /* <1:Bool> isa VALUE */
1422 type_struct83 = var76->type->resolution_table->types[COLOR_opts__Option__VALUE];
1423 cltype81 = type_struct83->color;
1424 idtype82 = type_struct83->id;
1425 if(cltype81 >= (&type_core__Bool)->table_size) {
1426 var80 = 0;
1427 } else {
1428 var80 = (&type_core__Bool)->type_table[cltype81] == idtype82;
1429 }
1430 if (unlikely(!var80)) {
1431 var_class_name84 = type_core__Bool.name;
1432 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name84);
1433 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40);
1434 fatal_exit(1);
1435 }
1436 var85 = (val*)((long)(1)<<2|3);
1437 var76->attrs[COLOR_opts__Option___value].val = var85; /* _value on <var76:OptionBool> */
1438 RET_LABEL79:(void)0;
1439 }
1440 }
1441 } else {
1442 }
1443 RET_LABEL:;
1444 }
1445 /* method abstract_compiler$ModelBuilder$write_and_make for (self: ModelBuilder, AbstractCompiler) */
1446 void nitc__abstract_compiler___ModelBuilder___write_and_make(val* self, val* p0) {
1447 val* var_compiler /* var compiler: AbstractCompiler */;
1448 val* var /* : Platform */;
1449 val* var2 /* : Platform */;
1450 val* var_platform /* var platform: Platform */;
1451 val* var3 /* : ToolContext */;
1452 val* var5 /* : ToolContext */;
1453 val* var6 /* : Toolchain */;
1454 val* var_toolchain /* var toolchain: Toolchain */;
1455 var_compiler = p0;
1456 {
1457 { /* Inline abstract_compiler$AbstractCompiler$target_platform (var_compiler) on <var_compiler:AbstractCompiler> */
1458 var2 = var_compiler->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___target_platform].val; /* _target_platform on <var_compiler:AbstractCompiler> */
1459 if (unlikely(var2 == NULL)) {
1460 if(catchStack.cursor >= 0){
1461 longjmp(catchStack.envs[catchStack.cursor], 1);
1462 }
1463 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _target_platform");
1464 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 563);
1465 fatal_exit(1);
1466 }
1467 var = var2;
1468 RET_LABEL1:(void)0;
1469 }
1470 }
1471 var_platform = var;
1472 {
1473 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (self) on <self:ModelBuilder> */
1474 var5 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
1475 if (unlikely(var5 == NULL)) {
1476 if(catchStack.cursor >= 0){
1477 longjmp(catchStack.envs[catchStack.cursor], 1);
1478 }
1479 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1480 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
1481 fatal_exit(1);
1482 }
1483 var3 = var5;
1484 RET_LABEL4:(void)0;
1485 }
1486 }
1487 {
1488 var6 = nitc__abstract_compiler___Platform___toolchain(var_platform, var3, var_compiler);
1489 }
1490 var_toolchain = var6;
1491 {
1492 { /* Inline abstract_compiler$AbstractCompiler$toolchain= (var_compiler,var_toolchain) on <var_compiler:AbstractCompiler> */
1493 var_compiler->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___toolchain].val = var_toolchain; /* _toolchain on <var_compiler:AbstractCompiler> */
1494 RET_LABEL7:(void)0;
1495 }
1496 }
1497 {
1498 nitc___nitc__MakefileToolchain___Toolchain__write_and_make(var_toolchain); /* Direct call abstract_compiler$MakefileToolchain$write_and_make on <var_toolchain:Toolchain>*/
1499 }
1500 RET_LABEL:;
1501 }
1502 /* method abstract_compiler$Platform$toolchain for (self: Platform, ToolContext, AbstractCompiler): Toolchain */
1503 val* nitc__abstract_compiler___Platform___toolchain(val* self, val* p0, val* p1) {
1504 val* var /* : Toolchain */;
1505 val* var_toolcontext /* var toolcontext: ToolContext */;
1506 val* var_compiler /* var compiler: AbstractCompiler */;
1507 val* var1 /* : MakefileToolchain */;
1508 var_toolcontext = p0;
1509 var_compiler = p1;
1510 var1 = NEW_nitc__MakefileToolchain(&type_nitc__MakefileToolchain);
1511 {
1512 ((void(*)(val* self, val* p0))(var1->class->vft[COLOR_nitc__abstract_compiler__Toolchain__toolcontext_61d]))(var1, var_toolcontext); /* toolcontext= on <var1:MakefileToolchain>*/
1513 }
1514 {
1515 ((void(*)(val* self, val* p0))(var1->class->vft[COLOR_nitc__abstract_compiler__Toolchain__compiler_61d]))(var1, var_compiler); /* compiler= on <var1:MakefileToolchain>*/
1516 }
1517 {
1518 ((void(*)(val* self))(var1->class->vft[COLOR_core__kernel__Object__init]))(var1); /* init on <var1:MakefileToolchain>*/
1519 }
1520 var = var1;
1521 goto RET_LABEL;
1522 RET_LABEL:;
1523 return var;
1524 }
1525 /* method abstract_compiler$Toolchain$toolcontext for (self: Toolchain): ToolContext */
1526 val* nitc___nitc__Toolchain___toolcontext(val* self) {
1527 val* var /* : ToolContext */;
1528 val* var1 /* : ToolContext */;
1529 var1 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:Toolchain> */
1530 if (unlikely(var1 == NULL)) {
1531 if(catchStack.cursor >= 0){
1532 longjmp(catchStack.envs[catchStack.cursor], 1);
1533 }
1534 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1535 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 131);
1536 fatal_exit(1);
1537 }
1538 var = var1;
1539 RET_LABEL:;
1540 return var;
1541 }
1542 /* method abstract_compiler$Toolchain$toolcontext= for (self: Toolchain, ToolContext) */
1543 void nitc___nitc__Toolchain___toolcontext_61d(val* self, val* p0) {
1544 self->attrs[COLOR_nitc__abstract_compiler__Toolchain___toolcontext].val = p0; /* _toolcontext on <self:Toolchain> */
1545 RET_LABEL:;
1546 }
1547 /* method abstract_compiler$Toolchain$compiler for (self: Toolchain): AbstractCompiler */
1548 val* nitc___nitc__Toolchain___compiler(val* self) {
1549 val* var /* : AbstractCompiler */;
1550 val* var1 /* : AbstractCompiler */;
1551 var1 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:Toolchain> */
1552 if (unlikely(var1 == NULL)) {
1553 if(catchStack.cursor >= 0){
1554 longjmp(catchStack.envs[catchStack.cursor], 1);
1555 }
1556 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1557 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
1558 fatal_exit(1);
1559 }
1560 var = var1;
1561 RET_LABEL:;
1562 return var;
1563 }
1564 /* method abstract_compiler$Toolchain$compiler= for (self: Toolchain, AbstractCompiler) */
1565 void nitc___nitc__Toolchain___compiler_61d(val* self, val* p0) {
1566 self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val = p0; /* _compiler on <self:Toolchain> */
1567 RET_LABEL:;
1568 }
1569 /* method abstract_compiler$Toolchain$root_compile_dir for (self: Toolchain): String */
1570 val* nitc___nitc__Toolchain___root_compile_dir(val* self) {
1571 val* var /* : String */;
1572 val* var1 /* : ToolContext */;
1573 val* var3 /* : ToolContext */;
1574 val* var4 /* : OptionString */;
1575 val* var6 /* : OptionString */;
1576 val* var7 /* : nullable Object */;
1577 val* var9 /* : nullable Object */;
1578 val* var_compile_dir /* var compile_dir: nullable String */;
1579 short int var10 /* : Bool */;
1580 short int var11 /* : Bool */;
1581 static val* varonce;
1582 val* var12 /* : String */;
1583 char* var13 /* : CString */;
1584 val* var14 /* : String */;
1585 val* var15 /* : nullable Int */;
1586 val* var16 /* : nullable Int */;
1587 val* var17 /* : nullable Bool */;
1588 val* var18 /* : nullable Bool */;
1589 {
1590 { /* Inline abstract_compiler$Toolchain$toolcontext (self) on <self:Toolchain> */
1591 var3 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:Toolchain> */
1592 if (unlikely(var3 == NULL)) {
1593 if(catchStack.cursor >= 0){
1594 longjmp(catchStack.envs[catchStack.cursor], 1);
1595 }
1596 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1597 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 131);
1598 fatal_exit(1);
1599 }
1600 var1 = var3;
1601 RET_LABEL2:(void)0;
1602 }
1603 }
1604 {
1605 { /* Inline abstract_compiler$ToolContext$opt_compile_dir (var1) on <var1:ToolContext> */
1606 var6 = var1->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_compile_dir].val; /* _opt_compile_dir on <var1:ToolContext> */
1607 if (unlikely(var6 == NULL)) {
1608 if(catchStack.cursor >= 0){
1609 longjmp(catchStack.envs[catchStack.cursor], 1);
1610 }
1611 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_compile_dir");
1612 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 44);
1613 fatal_exit(1);
1614 }
1615 var4 = var6;
1616 RET_LABEL5:(void)0;
1617 }
1618 }
1619 {
1620 { /* Inline opts$Option$value (var4) on <var4:OptionString> */
1621 var9 = var4->attrs[COLOR_opts__Option___value].val; /* _value on <var4:OptionString> */
1622 var7 = var9;
1623 RET_LABEL8:(void)0;
1624 }
1625 }
1626 var_compile_dir = var7;
1627 if (var_compile_dir == NULL) {
1628 var10 = 1; /* is null */
1629 } else {
1630 var10 = 0; /* arg is null but recv is not */
1631 }
1632 if (0) {
1633 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>*/
1634 var10 = var11;
1635 }
1636 if (var10){
1637 if (likely(varonce!=NULL)) {
1638 var12 = varonce;
1639 } else {
1640 var13 = "nit_compile";
1641 var15 = (val*)(11l<<2|1);
1642 var16 = (val*)(11l<<2|1);
1643 var17 = (val*)((long)(0)<<2|3);
1644 var18 = (val*)((long)(0)<<2|3);
1645 var14 = core__flat___CString___to_s_unsafe(var13, var15, var16, var17, var18);
1646 var12 = var14;
1647 varonce = var12;
1648 }
1649 var_compile_dir = var12;
1650 } else {
1651 }
1652 var = var_compile_dir;
1653 goto RET_LABEL;
1654 RET_LABEL:;
1655 return var;
1656 }
1657 /* method abstract_compiler$Toolchain$compile_dir for (self: Toolchain): String */
1658 val* nitc___nitc__Toolchain___compile_dir(val* self) {
1659 val* var /* : String */;
1660 val* var1 /* : String */;
1661 {
1662 var1 = nitc___nitc__Toolchain___root_compile_dir(self);
1663 }
1664 var = var1;
1665 goto RET_LABEL;
1666 RET_LABEL:;
1667 return var;
1668 }
1669 /* method abstract_compiler$Toolchain$init for (self: Toolchain) */
1670 void nitc___nitc__Toolchain___core__kernel__Object__init(val* self) {
1671 {
1672 ((void(*)(val* self))(self->class->vft[COLOR_nitc___nitc__Toolchain___core__kernel__Object__init]))(self); /* init on <self:Toolchain>*/
1673 }
1674 RET_LABEL:;
1675 }
1676 /* method abstract_compiler$MakefileToolchain$write_and_make for (self: MakefileToolchain) */
1677 void nitc___nitc__MakefileToolchain___Toolchain__write_and_make(val* self) {
1678 val* var /* : ToolContext */;
1679 val* var2 /* : ToolContext */;
1680 val* var3 /* : OptionBool */;
1681 val* var5 /* : OptionBool */;
1682 val* var6 /* : nullable Object */;
1683 val* var8 /* : nullable Object */;
1684 short int var9 /* : Bool */;
1685 short int var_debug /* var debug: Bool */;
1686 val* var10 /* : String */;
1687 val* var_compile_dir /* var compile_dir: String */;
1688 val* var11 /* : ToolContext */;
1689 val* var13 /* : ToolContext */;
1690 val* var14 /* : OptionString */;
1691 val* var16 /* : OptionString */;
1692 val* var17 /* : nullable Object */;
1693 val* var19 /* : nullable Object */;
1694 short int var20 /* : Bool */;
1695 short int var21 /* : Bool */;
1696 short int var_auto_remove /* var auto_remove: Bool */;
1697 val* var22 /* : Sys */;
1698 long var23 /* : Int */;
1699 long var25 /* : Int */;
1700 long var_time0 /* var time0: Int */;
1701 val* var26 /* : ToolContext */;
1702 val* var28 /* : ToolContext */;
1703 static val* varonce;
1704 val* var29 /* : String */;
1705 char* var30 /* : CString */;
1706 val* var31 /* : String */;
1707 val* var32 /* : nullable Int */;
1708 val* var33 /* : nullable Int */;
1709 val* var34 /* : nullable Bool */;
1710 val* var35 /* : nullable Bool */;
1711 val* var36 /* : String */;
1712 val* var37 /* : nullable Error */;
1713 val* var38 /* : nullable Error */;
1714 val* var39 /* : Array[String] */;
1715 val* var_cfiles /* var cfiles: Array[String] */;
1716 val* var40 /* : Sys */;
1717 long var41 /* : Int */;
1718 long var43 /* : Int */;
1719 long var_time1 /* var time1: Int */;
1720 val* var44 /* : ToolContext */;
1721 val* var46 /* : ToolContext */;
1722 val* var48 /* : NativeArray[String] */;
1723 static val* varonce47;
1724 static val* varonce49;
1725 val* var50 /* : String */;
1726 char* var51 /* : CString */;
1727 val* var52 /* : String */;
1728 val* var53 /* : nullable Int */;
1729 val* var54 /* : nullable Int */;
1730 val* var55 /* : nullable Bool */;
1731 val* var56 /* : nullable Bool */;
1732 static val* varonce57;
1733 val* var58 /* : String */;
1734 char* var59 /* : CString */;
1735 val* var60 /* : String */;
1736 val* var61 /* : nullable Int */;
1737 val* var62 /* : nullable Int */;
1738 val* var63 /* : nullable Bool */;
1739 val* var64 /* : nullable Bool */;
1740 long var65 /* : Int */;
1741 short int var67 /* : Bool */;
1742 int cltype;
1743 int idtype;
1744 const char* var_class_name;
1745 long var68 /* : Int */;
1746 val* var69 /* : String */;
1747 val* var70 /* : String */;
1748 val* var71 /* : ToolContext */;
1749 val* var73 /* : ToolContext */;
1750 val* var74 /* : OptionBool */;
1751 val* var76 /* : OptionBool */;
1752 val* var77 /* : nullable Object */;
1753 val* var79 /* : nullable Object */;
1754 short int var80 /* : Bool */;
1755 val* var81 /* : ToolContext */;
1756 val* var83 /* : ToolContext */;
1757 static val* varonce84;
1758 val* var85 /* : String */;
1759 char* var86 /* : CString */;
1760 val* var87 /* : String */;
1761 val* var88 /* : nullable Int */;
1762 val* var89 /* : nullable Int */;
1763 val* var90 /* : nullable Bool */;
1764 val* var91 /* : nullable Bool */;
1765 val* var92 /* : Sys */;
1766 val* var94 /* : Sys */;
1767 val* var96 /* : NativeArray[String] */;
1768 static val* varonce95;
1769 static val* varonce97;
1770 val* var98 /* : String */;
1771 char* var99 /* : CString */;
1772 val* var100 /* : String */;
1773 val* var101 /* : nullable Int */;
1774 val* var102 /* : nullable Int */;
1775 val* var103 /* : nullable Bool */;
1776 val* var104 /* : nullable Bool */;
1777 static val* varonce105;
1778 val* var106 /* : String */;
1779 char* var107 /* : CString */;
1780 val* var108 /* : String */;
1781 val* var109 /* : nullable Int */;
1782 val* var110 /* : nullable Int */;
1783 val* var111 /* : nullable Bool */;
1784 val* var112 /* : nullable Bool */;
1785 val* var113 /* : String */;
1786 val* var114 /* : String */;
1787 val* var115 /* : String */;
1788 long var116 /* : Int */;
1789 val* var117 /* : Sys */;
1790 long var118 /* : Int */;
1791 long var120 /* : Int */;
1792 val* var121 /* : ToolContext */;
1793 val* var123 /* : ToolContext */;
1794 val* var125 /* : NativeArray[String] */;
1795 static val* varonce124;
1796 static val* varonce126;
1797 val* var127 /* : String */;
1798 char* var128 /* : CString */;
1799 val* var129 /* : String */;
1800 val* var130 /* : nullable Int */;
1801 val* var131 /* : nullable Int */;
1802 val* var132 /* : nullable Bool */;
1803 val* var133 /* : nullable Bool */;
1804 static val* varonce134;
1805 val* var135 /* : String */;
1806 char* var136 /* : CString */;
1807 val* var137 /* : String */;
1808 val* var138 /* : nullable Int */;
1809 val* var139 /* : nullable Int */;
1810 val* var140 /* : nullable Bool */;
1811 val* var141 /* : nullable Bool */;
1812 long var142 /* : Int */;
1813 short int var144 /* : Bool */;
1814 int cltype145;
1815 int idtype146;
1816 const char* var_class_name147;
1817 long var148 /* : Int */;
1818 val* var149 /* : String */;
1819 val* var150 /* : String */;
1820 {
1821 { /* Inline abstract_compiler$Toolchain$toolcontext (self) on <self:MakefileToolchain> */
1822 var2 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
1823 if (unlikely(var2 == NULL)) {
1824 if(catchStack.cursor >= 0){
1825 longjmp(catchStack.envs[catchStack.cursor], 1);
1826 }
1827 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1828 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 131);
1829 fatal_exit(1);
1830 }
1831 var = var2;
1832 RET_LABEL1:(void)0;
1833 }
1834 }
1835 {
1836 { /* Inline abstract_compiler$ToolContext$opt_debug (var) on <var:ToolContext> */
1837 var5 = var->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_debug].val; /* _opt_debug on <var:ToolContext> */
1838 if (unlikely(var5 == NULL)) {
1839 if(catchStack.cursor >= 0){
1840 longjmp(catchStack.envs[catchStack.cursor], 1);
1841 }
1842 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_debug");
1843 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 72);
1844 fatal_exit(1);
1845 }
1846 var3 = var5;
1847 RET_LABEL4:(void)0;
1848 }
1849 }
1850 {
1851 { /* Inline opts$Option$value (var3) on <var3:OptionBool> */
1852 var8 = var3->attrs[COLOR_opts__Option___value].val; /* _value on <var3:OptionBool> */
1853 var6 = var8;
1854 RET_LABEL7:(void)0;
1855 }
1856 }
1857 var9 = (short int)((long)(var6)>>2);
1858 var_debug = var9;
1859 {
1860 var10 = nitc___nitc__Toolchain___compile_dir(self);
1861 }
1862 var_compile_dir = var10;
1863 {
1864 { /* Inline abstract_compiler$Toolchain$toolcontext (self) on <self:MakefileToolchain> */
1865 var13 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
1866 if (unlikely(var13 == NULL)) {
1867 if(catchStack.cursor >= 0){
1868 longjmp(catchStack.envs[catchStack.cursor], 1);
1869 }
1870 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1871 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 131);
1872 fatal_exit(1);
1873 }
1874 var11 = var13;
1875 RET_LABEL12:(void)0;
1876 }
1877 }
1878 {
1879 { /* Inline abstract_compiler$ToolContext$opt_compile_dir (var11) on <var11:ToolContext> */
1880 var16 = var11->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_compile_dir].val; /* _opt_compile_dir on <var11:ToolContext> */
1881 if (unlikely(var16 == NULL)) {
1882 if(catchStack.cursor >= 0){
1883 longjmp(catchStack.envs[catchStack.cursor], 1);
1884 }
1885 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_compile_dir");
1886 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 44);
1887 fatal_exit(1);
1888 }
1889 var14 = var16;
1890 RET_LABEL15:(void)0;
1891 }
1892 }
1893 {
1894 { /* Inline opts$Option$value (var14) on <var14:OptionString> */
1895 var19 = var14->attrs[COLOR_opts__Option___value].val; /* _value on <var14:OptionString> */
1896 var17 = var19;
1897 RET_LABEL18:(void)0;
1898 }
1899 }
1900 if (var17 == NULL) {
1901 var20 = 1; /* is null */
1902 } else {
1903 var20 = 0; /* arg is null but recv is not */
1904 }
1905 if (0) {
1906 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)>*/
1907 var20 = var21;
1908 }
1909 var_auto_remove = var20;
1910 if (var_debug){
1911 var_auto_remove = 0;
1912 } else {
1913 }
1914 var22 = glob_sys;
1915 {
1916 { /* Inline time$Sys$get_time (var22) on <var22:Sys> */
1917 struct nitni_instance* var_for_c_0;
1918 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
1919 var_for_c_0->value = var22;
1920 var25 = core__time___Sys_get_time___impl(var_for_c_0);
1921 var23 = var25;
1922 goto RET_LABEL24;
1923 RET_LABEL24:(void)0;
1924 }
1925 }
1926 var_time0 = var23;
1927 {
1928 { /* Inline abstract_compiler$Toolchain$toolcontext (self) on <self:MakefileToolchain> */
1929 var28 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
1930 if (unlikely(var28 == NULL)) {
1931 if(catchStack.cursor >= 0){
1932 longjmp(catchStack.envs[catchStack.cursor], 1);
1933 }
1934 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1935 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 131);
1936 fatal_exit(1);
1937 }
1938 var26 = var28;
1939 RET_LABEL27:(void)0;
1940 }
1941 }
1942 if (likely(varonce!=NULL)) {
1943 var29 = varonce;
1944 } else {
1945 var30 = "*** WRITING C ***";
1946 var32 = (val*)(17l<<2|1);
1947 var33 = (val*)(17l<<2|1);
1948 var34 = (val*)((long)(0)<<2|3);
1949 var35 = (val*)((long)(0)<<2|3);
1950 var31 = core__flat___CString___to_s_unsafe(var30, var32, var33, var34, var35);
1951 var29 = var31;
1952 varonce = var29;
1953 }
1954 {
1955 nitc___nitc__ToolContext___info(var26, var29, 1l); /* Direct call toolcontext$ToolContext$info on <var26:ToolContext>*/
1956 }
1957 {
1958 var36 = nitc___nitc__Toolchain___root_compile_dir(self);
1959 }
1960 {
1961 var37 = core__file___String___mkdir(var36, ((val*)NULL));
1962 }
1963 {
1964 var38 = core__file___String___mkdir(var_compile_dir, ((val*)NULL));
1965 }
1966 var39 = NEW_core__Array(&type_core__Array__core__String);
1967 {
1968 core___core__Array___core__kernel__Object__init(var39); /* Direct call array$Array$init on <var39:Array[String]>*/
1969 }
1970 var_cfiles = var39;
1971 {
1972 nitc___nitc__MakefileToolchain___write_files(self, var_compile_dir, var_cfiles); /* Direct call abstract_compiler$MakefileToolchain$write_files on <self:MakefileToolchain>*/
1973 }
1974 {
1975 nitc___nitc__MakefileToolchain___write_makefile(self, var_compile_dir, var_cfiles); /* Direct call abstract_compiler$MakefileToolchain$write_makefile on <self:MakefileToolchain>*/
1976 }
1977 var40 = glob_sys;
1978 {
1979 { /* Inline time$Sys$get_time (var40) on <var40:Sys> */
1980 struct nitni_instance* var_for_c_0;
1981 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
1982 var_for_c_0->value = var40;
1983 var43 = core__time___Sys_get_time___impl(var_for_c_0);
1984 var41 = var43;
1985 goto RET_LABEL42;
1986 RET_LABEL42:(void)0;
1987 }
1988 }
1989 var_time1 = var41;
1990 {
1991 { /* Inline abstract_compiler$Toolchain$toolcontext (self) on <self:MakefileToolchain> */
1992 var46 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
1993 if (unlikely(var46 == NULL)) {
1994 if(catchStack.cursor >= 0){
1995 longjmp(catchStack.envs[catchStack.cursor], 1);
1996 }
1997 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1998 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 131);
1999 fatal_exit(1);
2000 }
2001 var44 = var46;
2002 RET_LABEL45:(void)0;
2003 }
2004 }
2005 if (unlikely(varonce47==NULL)) {
2006 var48 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
2007 if (likely(varonce49!=NULL)) {
2008 var50 = varonce49;
2009 } else {
2010 var51 = "*** END WRITING C: ";
2011 var53 = (val*)(19l<<2|1);
2012 var54 = (val*)(19l<<2|1);
2013 var55 = (val*)((long)(0)<<2|3);
2014 var56 = (val*)((long)(0)<<2|3);
2015 var52 = core__flat___CString___to_s_unsafe(var51, var53, var54, var55, var56);
2016 var50 = var52;
2017 varonce49 = var50;
2018 }
2019 ((struct instance_core__NativeArray*)var48)->values[0]=var50;
2020 if (likely(varonce57!=NULL)) {
2021 var58 = varonce57;
2022 } else {
2023 var59 = " ***";
2024 var61 = (val*)(4l<<2|1);
2025 var62 = (val*)(4l<<2|1);
2026 var63 = (val*)((long)(0)<<2|3);
2027 var64 = (val*)((long)(0)<<2|3);
2028 var60 = core__flat___CString___to_s_unsafe(var59, var61, var62, var63, var64);
2029 var58 = var60;
2030 varonce57 = var58;
2031 }
2032 ((struct instance_core__NativeArray*)var48)->values[2]=var58;
2033 } else {
2034 var48 = varonce47;
2035 varonce47 = NULL;
2036 }
2037 {
2038 { /* Inline kernel$Int$- (var_time1,var_time0) on <var_time1:Int> */
2039 /* Covariant cast for argument 0 (i) <var_time0:Int> isa OTHER */
2040 /* <var_time0:Int> isa OTHER */
2041 var67 = 1; /* easy <var_time0:Int> isa OTHER*/
2042 if (unlikely(!var67)) {
2043 var_class_name = type_core__Int.name;
2044 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2045 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
2046 fatal_exit(1);
2047 }
2048 var68 = var_time1 - var_time0;
2049 var65 = var68;
2050 goto RET_LABEL66;
2051 RET_LABEL66:(void)0;
2052 }
2053 }
2054 var69 = core__flat___Int___core__abstract_text__Object__to_s(var65);
2055 ((struct instance_core__NativeArray*)var48)->values[1]=var69;
2056 {
2057 var70 = ((val*(*)(val* self))(var48->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var48); /* native_to_s on <var48:NativeArray[String]>*/
2058 }
2059 varonce47 = var48;
2060 {
2061 nitc___nitc__ToolContext___info(var44, var70, 2l); /* Direct call toolcontext$ToolContext$info on <var44:ToolContext>*/
2062 }
2063 {
2064 { /* Inline abstract_compiler$Toolchain$toolcontext (self) on <self:MakefileToolchain> */
2065 var73 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
2066 if (unlikely(var73 == NULL)) {
2067 if(catchStack.cursor >= 0){
2068 longjmp(catchStack.envs[catchStack.cursor], 1);
2069 }
2070 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
2071 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 131);
2072 fatal_exit(1);
2073 }
2074 var71 = var73;
2075 RET_LABEL72:(void)0;
2076 }
2077 }
2078 {
2079 { /* Inline abstract_compiler$ToolContext$opt_no_cc (var71) on <var71:ToolContext> */
2080 var76 = var71->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_cc].val; /* _opt_no_cc on <var71:ToolContext> */
2081 if (unlikely(var76 == NULL)) {
2082 if(catchStack.cursor >= 0){
2083 longjmp(catchStack.envs[catchStack.cursor], 1);
2084 }
2085 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_cc");
2086 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 34);
2087 fatal_exit(1);
2088 }
2089 var74 = var76;
2090 RET_LABEL75:(void)0;
2091 }
2092 }
2093 {
2094 { /* Inline opts$Option$value (var74) on <var74:OptionBool> */
2095 var79 = var74->attrs[COLOR_opts__Option___value].val; /* _value on <var74:OptionBool> */
2096 var77 = var79;
2097 RET_LABEL78:(void)0;
2098 }
2099 }
2100 var80 = (short int)((long)(var77)>>2);
2101 if (var80){
2102 goto RET_LABEL;
2103 } else {
2104 }
2105 var_time0 = var_time1;
2106 {
2107 { /* Inline abstract_compiler$Toolchain$toolcontext (self) on <self:MakefileToolchain> */
2108 var83 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
2109 if (unlikely(var83 == NULL)) {
2110 if(catchStack.cursor >= 0){
2111 longjmp(catchStack.envs[catchStack.cursor], 1);
2112 }
2113 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
2114 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 131);
2115 fatal_exit(1);
2116 }
2117 var81 = var83;
2118 RET_LABEL82:(void)0;
2119 }
2120 }
2121 if (likely(varonce84!=NULL)) {
2122 var85 = varonce84;
2123 } else {
2124 var86 = "*** COMPILING C ***";
2125 var88 = (val*)(19l<<2|1);
2126 var89 = (val*)(19l<<2|1);
2127 var90 = (val*)((long)(0)<<2|3);
2128 var91 = (val*)((long)(0)<<2|3);
2129 var87 = core__flat___CString___to_s_unsafe(var86, var88, var89, var90, var91);
2130 var85 = var87;
2131 varonce84 = var85;
2132 }
2133 {
2134 nitc___nitc__ToolContext___info(var81, var85, 1l); /* Direct call toolcontext$ToolContext$info on <var81:ToolContext>*/
2135 }
2136 {
2137 nitc___nitc__MakefileToolchain___compile_c_code(self, var_compile_dir); /* Direct call abstract_compiler$MakefileToolchain$compile_c_code on <self:MakefileToolchain>*/
2138 }
2139 if (var_auto_remove){
2140 {
2141 { /* Inline kernel$Object$sys (self) on <self:MakefileToolchain> */
2142 var94 = glob_sys;
2143 var92 = var94;
2144 goto RET_LABEL93;
2145 RET_LABEL93:(void)0;
2146 }
2147 }
2148 if (unlikely(varonce95==NULL)) {
2149 var96 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
2150 if (likely(varonce97!=NULL)) {
2151 var98 = varonce97;
2152 } else {
2153 var99 = "rm -r -- \'";
2154 var101 = (val*)(10l<<2|1);
2155 var102 = (val*)(10l<<2|1);
2156 var103 = (val*)((long)(0)<<2|3);
2157 var104 = (val*)((long)(0)<<2|3);
2158 var100 = core__flat___CString___to_s_unsafe(var99, var101, var102, var103, var104);
2159 var98 = var100;
2160 varonce97 = var98;
2161 }
2162 ((struct instance_core__NativeArray*)var96)->values[0]=var98;
2163 if (likely(varonce105!=NULL)) {
2164 var106 = varonce105;
2165 } else {
2166 var107 = "/\'";
2167 var109 = (val*)(2l<<2|1);
2168 var110 = (val*)(2l<<2|1);
2169 var111 = (val*)((long)(0)<<2|3);
2170 var112 = (val*)((long)(0)<<2|3);
2171 var108 = core__flat___CString___to_s_unsafe(var107, var109, var110, var111, var112);
2172 var106 = var108;
2173 varonce105 = var106;
2174 }
2175 ((struct instance_core__NativeArray*)var96)->values[2]=var106;
2176 } else {
2177 var96 = varonce95;
2178 varonce95 = NULL;
2179 }
2180 {
2181 var113 = nitc___nitc__Toolchain___root_compile_dir(self);
2182 }
2183 {
2184 var114 = core___core__Text___escape_to_sh(var113);
2185 }
2186 ((struct instance_core__NativeArray*)var96)->values[1]=var114;
2187 {
2188 var115 = ((val*(*)(val* self))(var96->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var96); /* native_to_s on <var96:NativeArray[String]>*/
2189 }
2190 varonce95 = var96;
2191 {
2192 var116 = core__exec___Sys___system(var92, var115);
2193 }
2194 } else {
2195 }
2196 var117 = glob_sys;
2197 {
2198 { /* Inline time$Sys$get_time (var117) on <var117:Sys> */
2199 struct nitni_instance* var_for_c_0;
2200 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
2201 var_for_c_0->value = var117;
2202 var120 = core__time___Sys_get_time___impl(var_for_c_0);
2203 var118 = var120;
2204 goto RET_LABEL119;
2205 RET_LABEL119:(void)0;
2206 }
2207 }
2208 var_time1 = var118;
2209 {
2210 { /* Inline abstract_compiler$Toolchain$toolcontext (self) on <self:MakefileToolchain> */
2211 var123 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
2212 if (unlikely(var123 == NULL)) {
2213 if(catchStack.cursor >= 0){
2214 longjmp(catchStack.envs[catchStack.cursor], 1);
2215 }
2216 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
2217 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 131);
2218 fatal_exit(1);
2219 }
2220 var121 = var123;
2221 RET_LABEL122:(void)0;
2222 }
2223 }
2224 if (unlikely(varonce124==NULL)) {
2225 var125 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
2226 if (likely(varonce126!=NULL)) {
2227 var127 = varonce126;
2228 } else {
2229 var128 = "*** END COMPILING C: ";
2230 var130 = (val*)(21l<<2|1);
2231 var131 = (val*)(21l<<2|1);
2232 var132 = (val*)((long)(0)<<2|3);
2233 var133 = (val*)((long)(0)<<2|3);
2234 var129 = core__flat___CString___to_s_unsafe(var128, var130, var131, var132, var133);
2235 var127 = var129;
2236 varonce126 = var127;
2237 }
2238 ((struct instance_core__NativeArray*)var125)->values[0]=var127;
2239 if (likely(varonce134!=NULL)) {
2240 var135 = varonce134;
2241 } else {
2242 var136 = " ***";
2243 var138 = (val*)(4l<<2|1);
2244 var139 = (val*)(4l<<2|1);
2245 var140 = (val*)((long)(0)<<2|3);
2246 var141 = (val*)((long)(0)<<2|3);
2247 var137 = core__flat___CString___to_s_unsafe(var136, var138, var139, var140, var141);
2248 var135 = var137;
2249 varonce134 = var135;
2250 }
2251 ((struct instance_core__NativeArray*)var125)->values[2]=var135;
2252 } else {
2253 var125 = varonce124;
2254 varonce124 = NULL;
2255 }
2256 {
2257 { /* Inline kernel$Int$- (var_time1,var_time0) on <var_time1:Int> */
2258 /* Covariant cast for argument 0 (i) <var_time0:Int> isa OTHER */
2259 /* <var_time0:Int> isa OTHER */
2260 var144 = 1; /* easy <var_time0:Int> isa OTHER*/
2261 if (unlikely(!var144)) {
2262 var_class_name147 = type_core__Int.name;
2263 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name147);
2264 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
2265 fatal_exit(1);
2266 }
2267 var148 = var_time1 - var_time0;
2268 var142 = var148;
2269 goto RET_LABEL143;
2270 RET_LABEL143:(void)0;
2271 }
2272 }
2273 var149 = core__flat___Int___core__abstract_text__Object__to_s(var142);
2274 ((struct instance_core__NativeArray*)var125)->values[1]=var149;
2275 {
2276 var150 = ((val*(*)(val* self))(var125->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var125); /* native_to_s on <var125:NativeArray[String]>*/
2277 }
2278 varonce124 = var125;
2279 {
2280 nitc___nitc__ToolContext___info(var121, var150, 2l); /* Direct call toolcontext$ToolContext$info on <var121:ToolContext>*/
2281 }
2282 RET_LABEL:;
2283 }
2284 /* method abstract_compiler$MakefileToolchain$write_files for (self: MakefileToolchain, String, Array[String]) */
2285 void nitc___nitc__MakefileToolchain___write_files(val* self, val* p0, val* p1) {
2286 val* var_compile_dir /* var compile_dir: String */;
2287 val* var_cfiles /* var cfiles: Array[String] */;
2288 val* var /* : AbstractCompiler */;
2289 val* var2 /* : AbstractCompiler */;
2290 val* var3 /* : Platform */;
2291 val* var5 /* : Platform */;
2292 val* var_platform /* var platform: Platform */;
2293 short int var6 /* : Bool */;
2294 val* var7 /* : AbstractCompiler */;
2295 val* var9 /* : AbstractCompiler */;
2296 static val* varonce;
2297 val* var10 /* : String */;
2298 char* var11 /* : CString */;
2299 val* var12 /* : String */;
2300 val* var13 /* : nullable Int */;
2301 val* var14 /* : nullable Int */;
2302 val* var15 /* : nullable Bool */;
2303 val* var16 /* : nullable Bool */;
2304 val* var_cc_opt_with_libgc /* var cc_opt_with_libgc: String */;
2305 short int var17 /* : Bool */;
2306 short int var18 /* : Bool */;
2307 static val* varonce19;
2308 val* var20 /* : String */;
2309 char* var21 /* : CString */;
2310 val* var22 /* : String */;
2311 val* var23 /* : nullable Int */;
2312 val* var24 /* : nullable Int */;
2313 val* var25 /* : nullable Bool */;
2314 val* var26 /* : nullable Bool */;
2315 val* var27 /* : ExternCFile */;
2316 static val* varonce28;
2317 val* var29 /* : String */;
2318 char* var30 /* : CString */;
2319 val* var31 /* : String */;
2320 val* var32 /* : nullable Int */;
2321 val* var33 /* : nullable Int */;
2322 val* var34 /* : nullable Bool */;
2323 val* var35 /* : nullable Bool */;
2324 val* var_gc_chooser /* var gc_chooser: ExternCFile */;
2325 static val* varonce36;
2326 val* var37 /* : String */;
2327 char* var38 /* : CString */;
2328 val* var39 /* : String */;
2329 val* var40 /* : nullable Int */;
2330 val* var41 /* : nullable Int */;
2331 val* var42 /* : nullable Bool */;
2332 val* var43 /* : nullable Bool */;
2333 short int var44 /* : Bool */;
2334 val* var_other /* var other: nullable Object */;
2335 short int var46 /* : Bool */;
2336 short int var47 /* : Bool */;
2337 val* var48 /* : Array[String] */;
2338 val* var50 /* : Array[String] */;
2339 static val* varonce51;
2340 val* var52 /* : String */;
2341 char* var53 /* : CString */;
2342 val* var54 /* : String */;
2343 val* var55 /* : nullable Int */;
2344 val* var56 /* : nullable Int */;
2345 val* var57 /* : nullable Bool */;
2346 val* var58 /* : nullable Bool */;
2347 val* var59 /* : AbstractCompiler */;
2348 val* var61 /* : AbstractCompiler */;
2349 val* var62 /* : Array[ExternFile] */;
2350 val* var64 /* : Array[ExternFile] */;
2351 val* var65 /* : ToolContext */;
2352 val* var67 /* : ToolContext */;
2353 val* var68 /* : nullable String */;
2354 val* var70 /* : nullable String */;
2355 static val* varonce71;
2356 val* var72 /* : String */;
2357 char* var73 /* : CString */;
2358 val* var74 /* : String */;
2359 val* var75 /* : nullable Int */;
2360 val* var76 /* : nullable Int */;
2361 val* var77 /* : nullable Bool */;
2362 val* var78 /* : nullable Bool */;
2363 val* var79 /* : String */;
2364 val* var_clib /* var clib: String */;
2365 val* var80 /* : AbstractCompiler */;
2366 val* var82 /* : AbstractCompiler */;
2367 val* var83 /* : Array[String] */;
2368 val* var85 /* : Array[String] */;
2369 val* var87 /* : NativeArray[String] */;
2370 static val* varonce86;
2371 static val* varonce88;
2372 val* var89 /* : String */;
2373 char* var90 /* : CString */;
2374 val* var91 /* : String */;
2375 val* var92 /* : nullable Int */;
2376 val* var93 /* : nullable Int */;
2377 val* var94 /* : nullable Bool */;
2378 val* var95 /* : nullable Bool */;
2379 val* var96 /* : String */;
2380 val* var97 /* : AbstractCompiler */;
2381 val* var99 /* : AbstractCompiler */;
2382 val* var100 /* : Array[String] */;
2383 val* var102 /* : Array[String] */;
2384 val* var104 /* : NativeArray[String] */;
2385 static val* varonce103;
2386 static val* varonce105;
2387 val* var106 /* : String */;
2388 char* var107 /* : CString */;
2389 val* var108 /* : String */;
2390 val* var109 /* : nullable Int */;
2391 val* var110 /* : nullable Int */;
2392 val* var111 /* : nullable Bool */;
2393 val* var112 /* : nullable Bool */;
2394 val* var113 /* : String */;
2395 val* var114 /* : AbstractCompiler */;
2396 val* var116 /* : AbstractCompiler */;
2397 val* var117 /* : MModule */;
2398 val* var119 /* : MModule */;
2399 val* var120 /* : POSetElement[MModule] */;
2400 val* var122 /* : POSetElement[MModule] */;
2401 val* var123 /* : Collection[nullable Object] */;
2402 val* var_ /* var : Collection[MModule] */;
2403 val* var124 /* : Iterator[nullable Object] */;
2404 val* var_125 /* var : Iterator[MModule] */;
2405 short int var126 /* : Bool */;
2406 val* var127 /* : nullable Object */;
2407 val* var_m /* var m: MModule */;
2408 val* var128 /* : AbstractCompiler */;
2409 val* var130 /* : AbstractCompiler */;
2410 val* var131 /* : AbstractCompiler */;
2411 val* var133 /* : AbstractCompiler */;
2412 val* var134 /* : Array[String] */;
2413 val* var136 /* : Array[String] */;
2414 val* var_137 /* var : Array[String] */;
2415 val* var138 /* : IndexedIterator[nullable Object] */;
2416 val* var_139 /* var : IndexedIterator[String] */;
2417 short int var140 /* : Bool */;
2418 val* var142 /* : nullable Object */;
2419 val* var_src /* var src: String */;
2420 val* var143 /* : String */;
2421 val* var_basename /* var basename: String */;
2422 val* var145 /* : NativeArray[String] */;
2423 static val* varonce144;
2424 static val* varonce146;
2425 val* var147 /* : String */;
2426 char* var148 /* : CString */;
2427 val* var149 /* : String */;
2428 val* var150 /* : nullable Int */;
2429 val* var151 /* : nullable Int */;
2430 val* var152 /* : nullable Bool */;
2431 val* var153 /* : nullable Bool */;
2432 val* var154 /* : String */;
2433 val* var_dst /* var dst: String */;
2434 val* var155 /* : AbstractCompiler */;
2435 val* var157 /* : AbstractCompiler */;
2436 val* var158 /* : CodeWriter */;
2437 val* var160 /* : CodeWriter */;
2438 val* var161 /* : CodeFile */;
2439 val* var163 /* : CodeFile */;
2440 val* var164 /* : String */;
2441 val* var166 /* : String */;
2442 static val* varonce167;
2443 val* var168 /* : String */;
2444 char* var169 /* : CString */;
2445 val* var170 /* : String */;
2446 val* var171 /* : nullable Int */;
2447 val* var172 /* : nullable Int */;
2448 val* var173 /* : nullable Bool */;
2449 val* var174 /* : nullable Bool */;
2450 val* var175 /* : Text */;
2451 val* var_hfilename /* var hfilename: String */;
2452 val* var177 /* : NativeArray[String] */;
2453 static val* varonce176;
2454 static val* varonce178;
2455 val* var179 /* : String */;
2456 char* var180 /* : CString */;
2457 val* var181 /* : String */;
2458 val* var182 /* : nullable Int */;
2459 val* var183 /* : nullable Int */;
2460 val* var184 /* : nullable Bool */;
2461 val* var185 /* : nullable Bool */;
2462 val* var186 /* : String */;
2463 val* var_hfilepath /* var hfilepath: String */;
2464 val* var187 /* : FileWriter */;
2465 val* var_h /* var h: FileWriter */;
2466 val* var188 /* : AbstractCompiler */;
2467 val* var190 /* : AbstractCompiler */;
2468 val* var191 /* : CodeWriter */;
2469 val* var193 /* : CodeWriter */;
2470 val* var194 /* : Array[String] */;
2471 val* var196 /* : Array[String] */;
2472 val* var_197 /* var : Array[String] */;
2473 val* var198 /* : IndexedIterator[nullable Object] */;
2474 val* var_199 /* var : IndexedIterator[String] */;
2475 short int var200 /* : Bool */;
2476 val* var202 /* : nullable Object */;
2477 val* var_l /* var l: String */;
2478 static val* varonce203;
2479 val* var204 /* : String */;
2480 char* var205 /* : CString */;
2481 val* var206 /* : String */;
2482 val* var207 /* : nullable Int */;
2483 val* var208 /* : nullable Int */;
2484 val* var209 /* : nullable Bool */;
2485 val* var210 /* : nullable Bool */;
2486 val* var211 /* : AbstractCompiler */;
2487 val* var213 /* : AbstractCompiler */;
2488 val* var214 /* : CodeWriter */;
2489 val* var216 /* : CodeWriter */;
2490 val* var217 /* : Array[String] */;
2491 val* var219 /* : Array[String] */;
2492 val* var_220 /* var : Array[String] */;
2493 val* var221 /* : IndexedIterator[nullable Object] */;
2494 val* var_222 /* var : IndexedIterator[String] */;
2495 short int var223 /* : Bool */;
2496 val* var225 /* : nullable Object */;
2497 val* var_l226 /* var l: String */;
2498 static val* varonce227;
2499 val* var228 /* : String */;
2500 char* var229 /* : CString */;
2501 val* var230 /* : String */;
2502 val* var231 /* : nullable Int */;
2503 val* var232 /* : nullable Int */;
2504 val* var233 /* : nullable Bool */;
2505 val* var234 /* : nullable Bool */;
2506 val* var235 /* : ToolContext */;
2507 val* var237 /* : ToolContext */;
2508 val* var238 /* : OptionInt */;
2509 val* var240 /* : OptionInt */;
2510 val* var241 /* : nullable Object */;
2511 val* var243 /* : nullable Object */;
2512 long var244 /* : Int */;
2513 long var_max_c_lines /* var max_c_lines: Int */;
2514 val* var245 /* : AbstractCompiler */;
2515 val* var247 /* : AbstractCompiler */;
2516 val* var248 /* : Array[CodeFile] */;
2517 val* var250 /* : Array[CodeFile] */;
2518 val* var_251 /* var : Array[CodeFile] */;
2519 val* var252 /* : IndexedIterator[nullable Object] */;
2520 val* var_253 /* var : IndexedIterator[CodeFile] */;
2521 short int var254 /* : Bool */;
2522 val* var256 /* : nullable Object */;
2523 val* var_f /* var f: CodeFile */;
2524 long var_i /* var i: Int */;
2525 long var_count /* var count: Int */;
2526 val* var_file /* var file: nullable FileWriter */;
2527 val* var257 /* : Array[CodeWriter] */;
2528 val* var259 /* : Array[CodeWriter] */;
2529 val* var_260 /* var : Array[CodeWriter] */;
2530 val* var261 /* : IndexedIterator[nullable Object] */;
2531 val* var_262 /* var : IndexedIterator[CodeWriter] */;
2532 short int var263 /* : Bool */;
2533 val* var265 /* : nullable Object */;
2534 val* var_vis /* var vis: CodeWriter */;
2535 val* var266 /* : AbstractCompiler */;
2536 val* var268 /* : AbstractCompiler */;
2537 val* var269 /* : CodeWriter */;
2538 val* var271 /* : CodeWriter */;
2539 short int var272 /* : Bool */;
2540 val* var_other274 /* var other: nullable Object */;
2541 short int var275 /* : Bool */;
2542 short int var277 /* : Bool */;
2543 val* var279 /* : Array[String] */;
2544 val* var281 /* : Array[String] */;
2545 long var282 /* : Int */;
2546 long var284 /* : Int */;
2547 val* var285 /* : Array[String] */;
2548 val* var287 /* : Array[String] */;
2549 long var288 /* : Int */;
2550 long var290 /* : Int */;
2551 long var291 /* : Int */;
2552 short int var293 /* : Bool */;
2553 int cltype;
2554 int idtype;
2555 const char* var_class_name;
2556 long var294 /* : Int */;
2557 long var_total_lines /* var total_lines: Int */;
2558 short int var295 /* : Bool */;
2559 short int var297 /* : Bool */;
2560 long var298 /* : Int */;
2561 short int var300 /* : Bool */;
2562 int cltype301;
2563 int idtype302;
2564 const char* var_class_name303;
2565 long var304 /* : Int */;
2566 short int var305 /* : Bool */;
2567 short int var306 /* : Bool */;
2568 short int var307 /* : Bool */;
2569 short int var309 /* : Bool */;
2570 short int var311 /* : Bool */;
2571 short int var_312 /* var : Bool */;
2572 short int var313 /* : Bool */;
2573 short int var314 /* : Bool */;
2574 short int var316 /* : Bool */;
2575 int cltype317;
2576 int idtype318;
2577 const char* var_class_name319;
2578 short int var320 /* : Bool */;
2579 short int var_321 /* var : Bool */;
2580 short int var322 /* : Bool */;
2581 short int var324 /* : Bool */;
2582 int cltype325;
2583 int idtype326;
2584 const char* var_class_name327;
2585 short int var328 /* : Bool */;
2586 long var329 /* : Int */;
2587 short int var331 /* : Bool */;
2588 int cltype332;
2589 int idtype333;
2590 const char* var_class_name334;
2591 long var335 /* : Int */;
2592 short int var336 /* : Bool */;
2593 short int var337 /* : Bool */;
2594 short int var339 /* : Bool */;
2595 short int var340 /* : Bool */;
2596 val* var342 /* : NativeArray[String] */;
2597 static val* varonce341;
2598 static val* varonce343;
2599 val* var344 /* : String */;
2600 char* var345 /* : CString */;
2601 val* var346 /* : String */;
2602 val* var347 /* : nullable Int */;
2603 val* var348 /* : nullable Int */;
2604 val* var349 /* : nullable Bool */;
2605 val* var350 /* : nullable Bool */;
2606 static val* varonce351;
2607 val* var352 /* : String */;
2608 char* var353 /* : CString */;
2609 val* var354 /* : String */;
2610 val* var355 /* : nullable Int */;
2611 val* var356 /* : nullable Int */;
2612 val* var357 /* : nullable Bool */;
2613 val* var358 /* : nullable Bool */;
2614 val* var359 /* : String */;
2615 val* var361 /* : String */;
2616 val* var362 /* : String */;
2617 val* var363 /* : String */;
2618 val* var_cfilename /* var cfilename: String */;
2619 val* var365 /* : NativeArray[String] */;
2620 static val* varonce364;
2621 static val* varonce366;
2622 val* var367 /* : String */;
2623 char* var368 /* : CString */;
2624 val* var369 /* : String */;
2625 val* var370 /* : nullable Int */;
2626 val* var371 /* : nullable Int */;
2627 val* var372 /* : nullable Bool */;
2628 val* var373 /* : nullable Bool */;
2629 val* var374 /* : String */;
2630 val* var_cfilepath /* var cfilepath: String */;
2631 val* var375 /* : ToolContext */;
2632 val* var377 /* : ToolContext */;
2633 val* var379 /* : NativeArray[String] */;
2634 static val* varonce378;
2635 static val* varonce380;
2636 val* var381 /* : String */;
2637 char* var382 /* : CString */;
2638 val* var383 /* : String */;
2639 val* var384 /* : nullable Int */;
2640 val* var385 /* : nullable Int */;
2641 val* var386 /* : nullable Bool */;
2642 val* var387 /* : nullable Bool */;
2643 val* var388 /* : String */;
2644 val* var389 /* : FileWriter */;
2645 val* var391 /* : NativeArray[String] */;
2646 static val* varonce390;
2647 static val* varonce392;
2648 val* var393 /* : String */;
2649 char* var394 /* : CString */;
2650 val* var395 /* : String */;
2651 val* var396 /* : nullable Int */;
2652 val* var397 /* : nullable Int */;
2653 val* var398 /* : nullable Bool */;
2654 val* var399 /* : nullable Bool */;
2655 static val* varonce400;
2656 val* var401 /* : String */;
2657 char* var402 /* : CString */;
2658 val* var403 /* : String */;
2659 val* var404 /* : nullable Int */;
2660 val* var405 /* : nullable Int */;
2661 val* var406 /* : nullable Bool */;
2662 val* var407 /* : nullable Bool */;
2663 val* var408 /* : String */;
2664 val* var410 /* : String */;
2665 val* var411 /* : String */;
2666 val* var412 /* : Array[String] */;
2667 val* var414 /* : Array[String] */;
2668 val* var_415 /* var : Array[String] */;
2669 val* var416 /* : IndexedIterator[nullable Object] */;
2670 val* var_417 /* var : IndexedIterator[String] */;
2671 short int var418 /* : Bool */;
2672 val* var420 /* : nullable Object */;
2673 val* var_l421 /* var l: String */;
2674 static val* varonce422;
2675 val* var423 /* : String */;
2676 char* var424 /* : CString */;
2677 val* var425 /* : String */;
2678 val* var426 /* : nullable Int */;
2679 val* var427 /* : nullable Int */;
2680 val* var428 /* : nullable Bool */;
2681 val* var429 /* : nullable Bool */;
2682 val* var430 /* : Array[String] */;
2683 val* var432 /* : Array[String] */;
2684 val* var_433 /* var : Array[String] */;
2685 val* var434 /* : IndexedIterator[nullable Object] */;
2686 val* var_435 /* var : IndexedIterator[String] */;
2687 short int var436 /* : Bool */;
2688 val* var438 /* : nullable Object */;
2689 val* var_l439 /* var l: String */;
2690 static val* varonce440;
2691 val* var441 /* : String */;
2692 char* var442 /* : CString */;
2693 val* var443 /* : String */;
2694 val* var444 /* : nullable Int */;
2695 val* var445 /* : nullable Int */;
2696 val* var446 /* : nullable Bool */;
2697 val* var447 /* : nullable Bool */;
2698 short int var448 /* : Bool */;
2699 short int var449 /* : Bool */;
2700 short int var451 /* : Bool */;
2701 short int var453 /* : Bool */;
2702 val* var456 /* : NativeArray[String] */;
2703 static val* varonce455;
2704 static val* varonce457;
2705 val* var458 /* : String */;
2706 char* var459 /* : CString */;
2707 val* var460 /* : String */;
2708 val* var461 /* : nullable Int */;
2709 val* var462 /* : nullable Int */;
2710 val* var463 /* : nullable Bool */;
2711 val* var464 /* : nullable Bool */;
2712 val* var465 /* : String */;
2713 val* var467 /* : String */;
2714 val* var468 /* : String */;
2715 val* var_cfilename469 /* var cfilename: String */;
2716 val* var471 /* : NativeArray[String] */;
2717 static val* varonce470;
2718 static val* varonce472;
2719 val* var473 /* : String */;
2720 char* var474 /* : CString */;
2721 val* var475 /* : String */;
2722 val* var476 /* : nullable Int */;
2723 val* var477 /* : nullable Int */;
2724 val* var478 /* : nullable Bool */;
2725 val* var479 /* : nullable Bool */;
2726 val* var480 /* : String */;
2727 val* var_cfilepath481 /* var cfilepath: String */;
2728 val* var_hfile /* var hfile: nullable FileWriter */;
2729 val* var482 /* : FileWriter */;
2730 val* var484 /* : NativeArray[String] */;
2731 static val* varonce483;
2732 static val* varonce485;
2733 val* var486 /* : String */;
2734 char* var487 /* : CString */;
2735 val* var488 /* : String */;
2736 val* var489 /* : nullable Int */;
2737 val* var490 /* : nullable Int */;
2738 val* var491 /* : nullable Bool */;
2739 val* var492 /* : nullable Bool */;
2740 static val* varonce493;
2741 val* var494 /* : String */;
2742 char* var495 /* : CString */;
2743 val* var496 /* : String */;
2744 val* var497 /* : nullable Int */;
2745 val* var498 /* : nullable Int */;
2746 val* var499 /* : nullable Bool */;
2747 val* var500 /* : nullable Bool */;
2748 val* var501 /* : String */;
2749 val* var502 /* : HashSet[String] */;
2750 val* var504 /* : HashSet[String] */;
2751 val* var_505 /* var : HashSet[String] */;
2752 val* var506 /* : Iterator[nullable Object] */;
2753 val* var_507 /* var : Iterator[String] */;
2754 short int var508 /* : Bool */;
2755 val* var510 /* : nullable Object */;
2756 val* var_key /* var key: String */;
2757 val* var511 /* : AbstractCompiler */;
2758 val* var513 /* : AbstractCompiler */;
2759 val* var514 /* : HashMap[String, String] */;
2760 val* var516 /* : HashMap[String, String] */;
2761 short int var517 /* : Bool */;
2762 short int var518 /* : Bool */;
2763 val* var519 /* : AbstractCompiler */;
2764 val* var521 /* : AbstractCompiler */;
2765 val* var522 /* : HashMap[String, ANode] */;
2766 val* var524 /* : HashMap[String, ANode] */;
2767 val* var525 /* : nullable Object */;
2768 val* var_node /* var node: nullable ANode */;
2769 short int var526 /* : Bool */;
2770 short int var527 /* : Bool */;
2771 short int var529 /* : Bool */;
2772 short int var530 /* : Bool */;
2773 val* var532 /* : NativeArray[String] */;
2774 static val* varonce531;
2775 static val* varonce533;
2776 val* var534 /* : String */;
2777 char* var535 /* : CString */;
2778 val* var536 /* : String */;
2779 val* var537 /* : nullable Int */;
2780 val* var538 /* : nullable Int */;
2781 val* var539 /* : nullable Bool */;
2782 val* var540 /* : nullable Bool */;
2783 val* var541 /* : String */;
2784 val* var542 /* : Sys */;
2785 val* var544 /* : NativeArray[String] */;
2786 static val* varonce543;
2787 static val* varonce545;
2788 val* var546 /* : String */;
2789 char* var547 /* : CString */;
2790 val* var548 /* : String */;
2791 val* var549 /* : nullable Int */;
2792 val* var550 /* : nullable Int */;
2793 val* var551 /* : nullable Bool */;
2794 val* var552 /* : nullable Bool */;
2795 val* var553 /* : String */;
2796 val* var554 /* : AbstractCompiler */;
2797 val* var556 /* : AbstractCompiler */;
2798 val* var557 /* : HashMap[String, String] */;
2799 val* var559 /* : HashMap[String, String] */;
2800 val* var560 /* : nullable Object */;
2801 static val* varonce561;
2802 val* var562 /* : String */;
2803 char* var563 /* : CString */;
2804 val* var564 /* : String */;
2805 val* var565 /* : nullable Int */;
2806 val* var566 /* : nullable Int */;
2807 val* var567 /* : nullable Bool */;
2808 val* var568 /* : nullable Bool */;
2809 val* var569 /* : ToolContext */;
2810 val* var571 /* : ToolContext */;
2811 val* var573 /* : NativeArray[String] */;
2812 static val* varonce572;
2813 static val* varonce574;
2814 val* var575 /* : String */;
2815 char* var576 /* : CString */;
2816 val* var577 /* : String */;
2817 val* var578 /* : nullable Int */;
2818 val* var579 /* : nullable Int */;
2819 val* var580 /* : nullable Bool */;
2820 val* var581 /* : nullable Bool */;
2821 long var582 /* : Int */;
2822 long var584 /* : Int */;
2823 val* var585 /* : String */;
2824 val* var586 /* : String */;
2825 var_compile_dir = p0;
2826 var_cfiles = p1;
2827 {
2828 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
2829 var2 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
2830 if (unlikely(var2 == NULL)) {
2831 if(catchStack.cursor >= 0){
2832 longjmp(catchStack.envs[catchStack.cursor], 1);
2833 }
2834 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
2835 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
2836 fatal_exit(1);
2837 }
2838 var = var2;
2839 RET_LABEL1:(void)0;
2840 }
2841 }
2842 {
2843 { /* Inline abstract_compiler$AbstractCompiler$target_platform (var) on <var:AbstractCompiler> */
2844 var5 = var->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___target_platform].val; /* _target_platform on <var:AbstractCompiler> */
2845 if (unlikely(var5 == NULL)) {
2846 if(catchStack.cursor >= 0){
2847 longjmp(catchStack.envs[catchStack.cursor], 1);
2848 }
2849 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _target_platform");
2850 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 563);
2851 fatal_exit(1);
2852 }
2853 var3 = var5;
2854 RET_LABEL4:(void)0;
2855 }
2856 }
2857 var_platform = var3;
2858 {
2859 var6 = nitc___nitc__Platform___supports_libunwind(var_platform);
2860 }
2861 if (var6){
2862 {
2863 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
2864 var9 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
2865 if (unlikely(var9 == NULL)) {
2866 if(catchStack.cursor >= 0){
2867 longjmp(catchStack.envs[catchStack.cursor], 1);
2868 }
2869 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
2870 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
2871 fatal_exit(1);
2872 }
2873 var7 = var9;
2874 RET_LABEL8:(void)0;
2875 }
2876 }
2877 {
2878 nitc___nitc__AbstractCompiler___build_c_to_nit_bindings(var7); /* Direct call abstract_compiler$AbstractCompiler$build_c_to_nit_bindings on <var7:AbstractCompiler>*/
2879 }
2880 } else {
2881 }
2882 if (likely(varonce!=NULL)) {
2883 var10 = varonce;
2884 } else {
2885 var11 = "-DWITH_LIBGC";
2886 var13 = (val*)(12l<<2|1);
2887 var14 = (val*)(12l<<2|1);
2888 var15 = (val*)((long)(0)<<2|3);
2889 var16 = (val*)((long)(0)<<2|3);
2890 var12 = core__flat___CString___to_s_unsafe(var11, var13, var14, var15, var16);
2891 var10 = var12;
2892 varonce = var10;
2893 }
2894 var_cc_opt_with_libgc = var10;
2895 {
2896 var17 = nitc___nitc__Platform___supports_libgc(var_platform);
2897 }
2898 var18 = !var17;
2899 if (var18){
2900 if (likely(varonce19!=NULL)) {
2901 var20 = varonce19;
2902 } else {
2903 var21 = "";
2904 var23 = (val*)(0l<<2|1);
2905 var24 = (val*)(0l<<2|1);
2906 var25 = (val*)((long)(0)<<2|3);
2907 var26 = (val*)((long)(0)<<2|3);
2908 var22 = core__flat___CString___to_s_unsafe(var21, var23, var24, var25, var26);
2909 var20 = var22;
2910 varonce19 = var20;
2911 }
2912 var_cc_opt_with_libgc = var20;
2913 } else {
2914 }
2915 var27 = NEW_nitc__ExternCFile(&type_nitc__ExternCFile);
2916 if (likely(varonce28!=NULL)) {
2917 var29 = varonce28;
2918 } else {
2919 var30 = "gc_chooser.c";
2920 var32 = (val*)(12l<<2|1);
2921 var33 = (val*)(12l<<2|1);
2922 var34 = (val*)((long)(0)<<2|3);
2923 var35 = (val*)((long)(0)<<2|3);
2924 var31 = core__flat___CString___to_s_unsafe(var30, var32, var33, var34, var35);
2925 var29 = var31;
2926 varonce28 = var29;
2927 }
2928 {
2929 ((void(*)(val* self, val* p0))(var27->class->vft[COLOR_nitc__c_tools__ExternFile__filename_61d]))(var27, var29); /* filename= on <var27:ExternCFile>*/
2930 }
2931 {
2932 ((void(*)(val* self, val* p0))(var27->class->vft[COLOR_nitc__c_tools__ExternCFile__cflags_61d]))(var27, var_cc_opt_with_libgc); /* cflags= on <var27:ExternCFile>*/
2933 }
2934 {
2935 ((void(*)(val* self))(var27->class->vft[COLOR_core__kernel__Object__init]))(var27); /* init on <var27:ExternCFile>*/
2936 }
2937 var_gc_chooser = var27;
2938 if (likely(varonce36!=NULL)) {
2939 var37 = varonce36;
2940 } else {
2941 var38 = "";
2942 var40 = (val*)(0l<<2|1);
2943 var41 = (val*)(0l<<2|1);
2944 var42 = (val*)((long)(0)<<2|3);
2945 var43 = (val*)((long)(0)<<2|3);
2946 var39 = core__flat___CString___to_s_unsafe(var38, var40, var41, var42, var43);
2947 var37 = var39;
2948 varonce36 = var37;
2949 }
2950 {
2951 { /* Inline kernel$Object$!= (var_cc_opt_with_libgc,var37) on <var_cc_opt_with_libgc:String> */
2952 var_other = var37;
2953 {
2954 var46 = ((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>*/
2955 }
2956 var47 = !var46;
2957 var44 = var47;
2958 goto RET_LABEL45;
2959 RET_LABEL45:(void)0;
2960 }
2961 }
2962 if (var44){
2963 {
2964 { /* Inline c_tools$ExternFile$pkgconfigs (var_gc_chooser) on <var_gc_chooser:ExternCFile> */
2965 var50 = var_gc_chooser->attrs[COLOR_nitc__c_tools__ExternFile___pkgconfigs].val; /* _pkgconfigs on <var_gc_chooser:ExternCFile> */
2966 if (unlikely(var50 == NULL)) {
2967 if(catchStack.cursor >= 0){
2968 longjmp(catchStack.envs[catchStack.cursor], 1);
2969 }
2970 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _pkgconfigs");
2971 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 123);
2972 fatal_exit(1);
2973 }
2974 var48 = var50;
2975 RET_LABEL49:(void)0;
2976 }
2977 }
2978 if (likely(varonce51!=NULL)) {
2979 var52 = varonce51;
2980 } else {
2981 var53 = "bdw-gc";
2982 var55 = (val*)(6l<<2|1);
2983 var56 = (val*)(6l<<2|1);
2984 var57 = (val*)((long)(0)<<2|3);
2985 var58 = (val*)((long)(0)<<2|3);
2986 var54 = core__flat___CString___to_s_unsafe(var53, var55, var56, var57, var58);
2987 var52 = var54;
2988 varonce51 = var52;
2989 }
2990 {
2991 core___core__Array___core__abstract_collection__SimpleCollection__add(var48, var52); /* Direct call array$Array$add on <var48:Array[String]>*/
2992 }
2993 } else {
2994 }
2995 {
2996 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
2997 var61 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
2998 if (unlikely(var61 == NULL)) {
2999 if(catchStack.cursor >= 0){
3000 longjmp(catchStack.envs[catchStack.cursor], 1);
3001 }
3002 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3003 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
3004 fatal_exit(1);
3005 }
3006 var59 = var61;
3007 RET_LABEL60:(void)0;
3008 }
3009 }
3010 {
3011 { /* Inline abstract_compiler$AbstractCompiler$extern_bodies (var59) on <var59:AbstractCompiler> */
3012 var64 = var59->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___extern_bodies].val; /* _extern_bodies on <var59:AbstractCompiler> */
3013 if (unlikely(var64 == NULL)) {
3014 if(catchStack.cursor >= 0){
3015 longjmp(catchStack.envs[catchStack.cursor], 1);
3016 }
3017 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _extern_bodies");
3018 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1075);
3019 fatal_exit(1);
3020 }
3021 var62 = var64;
3022 RET_LABEL63:(void)0;
3023 }
3024 }
3025 {
3026 core___core__Array___core__abstract_collection__SimpleCollection__add(var62, var_gc_chooser); /* Direct call array$Array$add on <var62:Array[ExternFile]>*/
3027 }
3028 {
3029 { /* Inline abstract_compiler$Toolchain$toolcontext (self) on <self:MakefileToolchain> */
3030 var67 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
3031 if (unlikely(var67 == NULL)) {
3032 if(catchStack.cursor >= 0){
3033 longjmp(catchStack.envs[catchStack.cursor], 1);
3034 }
3035 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
3036 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 131);
3037 fatal_exit(1);
3038 }
3039 var65 = var67;
3040 RET_LABEL66:(void)0;
3041 }
3042 }
3043 {
3044 { /* Inline toolcontext$ToolContext$nit_dir (var65) on <var65:ToolContext> */
3045 var70 = var65->attrs[COLOR_nitc__toolcontext__ToolContext___nit_dir].val; /* _nit_dir on <var65:ToolContext> */
3046 var68 = var70;
3047 RET_LABEL69:(void)0;
3048 }
3049 }
3050 if (likely(varonce71!=NULL)) {
3051 var72 = varonce71;
3052 } else {
3053 var73 = "clib";
3054 var75 = (val*)(4l<<2|1);
3055 var76 = (val*)(4l<<2|1);
3056 var77 = (val*)((long)(0)<<2|3);
3057 var78 = (val*)((long)(0)<<2|3);
3058 var74 = core__flat___CString___to_s_unsafe(var73, var75, var76, var77, var78);
3059 var72 = var74;
3060 varonce71 = var72;
3061 }
3062 if (var68 == NULL) {
3063 if(catchStack.cursor >= 0){
3064 longjmp(catchStack.envs[catchStack.cursor], 1);
3065 }
3066 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3067 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 218);
3068 fatal_exit(1);
3069 } else {
3070 var79 = core__file___String____47d(var68, var72);
3071 }
3072 var_clib = var79;
3073 {
3074 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
3075 var82 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
3076 if (unlikely(var82 == NULL)) {
3077 if(catchStack.cursor >= 0){
3078 longjmp(catchStack.envs[catchStack.cursor], 1);
3079 }
3080 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3081 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
3082 fatal_exit(1);
3083 }
3084 var80 = var82;
3085 RET_LABEL81:(void)0;
3086 }
3087 }
3088 {
3089 { /* Inline abstract_compiler$AbstractCompiler$files_to_copy (var80) on <var80:AbstractCompiler> */
3090 var85 = var80->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___files_to_copy].val; /* _files_to_copy on <var80:AbstractCompiler> */
3091 if (unlikely(var85 == NULL)) {
3092 if(catchStack.cursor >= 0){
3093 longjmp(catchStack.envs[catchStack.cursor], 1);
3094 }
3095 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files_to_copy");
3096 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1078);
3097 fatal_exit(1);
3098 }
3099 var83 = var85;
3100 RET_LABEL84:(void)0;
3101 }
3102 }
3103 if (unlikely(varonce86==NULL)) {
3104 var87 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
3105 if (likely(varonce88!=NULL)) {
3106 var89 = varonce88;
3107 } else {
3108 var90 = "/gc_chooser.c";
3109 var92 = (val*)(13l<<2|1);
3110 var93 = (val*)(13l<<2|1);
3111 var94 = (val*)((long)(0)<<2|3);
3112 var95 = (val*)((long)(0)<<2|3);
3113 var91 = core__flat___CString___to_s_unsafe(var90, var92, var93, var94, var95);
3114 var89 = var91;
3115 varonce88 = var89;
3116 }
3117 ((struct instance_core__NativeArray*)var87)->values[1]=var89;
3118 } else {
3119 var87 = varonce86;
3120 varonce86 = NULL;
3121 }
3122 ((struct instance_core__NativeArray*)var87)->values[0]=var_clib;
3123 {
3124 var96 = ((val*(*)(val* self))(var87->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var87); /* native_to_s on <var87:NativeArray[String]>*/
3125 }
3126 varonce86 = var87;
3127 {
3128 core___core__Array___core__abstract_collection__SimpleCollection__add(var83, var96); /* Direct call array$Array$add on <var83:Array[String]>*/
3129 }
3130 {
3131 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
3132 var99 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
3133 if (unlikely(var99 == NULL)) {
3134 if(catchStack.cursor >= 0){
3135 longjmp(catchStack.envs[catchStack.cursor], 1);
3136 }
3137 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3138 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
3139 fatal_exit(1);
3140 }
3141 var97 = var99;
3142 RET_LABEL98:(void)0;
3143 }
3144 }
3145 {
3146 { /* Inline abstract_compiler$AbstractCompiler$files_to_copy (var97) on <var97:AbstractCompiler> */
3147 var102 = var97->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___files_to_copy].val; /* _files_to_copy on <var97:AbstractCompiler> */
3148 if (unlikely(var102 == NULL)) {
3149 if(catchStack.cursor >= 0){
3150 longjmp(catchStack.envs[catchStack.cursor], 1);
3151 }
3152 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files_to_copy");
3153 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1078);
3154 fatal_exit(1);
3155 }
3156 var100 = var102;
3157 RET_LABEL101:(void)0;
3158 }
3159 }
3160 if (unlikely(varonce103==NULL)) {
3161 var104 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
3162 if (likely(varonce105!=NULL)) {
3163 var106 = varonce105;
3164 } else {
3165 var107 = "/gc_chooser.h";
3166 var109 = (val*)(13l<<2|1);
3167 var110 = (val*)(13l<<2|1);
3168 var111 = (val*)((long)(0)<<2|3);
3169 var112 = (val*)((long)(0)<<2|3);
3170 var108 = core__flat___CString___to_s_unsafe(var107, var109, var110, var111, var112);
3171 var106 = var108;
3172 varonce105 = var106;
3173 }
3174 ((struct instance_core__NativeArray*)var104)->values[1]=var106;
3175 } else {
3176 var104 = varonce103;
3177 varonce103 = NULL;
3178 }
3179 ((struct instance_core__NativeArray*)var104)->values[0]=var_clib;
3180 {
3181 var113 = ((val*(*)(val* self))(var104->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var104); /* native_to_s on <var104:NativeArray[String]>*/
3182 }
3183 varonce103 = var104;
3184 {
3185 core___core__Array___core__abstract_collection__SimpleCollection__add(var100, var113); /* Direct call array$Array$add on <var100:Array[String]>*/
3186 }
3187 {
3188 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
3189 var116 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
3190 if (unlikely(var116 == NULL)) {
3191 if(catchStack.cursor >= 0){
3192 longjmp(catchStack.envs[catchStack.cursor], 1);
3193 }
3194 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3195 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
3196 fatal_exit(1);
3197 }
3198 var114 = var116;
3199 RET_LABEL115:(void)0;
3200 }
3201 }
3202 {
3203 { /* Inline abstract_compiler$AbstractCompiler$mainmodule (var114) on <var114:AbstractCompiler> */
3204 var119 = var114->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var114:AbstractCompiler> */
3205 if (unlikely(var119 == NULL)) {
3206 if(catchStack.cursor >= 0){
3207 longjmp(catchStack.envs[catchStack.cursor], 1);
3208 }
3209 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
3210 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 545);
3211 fatal_exit(1);
3212 }
3213 var117 = var119;
3214 RET_LABEL118:(void)0;
3215 }
3216 }
3217 {
3218 { /* Inline mmodule$MModule$in_importation (var117) on <var117:MModule> */
3219 var122 = var117->attrs[COLOR_nitc__mmodule__MModule___in_importation].val; /* _in_importation on <var117:MModule> */
3220 if (unlikely(var122 == NULL)) {
3221 if(catchStack.cursor >= 0){
3222 longjmp(catchStack.envs[catchStack.cursor], 1);
3223 }
3224 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
3225 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 108);
3226 fatal_exit(1);
3227 }
3228 var120 = var122;
3229 RET_LABEL121:(void)0;
3230 }
3231 }
3232 {
3233 var123 = poset___poset__POSetElement___greaters(var120);
3234 }
3235 var_ = var123;
3236 {
3237 var124 = ((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]>*/
3238 }
3239 var_125 = var124;
3240 for(;;) {
3241 {
3242 var126 = ((short int(*)(val* self))((((long)var_125&3)?class_info[((long)var_125&3)]:var_125->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_125); /* is_ok on <var_125:Iterator[MModule]>*/
3243 }
3244 if (var126){
3245 } else {
3246 goto BREAK_label;
3247 }
3248 {
3249 var127 = ((val*(*)(val* self))((((long)var_125&3)?class_info[((long)var_125&3)]:var_125->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_125); /* item on <var_125:Iterator[MModule]>*/
3250 }
3251 var_m = var127;
3252 {
3253 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
3254 var130 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
3255 if (unlikely(var130 == NULL)) {
3256 if(catchStack.cursor >= 0){
3257 longjmp(catchStack.envs[catchStack.cursor], 1);
3258 }
3259 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3260 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
3261 fatal_exit(1);
3262 }
3263 var128 = var130;
3264 RET_LABEL129:(void)0;
3265 }
3266 }
3267 {
3268 nitc___nitc__SeparateCompiler___nitc__abstract_compiler__AbstractCompiler__finalize_ffi_for_module(var128, var_m); /* Direct call separate_compiler$SeparateCompiler$finalize_ffi_for_module on <var128:AbstractCompiler>*/
3269 }
3270 {
3271 ((void(*)(val* self))((((long)var_125&3)?class_info[((long)var_125&3)]:var_125->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_125); /* next on <var_125:Iterator[MModule]>*/
3272 }
3273 }
3274 BREAK_label: (void)0;
3275 {
3276 ((void(*)(val* self))((((long)var_125&3)?class_info[((long)var_125&3)]:var_125->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_125); /* finish on <var_125:Iterator[MModule]>*/
3277 }
3278 {
3279 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
3280 var133 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
3281 if (unlikely(var133 == NULL)) {
3282 if(catchStack.cursor >= 0){
3283 longjmp(catchStack.envs[catchStack.cursor], 1);
3284 }
3285 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3286 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
3287 fatal_exit(1);
3288 }
3289 var131 = var133;
3290 RET_LABEL132:(void)0;
3291 }
3292 }
3293 {
3294 { /* Inline abstract_compiler$AbstractCompiler$files_to_copy (var131) on <var131:AbstractCompiler> */
3295 var136 = var131->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___files_to_copy].val; /* _files_to_copy on <var131:AbstractCompiler> */
3296 if (unlikely(var136 == NULL)) {
3297 if(catchStack.cursor >= 0){
3298 longjmp(catchStack.envs[catchStack.cursor], 1);
3299 }
3300 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files_to_copy");
3301 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1078);
3302 fatal_exit(1);
3303 }
3304 var134 = var136;
3305 RET_LABEL135:(void)0;
3306 }
3307 }
3308 var_137 = var134;
3309 {
3310 var138 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_137);
3311 }
3312 var_139 = var138;
3313 for(;;) {
3314 {
3315 var140 = ((short int(*)(val* self))((((long)var_139&3)?class_info[((long)var_139&3)]:var_139->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_139); /* is_ok on <var_139:IndexedIterator[String]>*/
3316 }
3317 if (var140){
3318 } else {
3319 goto BREAK_label141;
3320 }
3321 {
3322 var142 = ((val*(*)(val* self))((((long)var_139&3)?class_info[((long)var_139&3)]:var_139->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_139); /* item on <var_139:IndexedIterator[String]>*/
3323 }
3324 var_src = var142;
3325 {
3326 var143 = ((val*(*)(val* self, val* p0))(var_src->class->vft[COLOR_core__file__String__basename]))(var_src, ((val*)NULL)); /* basename on <var_src:String>*/
3327 }
3328 var_basename = var143;
3329 if (unlikely(varonce144==NULL)) {
3330 var145 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
3331 if (likely(varonce146!=NULL)) {
3332 var147 = varonce146;
3333 } else {
3334 var148 = "/";
3335 var150 = (val*)(1l<<2|1);
3336 var151 = (val*)(1l<<2|1);
3337 var152 = (val*)((long)(0)<<2|3);
3338 var153 = (val*)((long)(0)<<2|3);
3339 var149 = core__flat___CString___to_s_unsafe(var148, var150, var151, var152, var153);
3340 var147 = var149;
3341 varonce146 = var147;
3342 }
3343 ((struct instance_core__NativeArray*)var145)->values[1]=var147;
3344 } else {
3345 var145 = varonce144;
3346 varonce144 = NULL;
3347 }
3348 ((struct instance_core__NativeArray*)var145)->values[0]=var_compile_dir;
3349 ((struct instance_core__NativeArray*)var145)->values[2]=var_basename;
3350 {
3351 var154 = ((val*(*)(val* self))(var145->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var145); /* native_to_s on <var145:NativeArray[String]>*/
3352 }
3353 varonce144 = var145;
3354 var_dst = var154;
3355 {
3356 core__file___String___file_copy_to(var_src, var_dst); /* Direct call file$String$file_copy_to on <var_src:String>*/
3357 }
3358 {
3359 ((void(*)(val* self))((((long)var_139&3)?class_info[((long)var_139&3)]:var_139->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_139); /* next on <var_139:IndexedIterator[String]>*/
3360 }
3361 }
3362 BREAK_label141: (void)0;
3363 {
3364 ((void(*)(val* self))((((long)var_139&3)?class_info[((long)var_139&3)]:var_139->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_139); /* finish on <var_139:IndexedIterator[String]>*/
3365 }
3366 {
3367 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
3368 var157 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
3369 if (unlikely(var157 == NULL)) {
3370 if(catchStack.cursor >= 0){
3371 longjmp(catchStack.envs[catchStack.cursor], 1);
3372 }
3373 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3374 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
3375 fatal_exit(1);
3376 }
3377 var155 = var157;
3378 RET_LABEL156:(void)0;
3379 }
3380 }
3381 {
3382 { /* Inline abstract_compiler$AbstractCompiler$header (var155) on <var155:AbstractCompiler> */
3383 var160 = var155->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <var155:AbstractCompiler> */
3384 if (unlikely(var160 == NULL)) {
3385 if(catchStack.cursor >= 0){
3386 longjmp(catchStack.envs[catchStack.cursor], 1);
3387 }
3388 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
3389 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 599);
3390 fatal_exit(1);
3391 }
3392 var158 = var160;
3393 RET_LABEL159:(void)0;
3394 }
3395 }
3396 {
3397 { /* Inline abstract_compiler$CodeWriter$file (var158) on <var158:CodeWriter> */
3398 var163 = var158->attrs[COLOR_nitc__abstract_compiler__CodeWriter___file].val; /* _file on <var158:CodeWriter> */
3399 if (unlikely(var163 == NULL)) {
3400 if(catchStack.cursor >= 0){
3401 longjmp(catchStack.envs[catchStack.cursor], 1);
3402 }
3403 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _file");
3404 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1186);
3405 fatal_exit(1);
3406 }
3407 var161 = var163;
3408 RET_LABEL162:(void)0;
3409 }
3410 }
3411 {
3412 { /* Inline abstract_compiler$CodeFile$name (var161) on <var161:CodeFile> */
3413 var166 = var161->attrs[COLOR_nitc__abstract_compiler__CodeFile___name].val; /* _name on <var161:CodeFile> */
3414 if (unlikely(var166 == NULL)) {
3415 if(catchStack.cursor >= 0){
3416 longjmp(catchStack.envs[catchStack.cursor], 1);
3417 }
3418 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
3419 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1170);
3420 fatal_exit(1);
3421 }
3422 var164 = var166;
3423 RET_LABEL165:(void)0;
3424 }
3425 }
3426 if (likely(varonce167!=NULL)) {
3427 var168 = varonce167;
3428 } else {
3429 var169 = ".h";
3430 var171 = (val*)(2l<<2|1);
3431 var172 = (val*)(2l<<2|1);
3432 var173 = (val*)((long)(0)<<2|3);
3433 var174 = (val*)((long)(0)<<2|3);
3434 var170 = core__flat___CString___to_s_unsafe(var169, var171, var172, var173, var174);
3435 var168 = var170;
3436 varonce167 = var168;
3437 }
3438 {
3439 var175 = ((val*(*)(val* self, val* p0))(var164->class->vft[COLOR_core__abstract_text__Text___43d]))(var164, var168); /* + on <var164:String>*/
3440 }
3441 var_hfilename = var175;
3442 if (unlikely(varonce176==NULL)) {
3443 var177 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
3444 if (likely(varonce178!=NULL)) {
3445 var179 = varonce178;
3446 } else {
3447 var180 = "/";
3448 var182 = (val*)(1l<<2|1);
3449 var183 = (val*)(1l<<2|1);
3450 var184 = (val*)((long)(0)<<2|3);
3451 var185 = (val*)((long)(0)<<2|3);
3452 var181 = core__flat___CString___to_s_unsafe(var180, var182, var183, var184, var185);
3453 var179 = var181;
3454 varonce178 = var179;
3455 }
3456 ((struct instance_core__NativeArray*)var177)->values[1]=var179;
3457 } else {
3458 var177 = varonce176;
3459 varonce176 = NULL;
3460 }
3461 ((struct instance_core__NativeArray*)var177)->values[0]=var_compile_dir;
3462 ((struct instance_core__NativeArray*)var177)->values[2]=var_hfilename;
3463 {
3464 var186 = ((val*(*)(val* self))(var177->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var177); /* native_to_s on <var177:NativeArray[String]>*/
3465 }
3466 varonce176 = var177;
3467 var_hfilepath = var186;
3468 var187 = NEW_core__FileWriter(&type_core__FileWriter);
3469 {
3470 core___core__FileWriter___open(var187, var_hfilepath); /* Direct call file$FileWriter$open on <var187:FileWriter>*/
3471 }
3472 var_h = var187;
3473 {
3474 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
3475 var190 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
3476 if (unlikely(var190 == NULL)) {
3477 if(catchStack.cursor >= 0){
3478 longjmp(catchStack.envs[catchStack.cursor], 1);
3479 }
3480 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3481 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
3482 fatal_exit(1);
3483 }
3484 var188 = var190;
3485 RET_LABEL189:(void)0;
3486 }
3487 }
3488 {
3489 { /* Inline abstract_compiler$AbstractCompiler$header (var188) on <var188:AbstractCompiler> */
3490 var193 = var188->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <var188:AbstractCompiler> */
3491 if (unlikely(var193 == NULL)) {
3492 if(catchStack.cursor >= 0){
3493 longjmp(catchStack.envs[catchStack.cursor], 1);
3494 }
3495 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
3496 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 599);
3497 fatal_exit(1);
3498 }
3499 var191 = var193;
3500 RET_LABEL192:(void)0;
3501 }
3502 }
3503 {
3504 { /* Inline abstract_compiler$CodeWriter$decl_lines (var191) on <var191:CodeWriter> */
3505 var196 = var191->attrs[COLOR_nitc__abstract_compiler__CodeWriter___decl_lines].val; /* _decl_lines on <var191:CodeWriter> */
3506 if (unlikely(var196 == NULL)) {
3507 if(catchStack.cursor >= 0){
3508 longjmp(catchStack.envs[catchStack.cursor], 1);
3509 }
3510 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _decl_lines");
3511 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1192);
3512 fatal_exit(1);
3513 }
3514 var194 = var196;
3515 RET_LABEL195:(void)0;
3516 }
3517 }
3518 var_197 = var194;
3519 {
3520 var198 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_197);
3521 }
3522 var_199 = var198;
3523 for(;;) {
3524 {
3525 var200 = ((short int(*)(val* self))((((long)var_199&3)?class_info[((long)var_199&3)]:var_199->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_199); /* is_ok on <var_199:IndexedIterator[String]>*/
3526 }
3527 if (var200){
3528 } else {
3529 goto BREAK_label201;
3530 }
3531 {
3532 var202 = ((val*(*)(val* self))((((long)var_199&3)?class_info[((long)var_199&3)]:var_199->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_199); /* item on <var_199:IndexedIterator[String]>*/
3533 }
3534 var_l = var202;
3535 {
3536 core___core__FileWriter___core__stream__Writer__write(var_h, var_l); /* Direct call file$FileWriter$write on <var_h:FileWriter>*/
3537 }
3538 if (likely(varonce203!=NULL)) {
3539 var204 = varonce203;
3540 } else {
3541 var205 = "\n";
3542 var207 = (val*)(1l<<2|1);
3543 var208 = (val*)(1l<<2|1);
3544 var209 = (val*)((long)(0)<<2|3);
3545 var210 = (val*)((long)(0)<<2|3);
3546 var206 = core__flat___CString___to_s_unsafe(var205, var207, var208, var209, var210);
3547 var204 = var206;
3548 varonce203 = var204;
3549 }
3550 {
3551 core___core__FileWriter___core__stream__Writer__write(var_h, var204); /* Direct call file$FileWriter$write on <var_h:FileWriter>*/
3552 }
3553 {
3554 ((void(*)(val* self))((((long)var_199&3)?class_info[((long)var_199&3)]:var_199->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_199); /* next on <var_199:IndexedIterator[String]>*/
3555 }
3556 }
3557 BREAK_label201: (void)0;
3558 {
3559 ((void(*)(val* self))((((long)var_199&3)?class_info[((long)var_199&3)]:var_199->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_199); /* finish on <var_199:IndexedIterator[String]>*/
3560 }
3561 {
3562 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
3563 var213 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
3564 if (unlikely(var213 == NULL)) {
3565 if(catchStack.cursor >= 0){
3566 longjmp(catchStack.envs[catchStack.cursor], 1);
3567 }
3568 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3569 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
3570 fatal_exit(1);
3571 }
3572 var211 = var213;
3573 RET_LABEL212:(void)0;
3574 }
3575 }
3576 {
3577 { /* Inline abstract_compiler$AbstractCompiler$header (var211) on <var211:AbstractCompiler> */
3578 var216 = var211->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <var211:AbstractCompiler> */
3579 if (unlikely(var216 == NULL)) {
3580 if(catchStack.cursor >= 0){
3581 longjmp(catchStack.envs[catchStack.cursor], 1);
3582 }
3583 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
3584 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 599);
3585 fatal_exit(1);
3586 }
3587 var214 = var216;
3588 RET_LABEL215:(void)0;
3589 }
3590 }
3591 {
3592 { /* Inline abstract_compiler$CodeWriter$lines (var214) on <var214:CodeWriter> */
3593 var219 = var214->attrs[COLOR_nitc__abstract_compiler__CodeWriter___lines].val; /* _lines on <var214:CodeWriter> */
3594 if (unlikely(var219 == NULL)) {
3595 if(catchStack.cursor >= 0){
3596 longjmp(catchStack.envs[catchStack.cursor], 1);
3597 }
3598 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lines");
3599 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1189);
3600 fatal_exit(1);
3601 }
3602 var217 = var219;
3603 RET_LABEL218:(void)0;
3604 }
3605 }
3606 var_220 = var217;
3607 {
3608 var221 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_220);
3609 }
3610 var_222 = var221;
3611 for(;;) {
3612 {
3613 var223 = ((short int(*)(val* self))((((long)var_222&3)?class_info[((long)var_222&3)]:var_222->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_222); /* is_ok on <var_222:IndexedIterator[String]>*/
3614 }
3615 if (var223){
3616 } else {
3617 goto BREAK_label224;
3618 }
3619 {
3620 var225 = ((val*(*)(val* self))((((long)var_222&3)?class_info[((long)var_222&3)]:var_222->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_222); /* item on <var_222:IndexedIterator[String]>*/
3621 }
3622 var_l226 = var225;
3623 {
3624 core___core__FileWriter___core__stream__Writer__write(var_h, var_l226); /* Direct call file$FileWriter$write on <var_h:FileWriter>*/
3625 }
3626 if (likely(varonce227!=NULL)) {
3627 var228 = varonce227;
3628 } else {
3629 var229 = "\n";
3630 var231 = (val*)(1l<<2|1);
3631 var232 = (val*)(1l<<2|1);
3632 var233 = (val*)((long)(0)<<2|3);
3633 var234 = (val*)((long)(0)<<2|3);
3634 var230 = core__flat___CString___to_s_unsafe(var229, var231, var232, var233, var234);
3635 var228 = var230;
3636 varonce227 = var228;
3637 }
3638 {
3639 core___core__FileWriter___core__stream__Writer__write(var_h, var228); /* Direct call file$FileWriter$write on <var_h:FileWriter>*/
3640 }
3641 {
3642 ((void(*)(val* self))((((long)var_222&3)?class_info[((long)var_222&3)]:var_222->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_222); /* next on <var_222:IndexedIterator[String]>*/
3643 }
3644 }
3645 BREAK_label224: (void)0;
3646 {
3647 ((void(*)(val* self))((((long)var_222&3)?class_info[((long)var_222&3)]:var_222->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_222); /* finish on <var_222:IndexedIterator[String]>*/
3648 }
3649 {
3650 core___core__FileWriter___core__stream__Stream__close(var_h); /* Direct call file$FileWriter$close on <var_h:FileWriter>*/
3651 }
3652 {
3653 { /* Inline abstract_compiler$Toolchain$toolcontext (self) on <self:MakefileToolchain> */
3654 var237 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
3655 if (unlikely(var237 == NULL)) {
3656 if(catchStack.cursor >= 0){
3657 longjmp(catchStack.envs[catchStack.cursor], 1);
3658 }
3659 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
3660 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 131);
3661 fatal_exit(1);
3662 }
3663 var235 = var237;
3664 RET_LABEL236:(void)0;
3665 }
3666 }
3667 {
3668 { /* Inline abstract_compiler$ToolContext$opt_max_c_lines (var235) on <var235:ToolContext> */
3669 var240 = var235->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_max_c_lines].val; /* _opt_max_c_lines on <var235:ToolContext> */
3670 if (unlikely(var240 == NULL)) {
3671 if(catchStack.cursor >= 0){
3672 longjmp(catchStack.envs[catchStack.cursor], 1);
3673 }
3674 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_max_c_lines");
3675 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 40);
3676 fatal_exit(1);
3677 }
3678 var238 = var240;
3679 RET_LABEL239:(void)0;
3680 }
3681 }
3682 {
3683 { /* Inline opts$Option$value (var238) on <var238:OptionInt> */
3684 var243 = var238->attrs[COLOR_opts__Option___value].val; /* _value on <var238:OptionInt> */
3685 var241 = var243;
3686 RET_LABEL242:(void)0;
3687 }
3688 }
3689 var244 = (long)(var241)>>2;
3690 var_max_c_lines = var244;
3691 {
3692 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
3693 var247 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
3694 if (unlikely(var247 == NULL)) {
3695 if(catchStack.cursor >= 0){
3696 longjmp(catchStack.envs[catchStack.cursor], 1);
3697 }
3698 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3699 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
3700 fatal_exit(1);
3701 }
3702 var245 = var247;
3703 RET_LABEL246:(void)0;
3704 }
3705 }
3706 {
3707 { /* Inline abstract_compiler$AbstractCompiler$files (var245) on <var245:AbstractCompiler> */
3708 var250 = var245->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___files].val; /* _files on <var245:AbstractCompiler> */
3709 if (unlikely(var250 == NULL)) {
3710 if(catchStack.cursor >= 0){
3711 longjmp(catchStack.envs[catchStack.cursor], 1);
3712 }
3713 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files");
3714 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 592);
3715 fatal_exit(1);
3716 }
3717 var248 = var250;
3718 RET_LABEL249:(void)0;
3719 }
3720 }
3721 var_251 = var248;
3722 {
3723 var252 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_251);
3724 }
3725 var_253 = var252;
3726 for(;;) {
3727 {
3728 var254 = ((short int(*)(val* self))((((long)var_253&3)?class_info[((long)var_253&3)]:var_253->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_253); /* is_ok on <var_253:IndexedIterator[CodeFile]>*/
3729 }
3730 if (var254){
3731 } else {
3732 goto BREAK_label255;
3733 }
3734 {
3735 var256 = ((val*(*)(val* self))((((long)var_253&3)?class_info[((long)var_253&3)]:var_253->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_253); /* item on <var_253:IndexedIterator[CodeFile]>*/
3736 }
3737 var_f = var256;
3738 var_i = 0l;
3739 var_count = 0l;
3740 var_file = ((val*)NULL);
3741 {
3742 { /* Inline abstract_compiler$CodeFile$writers (var_f) on <var_f:CodeFile> */
3743 var259 = var_f->attrs[COLOR_nitc__abstract_compiler__CodeFile___writers].val; /* _writers on <var_f:CodeFile> */
3744 if (unlikely(var259 == NULL)) {
3745 if(catchStack.cursor >= 0){
3746 longjmp(catchStack.envs[catchStack.cursor], 1);
3747 }
3748 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _writers");
3749 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1173);
3750 fatal_exit(1);
3751 }
3752 var257 = var259;
3753 RET_LABEL258:(void)0;
3754 }
3755 }
3756 var_260 = var257;
3757 {
3758 var261 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_260);
3759 }
3760 var_262 = var261;
3761 for(;;) {
3762 {
3763 var263 = ((short int(*)(val* self))((((long)var_262&3)?class_info[((long)var_262&3)]:var_262->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_262); /* is_ok on <var_262:IndexedIterator[CodeWriter]>*/
3764 }
3765 if (var263){
3766 } else {
3767 goto BREAK_label264;
3768 }
3769 {
3770 var265 = ((val*(*)(val* self))((((long)var_262&3)?class_info[((long)var_262&3)]:var_262->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_262); /* item on <var_262:IndexedIterator[CodeWriter]>*/
3771 }
3772 var_vis = var265;
3773 {
3774 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
3775 var268 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
3776 if (unlikely(var268 == NULL)) {
3777 if(catchStack.cursor >= 0){
3778 longjmp(catchStack.envs[catchStack.cursor], 1);
3779 }
3780 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3781 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
3782 fatal_exit(1);
3783 }
3784 var266 = var268;
3785 RET_LABEL267:(void)0;
3786 }
3787 }
3788 {
3789 { /* Inline abstract_compiler$AbstractCompiler$header (var266) on <var266:AbstractCompiler> */
3790 var271 = var266->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <var266:AbstractCompiler> */
3791 if (unlikely(var271 == NULL)) {
3792 if(catchStack.cursor >= 0){
3793 longjmp(catchStack.envs[catchStack.cursor], 1);
3794 }
3795 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
3796 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 599);
3797 fatal_exit(1);
3798 }
3799 var269 = var271;
3800 RET_LABEL270:(void)0;
3801 }
3802 }
3803 {
3804 { /* Inline kernel$Object$== (var_vis,var269) on <var_vis:CodeWriter> */
3805 var_other274 = var269;
3806 {
3807 { /* Inline kernel$Object$is_same_instance (var_vis,var_other274) on <var_vis:CodeWriter> */
3808 var277 = var_vis == var_other274;
3809 var275 = var277;
3810 goto RET_LABEL276;
3811 RET_LABEL276:(void)0;
3812 }
3813 }
3814 var272 = var275;
3815 goto RET_LABEL273;
3816 RET_LABEL273:(void)0;
3817 }
3818 }
3819 if (var272){
3820 goto BREAK_label278;
3821 } else {
3822 }
3823 {
3824 { /* Inline abstract_compiler$CodeWriter$lines (var_vis) on <var_vis:CodeWriter> */
3825 var281 = var_vis->attrs[COLOR_nitc__abstract_compiler__CodeWriter___lines].val; /* _lines on <var_vis:CodeWriter> */
3826 if (unlikely(var281 == NULL)) {
3827 if(catchStack.cursor >= 0){
3828 longjmp(catchStack.envs[catchStack.cursor], 1);
3829 }
3830 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lines");
3831 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1189);
3832 fatal_exit(1);
3833 }
3834 var279 = var281;
3835 RET_LABEL280:(void)0;
3836 }
3837 }
3838 {
3839 { /* Inline array$AbstractArrayRead$length (var279) on <var279:Array[String]> */
3840 var284 = var279->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var279:Array[String]> */
3841 var282 = var284;
3842 RET_LABEL283:(void)0;
3843 }
3844 }
3845 {
3846 { /* Inline abstract_compiler$CodeWriter$decl_lines (var_vis) on <var_vis:CodeWriter> */
3847 var287 = var_vis->attrs[COLOR_nitc__abstract_compiler__CodeWriter___decl_lines].val; /* _decl_lines on <var_vis:CodeWriter> */
3848 if (unlikely(var287 == NULL)) {
3849 if(catchStack.cursor >= 0){
3850 longjmp(catchStack.envs[catchStack.cursor], 1);
3851 }
3852 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _decl_lines");
3853 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1192);
3854 fatal_exit(1);
3855 }
3856 var285 = var287;
3857 RET_LABEL286:(void)0;
3858 }
3859 }
3860 {
3861 { /* Inline array$AbstractArrayRead$length (var285) on <var285:Array[String]> */
3862 var290 = var285->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var285:Array[String]> */
3863 var288 = var290;
3864 RET_LABEL289:(void)0;
3865 }
3866 }
3867 {
3868 { /* Inline kernel$Int$+ (var282,var288) on <var282:Int> */
3869 /* Covariant cast for argument 0 (i) <var288:Int> isa OTHER */
3870 /* <var288:Int> isa OTHER */
3871 var293 = 1; /* easy <var288:Int> isa OTHER*/
3872 if (unlikely(!var293)) {
3873 var_class_name = type_core__Int.name;
3874 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3875 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
3876 fatal_exit(1);
3877 }
3878 var294 = var282 + var288;
3879 var291 = var294;
3880 goto RET_LABEL292;
3881 RET_LABEL292:(void)0;
3882 }
3883 }
3884 var_total_lines = var291;
3885 {
3886 { /* Inline kernel$Int$== (var_total_lines,0l) on <var_total_lines:Int> */
3887 var297 = var_total_lines == 0l;
3888 var295 = var297;
3889 goto RET_LABEL296;
3890 RET_LABEL296:(void)0;
3891 }
3892 }
3893 if (var295){
3894 goto BREAK_label278;
3895 } else {
3896 }
3897 {
3898 { /* Inline kernel$Int$+ (var_count,var_total_lines) on <var_count:Int> */
3899 /* Covariant cast for argument 0 (i) <var_total_lines:Int> isa OTHER */
3900 /* <var_total_lines:Int> isa OTHER */
3901 var300 = 1; /* easy <var_total_lines:Int> isa OTHER*/
3902 if (unlikely(!var300)) {
3903 var_class_name303 = type_core__Int.name;
3904 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name303);
3905 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
3906 fatal_exit(1);
3907 }
3908 var304 = var_count + var_total_lines;
3909 var298 = var304;
3910 goto RET_LABEL299;
3911 RET_LABEL299:(void)0;
3912 }
3913 }
3914 var_count = var298;
3915 if (var_file == NULL) {
3916 var306 = 1; /* is null */
3917 } else {
3918 var306 = 0; /* arg is null but recv is not */
3919 }
3920 if (0) {
3921 { /* Inline kernel$Object$== (var_file,((val*)NULL)) on <var_file:nullable FileWriter> */
3922 var_other274 = ((val*)NULL);
3923 {
3924 { /* Inline kernel$Object$is_same_instance (var_file,var_other274) on <var_file:nullable FileWriter(FileWriter)> */
3925 var311 = var_file == var_other274;
3926 var309 = var311;
3927 goto RET_LABEL310;
3928 RET_LABEL310:(void)0;
3929 }
3930 }
3931 var307 = var309;
3932 goto RET_LABEL308;
3933 RET_LABEL308:(void)0;
3934 }
3935 var306 = var307;
3936 }
3937 var_312 = var306;
3938 if (var306){
3939 var305 = var_312;
3940 } else {
3941 {
3942 { /* Inline kernel$Int$> (var_count,var_max_c_lines) on <var_count:Int> */
3943 /* Covariant cast for argument 0 (i) <var_max_c_lines:Int> isa OTHER */
3944 /* <var_max_c_lines:Int> isa OTHER */
3945 var316 = 1; /* easy <var_max_c_lines:Int> isa OTHER*/
3946 if (unlikely(!var316)) {
3947 var_class_name319 = type_core__Int.name;
3948 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name319);
3949 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
3950 fatal_exit(1);
3951 }
3952 var320 = var_count > var_max_c_lines;
3953 var314 = var320;
3954 goto RET_LABEL315;
3955 RET_LABEL315:(void)0;
3956 }
3957 }
3958 var_321 = var314;
3959 if (var314){
3960 {
3961 { /* Inline kernel$Int$> (var_max_c_lines,0l) on <var_max_c_lines:Int> */
3962 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
3963 /* <0l:Int> isa OTHER */
3964 var324 = 1; /* easy <0l:Int> isa OTHER*/
3965 if (unlikely(!var324)) {
3966 var_class_name327 = type_core__Int.name;
3967 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name327);
3968 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
3969 fatal_exit(1);
3970 }
3971 var328 = var_max_c_lines > 0l;
3972 var322 = var328;
3973 goto RET_LABEL323;
3974 RET_LABEL323:(void)0;
3975 }
3976 }
3977 var313 = var322;
3978 } else {
3979 var313 = var_321;
3980 }
3981 var305 = var313;
3982 }
3983 if (var305){
3984 {
3985 { /* Inline kernel$Int$+ (var_i,1l) on <var_i:Int> */
3986 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
3987 /* <1l:Int> isa OTHER */
3988 var331 = 1; /* easy <1l:Int> isa OTHER*/
3989 if (unlikely(!var331)) {
3990 var_class_name334 = type_core__Int.name;
3991 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name334);
3992 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
3993 fatal_exit(1);
3994 }
3995 var335 = var_i + 1l;
3996 var329 = var335;
3997 goto RET_LABEL330;
3998 RET_LABEL330:(void)0;
3999 }
4000 }
4001 var_i = var329;
4002 if (var_file == NULL) {
4003 var336 = 0; /* is null */
4004 } else {
4005 var336 = 1; /* arg is null and recv is not */
4006 }
4007 if (0) {
4008 { /* Inline kernel$Object$!= (var_file,((val*)NULL)) on <var_file:nullable FileWriter> */
4009 var_other = ((val*)NULL);
4010 {
4011 var339 = ((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)>*/
4012 }
4013 var340 = !var339;
4014 var337 = var340;
4015 goto RET_LABEL338;
4016 RET_LABEL338:(void)0;
4017 }
4018 var336 = var337;
4019 }
4020 if (var336){
4021 {
4022 core___core__FileWriter___core__stream__Stream__close(var_file); /* Direct call file$FileWriter$close on <var_file:nullable FileWriter(FileWriter)>*/
4023 }
4024 } else {
4025 }
4026 if (unlikely(varonce341==NULL)) {
4027 var342 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
4028 if (likely(varonce343!=NULL)) {
4029 var344 = varonce343;
4030 } else {
4031 var345 = ".";
4032 var347 = (val*)(1l<<2|1);
4033 var348 = (val*)(1l<<2|1);
4034 var349 = (val*)((long)(0)<<2|3);
4035 var350 = (val*)((long)(0)<<2|3);
4036 var346 = core__flat___CString___to_s_unsafe(var345, var347, var348, var349, var350);
4037 var344 = var346;
4038 varonce343 = var344;
4039 }
4040 ((struct instance_core__NativeArray*)var342)->values[1]=var344;
4041 if (likely(varonce351!=NULL)) {
4042 var352 = varonce351;
4043 } else {
4044 var353 = ".c";
4045 var355 = (val*)(2l<<2|1);
4046 var356 = (val*)(2l<<2|1);
4047 var357 = (val*)((long)(0)<<2|3);
4048 var358 = (val*)((long)(0)<<2|3);
4049 var354 = core__flat___CString___to_s_unsafe(var353, var355, var356, var357, var358);
4050 var352 = var354;
4051 varonce351 = var352;
4052 }
4053 ((struct instance_core__NativeArray*)var342)->values[3]=var352;
4054 } else {
4055 var342 = varonce341;
4056 varonce341 = NULL;
4057 }
4058 {
4059 { /* Inline abstract_compiler$CodeFile$name (var_f) on <var_f:CodeFile> */
4060 var361 = var_f->attrs[COLOR_nitc__abstract_compiler__CodeFile___name].val; /* _name on <var_f:CodeFile> */
4061 if (unlikely(var361 == NULL)) {
4062 if(catchStack.cursor >= 0){
4063 longjmp(catchStack.envs[catchStack.cursor], 1);
4064 }
4065 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4066 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1170);
4067 fatal_exit(1);
4068 }
4069 var359 = var361;
4070 RET_LABEL360:(void)0;
4071 }
4072 }
4073 ((struct instance_core__NativeArray*)var342)->values[0]=var359;
4074 var362 = core__flat___Int___core__abstract_text__Object__to_s(var_i);
4075 ((struct instance_core__NativeArray*)var342)->values[2]=var362;
4076 {
4077 var363 = ((val*(*)(val* self))(var342->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var342); /* native_to_s on <var342:NativeArray[String]>*/
4078 }
4079 varonce341 = var342;
4080 var_cfilename = var363;
4081 if (unlikely(varonce364==NULL)) {
4082 var365 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4083 if (likely(varonce366!=NULL)) {
4084 var367 = varonce366;
4085 } else {
4086 var368 = "/";
4087 var370 = (val*)(1l<<2|1);
4088 var371 = (val*)(1l<<2|1);
4089 var372 = (val*)((long)(0)<<2|3);
4090 var373 = (val*)((long)(0)<<2|3);
4091 var369 = core__flat___CString___to_s_unsafe(var368, var370, var371, var372, var373);
4092 var367 = var369;
4093 varonce366 = var367;
4094 }
4095 ((struct instance_core__NativeArray*)var365)->values[1]=var367;
4096 } else {
4097 var365 = varonce364;
4098 varonce364 = NULL;
4099 }
4100 ((struct instance_core__NativeArray*)var365)->values[0]=var_compile_dir;
4101 ((struct instance_core__NativeArray*)var365)->values[2]=var_cfilename;
4102 {
4103 var374 = ((val*(*)(val* self))(var365->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var365); /* native_to_s on <var365:NativeArray[String]>*/
4104 }
4105 varonce364 = var365;
4106 var_cfilepath = var374;
4107 {
4108 { /* Inline abstract_compiler$Toolchain$toolcontext (self) on <self:MakefileToolchain> */
4109 var377 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
4110 if (unlikely(var377 == NULL)) {
4111 if(catchStack.cursor >= 0){
4112 longjmp(catchStack.envs[catchStack.cursor], 1);
4113 }
4114 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4115 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 131);
4116 fatal_exit(1);
4117 }
4118 var375 = var377;
4119 RET_LABEL376:(void)0;
4120 }
4121 }
4122 if (unlikely(varonce378==NULL)) {
4123 var379 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
4124 if (likely(varonce380!=NULL)) {
4125 var381 = varonce380;
4126 } else {
4127 var382 = "new C source files to compile: ";
4128 var384 = (val*)(31l<<2|1);
4129 var385 = (val*)(31l<<2|1);
4130 var386 = (val*)((long)(0)<<2|3);
4131 var387 = (val*)((long)(0)<<2|3);
4132 var383 = core__flat___CString___to_s_unsafe(var382, var384, var385, var386, var387);
4133 var381 = var383;
4134 varonce380 = var381;
4135 }
4136 ((struct instance_core__NativeArray*)var379)->values[0]=var381;
4137 } else {
4138 var379 = varonce378;
4139 varonce378 = NULL;
4140 }
4141 ((struct instance_core__NativeArray*)var379)->values[1]=var_cfilepath;
4142 {
4143 var388 = ((val*(*)(val* self))(var379->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var379); /* native_to_s on <var379:NativeArray[String]>*/
4144 }
4145 varonce378 = var379;
4146 {
4147 nitc___nitc__ToolContext___info(var375, var388, 3l); /* Direct call toolcontext$ToolContext$info on <var375:ToolContext>*/
4148 }
4149 {
4150 core___core__Array___core__abstract_collection__SimpleCollection__add(var_cfiles, var_cfilename); /* Direct call array$Array$add on <var_cfiles:Array[String]>*/
4151 }
4152 var389 = NEW_core__FileWriter(&type_core__FileWriter);
4153 {
4154 core___core__FileWriter___open(var389, var_cfilepath); /* Direct call file$FileWriter$open on <var389:FileWriter>*/
4155 }
4156 var_file = var389;
4157 if (unlikely(varonce390==NULL)) {
4158 var391 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4159 if (likely(varonce392!=NULL)) {
4160 var393 = varonce392;
4161 } else {
4162 var394 = "#include \"";
4163 var396 = (val*)(10l<<2|1);
4164 var397 = (val*)(10l<<2|1);
4165 var398 = (val*)((long)(0)<<2|3);
4166 var399 = (val*)((long)(0)<<2|3);
4167 var395 = core__flat___CString___to_s_unsafe(var394, var396, var397, var398, var399);
4168 var393 = var395;
4169 varonce392 = var393;
4170 }
4171 ((struct instance_core__NativeArray*)var391)->values[0]=var393;
4172 if (likely(varonce400!=NULL)) {
4173 var401 = varonce400;
4174 } else {
4175 var402 = ".0.h\"\n";
4176 var404 = (val*)(6l<<2|1);
4177 var405 = (val*)(6l<<2|1);
4178 var406 = (val*)((long)(0)<<2|3);
4179 var407 = (val*)((long)(0)<<2|3);
4180 var403 = core__flat___CString___to_s_unsafe(var402, var404, var405, var406, var407);
4181 var401 = var403;
4182 varonce400 = var401;
4183 }
4184 ((struct instance_core__NativeArray*)var391)->values[2]=var401;
4185 } else {
4186 var391 = varonce390;
4187 varonce390 = NULL;
4188 }
4189 {
4190 { /* Inline abstract_compiler$CodeFile$name (var_f) on <var_f:CodeFile> */
4191 var410 = var_f->attrs[COLOR_nitc__abstract_compiler__CodeFile___name].val; /* _name on <var_f:CodeFile> */
4192 if (unlikely(var410 == NULL)) {
4193 if(catchStack.cursor >= 0){
4194 longjmp(catchStack.envs[catchStack.cursor], 1);
4195 }
4196 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4197 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1170);
4198 fatal_exit(1);
4199 }
4200 var408 = var410;
4201 RET_LABEL409:(void)0;
4202 }
4203 }
4204 ((struct instance_core__NativeArray*)var391)->values[1]=var408;
4205 {
4206 var411 = ((val*(*)(val* self))(var391->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var391); /* native_to_s on <var391:NativeArray[String]>*/
4207 }
4208 varonce390 = var391;
4209 {
4210 core___core__FileWriter___core__stream__Writer__write(var_file, var411); /* Direct call file$FileWriter$write on <var_file:nullable FileWriter(FileWriter)>*/
4211 }
4212 var_count = var_total_lines;
4213 } else {
4214 }
4215 {
4216 { /* Inline abstract_compiler$CodeWriter$decl_lines (var_vis) on <var_vis:CodeWriter> */
4217 var414 = var_vis->attrs[COLOR_nitc__abstract_compiler__CodeWriter___decl_lines].val; /* _decl_lines on <var_vis:CodeWriter> */
4218 if (unlikely(var414 == NULL)) {
4219 if(catchStack.cursor >= 0){
4220 longjmp(catchStack.envs[catchStack.cursor], 1);
4221 }
4222 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _decl_lines");
4223 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1192);
4224 fatal_exit(1);
4225 }
4226 var412 = var414;
4227 RET_LABEL413:(void)0;
4228 }
4229 }
4230 var_415 = var412;
4231 {
4232 var416 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_415);
4233 }
4234 var_417 = var416;
4235 for(;;) {
4236 {
4237 var418 = ((short int(*)(val* self))((((long)var_417&3)?class_info[((long)var_417&3)]:var_417->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_417); /* is_ok on <var_417:IndexedIterator[String]>*/
4238 }
4239 if (var418){
4240 } else {
4241 goto BREAK_label419;
4242 }
4243 {
4244 var420 = ((val*(*)(val* self))((((long)var_417&3)?class_info[((long)var_417&3)]:var_417->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_417); /* item on <var_417:IndexedIterator[String]>*/
4245 }
4246 var_l421 = var420;
4247 {
4248 core___core__FileWriter___core__stream__Writer__write(var_file, var_l421); /* Direct call file$FileWriter$write on <var_file:nullable FileWriter(FileWriter)>*/
4249 }
4250 if (likely(varonce422!=NULL)) {
4251 var423 = varonce422;
4252 } else {
4253 var424 = "\n";
4254 var426 = (val*)(1l<<2|1);
4255 var427 = (val*)(1l<<2|1);
4256 var428 = (val*)((long)(0)<<2|3);
4257 var429 = (val*)((long)(0)<<2|3);
4258 var425 = core__flat___CString___to_s_unsafe(var424, var426, var427, var428, var429);
4259 var423 = var425;
4260 varonce422 = var423;
4261 }
4262 {
4263 core___core__FileWriter___core__stream__Writer__write(var_file, var423); /* Direct call file$FileWriter$write on <var_file:nullable FileWriter(FileWriter)>*/
4264 }
4265 {
4266 ((void(*)(val* self))((((long)var_417&3)?class_info[((long)var_417&3)]:var_417->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_417); /* next on <var_417:IndexedIterator[String]>*/
4267 }
4268 }
4269 BREAK_label419: (void)0;
4270 {
4271 ((void(*)(val* self))((((long)var_417&3)?class_info[((long)var_417&3)]:var_417->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_417); /* finish on <var_417:IndexedIterator[String]>*/
4272 }
4273 {
4274 { /* Inline abstract_compiler$CodeWriter$lines (var_vis) on <var_vis:CodeWriter> */
4275 var432 = var_vis->attrs[COLOR_nitc__abstract_compiler__CodeWriter___lines].val; /* _lines on <var_vis:CodeWriter> */
4276 if (unlikely(var432 == NULL)) {
4277 if(catchStack.cursor >= 0){
4278 longjmp(catchStack.envs[catchStack.cursor], 1);
4279 }
4280 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lines");
4281 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1189);
4282 fatal_exit(1);
4283 }
4284 var430 = var432;
4285 RET_LABEL431:(void)0;
4286 }
4287 }
4288 var_433 = var430;
4289 {
4290 var434 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_433);
4291 }
4292 var_435 = var434;
4293 for(;;) {
4294 {
4295 var436 = ((short int(*)(val* self))((((long)var_435&3)?class_info[((long)var_435&3)]:var_435->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_435); /* is_ok on <var_435:IndexedIterator[String]>*/
4296 }
4297 if (var436){
4298 } else {
4299 goto BREAK_label437;
4300 }
4301 {
4302 var438 = ((val*(*)(val* self))((((long)var_435&3)?class_info[((long)var_435&3)]:var_435->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_435); /* item on <var_435:IndexedIterator[String]>*/
4303 }
4304 var_l439 = var438;
4305 {
4306 core___core__FileWriter___core__stream__Writer__write(var_file, var_l439); /* Direct call file$FileWriter$write on <var_file:nullable FileWriter(FileWriter)>*/
4307 }
4308 if (likely(varonce440!=NULL)) {
4309 var441 = varonce440;
4310 } else {
4311 var442 = "\n";
4312 var444 = (val*)(1l<<2|1);
4313 var445 = (val*)(1l<<2|1);
4314 var446 = (val*)((long)(0)<<2|3);
4315 var447 = (val*)((long)(0)<<2|3);
4316 var443 = core__flat___CString___to_s_unsafe(var442, var444, var445, var446, var447);
4317 var441 = var443;
4318 varonce440 = var441;
4319 }
4320 {
4321 core___core__FileWriter___core__stream__Writer__write(var_file, var441); /* Direct call file$FileWriter$write on <var_file:nullable FileWriter(FileWriter)>*/
4322 }
4323 {
4324 ((void(*)(val* self))((((long)var_435&3)?class_info[((long)var_435&3)]:var_435->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_435); /* next on <var_435:IndexedIterator[String]>*/
4325 }
4326 }
4327 BREAK_label437: (void)0;
4328 {
4329 ((void(*)(val* self))((((long)var_435&3)?class_info[((long)var_435&3)]:var_435->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_435); /* finish on <var_435:IndexedIterator[String]>*/
4330 }
4331 BREAK_label278: (void)0;
4332 {
4333 ((void(*)(val* self))((((long)var_262&3)?class_info[((long)var_262&3)]:var_262->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_262); /* next on <var_262:IndexedIterator[CodeWriter]>*/
4334 }
4335 }
4336 BREAK_label264: (void)0;
4337 {
4338 ((void(*)(val* self))((((long)var_262&3)?class_info[((long)var_262&3)]:var_262->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_262); /* finish on <var_262:IndexedIterator[CodeWriter]>*/
4339 }
4340 if (var_file == NULL) {
4341 var448 = 1; /* is null */
4342 } else {
4343 var448 = 0; /* arg is null but recv is not */
4344 }
4345 if (0) {
4346 { /* Inline kernel$Object$== (var_file,((val*)NULL)) on <var_file:nullable FileWriter> */
4347 var_other274 = ((val*)NULL);
4348 {
4349 { /* Inline kernel$Object$is_same_instance (var_file,var_other274) on <var_file:nullable FileWriter(FileWriter)> */
4350 var453 = var_file == var_other274;
4351 var451 = var453;
4352 goto RET_LABEL452;
4353 RET_LABEL452:(void)0;
4354 }
4355 }
4356 var449 = var451;
4357 goto RET_LABEL450;
4358 RET_LABEL450:(void)0;
4359 }
4360 var448 = var449;
4361 }
4362 if (var448){
4363 goto BREAK_label454;
4364 } else {
4365 }
4366 {
4367 core___core__FileWriter___core__stream__Stream__close(var_file); /* Direct call file$FileWriter$close on <var_file:nullable FileWriter(FileWriter)>*/
4368 }
4369 if (unlikely(varonce455==NULL)) {
4370 var456 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
4371 if (likely(varonce457!=NULL)) {
4372 var458 = varonce457;
4373 } else {
4374 var459 = ".0.h";
4375 var461 = (val*)(4l<<2|1);
4376 var462 = (val*)(4l<<2|1);
4377 var463 = (val*)((long)(0)<<2|3);
4378 var464 = (val*)((long)(0)<<2|3);
4379 var460 = core__flat___CString___to_s_unsafe(var459, var461, var462, var463, var464);
4380 var458 = var460;
4381 varonce457 = var458;
4382 }
4383 ((struct instance_core__NativeArray*)var456)->values[1]=var458;
4384 } else {
4385 var456 = varonce455;
4386 varonce455 = NULL;
4387 }
4388 {
4389 { /* Inline abstract_compiler$CodeFile$name (var_f) on <var_f:CodeFile> */
4390 var467 = var_f->attrs[COLOR_nitc__abstract_compiler__CodeFile___name].val; /* _name on <var_f:CodeFile> */
4391 if (unlikely(var467 == NULL)) {
4392 if(catchStack.cursor >= 0){
4393 longjmp(catchStack.envs[catchStack.cursor], 1);
4394 }
4395 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4396 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1170);
4397 fatal_exit(1);
4398 }
4399 var465 = var467;
4400 RET_LABEL466:(void)0;
4401 }
4402 }
4403 ((struct instance_core__NativeArray*)var456)->values[0]=var465;
4404 {
4405 var468 = ((val*(*)(val* self))(var456->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var456); /* native_to_s on <var456:NativeArray[String]>*/
4406 }
4407 varonce455 = var456;
4408 var_cfilename469 = var468;
4409 if (unlikely(varonce470==NULL)) {
4410 var471 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4411 if (likely(varonce472!=NULL)) {
4412 var473 = varonce472;
4413 } else {
4414 var474 = "/";
4415 var476 = (val*)(1l<<2|1);
4416 var477 = (val*)(1l<<2|1);
4417 var478 = (val*)((long)(0)<<2|3);
4418 var479 = (val*)((long)(0)<<2|3);
4419 var475 = core__flat___CString___to_s_unsafe(var474, var476, var477, var478, var479);
4420 var473 = var475;
4421 varonce472 = var473;
4422 }
4423 ((struct instance_core__NativeArray*)var471)->values[1]=var473;
4424 } else {
4425 var471 = varonce470;
4426 varonce470 = NULL;
4427 }
4428 ((struct instance_core__NativeArray*)var471)->values[0]=var_compile_dir;
4429 ((struct instance_core__NativeArray*)var471)->values[2]=var_cfilename469;
4430 {
4431 var480 = ((val*(*)(val* self))(var471->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var471); /* native_to_s on <var471:NativeArray[String]>*/
4432 }
4433 varonce470 = var471;
4434 var_cfilepath481 = var480;
4435 var_hfile = ((val*)NULL);
4436 var482 = NEW_core__FileWriter(&type_core__FileWriter);
4437 {
4438 core___core__FileWriter___open(var482, var_cfilepath481); /* Direct call file$FileWriter$open on <var482:FileWriter>*/
4439 }
4440 var_hfile = var482;
4441 if (unlikely(varonce483==NULL)) {
4442 var484 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4443 if (likely(varonce485!=NULL)) {
4444 var486 = varonce485;
4445 } else {
4446 var487 = "#include \"";
4447 var489 = (val*)(10l<<2|1);
4448 var490 = (val*)(10l<<2|1);
4449 var491 = (val*)((long)(0)<<2|3);
4450 var492 = (val*)((long)(0)<<2|3);
4451 var488 = core__flat___CString___to_s_unsafe(var487, var489, var490, var491, var492);
4452 var486 = var488;
4453 varonce485 = var486;
4454 }
4455 ((struct instance_core__NativeArray*)var484)->values[0]=var486;
4456 if (likely(varonce493!=NULL)) {
4457 var494 = varonce493;
4458 } else {
4459 var495 = "\"\n";
4460 var497 = (val*)(2l<<2|1);
4461 var498 = (val*)(2l<<2|1);
4462 var499 = (val*)((long)(0)<<2|3);
4463 var500 = (val*)((long)(0)<<2|3);
4464 var496 = core__flat___CString___to_s_unsafe(var495, var497, var498, var499, var500);
4465 var494 = var496;
4466 varonce493 = var494;
4467 }
4468 ((struct instance_core__NativeArray*)var484)->values[2]=var494;
4469 } else {
4470 var484 = varonce483;
4471 varonce483 = NULL;
4472 }
4473 ((struct instance_core__NativeArray*)var484)->values[1]=var_hfilename;
4474 {
4475 var501 = ((val*(*)(val* self))(var484->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var484); /* native_to_s on <var484:NativeArray[String]>*/
4476 }
4477 varonce483 = var484;
4478 {
4479 core___core__FileWriter___core__stream__Writer__write(var_hfile, var501); /* Direct call file$FileWriter$write on <var_hfile:nullable FileWriter(FileWriter)>*/
4480 }
4481 {
4482 { /* Inline abstract_compiler$CodeFile$required_declarations (var_f) on <var_f:CodeFile> */
4483 var504 = var_f->attrs[COLOR_nitc__abstract_compiler__CodeFile___required_declarations].val; /* _required_declarations on <var_f:CodeFile> */
4484 if (unlikely(var504 == NULL)) {
4485 if(catchStack.cursor >= 0){
4486 longjmp(catchStack.envs[catchStack.cursor], 1);
4487 }
4488 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _required_declarations");
4489 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1176);
4490 fatal_exit(1);
4491 }
4492 var502 = var504;
4493 RET_LABEL503:(void)0;
4494 }
4495 }
4496 var_505 = var502;
4497 {
4498 var506 = core___core__HashSet___core__abstract_collection__Collection__iterator(var_505);
4499 }
4500 var_507 = var506;
4501 for(;;) {
4502 {
4503 var508 = ((short int(*)(val* self))((((long)var_507&3)?class_info[((long)var_507&3)]:var_507->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_507); /* is_ok on <var_507:Iterator[String]>*/
4504 }
4505 if (var508){
4506 } else {
4507 goto BREAK_label509;
4508 }
4509 {
4510 var510 = ((val*(*)(val* self))((((long)var_507&3)?class_info[((long)var_507&3)]:var_507->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_507); /* item on <var_507:Iterator[String]>*/
4511 }
4512 var_key = var510;
4513 {
4514 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
4515 var513 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
4516 if (unlikely(var513 == NULL)) {
4517 if(catchStack.cursor >= 0){
4518 longjmp(catchStack.envs[catchStack.cursor], 1);
4519 }
4520 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
4521 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
4522 fatal_exit(1);
4523 }
4524 var511 = var513;
4525 RET_LABEL512:(void)0;
4526 }
4527 }
4528 {
4529 { /* Inline abstract_compiler$AbstractCompiler$provided_declarations (var511) on <var511:AbstractCompiler> */
4530 var516 = var511->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___provided_declarations].val; /* _provided_declarations on <var511:AbstractCompiler> */
4531 if (unlikely(var516 == NULL)) {
4532 if(catchStack.cursor >= 0){
4533 longjmp(catchStack.envs[catchStack.cursor], 1);
4534 }
4535 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _provided_declarations");
4536 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 615);
4537 fatal_exit(1);
4538 }
4539 var514 = var516;
4540 RET_LABEL515:(void)0;
4541 }
4542 }
4543 {
4544 var517 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var514, var_key);
4545 }
4546 var518 = !var517;
4547 if (var518){
4548 {
4549 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
4550 var521 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
4551 if (unlikely(var521 == NULL)) {
4552 if(catchStack.cursor >= 0){
4553 longjmp(catchStack.envs[catchStack.cursor], 1);
4554 }
4555 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
4556 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
4557 fatal_exit(1);
4558 }
4559 var519 = var521;
4560 RET_LABEL520:(void)0;
4561 }
4562 }
4563 {
4564 { /* Inline abstract_compiler$AbstractCompiler$requirers_of_declarations (var519) on <var519:AbstractCompiler> */
4565 var524 = var519->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___requirers_of_declarations].val; /* _requirers_of_declarations on <var519:AbstractCompiler> */
4566 if (unlikely(var524 == NULL)) {
4567 if(catchStack.cursor >= 0){
4568 longjmp(catchStack.envs[catchStack.cursor], 1);
4569 }
4570 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _requirers_of_declarations");
4571 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 617);
4572 fatal_exit(1);
4573 }
4574 var522 = var524;
4575 RET_LABEL523:(void)0;
4576 }
4577 }
4578 {
4579 var525 = core___core__HashMap___core__abstract_collection__MapRead__get_or_null(var522, var_key);
4580 }
4581 var_node = var525;
4582 if (var_node == NULL) {
4583 var526 = 0; /* is null */
4584 } else {
4585 var526 = 1; /* arg is null and recv is not */
4586 }
4587 if (0) {
4588 { /* Inline kernel$Object$!= (var_node,((val*)NULL)) on <var_node:nullable ANode> */
4589 var_other = ((val*)NULL);
4590 {
4591 var529 = ((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)>*/
4592 }
4593 var530 = !var529;
4594 var527 = var530;
4595 goto RET_LABEL528;
4596 RET_LABEL528:(void)0;
4597 }
4598 var526 = var527;
4599 }
4600 if (var526){
4601 if (unlikely(varonce531==NULL)) {
4602 var532 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
4603 if (likely(varonce533!=NULL)) {
4604 var534 = varonce533;
4605 } else {
4606 var535 = "No provided declaration for ";
4607 var537 = (val*)(28l<<2|1);
4608 var538 = (val*)(28l<<2|1);
4609 var539 = (val*)((long)(0)<<2|3);
4610 var540 = (val*)((long)(0)<<2|3);
4611 var536 = core__flat___CString___to_s_unsafe(var535, var537, var538, var539, var540);
4612 var534 = var536;
4613 varonce533 = var534;
4614 }
4615 ((struct instance_core__NativeArray*)var532)->values[0]=var534;
4616 } else {
4617 var532 = varonce531;
4618 varonce531 = NULL;
4619 }
4620 ((struct instance_core__NativeArray*)var532)->values[1]=var_key;
4621 {
4622 var541 = ((val*(*)(val* self))(var532->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var532); /* native_to_s on <var532:NativeArray[String]>*/
4623 }
4624 varonce531 = var532;
4625 {
4626 nitc___nitc__ANode___debug(var_node, var541); /* Direct call parser_nodes$ANode$debug on <var_node:nullable ANode(ANode)>*/
4627 }
4628 } else {
4629 var542 = glob_sys;
4630 if (unlikely(varonce543==NULL)) {
4631 var544 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
4632 if (likely(varonce545!=NULL)) {
4633 var546 = varonce545;
4634 } else {
4635 var547 = "No provided declaration for ";
4636 var549 = (val*)(28l<<2|1);
4637 var550 = (val*)(28l<<2|1);
4638 var551 = (val*)((long)(0)<<2|3);
4639 var552 = (val*)((long)(0)<<2|3);
4640 var548 = core__flat___CString___to_s_unsafe(var547, var549, var550, var551, var552);
4641 var546 = var548;
4642 varonce545 = var546;
4643 }
4644 ((struct instance_core__NativeArray*)var544)->values[0]=var546;
4645 } else {
4646 var544 = varonce543;
4647 varonce543 = NULL;
4648 }
4649 ((struct instance_core__NativeArray*)var544)->values[1]=var_key;
4650 {
4651 var553 = ((val*(*)(val* self))(var544->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var544); /* native_to_s on <var544:NativeArray[String]>*/
4652 }
4653 varonce543 = var544;
4654 {
4655 core__file___Sys___print(var542, var553); /* Direct call file$Sys$print on <var542:Sys>*/
4656 }
4657 }
4658 if(catchStack.cursor >= 0){
4659 longjmp(catchStack.envs[catchStack.cursor], 1);
4660 }
4661 PRINT_ERROR("Runtime error: %s", "Aborted");
4662 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 293);
4663 fatal_exit(1);
4664 } else {
4665 }
4666 {
4667 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
4668 var556 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
4669 if (unlikely(var556 == NULL)) {
4670 if(catchStack.cursor >= 0){
4671 longjmp(catchStack.envs[catchStack.cursor], 1);
4672 }
4673 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
4674 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
4675 fatal_exit(1);
4676 }
4677 var554 = var556;
4678 RET_LABEL555:(void)0;
4679 }
4680 }
4681 {
4682 { /* Inline abstract_compiler$AbstractCompiler$provided_declarations (var554) on <var554:AbstractCompiler> */
4683 var559 = var554->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___provided_declarations].val; /* _provided_declarations on <var554:AbstractCompiler> */
4684 if (unlikely(var559 == NULL)) {
4685 if(catchStack.cursor >= 0){
4686 longjmp(catchStack.envs[catchStack.cursor], 1);
4687 }
4688 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _provided_declarations");
4689 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 615);
4690 fatal_exit(1);
4691 }
4692 var557 = var559;
4693 RET_LABEL558:(void)0;
4694 }
4695 }
4696 {
4697 var560 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var557, var_key);
4698 }
4699 {
4700 core___core__FileWriter___core__stream__Writer__write(var_hfile, var560); /* Direct call file$FileWriter$write on <var_hfile:nullable FileWriter(FileWriter)>*/
4701 }
4702 if (likely(varonce561!=NULL)) {
4703 var562 = varonce561;
4704 } else {
4705 var563 = "\n";
4706 var565 = (val*)(1l<<2|1);
4707 var566 = (val*)(1l<<2|1);
4708 var567 = (val*)((long)(0)<<2|3);
4709 var568 = (val*)((long)(0)<<2|3);
4710 var564 = core__flat___CString___to_s_unsafe(var563, var565, var566, var567, var568);
4711 var562 = var564;
4712 varonce561 = var562;
4713 }
4714 {
4715 core___core__FileWriter___core__stream__Writer__write(var_hfile, var562); /* Direct call file$FileWriter$write on <var_hfile:nullable FileWriter(FileWriter)>*/
4716 }
4717 {
4718 ((void(*)(val* self))((((long)var_507&3)?class_info[((long)var_507&3)]:var_507->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_507); /* next on <var_507:Iterator[String]>*/
4719 }
4720 }
4721 BREAK_label509: (void)0;
4722 {
4723 ((void(*)(val* self))((((long)var_507&3)?class_info[((long)var_507&3)]:var_507->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_507); /* finish on <var_507:Iterator[String]>*/
4724 }
4725 {
4726 core___core__FileWriter___core__stream__Stream__close(var_hfile); /* Direct call file$FileWriter$close on <var_hfile:nullable FileWriter(FileWriter)>*/
4727 }
4728 BREAK_label454: (void)0;
4729 {
4730 ((void(*)(val* self))((((long)var_253&3)?class_info[((long)var_253&3)]:var_253->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_253); /* next on <var_253:IndexedIterator[CodeFile]>*/
4731 }
4732 }
4733 BREAK_label255: (void)0;
4734 {
4735 ((void(*)(val* self))((((long)var_253&3)?class_info[((long)var_253&3)]:var_253->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_253); /* finish on <var_253:IndexedIterator[CodeFile]>*/
4736 }
4737 {
4738 { /* Inline abstract_compiler$Toolchain$toolcontext (self) on <self:MakefileToolchain> */
4739 var571 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
4740 if (unlikely(var571 == NULL)) {
4741 if(catchStack.cursor >= 0){
4742 longjmp(catchStack.envs[catchStack.cursor], 1);
4743 }
4744 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4745 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 131);
4746 fatal_exit(1);
4747 }
4748 var569 = var571;
4749 RET_LABEL570:(void)0;
4750 }
4751 }
4752 if (unlikely(varonce572==NULL)) {
4753 var573 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
4754 if (likely(varonce574!=NULL)) {
4755 var575 = varonce574;
4756 } else {
4757 var576 = "Total C source files to compile: ";
4758 var578 = (val*)(33l<<2|1);
4759 var579 = (val*)(33l<<2|1);
4760 var580 = (val*)((long)(0)<<2|3);
4761 var581 = (val*)((long)(0)<<2|3);
4762 var577 = core__flat___CString___to_s_unsafe(var576, var578, var579, var580, var581);
4763 var575 = var577;
4764 varonce574 = var575;
4765 }
4766 ((struct instance_core__NativeArray*)var573)->values[0]=var575;
4767 } else {
4768 var573 = varonce572;
4769 varonce572 = NULL;
4770 }
4771 {
4772 { /* Inline array$AbstractArrayRead$length (var_cfiles) on <var_cfiles:Array[String]> */
4773 var584 = var_cfiles->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_cfiles:Array[String]> */
4774 var582 = var584;
4775 RET_LABEL583:(void)0;
4776 }
4777 }
4778 var585 = core__flat___Int___core__abstract_text__Object__to_s(var582);
4779 ((struct instance_core__NativeArray*)var573)->values[1]=var585;
4780 {
4781 var586 = ((val*(*)(val* self))(var573->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var573); /* native_to_s on <var573:NativeArray[String]>*/
4782 }
4783 varonce572 = var573;
4784 {
4785 nitc___nitc__ToolContext___info(var569, var586, 2l); /* Direct call toolcontext$ToolContext$info on <var569:ToolContext>*/
4786 }
4787 RET_LABEL:;
4788 }
4789 /* method abstract_compiler$MakefileToolchain$makefile_name for (self: MakefileToolchain): String */
4790 val* nitc___nitc__MakefileToolchain___makefile_name(val* self) {
4791 val* var /* : String */;
4792 val* var1 /* : NativeArray[String] */;
4793 static val* varonce;
4794 static val* varonce2;
4795 val* var3 /* : String */;
4796 char* var4 /* : CString */;
4797 val* var5 /* : String */;
4798 val* var6 /* : nullable Int */;
4799 val* var7 /* : nullable Int */;
4800 val* var8 /* : nullable Bool */;
4801 val* var9 /* : nullable Bool */;
4802 val* var10 /* : AbstractCompiler */;
4803 val* var12 /* : AbstractCompiler */;
4804 val* var13 /* : MModule */;
4805 val* var15 /* : MModule */;
4806 val* var16 /* : String */;
4807 val* var17 /* : String */;
4808 if (unlikely(varonce==NULL)) {
4809 var1 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
4810 if (likely(varonce2!=NULL)) {
4811 var3 = varonce2;
4812 } else {
4813 var4 = ".mk";
4814 var6 = (val*)(3l<<2|1);
4815 var7 = (val*)(3l<<2|1);
4816 var8 = (val*)((long)(0)<<2|3);
4817 var9 = (val*)((long)(0)<<2|3);
4818 var5 = core__flat___CString___to_s_unsafe(var4, var6, var7, var8, var9);
4819 var3 = var5;
4820 varonce2 = var3;
4821 }
4822 ((struct instance_core__NativeArray*)var1)->values[1]=var3;
4823 } else {
4824 var1 = varonce;
4825 varonce = NULL;
4826 }
4827 {
4828 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
4829 var12 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
4830 if (unlikely(var12 == NULL)) {
4831 if(catchStack.cursor >= 0){
4832 longjmp(catchStack.envs[catchStack.cursor], 1);
4833 }
4834 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
4835 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
4836 fatal_exit(1);
4837 }
4838 var10 = var12;
4839 RET_LABEL11:(void)0;
4840 }
4841 }
4842 {
4843 { /* Inline abstract_compiler$AbstractCompiler$mainmodule (var10) on <var10:AbstractCompiler> */
4844 var15 = var10->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var10:AbstractCompiler> */
4845 if (unlikely(var15 == NULL)) {
4846 if(catchStack.cursor >= 0){
4847 longjmp(catchStack.envs[catchStack.cursor], 1);
4848 }
4849 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
4850 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 545);
4851 fatal_exit(1);
4852 }
4853 var13 = var15;
4854 RET_LABEL14:(void)0;
4855 }
4856 }
4857 {
4858 var16 = nitc___nitc__MModule___nitc__model_base__MEntity__c_name(var13);
4859 }
4860 ((struct instance_core__NativeArray*)var1)->values[0]=var16;
4861 {
4862 var17 = ((val*(*)(val* self))(var1->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1); /* native_to_s on <var1:NativeArray[String]>*/
4863 }
4864 varonce = var1;
4865 var = var17;
4866 goto RET_LABEL;
4867 RET_LABEL:;
4868 return var;
4869 }
4870 /* method abstract_compiler$MakefileToolchain$default_outname for (self: MakefileToolchain): String */
4871 val* nitc___nitc__MakefileToolchain___default_outname(val* self) {
4872 val* var /* : String */;
4873 val* var1 /* : AbstractCompiler */;
4874 val* var3 /* : AbstractCompiler */;
4875 val* var4 /* : MModule */;
4876 val* var6 /* : MModule */;
4877 val* var7 /* : MModule */;
4878 val* var9 /* : MModule */;
4879 val* var_mainmodule /* var mainmodule: MModule */;
4880 val* var10 /* : String */;
4881 val* var12 /* : String */;
4882 {
4883 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
4884 var3 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
4885 if (unlikely(var3 == NULL)) {
4886 if(catchStack.cursor >= 0){
4887 longjmp(catchStack.envs[catchStack.cursor], 1);
4888 }
4889 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
4890 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
4891 fatal_exit(1);
4892 }
4893 var1 = var3;
4894 RET_LABEL2:(void)0;
4895 }
4896 }
4897 {
4898 { /* Inline abstract_compiler$AbstractCompiler$mainmodule (var1) on <var1:AbstractCompiler> */
4899 var6 = var1->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var1:AbstractCompiler> */
4900 if (unlikely(var6 == NULL)) {
4901 if(catchStack.cursor >= 0){
4902 longjmp(catchStack.envs[catchStack.cursor], 1);
4903 }
4904 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
4905 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 545);
4906 fatal_exit(1);
4907 }
4908 var4 = var6;
4909 RET_LABEL5:(void)0;
4910 }
4911 }
4912 {
4913 { /* Inline mmodule$MModule$first_real_mmodule (var4) on <var4:MModule> */
4914 var9 = var4->attrs[COLOR_nitc__mmodule__MModule___first_real_mmodule].val; /* _first_real_mmodule on <var4:MModule> */
4915 if (unlikely(var9 == NULL)) {
4916 if(catchStack.cursor >= 0){
4917 longjmp(catchStack.envs[catchStack.cursor], 1);
4918 }
4919 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _first_real_mmodule");
4920 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 260);
4921 fatal_exit(1);
4922 }
4923 var7 = var9;
4924 RET_LABEL8:(void)0;
4925 }
4926 }
4927 var_mainmodule = var7;
4928 {
4929 { /* Inline mmodule$MModule$name (var_mainmodule) on <var_mainmodule:MModule> */
4930 var12 = var_mainmodule->attrs[COLOR_nitc__mmodule__MModule___name].val; /* _name on <var_mainmodule:MModule> */
4931 if (unlikely(var12 == NULL)) {
4932 if(catchStack.cursor >= 0){
4933 longjmp(catchStack.envs[catchStack.cursor], 1);
4934 }
4935 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4936 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 100);
4937 fatal_exit(1);
4938 }
4939 var10 = var12;
4940 RET_LABEL11:(void)0;
4941 }
4942 }
4943 var = var10;
4944 goto RET_LABEL;
4945 RET_LABEL:;
4946 return var;
4947 }
4948 /* method abstract_compiler$MakefileToolchain$outfile for (self: MakefileToolchain, MModule): String */
4949 val* nitc___nitc__MakefileToolchain___outfile(val* self, val* p0) {
4950 val* var /* : String */;
4951 val* var_mainmodule /* var mainmodule: MModule */;
4952 val* var1 /* : ToolContext */;
4953 val* var3 /* : ToolContext */;
4954 val* var4 /* : OptionString */;
4955 val* var6 /* : OptionString */;
4956 val* var7 /* : nullable Object */;
4957 val* var9 /* : nullable Object */;
4958 val* var_res /* var res: nullable String */;
4959 short int var10 /* : Bool */;
4960 short int var11 /* : Bool */;
4961 val* var_other /* var other: nullable Object */;
4962 short int var13 /* : Bool */;
4963 short int var14 /* : Bool */;
4964 val* var15 /* : String */;
4965 val* var16 /* : ToolContext */;
4966 val* var18 /* : ToolContext */;
4967 val* var19 /* : OptionString */;
4968 val* var21 /* : OptionString */;
4969 val* var22 /* : nullable Object */;
4970 val* var24 /* : nullable Object */;
4971 val* var_dir /* var dir: nullable String */;
4972 short int var25 /* : Bool */;
4973 short int var26 /* : Bool */;
4974 short int var28 /* : Bool */;
4975 short int var29 /* : Bool */;
4976 val* var30 /* : String */;
4977 var_mainmodule = p0;
4978 {
4979 { /* Inline abstract_compiler$Toolchain$toolcontext (self) on <self:MakefileToolchain> */
4980 var3 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
4981 if (unlikely(var3 == NULL)) {
4982 if(catchStack.cursor >= 0){
4983 longjmp(catchStack.envs[catchStack.cursor], 1);
4984 }
4985 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4986 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 131);
4987 fatal_exit(1);
4988 }
4989 var1 = var3;
4990 RET_LABEL2:(void)0;
4991 }
4992 }
4993 {
4994 { /* Inline abstract_compiler$ToolContext$opt_output (var1) on <var1:ToolContext> */
4995 var6 = var1->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_output].val; /* _opt_output on <var1:ToolContext> */
4996 if (unlikely(var6 == NULL)) {
4997 if(catchStack.cursor >= 0){
4998 longjmp(catchStack.envs[catchStack.cursor], 1);
4999 }
5000 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_output");
5001 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 30);
5002 fatal_exit(1);
5003 }
5004 var4 = var6;
5005 RET_LABEL5:(void)0;
5006 }
5007 }
5008 {
5009 { /* Inline opts$Option$value (var4) on <var4:OptionString> */
5010 var9 = var4->attrs[COLOR_opts__Option___value].val; /* _value on <var4:OptionString> */
5011 var7 = var9;
5012 RET_LABEL8:(void)0;
5013 }
5014 }
5015 var_res = var7;
5016 if (var_res == NULL) {
5017 var10 = 0; /* is null */
5018 } else {
5019 var10 = 1; /* arg is null and recv is not */
5020 }
5021 if (0) {
5022 { /* Inline kernel$Object$!= (var_res,((val*)NULL)) on <var_res:nullable String> */
5023 var_other = ((val*)NULL);
5024 {
5025 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)>*/
5026 }
5027 var14 = !var13;
5028 var11 = var14;
5029 goto RET_LABEL12;
5030 RET_LABEL12:(void)0;
5031 }
5032 var10 = var11;
5033 }
5034 if (var10){
5035 var = var_res;
5036 goto RET_LABEL;
5037 } else {
5038 }
5039 {
5040 var15 = nitc___nitc__MakefileToolchain___default_outname(self);
5041 }
5042 var_res = var15;
5043 {
5044 { /* Inline abstract_compiler$Toolchain$toolcontext (self) on <self:MakefileToolchain> */
5045 var18 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
5046 if (unlikely(var18 == NULL)) {
5047 if(catchStack.cursor >= 0){
5048 longjmp(catchStack.envs[catchStack.cursor], 1);
5049 }
5050 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
5051 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 131);
5052 fatal_exit(1);
5053 }
5054 var16 = var18;
5055 RET_LABEL17:(void)0;
5056 }
5057 }
5058 {
5059 { /* Inline abstract_compiler$ToolContext$opt_dir (var16) on <var16:ToolContext> */
5060 var21 = var16->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_dir].val; /* _opt_dir on <var16:ToolContext> */
5061 if (unlikely(var21 == NULL)) {
5062 if(catchStack.cursor >= 0){
5063 longjmp(catchStack.envs[catchStack.cursor], 1);
5064 }
5065 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_dir");
5066 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 32);
5067 fatal_exit(1);
5068 }
5069 var19 = var21;
5070 RET_LABEL20:(void)0;
5071 }
5072 }
5073 {
5074 { /* Inline opts$Option$value (var19) on <var19:OptionString> */
5075 var24 = var19->attrs[COLOR_opts__Option___value].val; /* _value on <var19:OptionString> */
5076 var22 = var24;
5077 RET_LABEL23:(void)0;
5078 }
5079 }
5080 var_dir = var22;
5081 if (var_dir == NULL) {
5082 var25 = 0; /* is null */
5083 } else {
5084 var25 = 1; /* arg is null and recv is not */
5085 }
5086 if (0) {
5087 { /* Inline kernel$Object$!= (var_dir,((val*)NULL)) on <var_dir:nullable String> */
5088 var_other = ((val*)NULL);
5089 {
5090 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)>*/
5091 }
5092 var29 = !var28;
5093 var26 = var29;
5094 goto RET_LABEL27;
5095 RET_LABEL27:(void)0;
5096 }
5097 var25 = var26;
5098 }
5099 if (var25){
5100 {
5101 var30 = core__file___String___join_path(var_dir, var_res);
5102 }
5103 var = var30;
5104 goto RET_LABEL;
5105 } else {
5106 }
5107 var = var_res;
5108 goto RET_LABEL;
5109 RET_LABEL:;
5110 return var;
5111 }
5112 /* method abstract_compiler$MakefileToolchain$write_makefile for (self: MakefileToolchain, String, Array[String]) */
5113 void nitc___nitc__MakefileToolchain___write_makefile(val* self, val* p0, val* p1) {
5114 val* var_compile_dir /* var compile_dir: String */;
5115 val* var_cfiles /* var cfiles: Array[String] */;
5116 val* var /* : AbstractCompiler */;
5117 val* var2 /* : AbstractCompiler */;
5118 val* var3 /* : MModule */;
5119 val* var5 /* : MModule */;
5120 val* var_mainmodule /* var mainmodule: MModule */;
5121 val* var6 /* : AbstractCompiler */;
5122 val* var8 /* : AbstractCompiler */;
5123 val* var9 /* : Platform */;
5124 val* var11 /* : Platform */;
5125 val* var_platform /* var platform: Platform */;
5126 val* var12 /* : String */;
5127 val* var_outname /* var outname: String */;
5128 val* var13 /* : String */;
5129 val* var_real_outpath /* var real_outpath: String */;
5130 val* var14 /* : String */;
5131 val* var_outpath /* var outpath: String */;
5132 short int var15 /* : Bool */;
5133 val* var_other /* var other: nullable Object */;
5134 short int var17 /* : Bool */;
5135 short int var18 /* : Bool */;
5136 val* var19 /* : String */;
5137 val* var20 /* : String */;
5138 val* var_makename /* var makename: String */;
5139 val* var21 /* : NativeArray[String] */;
5140 static val* varonce;
5141 static val* varonce22;
5142 val* var23 /* : String */;
5143 char* var24 /* : CString */;
5144 val* var25 /* : String */;
5145 val* var26 /* : nullable Int */;
5146 val* var27 /* : nullable Int */;
5147 val* var28 /* : nullable Bool */;
5148 val* var29 /* : nullable Bool */;
5149 val* var30 /* : String */;
5150 val* var_makepath /* var makepath: String */;
5151 val* var31 /* : FileWriter */;
5152 val* var_makefile /* var makefile: FileWriter */;
5153 val* var32 /* : HashSet[String] */;
5154 val* var_linker_options /* var linker_options: HashSet[String] */;
5155 val* var33 /* : POSetElement[MModule] */;
5156 val* var35 /* : POSetElement[MModule] */;
5157 val* var36 /* : Collection[nullable Object] */;
5158 val* var_ /* var : Collection[MModule] */;
5159 val* var37 /* : Iterator[nullable Object] */;
5160 val* var_38 /* var : Iterator[MModule] */;
5161 short int var39 /* : Bool */;
5162 val* var40 /* : nullable Object */;
5163 val* var_m /* var m: MModule */;
5164 val* var41 /* : nullable Array[String] */;
5165 val* var_libs /* var libs: nullable Array[String] */;
5166 short int var42 /* : Bool */;
5167 short int var43 /* : Bool */;
5168 short int var45 /* : Bool */;
5169 short int var46 /* : Bool */;
5170 val* var47 /* : ToolContext */;
5171 val* var49 /* : ToolContext */;
5172 val* var50 /* : OptionBool */;
5173 val* var52 /* : OptionBool */;
5174 val* var53 /* : nullable Object */;
5175 val* var55 /* : nullable Object */;
5176 short int var56 /* : Bool */;
5177 short int var_debug /* var debug: Bool */;
5178 val* var58 /* : NativeArray[String] */;
5179 static val* varonce57;
5180 static val* varonce59;
5181 val* var60 /* : String */;
5182 char* var61 /* : CString */;
5183 val* var62 /* : String */;
5184 val* var63 /* : nullable Int */;
5185 val* var64 /* : nullable Int */;
5186 val* var65 /* : nullable Bool */;
5187 val* var66 /* : nullable Bool */;
5188 static val* varonce67;
5189 val* var68 /* : String */;
5190 char* var69 /* : CString */;
5191 val* var70 /* : String */;
5192 val* var71 /* : nullable Int */;
5193 val* var72 /* : nullable Int */;
5194 val* var73 /* : nullable Bool */;
5195 val* var74 /* : nullable Bool */;
5196 static val* varonce75;
5197 val* var76 /* : String */;
5198 char* var77 /* : CString */;
5199 val* var78 /* : String */;
5200 val* var79 /* : nullable Int */;
5201 val* var80 /* : nullable Int */;
5202 val* var81 /* : nullable Bool */;
5203 val* var82 /* : nullable Bool */;
5204 val* var83 /* : String */;
5205 short int var84 /* : Bool */;
5206 static val* varonce85;
5207 val* var86 /* : String */;
5208 char* var87 /* : CString */;
5209 val* var88 /* : String */;
5210 val* var89 /* : nullable Int */;
5211 val* var90 /* : nullable Int */;
5212 val* var91 /* : nullable Bool */;
5213 val* var92 /* : nullable Bool */;
5214 static val* varonce93;
5215 val* var94 /* : String */;
5216 char* var95 /* : CString */;
5217 val* var96 /* : String */;
5218 val* var97 /* : nullable Int */;
5219 val* var98 /* : nullable Int */;
5220 val* var99 /* : nullable Bool */;
5221 val* var100 /* : nullable Bool */;
5222 static val* varonce101;
5223 val* var102 /* : String */;
5224 char* var103 /* : CString */;
5225 val* var104 /* : String */;
5226 val* var105 /* : nullable Int */;
5227 val* var106 /* : nullable Int */;
5228 val* var107 /* : nullable Bool */;
5229 val* var108 /* : nullable Bool */;
5230 val* var109 /* : String */;
5231 val* var110 /* : String */;
5232 static val* varonce111;
5233 val* var112 /* : String */;
5234 char* var113 /* : CString */;
5235 val* var114 /* : String */;
5236 val* var115 /* : nullable Int */;
5237 val* var116 /* : nullable Int */;
5238 val* var117 /* : nullable Bool */;
5239 val* var118 /* : nullable Bool */;
5240 short int var119 /* : Bool */;
5241 val* var120 /* : ToolContext */;
5242 val* var122 /* : ToolContext */;
5243 val* var123 /* : OptionBool */;
5244 val* var125 /* : OptionBool */;
5245 val* var126 /* : nullable Object */;
5246 val* var128 /* : nullable Object */;
5247 short int var129 /* : Bool */;
5248 static val* varonce130;
5249 val* var131 /* : String */;
5250 char* var132 /* : CString */;
5251 val* var133 /* : String */;
5252 val* var134 /* : nullable Int */;
5253 val* var135 /* : nullable Int */;
5254 val* var136 /* : nullable Bool */;
5255 val* var137 /* : nullable Bool */;
5256 static val* varonce138;
5257 val* var139 /* : String */;
5258 char* var140 /* : CString */;
5259 val* var141 /* : String */;
5260 val* var142 /* : nullable Int */;
5261 val* var143 /* : nullable Int */;
5262 val* var144 /* : nullable Bool */;
5263 val* var145 /* : nullable Bool */;
5264 static val* varonce146;
5265 val* var147 /* : String */;
5266 char* var148 /* : CString */;
5267 val* var149 /* : String */;
5268 val* var150 /* : nullable Int */;
5269 val* var151 /* : nullable Int */;
5270 val* var152 /* : nullable Bool */;
5271 val* var153 /* : nullable Bool */;
5272 static val* varonce154;
5273 val* var155 /* : String */;
5274 char* var156 /* : CString */;
5275 val* var157 /* : String */;
5276 val* var158 /* : nullable Int */;
5277 val* var159 /* : nullable Int */;
5278 val* var160 /* : nullable Bool */;
5279 val* var161 /* : nullable Bool */;
5280 static val* varonce162;
5281 val* var163 /* : String */;
5282 char* var164 /* : CString */;
5283 val* var165 /* : String */;
5284 val* var166 /* : nullable Int */;
5285 val* var167 /* : nullable Int */;
5286 val* var168 /* : nullable Bool */;
5287 val* var169 /* : nullable Bool */;
5288 short int var170 /* : Bool */;
5289 static val* varonce171;
5290 val* var172 /* : String */;
5291 char* var173 /* : CString */;
5292 val* var174 /* : String */;
5293 val* var175 /* : nullable Int */;
5294 val* var176 /* : nullable Int */;
5295 val* var177 /* : nullable Bool */;
5296 val* var178 /* : nullable Bool */;
5297 static val* varonce179;
5298 val* var180 /* : String */;
5299 char* var181 /* : CString */;
5300 val* var182 /* : String */;
5301 val* var183 /* : nullable Int */;
5302 val* var184 /* : nullable Int */;
5303 val* var185 /* : nullable Bool */;
5304 val* var186 /* : nullable Bool */;
5305 static val* varonce187;
5306 val* var188 /* : String */;
5307 char* var189 /* : CString */;
5308 val* var190 /* : String */;
5309 val* var191 /* : nullable Int */;
5310 val* var192 /* : nullable Int */;
5311 val* var193 /* : nullable Bool */;
5312 val* var194 /* : nullable Bool */;
5313 val* var196 /* : NativeArray[String] */;
5314 static val* varonce195;
5315 static val* varonce197;
5316 val* var198 /* : String */;
5317 char* var199 /* : CString */;
5318 val* var200 /* : String */;
5319 val* var201 /* : nullable Int */;
5320 val* var202 /* : nullable Int */;
5321 val* var203 /* : nullable Bool */;
5322 val* var204 /* : nullable Bool */;
5323 static val* varonce205;
5324 val* var206 /* : String */;
5325 char* var207 /* : CString */;
5326 val* var208 /* : String */;
5327 val* var209 /* : nullable Int */;
5328 val* var210 /* : nullable Int */;
5329 val* var211 /* : nullable Bool */;
5330 val* var212 /* : nullable Bool */;
5331 val* var213 /* : String */;
5332 short int var214 /* : Bool */;
5333 short int var216 /* : Bool */;
5334 short int var217 /* : Bool */;
5335 val* var219 /* : NativeArray[String] */;
5336 static val* varonce218;
5337 static val* varonce220;
5338 val* var221 /* : String */;
5339 char* var222 /* : CString */;
5340 val* var223 /* : String */;
5341 val* var224 /* : nullable Int */;
5342 val* var225 /* : nullable Int */;
5343 val* var226 /* : nullable Bool */;
5344 val* var227 /* : nullable Bool */;
5345 static val* varonce228;
5346 val* var229 /* : String */;
5347 char* var230 /* : CString */;
5348 val* var231 /* : String */;
5349 val* var232 /* : nullable Int */;
5350 val* var233 /* : nullable Int */;
5351 val* var234 /* : nullable Bool */;
5352 val* var235 /* : nullable Bool */;
5353 val* var236 /* : String */;
5354 val* var237 /* : String */;
5355 static val* varonce238;
5356 val* var239 /* : String */;
5357 char* var240 /* : CString */;
5358 val* var241 /* : String */;
5359 val* var242 /* : nullable Int */;
5360 val* var243 /* : nullable Int */;
5361 val* var244 /* : nullable Bool */;
5362 val* var245 /* : nullable Bool */;
5363 static val* varonce246;
5364 val* var247 /* : String */;
5365 char* var248 /* : CString */;
5366 val* var249 /* : String */;
5367 val* var250 /* : nullable Int */;
5368 val* var251 /* : nullable Int */;
5369 val* var252 /* : nullable Bool */;
5370 val* var253 /* : nullable Bool */;
5371 val* var254 /* : String */;
5372 val* var255 /* : String */;
5373 static val* varonce256;
5374 val* var257 /* : String */;
5375 char* var258 /* : CString */;
5376 val* var259 /* : String */;
5377 val* var260 /* : nullable Int */;
5378 val* var261 /* : nullable Int */;
5379 val* var262 /* : nullable Bool */;
5380 val* var263 /* : nullable Bool */;
5381 val* var264 /* : Array[String] */;
5382 val* var_ofiles /* var ofiles: Array[String] */;
5383 val* var265 /* : Array[String] */;
5384 val* var_dep_rules /* var dep_rules: Array[String] */;
5385 val* var_266 /* var : Array[String] */;
5386 val* var267 /* : IndexedIterator[nullable Object] */;
5387 val* var_268 /* var : IndexedIterator[String] */;
5388 short int var269 /* : Bool */;
5389 val* var271 /* : nullable Object */;
5390 val* var_f /* var f: String */;
5391 static val* varonce272;
5392 val* var273 /* : String */;
5393 char* var274 /* : CString */;
5394 val* var275 /* : String */;
5395 val* var276 /* : nullable Int */;
5396 val* var277 /* : nullable Int */;
5397 val* var278 /* : nullable Bool */;
5398 val* var279 /* : nullable Bool */;
5399 val* var280 /* : String */;
5400 static val* varonce281;
5401 val* var282 /* : String */;
5402 char* var283 /* : CString */;
5403 val* var284 /* : String */;
5404 val* var285 /* : nullable Int */;
5405 val* var286 /* : nullable Int */;
5406 val* var287 /* : nullable Bool */;
5407 val* var288 /* : nullable Bool */;
5408 val* var289 /* : Text */;
5409 val* var_o /* var o: String */;
5410 val* var291 /* : NativeArray[String] */;
5411 static val* varonce290;
5412 static val* varonce292;
5413 val* var293 /* : String */;
5414 char* var294 /* : CString */;
5415 val* var295 /* : String */;
5416 val* var296 /* : nullable Int */;
5417 val* var297 /* : nullable Int */;
5418 val* var298 /* : nullable Bool */;
5419 val* var299 /* : nullable Bool */;
5420 static val* varonce300;
5421 val* var301 /* : String */;
5422 char* var302 /* : CString */;
5423 val* var303 /* : String */;
5424 val* var304 /* : nullable Int */;
5425 val* var305 /* : nullable Int */;
5426 val* var306 /* : nullable Bool */;
5427 val* var307 /* : nullable Bool */;
5428 static val* varonce308;
5429 val* var309 /* : String */;
5430 char* var310 /* : CString */;
5431 val* var311 /* : String */;
5432 val* var312 /* : nullable Int */;
5433 val* var313 /* : nullable Int */;
5434 val* var314 /* : nullable Bool */;
5435 val* var315 /* : nullable Bool */;
5436 static val* varonce316;
5437 val* var317 /* : String */;
5438 char* var318 /* : CString */;
5439 val* var319 /* : String */;
5440 val* var320 /* : nullable Int */;
5441 val* var321 /* : nullable Int */;
5442 val* var322 /* : nullable Bool */;
5443 val* var323 /* : nullable Bool */;
5444 val* var324 /* : String */;
5445 val* var325 /* : AbstractCompiler */;
5446 val* var327 /* : AbstractCompiler */;
5447 val* var328 /* : Array[String] */;
5448 val* var330 /* : Array[String] */;
5449 short int var331 /* : Bool */;
5450 short int var332 /* : Bool */;
5451 val* var334 /* : NativeArray[String] */;
5452 static val* varonce333;
5453 static val* varonce335;
5454 val* var336 /* : String */;
5455 char* var337 /* : CString */;
5456 val* var338 /* : String */;
5457 val* var339 /* : nullable Int */;
5458 val* var340 /* : nullable Int */;
5459 val* var341 /* : nullable Bool */;
5460 val* var342 /* : nullable Bool */;
5461 val* var343 /* : String */;
5462 val* var_linker_script_path /* var linker_script_path: String */;
5463 static val* varonce344;
5464 val* var345 /* : String */;
5465 char* var346 /* : CString */;
5466 val* var347 /* : String */;
5467 val* var348 /* : nullable Int */;
5468 val* var349 /* : nullable Int */;
5469 val* var350 /* : nullable Bool */;
5470 val* var351 /* : nullable Bool */;
5471 val* var352 /* : FileWriter */;
5472 val* var_f353 /* var f: FileWriter */;
5473 val* var354 /* : AbstractCompiler */;
5474 val* var356 /* : AbstractCompiler */;
5475 val* var357 /* : Array[String] */;
5476 val* var359 /* : Array[String] */;
5477 val* var_360 /* var : Array[String] */;
5478 val* var361 /* : IndexedIterator[nullable Object] */;
5479 val* var_362 /* var : IndexedIterator[String] */;
5480 short int var363 /* : Bool */;
5481 val* var365 /* : nullable Object */;
5482 val* var_l /* var l: String */;
5483 static val* varonce366;
5484 val* var367 /* : String */;
5485 char* var368 /* : CString */;
5486 val* var369 /* : String */;
5487 val* var370 /* : nullable Int */;
5488 val* var371 /* : nullable Int */;
5489 val* var372 /* : nullable Bool */;
5490 val* var373 /* : nullable Bool */;
5491 val* var374 /* : Array[ExternFile] */;
5492 val* var_java_files /* var java_files: Array[ExternFile] */;
5493 val* var375 /* : Array[String] */;
5494 val* var_pkgconfigs /* var pkgconfigs: Array[String] */;
5495 val* var376 /* : AbstractCompiler */;
5496 val* var378 /* : AbstractCompiler */;
5497 val* var379 /* : Array[ExternFile] */;
5498 val* var381 /* : Array[ExternFile] */;
5499 val* var_382 /* var : Array[ExternFile] */;
5500 val* var383 /* : IndexedIterator[nullable Object] */;
5501 val* var_384 /* var : IndexedIterator[ExternFile] */;
5502 short int var385 /* : Bool */;
5503 val* var387 /* : nullable Object */;
5504 val* var_f388 /* var f: ExternFile */;
5505 val* var389 /* : Array[String] */;
5506 val* var391 /* : Array[String] */;
5507 short int var392 /* : Bool */;
5508 short int var393 /* : Bool */;
5509 static val* varonce394;
5510 val* var395 /* : String */;
5511 char* var396 /* : CString */;
5512 val* var397 /* : String */;
5513 val* var398 /* : nullable Int */;
5514 val* var399 /* : nullable Int */;
5515 val* var400 /* : nullable Bool */;
5516 val* var401 /* : nullable Bool */;
5517 val* var_402 /* var : Array[String] */;
5518 val* var403 /* : IndexedIterator[nullable Object] */;
5519 val* var_404 /* var : IndexedIterator[String] */;
5520 short int var405 /* : Bool */;
5521 val* var407 /* : nullable Object */;
5522 val* var_p /* var p: String */;
5523 val* var409 /* : NativeArray[String] */;
5524 static val* varonce408;
5525 static val* varonce410;
5526 val* var411 /* : String */;
5527 char* var412 /* : CString */;
5528 val* var413 /* : String */;
5529 val* var414 /* : nullable Int */;
5530 val* var415 /* : nullable Int */;
5531 val* var416 /* : nullable Bool */;
5532 val* var417 /* : nullable Bool */;
5533 static val* varonce418;
5534 val* var419 /* : String */;
5535 char* var420 /* : CString */;
5536 val* var421 /* : String */;
5537 val* var422 /* : nullable Int */;
5538 val* var423 /* : nullable Int */;
5539 val* var424 /* : nullable Bool */;
5540 val* var425 /* : nullable Bool */;
5541 static val* varonce426;
5542 val* var427 /* : String */;
5543 char* var428 /* : CString */;
5544 val* var429 /* : String */;
5545 val* var430 /* : nullable Int */;
5546 val* var431 /* : nullable Int */;
5547 val* var432 /* : nullable Bool */;
5548 val* var433 /* : nullable Bool */;
5549 static val* varonce434;
5550 val* var435 /* : String */;
5551 char* var436 /* : CString */;
5552 val* var437 /* : String */;
5553 val* var438 /* : nullable Int */;
5554 val* var439 /* : nullable Int */;
5555 val* var440 /* : nullable Bool */;
5556 val* var441 /* : nullable Bool */;
5557 val* var442 /* : String */;
5558 val* var443 /* : AbstractCompiler */;
5559 val* var445 /* : AbstractCompiler */;
5560 val* var446 /* : Array[ExternFile] */;
5561 val* var448 /* : Array[ExternFile] */;
5562 val* var_449 /* var : Array[ExternFile] */;
5563 val* var450 /* : IndexedIterator[nullable Object] */;
5564 val* var_451 /* var : IndexedIterator[ExternFile] */;
5565 short int var452 /* : Bool */;
5566 val* var454 /* : nullable Object */;
5567 val* var_f455 /* var f: ExternFile */;
5568 val* var456 /* : String */;
5569 val* var_o457 /* var o: String */;
5570 val* var458 /* : String */;
5571 val* var460 /* : String */;
5572 val* var461 /* : String */;
5573 val* var_ff /* var ff: String */;
5574 val* var463 /* : NativeArray[String] */;
5575 static val* varonce462;
5576 static val* varonce464;
5577 val* var465 /* : String */;
5578 char* var466 /* : CString */;
5579 val* var467 /* : String */;
5580 val* var468 /* : nullable Int */;
5581 val* var469 /* : nullable Int */;
5582 val* var470 /* : nullable Bool */;
5583 val* var471 /* : nullable Bool */;
5584 static val* varonce472;
5585 val* var473 /* : String */;
5586 char* var474 /* : CString */;
5587 val* var475 /* : String */;
5588 val* var476 /* : nullable Int */;
5589 val* var477 /* : nullable Int */;
5590 val* var478 /* : nullable Bool */;
5591 val* var479 /* : nullable Bool */;
5592 val* var480 /* : String */;
5593 val* var482 /* : NativeArray[String] */;
5594 static val* varonce481;
5595 static val* varonce483;
5596 val* var484 /* : String */;
5597 char* var485 /* : CString */;
5598 val* var486 /* : String */;
5599 val* var487 /* : nullable Int */;
5600 val* var488 /* : nullable Int */;
5601 val* var489 /* : nullable Bool */;
5602 val* var490 /* : nullable Bool */;
5603 static val* varonce491;
5604 val* var492 /* : String */;
5605 char* var493 /* : CString */;
5606 val* var494 /* : String */;
5607 val* var495 /* : nullable Int */;
5608 val* var496 /* : nullable Int */;
5609 val* var497 /* : nullable Bool */;
5610 val* var498 /* : nullable Bool */;
5611 val* var499 /* : String */;
5612 val* var500 /* : String */;
5613 val* var501 /* : String */;
5614 short int var502 /* : Bool */;
5615 short int var503 /* : Bool */;
5616 short int var504 /* : Bool */;
5617 short int var505 /* : Bool */;
5618 val* var507 /* : NativeArray[String] */;
5619 static val* varonce506;
5620 static val* varonce508;
5621 val* var509 /* : String */;
5622 char* var510 /* : CString */;
5623 val* var511 /* : String */;
5624 val* var512 /* : nullable Int */;
5625 val* var513 /* : nullable Int */;
5626 val* var514 /* : nullable Bool */;
5627 val* var515 /* : nullable Bool */;
5628 val* var516 /* : String */;
5629 val* var_jar_file /* var jar_file: String */;
5630 val* var517 /* : Array[String] */;
5631 val* var_class_files_array /* var class_files_array: Array[String] */;
5632 val* var_518 /* var : Array[ExternFile] */;
5633 val* var519 /* : IndexedIterator[nullable Object] */;
5634 val* var_520 /* var : IndexedIterator[ExternFile] */;
5635 short int var521 /* : Bool */;
5636 val* var523 /* : nullable Object */;
5637 val* var_f524 /* var f: ExternFile */;
5638 val* var525 /* : String */;
5639 static val* varonce526;
5640 val* var527 /* : String */;
5641 char* var528 /* : CString */;
5642 val* var529 /* : String */;
5643 val* var530 /* : nullable Int */;
5644 val* var531 /* : nullable Int */;
5645 val* var532 /* : nullable Bool */;
5646 val* var533 /* : nullable Bool */;
5647 val* var534 /* : String */;
5648 val* var_class_files /* var class_files: String */;
5649 val* var536 /* : NativeArray[String] */;
5650 static val* varonce535;
5651 static val* varonce537;
5652 val* var538 /* : String */;
5653 char* var539 /* : CString */;
5654 val* var540 /* : String */;
5655 val* var541 /* : nullable Int */;
5656 val* var542 /* : nullable Int */;
5657 val* var543 /* : nullable Bool */;
5658 val* var544 /* : nullable Bool */;
5659 static val* varonce545;
5660 val* var546 /* : String */;
5661 char* var547 /* : CString */;
5662 val* var548 /* : String */;
5663 val* var549 /* : nullable Int */;
5664 val* var550 /* : nullable Int */;
5665 val* var551 /* : nullable Bool */;
5666 val* var552 /* : nullable Bool */;
5667 val* var553 /* : String */;
5668 val* var555 /* : NativeArray[String] */;
5669 static val* varonce554;
5670 static val* varonce556;
5671 val* var557 /* : String */;
5672 char* var558 /* : CString */;
5673 val* var559 /* : String */;
5674 val* var560 /* : nullable Int */;
5675 val* var561 /* : nullable Int */;
5676 val* var562 /* : nullable Bool */;
5677 val* var563 /* : nullable Bool */;
5678 static val* varonce564;
5679 val* var565 /* : String */;
5680 char* var566 /* : CString */;
5681 val* var567 /* : String */;
5682 val* var568 /* : nullable Int */;
5683 val* var569 /* : nullable Int */;
5684 val* var570 /* : nullable Bool */;
5685 val* var571 /* : nullable Bool */;
5686 static val* varonce572;
5687 val* var573 /* : String */;
5688 char* var574 /* : CString */;
5689 val* var575 /* : String */;
5690 val* var576 /* : nullable Int */;
5691 val* var577 /* : nullable Int */;
5692 val* var578 /* : nullable Bool */;
5693 val* var579 /* : nullable Bool */;
5694 val* var580 /* : String */;
5695 static val* varonce581;
5696 val* var582 /* : String */;
5697 char* var583 /* : CString */;
5698 val* var584 /* : String */;
5699 val* var585 /* : nullable Int */;
5700 val* var586 /* : nullable Int */;
5701 val* var587 /* : nullable Bool */;
5702 val* var588 /* : nullable Bool */;
5703 val* var_pkg /* var pkg: String */;
5704 short int var589 /* : Bool */;
5705 short int var590 /* : Bool */;
5706 val* var592 /* : NativeArray[String] */;
5707 static val* varonce591;
5708 static val* varonce593;
5709 val* var594 /* : String */;
5710 char* var595 /* : CString */;
5711 val* var596 /* : String */;
5712 val* var597 /* : nullable Int */;
5713 val* var598 /* : nullable Int */;
5714 val* var599 /* : nullable Bool */;
5715 val* var600 /* : nullable Bool */;
5716 static val* varonce601;
5717 val* var602 /* : String */;
5718 char* var603 /* : CString */;
5719 val* var604 /* : String */;
5720 val* var605 /* : nullable Int */;
5721 val* var606 /* : nullable Int */;
5722 val* var607 /* : nullable Bool */;
5723 val* var608 /* : nullable Bool */;
5724 static val* varonce609;
5725 val* var610 /* : String */;
5726 char* var611 /* : CString */;
5727 val* var612 /* : String */;
5728 val* var613 /* : nullable Int */;
5729 val* var614 /* : nullable Int */;
5730 val* var615 /* : nullable Bool */;
5731 val* var616 /* : nullable Bool */;
5732 val* var617 /* : String */;
5733 val* var618 /* : String */;
5734 val* var620 /* : NativeArray[String] */;
5735 static val* varonce619;
5736 static val* varonce621;
5737 val* var622 /* : String */;
5738 char* var623 /* : CString */;
5739 val* var624 /* : String */;
5740 val* var625 /* : nullable Int */;
5741 val* var626 /* : nullable Int */;
5742 val* var627 /* : nullable Bool */;
5743 val* var628 /* : nullable Bool */;
5744 static val* varonce629;
5745 val* var630 /* : String */;
5746 char* var631 /* : CString */;
5747 val* var632 /* : String */;
5748 val* var633 /* : nullable Int */;
5749 val* var634 /* : nullable Int */;
5750 val* var635 /* : nullable Bool */;
5751 val* var636 /* : nullable Bool */;
5752 static val* varonce637;
5753 val* var638 /* : String */;
5754 char* var639 /* : CString */;
5755 val* var640 /* : String */;
5756 val* var641 /* : nullable Int */;
5757 val* var642 /* : nullable Int */;
5758 val* var643 /* : nullable Bool */;
5759 val* var644 /* : nullable Bool */;
5760 static val* varonce645;
5761 val* var646 /* : String */;
5762 char* var647 /* : CString */;
5763 val* var648 /* : String */;
5764 val* var649 /* : nullable Int */;
5765 val* var650 /* : nullable Int */;
5766 val* var651 /* : nullable Bool */;
5767 val* var652 /* : nullable Bool */;
5768 static val* varonce653;
5769 val* var654 /* : String */;
5770 char* var655 /* : CString */;
5771 val* var656 /* : String */;
5772 val* var657 /* : nullable Int */;
5773 val* var658 /* : nullable Int */;
5774 val* var659 /* : nullable Bool */;
5775 val* var660 /* : nullable Bool */;
5776 static val* varonce661;
5777 val* var662 /* : String */;
5778 char* var663 /* : CString */;
5779 val* var664 /* : String */;
5780 val* var665 /* : nullable Int */;
5781 val* var666 /* : nullable Int */;
5782 val* var667 /* : nullable Bool */;
5783 val* var668 /* : nullable Bool */;
5784 val* var669 /* : String */;
5785 val* var670 /* : String */;
5786 static val* varonce671;
5787 val* var672 /* : String */;
5788 char* var673 /* : CString */;
5789 val* var674 /* : String */;
5790 val* var675 /* : nullable Int */;
5791 val* var676 /* : nullable Int */;
5792 val* var677 /* : nullable Bool */;
5793 val* var678 /* : nullable Bool */;
5794 val* var679 /* : String */;
5795 val* var680 /* : String */;
5796 val* var682 /* : NativeArray[String] */;
5797 static val* varonce681;
5798 static val* varonce683;
5799 val* var684 /* : String */;
5800 char* var685 /* : CString */;
5801 val* var686 /* : String */;
5802 val* var687 /* : nullable Int */;
5803 val* var688 /* : nullable Int */;
5804 val* var689 /* : nullable Bool */;
5805 val* var690 /* : nullable Bool */;
5806 static val* varonce691;
5807 val* var692 /* : String */;
5808 char* var693 /* : CString */;
5809 val* var694 /* : String */;
5810 val* var695 /* : nullable Int */;
5811 val* var696 /* : nullable Int */;
5812 val* var697 /* : nullable Bool */;
5813 val* var698 /* : nullable Bool */;
5814 static val* varonce699;
5815 val* var700 /* : String */;
5816 char* var701 /* : CString */;
5817 val* var702 /* : String */;
5818 val* var703 /* : nullable Int */;
5819 val* var704 /* : nullable Int */;
5820 val* var705 /* : nullable Bool */;
5821 val* var706 /* : nullable Bool */;
5822 val* var707 /* : String */;
5823 val* var708 /* : String */;
5824 short int var709 /* : Bool */;
5825 short int var711 /* : Bool */;
5826 short int var712 /* : Bool */;
5827 val* var714 /* : NativeArray[String] */;
5828 static val* varonce713;
5829 static val* varonce715;
5830 val* var716 /* : String */;
5831 char* var717 /* : CString */;
5832 val* var718 /* : String */;
5833 val* var719 /* : nullable Int */;
5834 val* var720 /* : nullable Int */;
5835 val* var721 /* : nullable Bool */;
5836 val* var722 /* : nullable Bool */;
5837 static val* varonce723;
5838 val* var724 /* : String */;
5839 char* var725 /* : CString */;
5840 val* var726 /* : String */;
5841 val* var727 /* : nullable Int */;
5842 val* var728 /* : nullable Int */;
5843 val* var729 /* : nullable Bool */;
5844 val* var730 /* : nullable Bool */;
5845 val* var731 /* : String */;
5846 val* var732 /* : String */;
5847 val* var733 /* : ToolContext */;
5848 val* var735 /* : ToolContext */;
5849 val* var737 /* : NativeArray[String] */;
5850 static val* varonce736;
5851 static val* varonce738;
5852 val* var739 /* : String */;
5853 char* var740 /* : CString */;
5854 val* var741 /* : String */;
5855 val* var742 /* : nullable Int */;
5856 val* var743 /* : nullable Int */;
5857 val* var744 /* : nullable Bool */;
5858 val* var745 /* : nullable Bool */;
5859 val* var746 /* : String */;
5860 val* var748 /* : NativeArray[String] */;
5861 static val* varonce747;
5862 static val* varonce749;
5863 val* var750 /* : String */;
5864 char* var751 /* : CString */;
5865 val* var752 /* : String */;
5866 val* var753 /* : nullable Int */;
5867 val* var754 /* : nullable Int */;
5868 val* var755 /* : nullable Bool */;
5869 val* var756 /* : nullable Bool */;
5870 val* var757 /* : String */;
5871 var_compile_dir = p0;
5872 var_cfiles = p1;
5873 {
5874 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
5875 var2 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
5876 if (unlikely(var2 == NULL)) {
5877 if(catchStack.cursor >= 0){
5878 longjmp(catchStack.envs[catchStack.cursor], 1);
5879 }
5880 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
5881 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
5882 fatal_exit(1);
5883 }
5884 var = var2;
5885 RET_LABEL1:(void)0;
5886 }
5887 }
5888 {
5889 { /* Inline abstract_compiler$AbstractCompiler$mainmodule (var) on <var:AbstractCompiler> */
5890 var5 = var->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var:AbstractCompiler> */
5891 if (unlikely(var5 == NULL)) {
5892 if(catchStack.cursor >= 0){
5893 longjmp(catchStack.envs[catchStack.cursor], 1);
5894 }
5895 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
5896 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 545);
5897 fatal_exit(1);
5898 }
5899 var3 = var5;
5900 RET_LABEL4:(void)0;
5901 }
5902 }
5903 var_mainmodule = var3;
5904 {
5905 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
5906 var8 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
5907 if (unlikely(var8 == NULL)) {
5908 if(catchStack.cursor >= 0){
5909 longjmp(catchStack.envs[catchStack.cursor], 1);
5910 }
5911 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
5912 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
5913 fatal_exit(1);
5914 }
5915 var6 = var8;
5916 RET_LABEL7:(void)0;
5917 }
5918 }
5919 {
5920 { /* Inline abstract_compiler$AbstractCompiler$target_platform (var6) on <var6:AbstractCompiler> */
5921 var11 = var6->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___target_platform].val; /* _target_platform on <var6:AbstractCompiler> */
5922 if (unlikely(var11 == NULL)) {
5923 if(catchStack.cursor >= 0){
5924 longjmp(catchStack.envs[catchStack.cursor], 1);
5925 }
5926 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _target_platform");
5927 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 563);
5928 fatal_exit(1);
5929 }
5930 var9 = var11;
5931 RET_LABEL10:(void)0;
5932 }
5933 }
5934 var_platform = var9;
5935 {
5936 var12 = nitc___nitc__MakefileToolchain___outfile(self, var_mainmodule);
5937 }
5938 var_outname = var12;
5939 {
5940 var13 = core__file___String___relpath(var_compile_dir, var_outname);
5941 }
5942 var_real_outpath = var13;
5943 {
5944 var14 = core___core__Text___escape_to_mk(var_real_outpath);
5945 }
5946 var_outpath = var14;
5947 {
5948 { /* Inline kernel$Object$!= (var_outpath,var_real_outpath) on <var_outpath:String> */
5949 var_other = var_real_outpath;
5950 {
5951 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>*/
5952 }
5953 var18 = !var17;
5954 var15 = var18;
5955 goto RET_LABEL16;
5956 RET_LABEL16:(void)0;
5957 }
5958 }
5959 if (var15){
5960 {
5961 var19 = nitc___nitc__MModule___nitc__model_base__MEntity__c_name(var_mainmodule);
5962 }
5963 var_outpath = var19;
5964 } else {
5965 }
5966 {
5967 var20 = nitc___nitc__MakefileToolchain___makefile_name(self);
5968 }
5969 var_makename = var20;
5970 if (unlikely(varonce==NULL)) {
5971 var21 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
5972 if (likely(varonce22!=NULL)) {
5973 var23 = varonce22;
5974 } else {
5975 var24 = "/";
5976 var26 = (val*)(1l<<2|1);
5977 var27 = (val*)(1l<<2|1);
5978 var28 = (val*)((long)(0)<<2|3);
5979 var29 = (val*)((long)(0)<<2|3);
5980 var25 = core__flat___CString___to_s_unsafe(var24, var26, var27, var28, var29);
5981 var23 = var25;
5982 varonce22 = var23;
5983 }
5984 ((struct instance_core__NativeArray*)var21)->values[1]=var23;
5985 } else {
5986 var21 = varonce;
5987 varonce = NULL;
5988 }
5989 ((struct instance_core__NativeArray*)var21)->values[0]=var_compile_dir;
5990 ((struct instance_core__NativeArray*)var21)->values[2]=var_makename;
5991 {
5992 var30 = ((val*(*)(val* self))(var21->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var21); /* native_to_s on <var21:NativeArray[String]>*/
5993 }
5994 varonce = var21;
5995 var_makepath = var30;
5996 var31 = NEW_core__FileWriter(&type_core__FileWriter);
5997 {
5998 core___core__FileWriter___open(var31, var_makepath); /* Direct call file$FileWriter$open on <var31:FileWriter>*/
5999 }
6000 var_makefile = var31;
6001 var32 = NEW_core__HashSet(&type_core__HashSet__core__String);
6002 {
6003 core___core__HashSet___core__kernel__Object__init(var32); /* Direct call hash_collection$HashSet$init on <var32:HashSet[String]>*/
6004 }
6005 var_linker_options = var32;
6006 {
6007 { /* Inline mmodule$MModule$in_importation (var_mainmodule) on <var_mainmodule:MModule> */
6008 var35 = var_mainmodule->attrs[COLOR_nitc__mmodule__MModule___in_importation].val; /* _in_importation on <var_mainmodule:MModule> */
6009 if (unlikely(var35 == NULL)) {
6010 if(catchStack.cursor >= 0){
6011 longjmp(catchStack.envs[catchStack.cursor], 1);
6012 }
6013 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
6014 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 108);
6015 fatal_exit(1);
6016 }
6017 var33 = var35;
6018 RET_LABEL34:(void)0;
6019 }
6020 }
6021 {
6022 var36 = poset___poset__POSetElement___greaters(var33);
6023 }
6024 var_ = var36;
6025 {
6026 var37 = ((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]>*/
6027 }
6028 var_38 = var37;
6029 for(;;) {
6030 {
6031 var39 = ((short int(*)(val* self))((((long)var_38&3)?class_info[((long)var_38&3)]:var_38->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_38); /* is_ok on <var_38:Iterator[MModule]>*/
6032 }
6033 if (var39){
6034 } else {
6035 goto BREAK_label;
6036 }
6037 {
6038 var40 = ((val*(*)(val* self))((((long)var_38&3)?class_info[((long)var_38&3)]:var_38->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_38); /* item on <var_38:Iterator[MModule]>*/
6039 }
6040 var_m = var40;
6041 {
6042 var41 = nitc__light___MModule___collect_linker_libs(var_m);
6043 }
6044 var_libs = var41;
6045 if (var_libs == NULL) {
6046 var42 = 0; /* is null */
6047 } else {
6048 var42 = 1; /* arg is null and recv is not */
6049 }
6050 if (0) {
6051 { /* Inline kernel$Object$!= (var_libs,((val*)NULL)) on <var_libs:nullable Array[String]> */
6052 var_other = ((val*)NULL);
6053 {
6054 var45 = ((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])>*/
6055 }
6056 var46 = !var45;
6057 var43 = var46;
6058 goto RET_LABEL44;
6059 RET_LABEL44:(void)0;
6060 }
6061 var42 = var43;
6062 }
6063 if (var42){
6064 {
6065 core___core__SimpleCollection___add_all(var_linker_options, var_libs); /* Direct call abstract_collection$SimpleCollection$add_all on <var_linker_options:HashSet[String]>*/
6066 }
6067 } else {
6068 }
6069 {
6070 ((void(*)(val* self))((((long)var_38&3)?class_info[((long)var_38&3)]:var_38->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_38); /* next on <var_38:Iterator[MModule]>*/
6071 }
6072 }
6073 BREAK_label: (void)0;
6074 {
6075 ((void(*)(val* self))((((long)var_38&3)?class_info[((long)var_38&3)]:var_38->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_38); /* finish on <var_38:Iterator[MModule]>*/
6076 }
6077 {
6078 { /* Inline abstract_compiler$Toolchain$toolcontext (self) on <self:MakefileToolchain> */
6079 var49 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
6080 if (unlikely(var49 == NULL)) {
6081 if(catchStack.cursor >= 0){
6082 longjmp(catchStack.envs[catchStack.cursor], 1);
6083 }
6084 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6085 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 131);
6086 fatal_exit(1);
6087 }
6088 var47 = var49;
6089 RET_LABEL48:(void)0;
6090 }
6091 }
6092 {
6093 { /* Inline abstract_compiler$ToolContext$opt_debug (var47) on <var47:ToolContext> */
6094 var52 = var47->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_debug].val; /* _opt_debug on <var47:ToolContext> */
6095 if (unlikely(var52 == NULL)) {
6096 if(catchStack.cursor >= 0){
6097 longjmp(catchStack.envs[catchStack.cursor], 1);
6098 }
6099 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_debug");
6100 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 72);
6101 fatal_exit(1);
6102 }
6103 var50 = var52;
6104 RET_LABEL51:(void)0;
6105 }
6106 }
6107 {
6108 { /* Inline opts$Option$value (var50) on <var50:OptionBool> */
6109 var55 = var50->attrs[COLOR_opts__Option___value].val; /* _value on <var50:OptionBool> */
6110 var53 = var55;
6111 RET_LABEL54:(void)0;
6112 }
6113 }
6114 var56 = (short int)((long)(var53)>>2);
6115 var_debug = var56;
6116 if (unlikely(varonce57==NULL)) {
6117 var58 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
6118 if (likely(varonce59!=NULL)) {
6119 var60 = varonce59;
6120 } else {
6121 var61 = "CC = ccache cc\nCXX = ccache c++\nCFLAGS = -g";
6122 var63 = (val*)(43l<<2|1);
6123 var64 = (val*)(43l<<2|1);
6124 var65 = (val*)((long)(0)<<2|3);
6125 var66 = (val*)((long)(0)<<2|3);
6126 var62 = core__flat___CString___to_s_unsafe(var61, var63, var64, var65, var66);
6127 var60 = var62;
6128 varonce59 = var60;
6129 }
6130 ((struct instance_core__NativeArray*)var58)->values[0]=var60;
6131 if (likely(varonce67!=NULL)) {
6132 var68 = varonce67;
6133 } else {
6134 var69 = "-Wno-unused-value -Wno-switch -Wno-attributes -Wno-trigraphs\nCINCL =\nLDFLAGS \?= \nLDLIBS \?= -lm ";
6135 var71 = (val*)(96l<<2|1);
6136 var72 = (val*)(96l<<2|1);
6137 var73 = (val*)((long)(0)<<2|3);
6138 var74 = (val*)((long)(0)<<2|3);
6139 var70 = core__flat___CString___to_s_unsafe(var69, var71, var72, var73, var74);
6140 var68 = var70;
6141 varonce67 = var68;
6142 }
6143 ((struct instance_core__NativeArray*)var58)->values[2]=var68;
6144 if (likely(varonce75!=NULL)) {
6145 var76 = varonce75;
6146 } else {
6147 var77 = "\n\n";
6148 var79 = (val*)(2l<<2|1);
6149 var80 = (val*)(2l<<2|1);
6150 var81 = (val*)((long)(0)<<2|3);
6151 var82 = (val*)((long)(0)<<2|3);
6152 var78 = core__flat___CString___to_s_unsafe(var77, var79, var80, var81, var82);
6153 var76 = var78;
6154 varonce75 = var76;
6155 }
6156 ((struct instance_core__NativeArray*)var58)->values[4]=var76;
6157 } else {
6158 var58 = varonce57;
6159 varonce57 = NULL;
6160 }
6161 var84 = !var_debug;
6162 if (var84){
6163 if (likely(varonce85!=NULL)) {
6164 var86 = varonce85;
6165 } else {
6166 var87 = " -O2 ";
6167 var89 = (val*)(5l<<2|1);
6168 var90 = (val*)(5l<<2|1);
6169 var91 = (val*)((long)(0)<<2|3);
6170 var92 = (val*)((long)(0)<<2|3);
6171 var88 = core__flat___CString___to_s_unsafe(var87, var89, var90, var91, var92);
6172 var86 = var88;
6173 varonce85 = var86;
6174 }
6175 var83 = var86;
6176 } else {
6177 if (likely(varonce93!=NULL)) {
6178 var94 = varonce93;
6179 } else {
6180 var95 = " ";
6181 var97 = (val*)(1l<<2|1);
6182 var98 = (val*)(1l<<2|1);
6183 var99 = (val*)((long)(0)<<2|3);
6184 var100 = (val*)((long)(0)<<2|3);
6185 var96 = core__flat___CString___to_s_unsafe(var95, var97, var98, var99, var100);
6186 var94 = var96;
6187 varonce93 = var94;
6188 }
6189 var83 = var94;
6190 }
6191 ((struct instance_core__NativeArray*)var58)->values[1]=var83;
6192 if (likely(varonce101!=NULL)) {
6193 var102 = varonce101;
6194 } else {
6195 var103 = " ";
6196 var105 = (val*)(1l<<2|1);
6197 var106 = (val*)(1l<<2|1);
6198 var107 = (val*)((long)(0)<<2|3);
6199 var108 = (val*)((long)(0)<<2|3);
6200 var104 = core__flat___CString___to_s_unsafe(var103, var105, var106, var107, var108);
6201 var102 = var104;
6202 varonce101 = var102;
6203 }
6204 {
6205 var109 = core__abstract_text___Collection___join(var_linker_options, var102, ((val*)NULL));
6206 }
6207 ((struct instance_core__NativeArray*)var58)->values[3]=var109;
6208 {
6209 var110 = ((val*(*)(val* self))(var58->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var58); /* native_to_s on <var58:NativeArray[String]>*/
6210 }
6211 varonce57 = var58;
6212 {
6213 core___core__FileWriter___core__stream__Writer__write(var_makefile, var110); /* Direct call file$FileWriter$write on <var_makefile:FileWriter>*/
6214 }
6215 if (likely(varonce111!=NULL)) {
6216 var112 = varonce111;
6217 } else {
6218 var113 = "\n# SPECIAL CONFIGURATION FLAGS\n";
6219 var115 = (val*)(31l<<2|1);
6220 var116 = (val*)(31l<<2|1);
6221 var117 = (val*)((long)(0)<<2|3);
6222 var118 = (val*)((long)(0)<<2|3);
6223 var114 = core__flat___CString___to_s_unsafe(var113, var115, var116, var117, var118);
6224 var112 = var114;
6225 varonce111 = var112;
6226 }
6227 {
6228 core___core__FileWriter___core__stream__Writer__write(var_makefile, var112); /* Direct call file$FileWriter$write on <var_makefile:FileWriter>*/
6229 }
6230 {
6231 var119 = nitc___nitc__Platform___supports_libunwind(var_platform);
6232 }
6233 if (var119){
6234 {
6235 { /* Inline abstract_compiler$Toolchain$toolcontext (self) on <self:MakefileToolchain> */
6236 var122 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
6237 if (unlikely(var122 == NULL)) {
6238 if(catchStack.cursor >= 0){
6239 longjmp(catchStack.envs[catchStack.cursor], 1);
6240 }
6241 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6242 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 131);
6243 fatal_exit(1);
6244 }
6245 var120 = var122;
6246 RET_LABEL121:(void)0;
6247 }
6248 }
6249 {
6250 { /* Inline abstract_compiler$ToolContext$opt_no_stacktrace (var120) on <var120:ToolContext> */
6251 var125 = var120->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_stacktrace].val; /* _opt_no_stacktrace on <var120:ToolContext> */
6252 if (unlikely(var125 == NULL)) {
6253 if(catchStack.cursor >= 0){
6254 longjmp(catchStack.envs[catchStack.cursor], 1);
6255 }
6256 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_stacktrace");
6257 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 66);
6258 fatal_exit(1);
6259 }
6260 var123 = var125;
6261 RET_LABEL124:(void)0;
6262 }
6263 }
6264 {
6265 { /* Inline opts$Option$value (var123) on <var123:OptionBool> */
6266 var128 = var123->attrs[COLOR_opts__Option___value].val; /* _value on <var123:OptionBool> */
6267 var126 = var128;
6268 RET_LABEL127:(void)0;
6269 }
6270 }
6271 var129 = (short int)((long)(var126)>>2);
6272 if (var129){
6273 if (likely(varonce130!=NULL)) {
6274 var131 = varonce130;
6275 } else {
6276 var132 = "NO_STACKTRACE=True";
6277 var134 = (val*)(18l<<2|1);
6278 var135 = (val*)(18l<<2|1);
6279 var136 = (val*)((long)(0)<<2|3);
6280 var137 = (val*)((long)(0)<<2|3);
6281 var133 = core__flat___CString___to_s_unsafe(var132, var134, var135, var136, var137);
6282 var131 = var133;
6283 varonce130 = var131;
6284 }
6285 {
6286 core___core__FileWriter___core__stream__Writer__write(var_makefile, var131); /* Direct call file$FileWriter$write on <var_makefile:FileWriter>*/
6287 }
6288 } else {
6289 if (likely(varonce138!=NULL)) {
6290 var139 = varonce138;
6291 } else {
6292 var140 = "NO_STACKTRACE= # Set to `True` to enable";
6293 var142 = (val*)(40l<<2|1);
6294 var143 = (val*)(40l<<2|1);
6295 var144 = (val*)((long)(0)<<2|3);
6296 var145 = (val*)((long)(0)<<2|3);
6297 var141 = core__flat___CString___to_s_unsafe(var140, var142, var143, var144, var145);
6298 var139 = var141;
6299 varonce138 = var139;
6300 }
6301 {
6302 core___core__FileWriter___core__stream__Writer__write(var_makefile, var139); /* Direct call file$FileWriter$write on <var_makefile:FileWriter>*/
6303 }
6304 }
6305 } else {
6306 }
6307 if (likely(varonce146!=NULL)) {
6308 var147 = varonce146;
6309 } else {
6310 var148 = "\n\n";
6311 var150 = (val*)(2l<<2|1);
6312 var151 = (val*)(2l<<2|1);
6313 var152 = (val*)((long)(0)<<2|3);
6314 var153 = (val*)((long)(0)<<2|3);
6315 var149 = core__flat___CString___to_s_unsafe(var148, var150, var151, var152, var153);
6316 var147 = var149;
6317 varonce146 = var147;
6318 }
6319 {
6320 core___core__FileWriter___core__stream__Writer__write(var_makefile, var147); /* Direct call file$FileWriter$write on <var_makefile:FileWriter>*/
6321 }
6322 if (likely(varonce154!=NULL)) {
6323 var155 = varonce154;
6324 } else {
6325 var156 = "uname_S := $(shell sh -c \'uname -s 2>/dev/null || echo not\')\n";
6326 var158 = (val*)(61l<<2|1);
6327 var159 = (val*)(61l<<2|1);
6328 var160 = (val*)((long)(0)<<2|3);
6329 var161 = (val*)((long)(0)<<2|3);
6330 var157 = core__flat___CString___to_s_unsafe(var156, var158, var159, var160, var161);
6331 var155 = var157;
6332 varonce154 = var155;
6333 }
6334 {
6335 core___core__FileWriter___core__stream__Writer__write(var_makefile, var155); /* Direct call file$FileWriter$write on <var_makefile:FileWriter>*/
6336 }
6337 if (likely(varonce162!=NULL)) {
6338 var163 = varonce162;
6339 } else {
6340 var164 = "clang_check := $(shell sh -c \'$(CC) -v 2>&1 | grep -q clang; echo $$?\')\nifeq ($(clang_check), 0)\n\tCFLAGS += -Qunused-arguments\nendif\n";
6341 var166 = (val*)(133l<<2|1);
6342 var167 = (val*)(133l<<2|1);
6343 var168 = (val*)((long)(0)<<2|3);
6344 var169 = (val*)((long)(0)<<2|3);
6345 var165 = core__flat___CString___to_s_unsafe(var164, var166, var167, var168, var169);
6346 var163 = var165;
6347 varonce162 = var163;
6348 }
6349 {
6350 core___core__FileWriter___core__stream__Writer__write(var_makefile, var163); /* Direct call file$FileWriter$write on <var_makefile:FileWriter>*/
6351 }
6352 {
6353 var170 = nitc___nitc__Platform___supports_libunwind(var_platform);
6354 }
6355 if (var170){
6356 if (likely(varonce171!=NULL)) {
6357 var172 = varonce171;
6358 } else {
6359 var173 = "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";
6360 var175 = (val*)(569l<<2|1);
6361 var176 = (val*)(569l<<2|1);
6362 var177 = (val*)((long)(0)<<2|3);
6363 var178 = (val*)((long)(0)<<2|3);
6364 var174 = core__flat___CString___to_s_unsafe(var173, var175, var176, var177, var178);
6365 var172 = var174;
6366 varonce171 = var172;
6367 }
6368 {
6369 core___core__FileWriter___core__stream__Writer__write(var_makefile, var172); /* Direct call file$FileWriter$write on <var_makefile:FileWriter>*/
6370 }
6371 } else {
6372 if (likely(varonce179!=NULL)) {
6373 var180 = varonce179;
6374 } else {
6375 var181 = "CFLAGS += -D NO_STACKTRACE\n\n";
6376 var183 = (val*)(28l<<2|1);
6377 var184 = (val*)(28l<<2|1);
6378 var185 = (val*)((long)(0)<<2|3);
6379 var186 = (val*)((long)(0)<<2|3);
6380 var182 = core__flat___CString___to_s_unsafe(var181, var183, var184, var185, var186);
6381 var180 = var182;
6382 varonce179 = var180;
6383 }
6384 {
6385 core___core__FileWriter___core__stream__Writer__write(var_makefile, var180); /* Direct call file$FileWriter$write on <var_makefile:FileWriter>*/
6386 }
6387 }
6388 if (likely(varonce187!=NULL)) {
6389 var188 = varonce187;
6390 } else {
6391 var189 = "# Special configuration for Darwin\nifeq ($(uname_S),Darwin)\n\t# Remove POSIX flag -lrt\n\tLDLIBS := $(filter-out -lrt,$(LDLIBS))\nendif\n\n# Special configuration for Windows under mingw64\nifneq ($(findstring MINGW64,$(uname_S)),)\n\t# Use the pcreposix regex library\n\tLDLIBS += -lpcreposix\n\n\t# Remove POSIX flag -lrt\n\tLDLIBS := $(filter-out -lrt,$(LDLIBS))\n\n\t# Silence warnings when storing Int, Char and Bool as pointer address\n\tCFLAGS += -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast\nendif\n\n";
6392 var191 = (val*)(490l<<2|1);
6393 var192 = (val*)(490l<<2|1);
6394 var193 = (val*)((long)(0)<<2|3);
6395 var194 = (val*)((long)(0)<<2|3);
6396 var190 = core__flat___CString___to_s_unsafe(var189, var191, var192, var193, var194);
6397 var188 = var190;
6398 varonce187 = var188;
6399 }
6400 {
6401 core___core__FileWriter___core__stream__Writer__write(var_makefile, var188); /* Direct call file$FileWriter$write on <var_makefile:FileWriter>*/
6402 }
6403 if (unlikely(varonce195==NULL)) {
6404 var196 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
6405 if (likely(varonce197!=NULL)) {
6406 var198 = varonce197;
6407 } else {
6408 var199 = "all: ";
6409 var201 = (val*)(5l<<2|1);
6410 var202 = (val*)(5l<<2|1);
6411 var203 = (val*)((long)(0)<<2|3);
6412 var204 = (val*)((long)(0)<<2|3);
6413 var200 = core__flat___CString___to_s_unsafe(var199, var201, var202, var203, var204);
6414 var198 = var200;
6415 varonce197 = var198;
6416 }
6417 ((struct instance_core__NativeArray*)var196)->values[0]=var198;
6418 if (likely(varonce205!=NULL)) {
6419 var206 = varonce205;
6420 } else {
6421 var207 = "\n";
6422 var209 = (val*)(1l<<2|1);
6423 var210 = (val*)(1l<<2|1);
6424 var211 = (val*)((long)(0)<<2|3);
6425 var212 = (val*)((long)(0)<<2|3);
6426 var208 = core__flat___CString___to_s_unsafe(var207, var209, var210, var211, var212);
6427 var206 = var208;
6428 varonce205 = var206;
6429 }
6430 ((struct instance_core__NativeArray*)var196)->values[2]=var206;
6431 } else {
6432 var196 = varonce195;
6433 varonce195 = NULL;
6434 }
6435 ((struct instance_core__NativeArray*)var196)->values[1]=var_outpath;
6436 {
6437 var213 = ((val*(*)(val* self))(var196->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var196); /* native_to_s on <var196:NativeArray[String]>*/
6438 }
6439 varonce195 = var196;
6440 {
6441 core___core__FileWriter___core__stream__Writer__write(var_makefile, var213); /* Direct call file$FileWriter$write on <var_makefile:FileWriter>*/
6442 }
6443 {
6444 { /* Inline kernel$Object$!= (var_outpath,var_real_outpath) on <var_outpath:String> */
6445 var_other = var_real_outpath;
6446 {
6447 var216 = ((short int(*)(val* self, val* p0))(var_outpath->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_outpath, var_other); /* == on <var_outpath:String>*/
6448 }
6449 var217 = !var216;
6450 var214 = var217;
6451 goto RET_LABEL215;
6452 RET_LABEL215:(void)0;
6453 }
6454 }
6455 if (var214){
6456 if (unlikely(varonce218==NULL)) {
6457 var219 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
6458 if (likely(varonce220!=NULL)) {
6459 var221 = varonce220;
6460 } else {
6461 var222 = "\tcp -- ";
6462 var224 = (val*)(7l<<2|1);
6463 var225 = (val*)(7l<<2|1);
6464 var226 = (val*)((long)(0)<<2|3);
6465 var227 = (val*)((long)(0)<<2|3);
6466 var223 = core__flat___CString___to_s_unsafe(var222, var224, var225, var226, var227);
6467 var221 = var223;
6468 varonce220 = var221;
6469 }
6470 ((struct instance_core__NativeArray*)var219)->values[0]=var221;
6471 if (likely(varonce228!=NULL)) {
6472 var229 = varonce228;
6473 } else {
6474 var230 = " ";
6475 var232 = (val*)(1l<<2|1);
6476 var233 = (val*)(1l<<2|1);
6477 var234 = (val*)((long)(0)<<2|3);
6478 var235 = (val*)((long)(0)<<2|3);
6479 var231 = core__flat___CString___to_s_unsafe(var230, var232, var233, var234, var235);
6480 var229 = var231;
6481 varonce228 = var229;
6482 }
6483 ((struct instance_core__NativeArray*)var219)->values[2]=var229;
6484 } else {
6485 var219 = varonce218;
6486 varonce218 = NULL;
6487 }
6488 {
6489 var236 = core___core__Text___escape_to_sh(var_outpath);
6490 }
6491 ((struct instance_core__NativeArray*)var219)->values[1]=var236;
6492 {
6493 var237 = core___core__Text___escape_to_sh(var_real_outpath);
6494 }
6495 if (likely(varonce238!=NULL)) {
6496 var239 = varonce238;
6497 } else {
6498 var240 = "$";
6499 var242 = (val*)(1l<<2|1);
6500 var243 = (val*)(1l<<2|1);
6501 var244 = (val*)((long)(0)<<2|3);
6502 var245 = (val*)((long)(0)<<2|3);
6503 var241 = core__flat___CString___to_s_unsafe(var240, var242, var243, var244, var245);
6504 var239 = var241;
6505 varonce238 = var239;
6506 }
6507 if (likely(varonce246!=NULL)) {
6508 var247 = varonce246;
6509 } else {
6510 var248 = "$$";
6511 var250 = (val*)(2l<<2|1);
6512 var251 = (val*)(2l<<2|1);
6513 var252 = (val*)((long)(0)<<2|3);
6514 var253 = (val*)((long)(0)<<2|3);
6515 var249 = core__flat___CString___to_s_unsafe(var248, var250, var251, var252, var253);
6516 var247 = var249;
6517 varonce246 = var247;
6518 }
6519 {
6520 var254 = core__string_search___Text___replace(var237, var239, var247);
6521 }
6522 ((struct instance_core__NativeArray*)var219)->values[3]=var254;
6523 {
6524 var255 = ((val*(*)(val* self))(var219->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var219); /* native_to_s on <var219:NativeArray[String]>*/
6525 }
6526 varonce218 = var219;
6527 {
6528 core___core__FileWriter___core__stream__Writer__write(var_makefile, var255); /* Direct call file$FileWriter$write on <var_makefile:FileWriter>*/
6529 }
6530 } else {
6531 }
6532 if (likely(varonce256!=NULL)) {
6533 var257 = varonce256;
6534 } else {
6535 var258 = "\n";
6536 var260 = (val*)(1l<<2|1);
6537 var261 = (val*)(1l<<2|1);
6538 var262 = (val*)((long)(0)<<2|3);
6539 var263 = (val*)((long)(0)<<2|3);
6540 var259 = core__flat___CString___to_s_unsafe(var258, var260, var261, var262, var263);
6541 var257 = var259;
6542 varonce256 = var257;
6543 }
6544 {
6545 core___core__FileWriter___core__stream__Writer__write(var_makefile, var257); /* Direct call file$FileWriter$write on <var_makefile:FileWriter>*/
6546 }
6547 var264 = NEW_core__Array(&type_core__Array__core__String);
6548 {
6549 core___core__Array___core__kernel__Object__init(var264); /* Direct call array$Array$init on <var264:Array[String]>*/
6550 }
6551 var_ofiles = var264;
6552 var265 = NEW_core__Array(&type_core__Array__core__String);
6553 {
6554 core___core__Array___core__kernel__Object__init(var265); /* Direct call array$Array$init on <var265:Array[String]>*/
6555 }
6556 var_dep_rules = var265;
6557 var_266 = var_cfiles;
6558 {
6559 var267 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_266);
6560 }
6561 var_268 = var267;
6562 for(;;) {
6563 {
6564 var269 = ((short int(*)(val* self))((((long)var_268&3)?class_info[((long)var_268&3)]:var_268->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_268); /* is_ok on <var_268:IndexedIterator[String]>*/
6565 }
6566 if (var269){
6567 } else {
6568 goto BREAK_label270;
6569 }
6570 {
6571 var271 = ((val*(*)(val* self))((((long)var_268&3)?class_info[((long)var_268&3)]:var_268->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_268); /* item on <var_268:IndexedIterator[String]>*/
6572 }
6573 var_f = var271;
6574 if (likely(varonce272!=NULL)) {
6575 var273 = varonce272;
6576 } else {
6577 var274 = ".c";
6578 var276 = (val*)(2l<<2|1);
6579 var277 = (val*)(2l<<2|1);
6580 var278 = (val*)((long)(0)<<2|3);
6581 var279 = (val*)((long)(0)<<2|3);
6582 var275 = core__flat___CString___to_s_unsafe(var274, var276, var277, var278, var279);
6583 var273 = var275;
6584 varonce272 = var273;
6585 }
6586 {
6587 var280 = core__file___String___strip_extension(var_f, var273);
6588 }
6589 if (likely(varonce281!=NULL)) {
6590 var282 = varonce281;
6591 } else {
6592 var283 = ".o";
6593 var285 = (val*)(2l<<2|1);
6594 var286 = (val*)(2l<<2|1);
6595 var287 = (val*)((long)(0)<<2|3);
6596 var288 = (val*)((long)(0)<<2|3);
6597 var284 = core__flat___CString___to_s_unsafe(var283, var285, var286, var287, var288);
6598 var282 = var284;
6599 varonce281 = var282;
6600 }
6601 {
6602 var289 = ((val*(*)(val* self, val* p0))(var280->class->vft[COLOR_core__abstract_text__Text___43d]))(var280, var282); /* + on <var280:String>*/
6603 }
6604 var_o = var289;
6605 if (unlikely(varonce290==NULL)) {
6606 var291 = NEW_core__NativeArray((int)8l, &type_core__NativeArray__core__String);
6607 if (likely(varonce292!=NULL)) {
6608 var293 = varonce292;
6609 } else {
6610 var294 = ": ";
6611 var296 = (val*)(2l<<2|1);
6612 var297 = (val*)(2l<<2|1);
6613 var298 = (val*)((long)(0)<<2|3);
6614 var299 = (val*)((long)(0)<<2|3);
6615 var295 = core__flat___CString___to_s_unsafe(var294, var296, var297, var298, var299);
6616 var293 = var295;
6617 varonce292 = var293;
6618 }
6619 ((struct instance_core__NativeArray*)var291)->values[1]=var293;
6620 if (likely(varonce300!=NULL)) {
6621 var301 = varonce300;
6622 } else {
6623 var302 = "\n\t$(CC) $(CFLAGS) $(CINCL) -c -o ";
6624 var304 = (val*)(33l<<2|1);
6625 var305 = (val*)(33l<<2|1);
6626 var306 = (val*)((long)(0)<<2|3);
6627 var307 = (val*)((long)(0)<<2|3);
6628 var303 = core__flat___CString___to_s_unsafe(var302, var304, var305, var306, var307);
6629 var301 = var303;
6630 varonce300 = var301;
6631 }
6632 ((struct instance_core__NativeArray*)var291)->values[3]=var301;
6633 if (likely(varonce308!=NULL)) {
6634 var309 = varonce308;
6635 } else {
6636 var310 = " ";
6637 var312 = (val*)(1l<<2|1);
6638 var313 = (val*)(1l<<2|1);
6639 var314 = (val*)((long)(0)<<2|3);
6640 var315 = (val*)((long)(0)<<2|3);
6641 var311 = core__flat___CString___to_s_unsafe(var310, var312, var313, var314, var315);
6642 var309 = var311;
6643 varonce308 = var309;
6644 }
6645 ((struct instance_core__NativeArray*)var291)->values[5]=var309;
6646 if (likely(varonce316!=NULL)) {
6647 var317 = varonce316;
6648 } else {
6649 var318 = "\n\n";
6650 var320 = (val*)(2l<<2|1);
6651 var321 = (val*)(2l<<2|1);
6652 var322 = (val*)((long)(0)<<2|3);
6653 var323 = (val*)((long)(0)<<2|3);
6654 var319 = core__flat___CString___to_s_unsafe(var318, var320, var321, var322, var323);
6655 var317 = var319;
6656 varonce316 = var317;
6657 }
6658 ((struct instance_core__NativeArray*)var291)->values[7]=var317;
6659 } else {
6660 var291 = varonce290;
6661 varonce290 = NULL;
6662 }
6663 ((struct instance_core__NativeArray*)var291)->values[0]=var_o;
6664 ((struct instance_core__NativeArray*)var291)->values[2]=var_f;
6665 ((struct instance_core__NativeArray*)var291)->values[4]=var_o;
6666 ((struct instance_core__NativeArray*)var291)->values[6]=var_f;
6667 {
6668 var324 = ((val*(*)(val* self))(var291->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var291); /* native_to_s on <var291:NativeArray[String]>*/
6669 }
6670 varonce290 = var291;
6671 {
6672 core___core__FileWriter___core__stream__Writer__write(var_makefile, var324); /* Direct call file$FileWriter$write on <var_makefile:FileWriter>*/
6673 }
6674 {
6675 core___core__Array___core__abstract_collection__SimpleCollection__add(var_ofiles, var_o); /* Direct call array$Array$add on <var_ofiles:Array[String]>*/
6676 }
6677 {
6678 core___core__Array___core__abstract_collection__SimpleCollection__add(var_dep_rules, var_o); /* Direct call array$Array$add on <var_dep_rules:Array[String]>*/
6679 }
6680 {
6681 ((void(*)(val* self))((((long)var_268&3)?class_info[((long)var_268&3)]:var_268->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_268); /* next on <var_268:IndexedIterator[String]>*/
6682 }
6683 }
6684 BREAK_label270: (void)0;
6685 {
6686 ((void(*)(val* self))((((long)var_268&3)?class_info[((long)var_268&3)]:var_268->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_268); /* finish on <var_268:IndexedIterator[String]>*/
6687 }
6688 {
6689 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
6690 var327 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
6691 if (unlikely(var327 == NULL)) {
6692 if(catchStack.cursor >= 0){
6693 longjmp(catchStack.envs[catchStack.cursor], 1);
6694 }
6695 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
6696 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
6697 fatal_exit(1);
6698 }
6699 var325 = var327;
6700 RET_LABEL326:(void)0;
6701 }
6702 }
6703 {
6704 { /* Inline abstract_compiler$AbstractCompiler$linker_script (var325) on <var325:AbstractCompiler> */
6705 var330 = var325->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___linker_script].val; /* _linker_script on <var325:AbstractCompiler> */
6706 if (unlikely(var330 == NULL)) {
6707 if(catchStack.cursor >= 0){
6708 longjmp(catchStack.envs[catchStack.cursor], 1);
6709 }
6710 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _linker_script");
6711 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 602);
6712 fatal_exit(1);
6713 }
6714 var328 = var330;
6715 RET_LABEL329:(void)0;
6716 }
6717 }
6718 {
6719 var331 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var328);
6720 }
6721 var332 = !var331;
6722 if (var332){
6723 if (unlikely(varonce333==NULL)) {
6724 var334 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
6725 if (likely(varonce335!=NULL)) {
6726 var336 = varonce335;
6727 } else {
6728 var337 = "/linker_script";
6729 var339 = (val*)(14l<<2|1);
6730 var340 = (val*)(14l<<2|1);
6731 var341 = (val*)((long)(0)<<2|3);
6732 var342 = (val*)((long)(0)<<2|3);
6733 var338 = core__flat___CString___to_s_unsafe(var337, var339, var340, var341, var342);
6734 var336 = var338;
6735 varonce335 = var336;
6736 }
6737 ((struct instance_core__NativeArray*)var334)->values[1]=var336;
6738 } else {
6739 var334 = varonce333;
6740 varonce333 = NULL;
6741 }
6742 ((struct instance_core__NativeArray*)var334)->values[0]=var_compile_dir;
6743 {
6744 var343 = ((val*(*)(val* self))(var334->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var334); /* native_to_s on <var334:NativeArray[String]>*/
6745 }
6746 varonce333 = var334;
6747 var_linker_script_path = var343;
6748 if (likely(varonce344!=NULL)) {
6749 var345 = varonce344;
6750 } else {
6751 var346 = "linker_script";
6752 var348 = (val*)(13l<<2|1);
6753 var349 = (val*)(13l<<2|1);
6754 var350 = (val*)((long)(0)<<2|3);
6755 var351 = (val*)((long)(0)<<2|3);
6756 var347 = core__flat___CString___to_s_unsafe(var346, var348, var349, var350, var351);
6757 var345 = var347;
6758 varonce344 = var345;
6759 }
6760 {
6761 core___core__Array___core__abstract_collection__SimpleCollection__add(var_ofiles, var345); /* Direct call array$Array$add on <var_ofiles:Array[String]>*/
6762 }
6763 var352 = NEW_core__FileWriter(&type_core__FileWriter);
6764 {
6765 core___core__FileWriter___open(var352, var_linker_script_path); /* Direct call file$FileWriter$open on <var352:FileWriter>*/
6766 }
6767 var_f353 = var352;
6768 {
6769 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
6770 var356 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
6771 if (unlikely(var356 == NULL)) {
6772 if(catchStack.cursor >= 0){
6773 longjmp(catchStack.envs[catchStack.cursor], 1);
6774 }
6775 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
6776 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
6777 fatal_exit(1);
6778 }
6779 var354 = var356;
6780 RET_LABEL355:(void)0;
6781 }
6782 }
6783 {
6784 { /* Inline abstract_compiler$AbstractCompiler$linker_script (var354) on <var354:AbstractCompiler> */
6785 var359 = var354->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___linker_script].val; /* _linker_script on <var354:AbstractCompiler> */
6786 if (unlikely(var359 == NULL)) {
6787 if(catchStack.cursor >= 0){
6788 longjmp(catchStack.envs[catchStack.cursor], 1);
6789 }
6790 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _linker_script");
6791 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 602);
6792 fatal_exit(1);
6793 }
6794 var357 = var359;
6795 RET_LABEL358:(void)0;
6796 }
6797 }
6798 var_360 = var357;
6799 {
6800 var361 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_360);
6801 }
6802 var_362 = var361;
6803 for(;;) {
6804 {
6805 var363 = ((short int(*)(val* self))((((long)var_362&3)?class_info[((long)var_362&3)]:var_362->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_362); /* is_ok on <var_362:IndexedIterator[String]>*/
6806 }
6807 if (var363){
6808 } else {
6809 goto BREAK_label364;
6810 }
6811 {
6812 var365 = ((val*(*)(val* self))((((long)var_362&3)?class_info[((long)var_362&3)]:var_362->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_362); /* item on <var_362:IndexedIterator[String]>*/
6813 }
6814 var_l = var365;
6815 {
6816 core___core__FileWriter___core__stream__Writer__write(var_f353, var_l); /* Direct call file$FileWriter$write on <var_f353:FileWriter>*/
6817 }
6818 if (likely(varonce366!=NULL)) {
6819 var367 = varonce366;
6820 } else {
6821 var368 = "\n";
6822 var370 = (val*)(1l<<2|1);
6823 var371 = (val*)(1l<<2|1);
6824 var372 = (val*)((long)(0)<<2|3);
6825 var373 = (val*)((long)(0)<<2|3);
6826 var369 = core__flat___CString___to_s_unsafe(var368, var370, var371, var372, var373);
6827 var367 = var369;
6828 varonce366 = var367;
6829 }
6830 {
6831 core___core__FileWriter___core__stream__Writer__write(var_f353, var367); /* Direct call file$FileWriter$write on <var_f353:FileWriter>*/
6832 }
6833 {
6834 ((void(*)(val* self))((((long)var_362&3)?class_info[((long)var_362&3)]:var_362->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_362); /* next on <var_362:IndexedIterator[String]>*/
6835 }
6836 }
6837 BREAK_label364: (void)0;
6838 {
6839 ((void(*)(val* self))((((long)var_362&3)?class_info[((long)var_362&3)]:var_362->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_362); /* finish on <var_362:IndexedIterator[String]>*/
6840 }
6841 {
6842 core___core__FileWriter___core__stream__Stream__close(var_f353); /* Direct call file$FileWriter$close on <var_f353:FileWriter>*/
6843 }
6844 } else {
6845 }
6846 var374 = NEW_core__Array(&type_core__Array__nitc__ExternFile);
6847 {
6848 core___core__Array___core__kernel__Object__init(var374); /* Direct call array$Array$init on <var374:Array[ExternFile]>*/
6849 }
6850 var_java_files = var374;
6851 var375 = NEW_core__Array(&type_core__Array__core__String);
6852 {
6853 core___core__Array___core__kernel__Object__init(var375); /* Direct call array$Array$init on <var375:Array[String]>*/
6854 }
6855 var_pkgconfigs = var375;
6856 {
6857 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
6858 var378 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
6859 if (unlikely(var378 == NULL)) {
6860 if(catchStack.cursor >= 0){
6861 longjmp(catchStack.envs[catchStack.cursor], 1);
6862 }
6863 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
6864 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
6865 fatal_exit(1);
6866 }
6867 var376 = var378;
6868 RET_LABEL377:(void)0;
6869 }
6870 }
6871 {
6872 { /* Inline abstract_compiler$AbstractCompiler$extern_bodies (var376) on <var376:AbstractCompiler> */
6873 var381 = var376->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___extern_bodies].val; /* _extern_bodies on <var376:AbstractCompiler> */
6874 if (unlikely(var381 == NULL)) {
6875 if(catchStack.cursor >= 0){
6876 longjmp(catchStack.envs[catchStack.cursor], 1);
6877 }
6878 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _extern_bodies");
6879 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1075);
6880 fatal_exit(1);
6881 }
6882 var379 = var381;
6883 RET_LABEL380:(void)0;
6884 }
6885 }
6886 var_382 = var379;
6887 {
6888 var383 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_382);
6889 }
6890 var_384 = var383;
6891 for(;;) {
6892 {
6893 var385 = ((short int(*)(val* self))((((long)var_384&3)?class_info[((long)var_384&3)]:var_384->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_384); /* is_ok on <var_384:IndexedIterator[ExternFile]>*/
6894 }
6895 if (var385){
6896 } else {
6897 goto BREAK_label386;
6898 }
6899 {
6900 var387 = ((val*(*)(val* self))((((long)var_384&3)?class_info[((long)var_384&3)]:var_384->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_384); /* item on <var_384:IndexedIterator[ExternFile]>*/
6901 }
6902 var_f388 = var387;
6903 {
6904 { /* Inline c_tools$ExternFile$pkgconfigs (var_f388) on <var_f388:ExternFile> */
6905 var391 = var_f388->attrs[COLOR_nitc__c_tools__ExternFile___pkgconfigs].val; /* _pkgconfigs on <var_f388:ExternFile> */
6906 if (unlikely(var391 == NULL)) {
6907 if(catchStack.cursor >= 0){
6908 longjmp(catchStack.envs[catchStack.cursor], 1);
6909 }
6910 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _pkgconfigs");
6911 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 123);
6912 fatal_exit(1);
6913 }
6914 var389 = var391;
6915 RET_LABEL390:(void)0;
6916 }
6917 }
6918 {
6919 core___core__Array___core__abstract_collection__SimpleCollection__add_all(var_pkgconfigs, var389); /* Direct call array$Array$add_all on <var_pkgconfigs:Array[String]>*/
6920 }
6921 {
6922 ((void(*)(val* self))((((long)var_384&3)?class_info[((long)var_384&3)]:var_384->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_384); /* next on <var_384:IndexedIterator[ExternFile]>*/
6923 }
6924 }
6925 BREAK_label386: (void)0;
6926 {
6927 ((void(*)(val* self))((((long)var_384&3)?class_info[((long)var_384&3)]:var_384->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_384); /* finish on <var_384:IndexedIterator[ExternFile]>*/
6928 }
6929 {
6930 var392 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_pkgconfigs);
6931 }
6932 var393 = !var392;
6933 if (var393){
6934 if (likely(varonce394!=NULL)) {
6935 var395 = varonce394;
6936 } else {
6937 var396 = "# 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";
6938 var398 = (val*)(151l<<2|1);
6939 var399 = (val*)(151l<<2|1);
6940 var400 = (val*)((long)(0)<<2|3);
6941 var401 = (val*)((long)(0)<<2|3);
6942 var397 = core__flat___CString___to_s_unsafe(var396, var398, var399, var400, var401);
6943 var395 = var397;
6944 varonce394 = var395;
6945 }
6946 {
6947 core___core__FileWriter___core__stream__Writer__write(var_makefile, var395); /* Direct call file$FileWriter$write on <var_makefile:FileWriter>*/
6948 }
6949 var_402 = var_pkgconfigs;
6950 {
6951 var403 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_402);
6952 }
6953 var_404 = var403;
6954 for(;;) {
6955 {
6956 var405 = ((short int(*)(val* self))((((long)var_404&3)?class_info[((long)var_404&3)]:var_404->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_404); /* is_ok on <var_404:IndexedIterator[String]>*/
6957 }
6958 if (var405){
6959 } else {
6960 goto BREAK_label406;
6961 }
6962 {
6963 var407 = ((val*(*)(val* self))((((long)var_404&3)?class_info[((long)var_404&3)]:var_404->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_404); /* item on <var_404:IndexedIterator[String]>*/
6964 }
6965 var_p = var407;
6966 if (unlikely(varonce408==NULL)) {
6967 var409 = NEW_core__NativeArray((int)7l, &type_core__NativeArray__core__String);
6968 if (likely(varonce410!=NULL)) {
6969 var411 = varonce410;
6970 } else {
6971 var412 = "# Check for library ";
6972 var414 = (val*)(20l<<2|1);
6973 var415 = (val*)(20l<<2|1);
6974 var416 = (val*)((long)(0)<<2|3);
6975 var417 = (val*)((long)(0)<<2|3);
6976 var413 = core__flat___CString___to_s_unsafe(var412, var414, var415, var416, var417);
6977 var411 = var413;
6978 varonce410 = var411;
6979 }
6980 ((struct instance_core__NativeArray*)var409)->values[0]=var411;
6981 if (likely(varonce418!=NULL)) {
6982 var419 = varonce418;
6983 } else {
6984 var420 = "\nifneq ($(shell pkg-config --exists \'";
6985 var422 = (val*)(37l<<2|1);
6986 var423 = (val*)(37l<<2|1);
6987 var424 = (val*)((long)(0)<<2|3);
6988 var425 = (val*)((long)(0)<<2|3);
6989 var421 = core__flat___CString___to_s_unsafe(var420, var422, var423, var424, var425);
6990 var419 = var421;
6991 varonce418 = var419;
6992 }
6993 ((struct instance_core__NativeArray*)var409)->values[2]=var419;
6994 if (likely(varonce426!=NULL)) {
6995 var427 = varonce426;
6996 } else {
6997 var428 = "\'; echo $$\?), 0)\n$(error \"pkg-config: package ";
6998 var430 = (val*)(46l<<2|1);
6999 var431 = (val*)(46l<<2|1);
7000 var432 = (val*)((long)(0)<<2|3);
7001 var433 = (val*)((long)(0)<<2|3);
7002 var429 = core__flat___CString___to_s_unsafe(var428, var430, var431, var432, var433);
7003 var427 = var429;
7004 varonce426 = var427;
7005 }
7006 ((struct instance_core__NativeArray*)var409)->values[4]=var427;
7007 if (likely(varonce434!=NULL)) {
7008 var435 = varonce434;
7009 } else {
7010 var436 = " is not found.\")\nendif\n";
7011 var438 = (val*)(23l<<2|1);
7012 var439 = (val*)(23l<<2|1);
7013 var440 = (val*)((long)(0)<<2|3);
7014 var441 = (val*)((long)(0)<<2|3);
7015 var437 = core__flat___CString___to_s_unsafe(var436, var438, var439, var440, var441);
7016 var435 = var437;
7017 varonce434 = var435;
7018 }
7019 ((struct instance_core__NativeArray*)var409)->values[6]=var435;
7020 } else {
7021 var409 = varonce408;
7022 varonce408 = NULL;
7023 }
7024 ((struct instance_core__NativeArray*)var409)->values[1]=var_p;
7025 ((struct instance_core__NativeArray*)var409)->values[3]=var_p;
7026 ((struct instance_core__NativeArray*)var409)->values[5]=var_p;
7027 {
7028 var442 = ((val*(*)(val* self))(var409->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var409); /* native_to_s on <var409:NativeArray[String]>*/
7029 }
7030 varonce408 = var409;
7031 {
7032 core___core__FileWriter___core__stream__Writer__write(var_makefile, var442); /* Direct call file$FileWriter$write on <var_makefile:FileWriter>*/
7033 }
7034 {
7035 ((void(*)(val* self))((((long)var_404&3)?class_info[((long)var_404&3)]:var_404->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_404); /* next on <var_404:IndexedIterator[String]>*/
7036 }
7037 }
7038 BREAK_label406: (void)0;
7039 {
7040 ((void(*)(val* self))((((long)var_404&3)?class_info[((long)var_404&3)]:var_404->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_404); /* finish on <var_404:IndexedIterator[String]>*/
7041 }
7042 } else {
7043 }
7044 {
7045 { /* Inline abstract_compiler$Toolchain$compiler (self) on <self:MakefileToolchain> */
7046 var445 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___compiler].val; /* _compiler on <self:MakefileToolchain> */
7047 if (unlikely(var445 == NULL)) {
7048 if(catchStack.cursor >= 0){
7049 longjmp(catchStack.envs[catchStack.cursor], 1);
7050 }
7051 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
7052 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 134);
7053 fatal_exit(1);
7054 }
7055 var443 = var445;
7056 RET_LABEL444:(void)0;
7057 }
7058 }
7059 {
7060 { /* Inline abstract_compiler$AbstractCompiler$extern_bodies (var443) on <var443:AbstractCompiler> */
7061 var448 = var443->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___extern_bodies].val; /* _extern_bodies on <var443:AbstractCompiler> */
7062 if (unlikely(var448 == NULL)) {
7063 if(catchStack.cursor >= 0){
7064 longjmp(catchStack.envs[catchStack.cursor], 1);
7065 }
7066 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _extern_bodies");
7067 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1075);
7068 fatal_exit(1);
7069 }
7070 var446 = var448;
7071 RET_LABEL447:(void)0;
7072 }
7073 }
7074 var_449 = var446;
7075 {
7076 var450 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_449);
7077 }
7078 var_451 = var450;
7079 for(;;) {
7080 {
7081 var452 = ((short int(*)(val* self))((((long)var_451&3)?class_info[((long)var_451&3)]:var_451->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_451); /* is_ok on <var_451:IndexedIterator[ExternFile]>*/
7082 }
7083 if (var452){
7084 } else {
7085 goto BREAK_label453;
7086 }
7087 {
7088 var454 = ((val*(*)(val* self))((((long)var_451&3)?class_info[((long)var_451&3)]:var_451->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_451); /* item on <var_451:IndexedIterator[ExternFile]>*/
7089 }
7090 var_f455 = var454;
7091 {
7092 var456 = nitc___nitc__ExternCFile___ExternFile__makefile_rule_name(var_f455);
7093 }
7094 var_o457 = var456;
7095 {
7096 { /* Inline c_tools$ExternFile$filename (var_f455) on <var_f455:ExternFile> */
7097 var460 = var_f455->attrs[COLOR_nitc__c_tools__ExternFile___filename].val; /* _filename on <var_f455:ExternFile> */
7098 if (unlikely(var460 == NULL)) {
7099 if(catchStack.cursor >= 0){
7100 longjmp(catchStack.envs[catchStack.cursor], 1);
7101 }
7102 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filename");
7103 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 108);
7104 fatal_exit(1);
7105 }
7106 var458 = var460;
7107 RET_LABEL459:(void)0;
7108 }
7109 }
7110 {
7111 var461 = ((val*(*)(val* self, val* p0))(var458->class->vft[COLOR_core__file__String__basename]))(var458, ((val*)NULL)); /* basename on <var458:String>*/
7112 }
7113 var_ff = var461;
7114 if (unlikely(varonce462==NULL)) {
7115 var463 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
7116 if (likely(varonce464!=NULL)) {
7117 var465 = varonce464;
7118 } else {
7119 var466 = ": ";
7120 var468 = (val*)(2l<<2|1);
7121 var469 = (val*)(2l<<2|1);
7122 var470 = (val*)((long)(0)<<2|3);
7123 var471 = (val*)((long)(0)<<2|3);
7124 var467 = core__flat___CString___to_s_unsafe(var466, var468, var469, var470, var471);
7125 var465 = var467;
7126 varonce464 = var465;
7127 }
7128 ((struct instance_core__NativeArray*)var463)->values[1]=var465;
7129 if (likely(varonce472!=NULL)) {
7130 var473 = varonce472;
7131 } else {
7132 var474 = "\n";
7133 var476 = (val*)(1l<<2|1);
7134 var477 = (val*)(1l<<2|1);
7135 var478 = (val*)((long)(0)<<2|3);
7136 var479 = (val*)((long)(0)<<2|3);
7137 var475 = core__flat___CString___to_s_unsafe(var474, var476, var477, var478, var479);
7138 var473 = var475;
7139 varonce472 = var473;
7140 }
7141 ((struct instance_core__NativeArray*)var463)->values[3]=var473;
7142 } else {
7143 var463 = varonce462;
7144 varonce462 = NULL;
7145 }
7146 ((struct instance_core__NativeArray*)var463)->values[0]=var_o457;
7147 ((struct instance_core__NativeArray*)var463)->values[2]=var_ff;
7148 {
7149 var480 = ((val*(*)(val* self))(var463->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var463); /* native_to_s on <var463:NativeArray[String]>*/
7150 }
7151 varonce462 = var463;
7152 {
7153 core___core__FileWriter___core__stream__Writer__write(var_makefile, var480); /* Direct call file$FileWriter$write on <var_makefile:FileWriter>*/
7154 }
7155 if (unlikely(varonce481==NULL)) {
7156 var482 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
7157 if (likely(varonce483!=NULL)) {
7158 var484 = varonce483;
7159 } else {
7160 var485 = "\t";
7161 var487 = (val*)(1l<<2|1);
7162 var488 = (val*)(1l<<2|1);
7163 var489 = (val*)((long)(0)<<2|3);
7164 var490 = (val*)((long)(0)<<2|3);
7165 var486 = core__flat___CString___to_s_unsafe(var485, var487, var488, var489, var490);
7166 var484 = var486;
7167 varonce483 = var484;
7168 }
7169 ((struct instance_core__NativeArray*)var482)->values[0]=var484;
7170 if (likely(varonce491!=NULL)) {
7171 var492 = varonce491;
7172 } else {
7173 var493 = "\n\n";
7174 var495 = (val*)(2l<<2|1);
7175 var496 = (val*)(2l<<2|1);
7176 var497 = (val*)((long)(0)<<2|3);
7177 var498 = (val*)((long)(0)<<2|3);
7178 var494 = core__flat___CString___to_s_unsafe(var493, var495, var496, var497, var498);
7179 var492 = var494;
7180 varonce491 = var492;
7181 }
7182 ((struct instance_core__NativeArray*)var482)->values[2]=var492;
7183 } else {
7184 var482 = varonce481;
7185 varonce481 = NULL;
7186 }
7187 {
7188 var499 = nitc___nitc__ExternCFile___ExternFile__makefile_rule_content(var_f455);
7189 }
7190 ((struct instance_core__NativeArray*)var482)->values[1]=var499;
7191 {
7192 var500 = ((val*(*)(val* self))(var482->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var482); /* native_to_s on <var482:NativeArray[String]>*/
7193 }
7194 varonce481 = var482;
7195 {
7196 core___core__FileWriter___core__stream__Writer__write(var_makefile, var500); /* Direct call file$FileWriter$write on <var_makefile:FileWriter>*/
7197 }
7198 {
7199 var501 = nitc___nitc__ExternCFile___ExternFile__makefile_rule_name(var_f455);
7200 }
7201 {
7202 core___core__Array___core__abstract_collection__SimpleCollection__add(var_dep_rules, var501); /* Direct call array$Array$add on <var_dep_rules:Array[String]>*/
7203 }
7204 {
7205 var502 = nitc___nitc__ExternCFile___ExternFile__compiles_to_o_file(var_f455);
7206 }
7207 if (var502){
7208 {
7209 core___core__Array___core__abstract_collection__SimpleCollection__add(var_ofiles, var_o457); /* Direct call array$Array$add on <var_ofiles:Array[String]>*/
7210 }
7211 } else {
7212 }
7213 {
7214 var503 = nitc___nitc__ExternFile___add_to_jar(var_f455);
7215 }
7216 if (var503){
7217 {
7218 core___core__Array___core__abstract_collection__SimpleCollection__add(var_java_files, var_f455); /* Direct call array$Array$add on <var_java_files:Array[ExternFile]>*/
7219 }
7220 } else {
7221 }
7222 {
7223 ((void(*)(val* self))((((long)var_451&3)?class_info[((long)var_451&3)]:var_451->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_451); /* next on <var_451:IndexedIterator[ExternFile]>*/
7224 }
7225 }
7226 BREAK_label453: (void)0;
7227 {
7228 ((void(*)(val* self))((((long)var_451&3)?class_info[((long)var_451&3)]:var_451->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_451); /* finish on <var_451:IndexedIterator[ExternFile]>*/
7229 }
7230 {
7231 var504 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_java_files);
7232 }
7233 var505 = !var504;
7234 if (var505){
7235 if (unlikely(varonce506==NULL)) {
7236 var507 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
7237 if (likely(varonce508!=NULL)) {
7238 var509 = varonce508;
7239 } else {
7240 var510 = ".jar";
7241 var512 = (val*)(4l<<2|1);
7242 var513 = (val*)(4l<<2|1);
7243 var514 = (val*)((long)(0)<<2|3);
7244 var515 = (val*)((long)(0)<<2|3);
7245 var511 = core__flat___CString___to_s_unsafe(var510, var512, var513, var514, var515);
7246 var509 = var511;
7247 varonce508 = var509;
7248 }
7249 ((struct instance_core__NativeArray*)var507)->values[1]=var509;
7250 } else {
7251 var507 = varonce506;
7252 varonce506 = NULL;
7253 }
7254 ((struct instance_core__NativeArray*)var507)->values[0]=var_outpath;
7255 {
7256 var516 = ((val*(*)(val* self))(var507->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var507); /* native_to_s on <var507:NativeArray[String]>*/
7257 }
7258 varonce506 = var507;
7259 var_jar_file = var516;
7260 var517 = NEW_core__Array(&type_core__Array__core__String);
7261 {
7262 core___core__Array___core__kernel__Object__init(var517); /* Direct call array$Array$init on <var517:Array[String]>*/
7263 }
7264 var_class_files_array = var517;
7265 var_518 = var_java_files;
7266 {
7267 var519 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_518);
7268 }
7269 var_520 = var519;
7270 for(;;) {
7271 {
7272 var521 = ((short int(*)(val* self))((((long)var_520&3)?class_info[((long)var_520&3)]:var_520->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_520); /* is_ok on <var_520:IndexedIterator[ExternFile]>*/
7273 }
7274 if (var521){
7275 } else {
7276 goto BREAK_label522;
7277 }
7278 {
7279 var523 = ((val*(*)(val* self))((((long)var_520&3)?class_info[((long)var_520&3)]:var_520->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_520); /* item on <var_520:IndexedIterator[ExternFile]>*/
7280 }
7281 var_f524 = var523;
7282 {
7283 var525 = nitc___nitc__ExternCFile___ExternFile__makefile_rule_name(var_f524);
7284 }
7285 {
7286 core___core__Array___core__abstract_collection__SimpleCollection__add(var_class_files_array, var525); /* Direct call array$Array$add on <var_class_files_array:Array[String]>*/
7287 }
7288 {
7289 ((void(*)(val* self))((((long)var_520&3)?class_info[((long)var_520&3)]:var_520->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_520); /* next on <var_520:IndexedIterator[ExternFile]>*/
7290 }
7291 }
7292 BREAK_label522: (void)0;
7293 {
7294 ((void(*)(val* self))((((long)var_520&3)?class_info[((long)var_520&3)]:var_520->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_520); /* finish on <var_520:IndexedIterator[ExternFile]>*/
7295 }
7296 if (likely(varonce526!=NULL)) {
7297 var527 = varonce526;
7298 } else {
7299 var528 = " ";
7300 var530 = (val*)(1l<<2|1);
7301 var531 = (val*)(1l<<2|1);
7302 var532 = (val*)((long)(0)<<2|3);
7303 var533 = (val*)((long)(0)<<2|3);
7304 var529 = core__flat___CString___to_s_unsafe(var528, var530, var531, var532, var533);
7305 var527 = var529;
7306 varonce526 = var527;
7307 }
7308 {
7309 var534 = core__abstract_text___Collection___join(var_class_files_array, var527, ((val*)NULL));
7310 }
7311 var_class_files = var534;
7312 if (unlikely(varonce535==NULL)) {
7313 var536 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
7314 if (likely(varonce537!=NULL)) {
7315 var538 = varonce537;
7316 } else {
7317 var539 = ": ";
7318 var541 = (val*)(2l<<2|1);
7319 var542 = (val*)(2l<<2|1);
7320 var543 = (val*)((long)(0)<<2|3);
7321 var544 = (val*)((long)(0)<<2|3);
7322 var540 = core__flat___CString___to_s_unsafe(var539, var541, var542, var543, var544);
7323 var538 = var540;
7324 varonce537 = var538;
7325 }
7326 ((struct instance_core__NativeArray*)var536)->values[1]=var538;
7327 if (likely(varonce545!=NULL)) {
7328 var546 = varonce545;
7329 } else {
7330 var547 = "\n";
7331 var549 = (val*)(1l<<2|1);
7332 var550 = (val*)(1l<<2|1);
7333 var551 = (val*)((long)(0)<<2|3);
7334 var552 = (val*)((long)(0)<<2|3);
7335 var548 = core__flat___CString___to_s_unsafe(var547, var549, var550, var551, var552);
7336 var546 = var548;
7337 varonce545 = var546;
7338 }
7339 ((struct instance_core__NativeArray*)var536)->values[3]=var546;
7340 } else {
7341 var536 = varonce535;
7342 varonce535 = NULL;
7343 }
7344 ((struct instance_core__NativeArray*)var536)->values[0]=var_jar_file;
7345 ((struct instance_core__NativeArray*)var536)->values[2]=var_class_files;
7346 {
7347 var553 = ((val*(*)(val* self))(var536->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var536); /* native_to_s on <var536:NativeArray[String]>*/
7348 }
7349 varonce535 = var536;
7350 {
7351 core___core__FileWriter___core__stream__Writer__write(var_makefile, var553); /* Direct call file$FileWriter$write on <var_makefile:FileWriter>*/
7352 }
7353 if (unlikely(varonce554==NULL)) {
7354 var555 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
7355 if (likely(varonce556!=NULL)) {
7356 var557 = varonce556;
7357 } else {
7358 var558 = "\tjar cf ";
7359 var560 = (val*)(8l<<2|1);
7360 var561 = (val*)(8l<<2|1);
7361 var562 = (val*)((long)(0)<<2|3);
7362 var563 = (val*)((long)(0)<<2|3);
7363 var559 = core__flat___CString___to_s_unsafe(var558, var560, var561, var562, var563);
7364 var557 = var559;
7365 varonce556 = var557;
7366 }
7367 ((struct instance_core__NativeArray*)var555)->values[0]=var557;
7368 if (likely(varonce564!=NULL)) {
7369 var565 = varonce564;
7370 } else {
7371 var566 = " ";
7372 var568 = (val*)(1l<<2|1);
7373 var569 = (val*)(1l<<2|1);
7374 var570 = (val*)((long)(0)<<2|3);
7375 var571 = (val*)((long)(0)<<2|3);
7376 var567 = core__flat___CString___to_s_unsafe(var566, var568, var569, var570, var571);
7377 var565 = var567;
7378 varonce564 = var565;
7379 }
7380 ((struct instance_core__NativeArray*)var555)->values[2]=var565;
7381 if (likely(varonce572!=NULL)) {
7382 var573 = varonce572;
7383 } else {
7384 var574 = "\n\n";
7385 var576 = (val*)(2l<<2|1);
7386 var577 = (val*)(2l<<2|1);
7387 var578 = (val*)((long)(0)<<2|3);
7388 var579 = (val*)((long)(0)<<2|3);
7389 var575 = core__flat___CString___to_s_unsafe(var574, var576, var577, var578, var579);
7390 var573 = var575;
7391 varonce572 = var573;
7392 }
7393 ((struct instance_core__NativeArray*)var555)->values[4]=var573;
7394 } else {
7395 var555 = varonce554;
7396 varonce554 = NULL;
7397 }
7398 ((struct instance_core__NativeArray*)var555)->values[1]=var_jar_file;
7399 ((struct instance_core__NativeArray*)var555)->values[3]=var_class_files;
7400 {
7401 var580 = ((val*(*)(val* self))(var555->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var555); /* native_to_s on <var555:NativeArray[String]>*/
7402 }
7403 varonce554 = var555;
7404 {
7405 core___core__FileWriter___core__stream__Writer__write(var_makefile, var580); /* Direct call file$FileWriter$write on <var_makefile:FileWriter>*/
7406 }
7407 {
7408 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]>*/
7409 }
7410 } else {
7411 }
7412 if (likely(varonce581!=NULL)) {
7413 var582 = varonce581;
7414 } else {
7415 var583 = "";
7416 var585 = (val*)(0l<<2|1);
7417 var586 = (val*)(0l<<2|1);
7418 var587 = (val*)((long)(0)<<2|3);
7419 var588 = (val*)((long)(0)<<2|3);
7420 var584 = core__flat___CString___to_s_unsafe(var583, var585, var586, var587, var588);
7421 var582 = var584;
7422 varonce581 = var582;
7423 }
7424 var_pkg = var582;
7425 {
7426 var589 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_pkgconfigs);
7427 }
7428 var590 = !var589;
7429 if (var590){
7430 if (unlikely(varonce591==NULL)) {
7431 var592 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
7432 if (likely(varonce593!=NULL)) {
7433 var594 = varonce593;
7434 } else {
7435 var595 = "`pkg-config --libs ";
7436 var597 = (val*)(19l<<2|1);
7437 var598 = (val*)(19l<<2|1);
7438 var599 = (val*)((long)(0)<<2|3);
7439 var600 = (val*)((long)(0)<<2|3);
7440 var596 = core__flat___CString___to_s_unsafe(var595, var597, var598, var599, var600);
7441 var594 = var596;
7442 varonce593 = var594;
7443 }
7444 ((struct instance_core__NativeArray*)var592)->values[0]=var594;
7445 if (likely(varonce601!=NULL)) {
7446 var602 = varonce601;
7447 } else {
7448 var603 = "`";
7449 var605 = (val*)(1l<<2|1);
7450 var606 = (val*)(1l<<2|1);
7451 var607 = (val*)((long)(0)<<2|3);
7452 var608 = (val*)((long)(0)<<2|3);
7453 var604 = core__flat___CString___to_s_unsafe(var603, var605, var606, var607, var608);
7454 var602 = var604;
7455 varonce601 = var602;
7456 }
7457 ((struct instance_core__NativeArray*)var592)->values[2]=var602;
7458 } else {
7459 var592 = varonce591;
7460 varonce591 = NULL;
7461 }
7462 if (likely(varonce609!=NULL)) {
7463 var610 = varonce609;
7464 } else {
7465 var611 = " ";
7466 var613 = (val*)(1l<<2|1);
7467 var614 = (val*)(1l<<2|1);
7468 var615 = (val*)((long)(0)<<2|3);
7469 var616 = (val*)((long)(0)<<2|3);
7470 var612 = core__flat___CString___to_s_unsafe(var611, var613, var614, var615, var616);
7471 var610 = var612;
7472 varonce609 = var610;
7473 }
7474 {
7475 var617 = core__abstract_text___Collection___join(var_pkgconfigs, var610, ((val*)NULL));
7476 }
7477 ((struct instance_core__NativeArray*)var592)->values[1]=var617;
7478 {
7479 var618 = ((val*(*)(val* self))(var592->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var592); /* native_to_s on <var592:NativeArray[String]>*/
7480 }
7481 varonce591 = var592;
7482 var_pkg = var618;
7483 } else {
7484 }
7485 if (unlikely(varonce619==NULL)) {
7486 var620 = NEW_core__NativeArray((int)10l, &type_core__NativeArray__core__String);
7487 if (likely(varonce621!=NULL)) {
7488 var622 = varonce621;
7489 } else {
7490 var623 = ": ";
7491 var625 = (val*)(2l<<2|1);
7492 var626 = (val*)(2l<<2|1);
7493 var627 = (val*)((long)(0)<<2|3);
7494 var628 = (val*)((long)(0)<<2|3);
7495 var624 = core__flat___CString___to_s_unsafe(var623, var625, var626, var627, var628);
7496 var622 = var624;
7497 varonce621 = var622;
7498 }
7499 ((struct instance_core__NativeArray*)var620)->values[1]=var622;
7500 if (likely(varonce629!=NULL)) {
7501 var630 = varonce629;
7502 } else {
7503 var631 = "\n\t$(CC) $(LDFLAGS) -o ";
7504 var633 = (val*)(22l<<2|1);
7505 var634 = (val*)(22l<<2|1);
7506 var635 = (val*)((long)(0)<<2|3);
7507 var636 = (val*)((long)(0)<<2|3);
7508 var632 = core__flat___CString___to_s_unsafe(var631, var633, var634, var635, var636);
7509 var630 = var632;
7510 varonce629 = var630;
7511 }
7512 ((struct instance_core__NativeArray*)var620)->values[3]=var630;
7513 if (likely(varonce637!=NULL)) {
7514 var638 = varonce637;
7515 } else {
7516 var639 = " ";
7517 var641 = (val*)(1l<<2|1);
7518 var642 = (val*)(1l<<2|1);
7519 var643 = (val*)((long)(0)<<2|3);
7520 var644 = (val*)((long)(0)<<2|3);
7521 var640 = core__flat___CString___to_s_unsafe(var639, var641, var642, var643, var644);
7522 var638 = var640;
7523 varonce637 = var638;
7524 }
7525 ((struct instance_core__NativeArray*)var620)->values[5]=var638;
7526 if (likely(varonce645!=NULL)) {
7527 var646 = varonce645;
7528 } else {
7529 var647 = " $(LDLIBS) ";
7530 var649 = (val*)(11l<<2|1);
7531 var650 = (val*)(11l<<2|1);
7532 var651 = (val*)((long)(0)<<2|3);
7533 var652 = (val*)((long)(0)<<2|3);
7534 var648 = core__flat___CString___to_s_unsafe(var647, var649, var650, var651, var652);
7535 var646 = var648;
7536 varonce645 = var646;
7537 }
7538 ((struct instance_core__NativeArray*)var620)->values[7]=var646;
7539 if (likely(varonce653!=NULL)) {
7540 var654 = varonce653;
7541 } else {
7542 var655 = "\n\n";
7543 var657 = (val*)(2l<<2|1);
7544 var658 = (val*)(2l<<2|1);
7545 var659 = (val*)((long)(0)<<2|3);
7546 var660 = (val*)((long)(0)<<2|3);
7547 var656 = core__flat___CString___to_s_unsafe(var655, var657, var658, var659, var660);
7548 var654 = var656;
7549 varonce653 = var654;
7550 }
7551 ((struct instance_core__NativeArray*)var620)->values[9]=var654;
7552 } else {
7553 var620 = varonce619;
7554 varonce619 = NULL;
7555 }
7556 ((struct instance_core__NativeArray*)var620)->values[0]=var_outpath;
7557 if (likely(varonce661!=NULL)) {
7558 var662 = varonce661;
7559 } else {
7560 var663 = " ";
7561 var665 = (val*)(1l<<2|1);
7562 var666 = (val*)(1l<<2|1);
7563 var667 = (val*)((long)(0)<<2|3);
7564 var668 = (val*)((long)(0)<<2|3);
7565 var664 = core__flat___CString___to_s_unsafe(var663, var665, var666, var667, var668);
7566 var662 = var664;
7567 varonce661 = var662;
7568 }
7569 {
7570 var669 = core__abstract_text___Collection___join(var_dep_rules, var662, ((val*)NULL));
7571 }
7572 ((struct instance_core__NativeArray*)var620)->values[2]=var669;
7573 {
7574 var670 = core___core__Text___escape_to_sh(var_outpath);
7575 }
7576 ((struct instance_core__NativeArray*)var620)->values[4]=var670;
7577 if (likely(varonce671!=NULL)) {
7578 var672 = varonce671;
7579 } else {
7580 var673 = " ";
7581 var675 = (val*)(1l<<2|1);
7582 var676 = (val*)(1l<<2|1);
7583 var677 = (val*)((long)(0)<<2|3);
7584 var678 = (val*)((long)(0)<<2|3);
7585 var674 = core__flat___CString___to_s_unsafe(var673, var675, var676, var677, var678);
7586 var672 = var674;
7587 varonce671 = var672;
7588 }
7589 {
7590 var679 = core__abstract_text___Collection___join(var_ofiles, var672, ((val*)NULL));
7591 }
7592 ((struct instance_core__NativeArray*)var620)->values[6]=var679;
7593 ((struct instance_core__NativeArray*)var620)->values[8]=var_pkg;
7594 {
7595 var680 = ((val*(*)(val* self))(var620->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var620); /* native_to_s on <var620:NativeArray[String]>*/
7596 }
7597 varonce619 = var620;
7598 {
7599 core___core__FileWriter___core__stream__Writer__write(var_makefile, var680); /* Direct call file$FileWriter$write on <var_makefile:FileWriter>*/
7600 }
7601 if (unlikely(varonce681==NULL)) {
7602 var682 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
7603 if (likely(varonce683!=NULL)) {
7604 var684 = varonce683;
7605 } else {
7606 var685 = "clean:\n\trm ";
7607 var687 = (val*)(11l<<2|1);
7608 var688 = (val*)(11l<<2|1);
7609 var689 = (val*)((long)(0)<<2|3);
7610 var690 = (val*)((long)(0)<<2|3);
7611 var686 = core__flat___CString___to_s_unsafe(var685, var687, var688, var689, var690);
7612 var684 = var686;
7613 varonce683 = var684;
7614 }
7615 ((struct instance_core__NativeArray*)var682)->values[0]=var684;
7616 if (likely(varonce691!=NULL)) {
7617 var692 = varonce691;
7618 } else {
7619 var693 = " 2>/dev/null\n";
7620 var695 = (val*)(13l<<2|1);
7621 var696 = (val*)(13l<<2|1);
7622 var697 = (val*)((long)(0)<<2|3);
7623 var698 = (val*)((long)(0)<<2|3);
7624 var694 = core__flat___CString___to_s_unsafe(var693, var695, var696, var697, var698);
7625 var692 = var694;
7626 varonce691 = var692;
7627 }
7628 ((struct instance_core__NativeArray*)var682)->values[2]=var692;
7629 } else {
7630 var682 = varonce681;
7631 varonce681 = NULL;
7632 }
7633 if (likely(varonce699!=NULL)) {
7634 var700 = varonce699;
7635 } else {
7636 var701 = " ";
7637 var703 = (val*)(1l<<2|1);
7638 var704 = (val*)(1l<<2|1);
7639 var705 = (val*)((long)(0)<<2|3);
7640 var706 = (val*)((long)(0)<<2|3);
7641 var702 = core__flat___CString___to_s_unsafe(var701, var703, var704, var705, var706);
7642 var700 = var702;
7643 varonce699 = var700;
7644 }
7645 {
7646 var707 = core__abstract_text___Collection___join(var_ofiles, var700, ((val*)NULL));
7647 }
7648 ((struct instance_core__NativeArray*)var682)->values[1]=var707;
7649 {
7650 var708 = ((val*(*)(val* self))(var682->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var682); /* native_to_s on <var682:NativeArray[String]>*/
7651 }
7652 varonce681 = var682;
7653 {
7654 core___core__FileWriter___core__stream__Writer__write(var_makefile, var708); /* Direct call file$FileWriter$write on <var_makefile:FileWriter>*/
7655 }
7656 {
7657 { /* Inline kernel$Object$!= (var_outpath,var_real_outpath) on <var_outpath:String> */
7658 var_other = var_real_outpath;
7659 {
7660 var711 = ((short int(*)(val* self, val* p0))(var_outpath->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_outpath, var_other); /* == on <var_outpath:String>*/
7661 }
7662 var712 = !var711;
7663 var709 = var712;
7664 goto RET_LABEL710;
7665 RET_LABEL710:(void)0;
7666 }
7667 }
7668 if (var709){
7669 if (unlikely(varonce713==NULL)) {
7670 var714 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
7671 if (likely(varonce715!=NULL)) {
7672 var716 = varonce715;
7673 } else {
7674 var717 = "\trm -- ";
7675 var719 = (val*)(7l<<2|1);
7676 var720 = (val*)(7l<<2|1);
7677 var721 = (val*)((long)(0)<<2|3);
7678 var722 = (val*)((long)(0)<<2|3);
7679 var718 = core__flat___CString___to_s_unsafe(var717, var719, var720, var721, var722);
7680 var716 = var718;
7681 varonce715 = var716;
7682 }
7683 ((struct instance_core__NativeArray*)var714)->values[0]=var716;
7684 if (likely(varonce723!=NULL)) {
7685 var724 = varonce723;
7686 } else {
7687 var725 = " 2>/dev/null\n";
7688 var727 = (val*)(13l<<2|1);
7689 var728 = (val*)(13l<<2|1);
7690 var729 = (val*)((long)(0)<<2|3);
7691 var730 = (val*)((long)(0)<<2|3);
7692 var726 = core__flat___CString___to_s_unsafe(var725, var727, var728, var729, var730);
7693 var724 = var726;
7694 varonce723 = var724;
7695 }
7696 ((struct instance_core__NativeArray*)var714)->values[2]=var724;
7697 } else {
7698 var714 = varonce713;
7699 varonce713 = NULL;
7700 }
7701 {
7702 var731 = core___core__Text___escape_to_sh(var_outpath);
7703 }
7704 ((struct instance_core__NativeArray*)var714)->values[1]=var731;
7705 {
7706 var732 = ((val*(*)(val* self))(var714->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var714); /* native_to_s on <var714:NativeArray[String]>*/
7707 }
7708 varonce713 = var714;
7709 {
7710 core___core__FileWriter___core__stream__Writer__write(var_makefile, var732); /* Direct call file$FileWriter$write on <var_makefile:FileWriter>*/
7711 }
7712 } else {
7713 }
7714 {
7715 core___core__FileWriter___core__stream__Stream__close(var_makefile); /* Direct call file$FileWriter$close on <var_makefile:FileWriter>*/
7716 }
7717 {
7718 { /* Inline abstract_compiler$Toolchain$toolcontext (self) on <self:MakefileToolchain> */
7719 var735 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
7720 if (unlikely(var735 == NULL)) {
7721 if(catchStack.cursor >= 0){
7722 longjmp(catchStack.envs[catchStack.cursor], 1);
7723 }
7724 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
7725 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 131);
7726 fatal_exit(1);
7727 }
7728 var733 = var735;
7729 RET_LABEL734:(void)0;
7730 }
7731 }
7732 if (unlikely(varonce736==NULL)) {
7733 var737 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
7734 if (likely(varonce738!=NULL)) {
7735 var739 = varonce738;
7736 } else {
7737 var740 = "Generated makefile: ";
7738 var742 = (val*)(20l<<2|1);
7739 var743 = (val*)(20l<<2|1);
7740 var744 = (val*)((long)(0)<<2|3);
7741 var745 = (val*)((long)(0)<<2|3);
7742 var741 = core__flat___CString___to_s_unsafe(var740, var742, var743, var744, var745);
7743 var739 = var741;
7744 varonce738 = var739;
7745 }
7746 ((struct instance_core__NativeArray*)var737)->values[0]=var739;
7747 } else {
7748 var737 = varonce736;
7749 varonce736 = NULL;
7750 }
7751 ((struct instance_core__NativeArray*)var737)->values[1]=var_makepath;
7752 {
7753 var746 = ((val*(*)(val* self))(var737->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var737); /* native_to_s on <var737:NativeArray[String]>*/
7754 }
7755 varonce736 = var737;
7756 {
7757 nitc___nitc__ToolContext___info(var733, var746, 2l); /* Direct call toolcontext$ToolContext$info on <var733:ToolContext>*/
7758 }
7759 if (unlikely(varonce747==NULL)) {
7760 var748 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
7761 if (likely(varonce749!=NULL)) {
7762 var750 = varonce749;
7763 } else {
7764 var751 = "/Makefile";
7765 var753 = (val*)(9l<<2|1);
7766 var754 = (val*)(9l<<2|1);
7767 var755 = (val*)((long)(0)<<2|3);
7768 var756 = (val*)((long)(0)<<2|3);
7769 var752 = core__flat___CString___to_s_unsafe(var751, var753, var754, var755, var756);
7770 var750 = var752;
7771 varonce749 = var750;
7772 }
7773 ((struct instance_core__NativeArray*)var748)->values[1]=var750;
7774 } else {
7775 var748 = varonce747;
7776 varonce747 = NULL;
7777 }
7778 ((struct instance_core__NativeArray*)var748)->values[0]=var_compile_dir;
7779 {
7780 var757 = ((val*(*)(val* self))(var748->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var748); /* native_to_s on <var748:NativeArray[String]>*/
7781 }
7782 varonce747 = var748;
7783 {
7784 core__file___String___file_copy_to(var_makepath, var757); /* Direct call file$String$file_copy_to on <var_makepath:String>*/
7785 }
7786 RET_LABEL:;
7787 }
7788 /* method abstract_compiler$MakefileToolchain$compile_c_code for (self: MakefileToolchain, String) */
7789 void nitc___nitc__MakefileToolchain___compile_c_code(val* self, val* p0) {
7790 val* var_compile_dir /* var compile_dir: String */;
7791 val* var /* : String */;
7792 val* var_makename /* var makename: String */;
7793 val* var1 /* : ToolContext */;
7794 val* var3 /* : ToolContext */;
7795 val* var4 /* : OptionString */;
7796 val* var6 /* : OptionString */;
7797 val* var7 /* : nullable Object */;
7798 val* var9 /* : nullable Object */;
7799 val* var_makeflags /* var makeflags: nullable String */;
7800 short int var10 /* : Bool */;
7801 short int var11 /* : Bool */;
7802 static val* varonce;
7803 val* var12 /* : String */;
7804 char* var13 /* : CString */;
7805 val* var14 /* : String */;
7806 val* var15 /* : nullable Int */;
7807 val* var16 /* : nullable Int */;
7808 val* var17 /* : nullable Bool */;
7809 val* var18 /* : nullable Bool */;
7810 val* var20 /* : NativeArray[String] */;
7811 static val* varonce19;
7812 static val* varonce21;
7813 val* var22 /* : String */;
7814 char* var23 /* : CString */;
7815 val* var24 /* : String */;
7816 val* var25 /* : nullable Int */;
7817 val* var26 /* : nullable Int */;
7818 val* var27 /* : nullable Bool */;
7819 val* var28 /* : nullable Bool */;
7820 static val* varonce29;
7821 val* var30 /* : String */;
7822 char* var31 /* : CString */;
7823 val* var32 /* : String */;
7824 val* var33 /* : nullable Int */;
7825 val* var34 /* : nullable Int */;
7826 val* var35 /* : nullable Bool */;
7827 val* var36 /* : nullable Bool */;
7828 static val* varonce37;
7829 val* var38 /* : String */;
7830 char* var39 /* : CString */;
7831 val* var40 /* : String */;
7832 val* var41 /* : nullable Int */;
7833 val* var42 /* : nullable Int */;
7834 val* var43 /* : nullable Bool */;
7835 val* var44 /* : nullable Bool */;
7836 val* var45 /* : String */;
7837 val* var_command /* var command: String */;
7838 val* var46 /* : ToolContext */;
7839 val* var48 /* : ToolContext */;
7840 val* var49 /* : ToolContext */;
7841 val* var51 /* : ToolContext */;
7842 long var52 /* : Int */;
7843 long var54 /* : Int */;
7844 short int var55 /* : Bool */;
7845 short int var57 /* : Bool */;
7846 int cltype;
7847 int idtype;
7848 const char* var_class_name;
7849 short int var58 /* : Bool */;
7850 val* var59 /* : Sys */;
7851 val* var61 /* : Sys */;
7852 val* var63 /* : NativeArray[String] */;
7853 static val* varonce62;
7854 static val* varonce64;
7855 val* var65 /* : String */;
7856 char* var66 /* : CString */;
7857 val* var67 /* : String */;
7858 val* var68 /* : nullable Int */;
7859 val* var69 /* : nullable Int */;
7860 val* var70 /* : nullable Bool */;
7861 val* var71 /* : nullable Bool */;
7862 val* var72 /* : String */;
7863 long var73 /* : Int */;
7864 val* var74 /* : nullable Object */;
7865 val* var_res /* var res: nullable Object */;
7866 val* var75 /* : Sys */;
7867 short int var76 /* : Bool */;
7868 short int var78 /* : Bool */;
7869 val* var79 /* : Sys */;
7870 val* var81 /* : Sys */;
7871 val* var83 /* : NativeArray[String] */;
7872 static val* varonce82;
7873 static val* varonce84;
7874 val* var85 /* : String */;
7875 char* var86 /* : CString */;
7876 val* var87 /* : String */;
7877 val* var88 /* : nullable Int */;
7878 val* var89 /* : nullable Int */;
7879 val* var90 /* : nullable Bool */;
7880 val* var91 /* : nullable Bool */;
7881 val* var92 /* : String */;
7882 long var93 /* : Int */;
7883 val* var94 /* : nullable Object */;
7884 val* var95 /* : Sys */;
7885 val* var97 /* : Sys */;
7886 val* var99 /* : NativeArray[String] */;
7887 static val* varonce98;
7888 static val* varonce100;
7889 val* var101 /* : String */;
7890 char* var102 /* : CString */;
7891 val* var103 /* : String */;
7892 val* var104 /* : nullable Int */;
7893 val* var105 /* : nullable Int */;
7894 val* var106 /* : nullable Bool */;
7895 val* var107 /* : nullable Bool */;
7896 val* var108 /* : String */;
7897 long var109 /* : Int */;
7898 val* var110 /* : nullable Object */;
7899 short int var111 /* : Bool */;
7900 short int var113 /* : Bool */;
7901 long var114 /* : Int */;
7902 short int var115 /* : Bool */;
7903 val* var116 /* : ToolContext */;
7904 val* var118 /* : ToolContext */;
7905 val* var120 /* : NativeArray[String] */;
7906 static val* varonce119;
7907 static val* varonce121;
7908 val* var122 /* : String */;
7909 char* var123 /* : CString */;
7910 val* var124 /* : String */;
7911 val* var125 /* : nullable Int */;
7912 val* var126 /* : nullable Int */;
7913 val* var127 /* : nullable Bool */;
7914 val* var128 /* : nullable Bool */;
7915 static val* varonce129;
7916 val* var130 /* : String */;
7917 char* var131 /* : CString */;
7918 val* var132 /* : String */;
7919 val* var133 /* : nullable Int */;
7920 val* var134 /* : nullable Int */;
7921 val* var135 /* : nullable Bool */;
7922 val* var136 /* : nullable Bool */;
7923 static val* varonce137;
7924 val* var138 /* : String */;
7925 char* var139 /* : CString */;
7926 val* var140 /* : String */;
7927 val* var141 /* : nullable Int */;
7928 val* var142 /* : nullable Int */;
7929 val* var143 /* : nullable Bool */;
7930 val* var144 /* : nullable Bool */;
7931 val* var145 /* : String */;
7932 long var146 /* : Int */;
7933 val* var147 /* : String */;
7934 val* var148 /* : Message */;
7935 var_compile_dir = p0;
7936 {
7937 var = nitc___nitc__MakefileToolchain___makefile_name(self);
7938 }
7939 var_makename = var;
7940 {
7941 { /* Inline abstract_compiler$Toolchain$toolcontext (self) on <self:MakefileToolchain> */
7942 var3 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
7943 if (unlikely(var3 == NULL)) {
7944 if(catchStack.cursor >= 0){
7945 longjmp(catchStack.envs[catchStack.cursor], 1);
7946 }
7947 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
7948 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 131);
7949 fatal_exit(1);
7950 }
7951 var1 = var3;
7952 RET_LABEL2:(void)0;
7953 }
7954 }
7955 {
7956 { /* Inline abstract_compiler$ToolContext$opt_make_flags (var1) on <var1:ToolContext> */
7957 var6 = var1->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_make_flags].val; /* _opt_make_flags on <var1:ToolContext> */
7958 if (unlikely(var6 == NULL)) {
7959 if(catchStack.cursor >= 0){
7960 longjmp(catchStack.envs[catchStack.cursor], 1);
7961 }
7962 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_make_flags");
7963 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 38);
7964 fatal_exit(1);
7965 }
7966 var4 = var6;
7967 RET_LABEL5:(void)0;
7968 }
7969 }
7970 {
7971 { /* Inline opts$Option$value (var4) on <var4:OptionString> */
7972 var9 = var4->attrs[COLOR_opts__Option___value].val; /* _value on <var4:OptionString> */
7973 var7 = var9;
7974 RET_LABEL8:(void)0;
7975 }
7976 }
7977 var_makeflags = var7;
7978 if (var_makeflags == NULL) {
7979 var10 = 1; /* is null */
7980 } else {
7981 var10 = 0; /* arg is null but recv is not */
7982 }
7983 if (0) {
7984 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>*/
7985 var10 = var11;
7986 }
7987 if (var10){
7988 if (likely(varonce!=NULL)) {
7989 var12 = varonce;
7990 } else {
7991 var13 = "";
7992 var15 = (val*)(0l<<2|1);
7993 var16 = (val*)(0l<<2|1);
7994 var17 = (val*)((long)(0)<<2|3);
7995 var18 = (val*)((long)(0)<<2|3);
7996 var14 = core__flat___CString___to_s_unsafe(var13, var15, var16, var17, var18);
7997 var12 = var14;
7998 varonce = var12;
7999 }
8000 var_makeflags = var12;
8001 } else {
8002 }
8003 if (unlikely(varonce19==NULL)) {
8004 var20 = NEW_core__NativeArray((int)6l, &type_core__NativeArray__core__String);
8005 if (likely(varonce21!=NULL)) {
8006 var22 = varonce21;
8007 } else {
8008 var23 = "make -B -C ";
8009 var25 = (val*)(11l<<2|1);
8010 var26 = (val*)(11l<<2|1);
8011 var27 = (val*)((long)(0)<<2|3);
8012 var28 = (val*)((long)(0)<<2|3);
8013 var24 = core__flat___CString___to_s_unsafe(var23, var25, var26, var27, var28);
8014 var22 = var24;
8015 varonce21 = var22;
8016 }
8017 ((struct instance_core__NativeArray*)var20)->values[0]=var22;
8018 if (likely(varonce29!=NULL)) {
8019 var30 = varonce29;
8020 } else {
8021 var31 = " -f ";
8022 var33 = (val*)(4l<<2|1);
8023 var34 = (val*)(4l<<2|1);
8024 var35 = (val*)((long)(0)<<2|3);
8025 var36 = (val*)((long)(0)<<2|3);
8026 var32 = core__flat___CString___to_s_unsafe(var31, var33, var34, var35, var36);
8027 var30 = var32;
8028 varonce29 = var30;
8029 }
8030 ((struct instance_core__NativeArray*)var20)->values[2]=var30;
8031 if (likely(varonce37!=NULL)) {
8032 var38 = varonce37;
8033 } else {
8034 var39 = " -j 4 ";
8035 var41 = (val*)(6l<<2|1);
8036 var42 = (val*)(6l<<2|1);
8037 var43 = (val*)((long)(0)<<2|3);
8038 var44 = (val*)((long)(0)<<2|3);
8039 var40 = core__flat___CString___to_s_unsafe(var39, var41, var42, var43, var44);
8040 var38 = var40;
8041 varonce37 = var38;
8042 }
8043 ((struct instance_core__NativeArray*)var20)->values[4]=var38;
8044 } else {
8045 var20 = varonce19;
8046 varonce19 = NULL;
8047 }
8048 ((struct instance_core__NativeArray*)var20)->values[1]=var_compile_dir;
8049 ((struct instance_core__NativeArray*)var20)->values[3]=var_makename;
8050 ((struct instance_core__NativeArray*)var20)->values[5]=var_makeflags;
8051 {
8052 var45 = ((val*(*)(val* self))(var20->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var20); /* native_to_s on <var20:NativeArray[String]>*/
8053 }
8054 varonce19 = var20;
8055 var_command = var45;
8056 {
8057 { /* Inline abstract_compiler$Toolchain$toolcontext (self) on <self:MakefileToolchain> */
8058 var48 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
8059 if (unlikely(var48 == NULL)) {
8060 if(catchStack.cursor >= 0){
8061 longjmp(catchStack.envs[catchStack.cursor], 1);
8062 }
8063 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
8064 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 131);
8065 fatal_exit(1);
8066 }
8067 var46 = var48;
8068 RET_LABEL47:(void)0;
8069 }
8070 }
8071 {
8072 nitc___nitc__ToolContext___info(var46, var_command, 2l); /* Direct call toolcontext$ToolContext$info on <var46:ToolContext>*/
8073 }
8074 {
8075 { /* Inline abstract_compiler$Toolchain$toolcontext (self) on <self:MakefileToolchain> */
8076 var51 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
8077 if (unlikely(var51 == NULL)) {
8078 if(catchStack.cursor >= 0){
8079 longjmp(catchStack.envs[catchStack.cursor], 1);
8080 }
8081 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
8082 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 131);
8083 fatal_exit(1);
8084 }
8085 var49 = var51;
8086 RET_LABEL50:(void)0;
8087 }
8088 }
8089 {
8090 { /* Inline toolcontext$ToolContext$verbose_level (var49) on <var49:ToolContext> */
8091 var54 = var49->attrs[COLOR_nitc__toolcontext__ToolContext___verbose_level].l; /* _verbose_level on <var49:ToolContext> */
8092 var52 = var54;
8093 RET_LABEL53:(void)0;
8094 }
8095 }
8096 {
8097 { /* Inline kernel$Int$>= (var52,3l) on <var52:Int> */
8098 /* Covariant cast for argument 0 (i) <3l:Int> isa OTHER */
8099 /* <3l:Int> isa OTHER */
8100 var57 = 1; /* easy <3l:Int> isa OTHER*/
8101 if (unlikely(!var57)) {
8102 var_class_name = type_core__Int.name;
8103 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
8104 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 726);
8105 fatal_exit(1);
8106 }
8107 var58 = var52 >= 3l;
8108 var55 = var58;
8109 goto RET_LABEL56;
8110 RET_LABEL56:(void)0;
8111 }
8112 }
8113 if (var55){
8114 {
8115 { /* Inline kernel$Object$sys (self) on <self:MakefileToolchain> */
8116 var61 = glob_sys;
8117 var59 = var61;
8118 goto RET_LABEL60;
8119 RET_LABEL60:(void)0;
8120 }
8121 }
8122 if (unlikely(varonce62==NULL)) {
8123 var63 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
8124 if (likely(varonce64!=NULL)) {
8125 var65 = varonce64;
8126 } else {
8127 var66 = " 2>&1";
8128 var68 = (val*)(5l<<2|1);
8129 var69 = (val*)(5l<<2|1);
8130 var70 = (val*)((long)(0)<<2|3);
8131 var71 = (val*)((long)(0)<<2|3);
8132 var67 = core__flat___CString___to_s_unsafe(var66, var68, var69, var70, var71);
8133 var65 = var67;
8134 varonce64 = var65;
8135 }
8136 ((struct instance_core__NativeArray*)var63)->values[1]=var65;
8137 } else {
8138 var63 = varonce62;
8139 varonce62 = NULL;
8140 }
8141 ((struct instance_core__NativeArray*)var63)->values[0]=var_command;
8142 {
8143 var72 = ((val*(*)(val* self))(var63->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var63); /* native_to_s on <var63:NativeArray[String]>*/
8144 }
8145 varonce62 = var63;
8146 {
8147 var73 = core__exec___Sys___system(var59, var72);
8148 }
8149 var74 = (val*)(var73<<2|1);
8150 var_res = var74;
8151 } else {
8152 var75 = glob_sys;
8153 {
8154 { /* Inline kernel$Sys$is_windows (var75) on <var75:Sys> */
8155 struct nitni_instance* var_for_c_0;
8156 var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
8157 var_for_c_0->value = var75;
8158 var78 = core__kernel___Sys_is_windows___impl(var_for_c_0);
8159 var76 = var78;
8160 goto RET_LABEL77;
8161 RET_LABEL77:(void)0;
8162 }
8163 }
8164 if (var76){
8165 {
8166 { /* Inline kernel$Object$sys (self) on <self:MakefileToolchain> */
8167 var81 = glob_sys;
8168 var79 = var81;
8169 goto RET_LABEL80;
8170 RET_LABEL80:(void)0;
8171 }
8172 }
8173 if (unlikely(varonce82==NULL)) {
8174 var83 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
8175 if (likely(varonce84!=NULL)) {
8176 var85 = varonce84;
8177 } else {
8178 var86 = " 2>&1 >nul";
8179 var88 = (val*)(10l<<2|1);
8180 var89 = (val*)(10l<<2|1);
8181 var90 = (val*)((long)(0)<<2|3);
8182 var91 = (val*)((long)(0)<<2|3);
8183 var87 = core__flat___CString___to_s_unsafe(var86, var88, var89, var90, var91);
8184 var85 = var87;
8185 varonce84 = var85;
8186 }
8187 ((struct instance_core__NativeArray*)var83)->values[1]=var85;
8188 } else {
8189 var83 = varonce82;
8190 varonce82 = NULL;
8191 }
8192 ((struct instance_core__NativeArray*)var83)->values[0]=var_command;
8193 {
8194 var92 = ((val*(*)(val* self))(var83->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var83); /* native_to_s on <var83:NativeArray[String]>*/
8195 }
8196 varonce82 = var83;
8197 {
8198 var93 = core__exec___Sys___system(var79, var92);
8199 }
8200 var94 = (val*)(var93<<2|1);
8201 var_res = var94;
8202 } else {
8203 {
8204 { /* Inline kernel$Object$sys (self) on <self:MakefileToolchain> */
8205 var97 = glob_sys;
8206 var95 = var97;
8207 goto RET_LABEL96;
8208 RET_LABEL96:(void)0;
8209 }
8210 }
8211 if (unlikely(varonce98==NULL)) {
8212 var99 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
8213 if (likely(varonce100!=NULL)) {
8214 var101 = varonce100;
8215 } else {
8216 var102 = " 2>&1 >/dev/null";
8217 var104 = (val*)(16l<<2|1);
8218 var105 = (val*)(16l<<2|1);
8219 var106 = (val*)((long)(0)<<2|3);
8220 var107 = (val*)((long)(0)<<2|3);
8221 var103 = core__flat___CString___to_s_unsafe(var102, var104, var105, var106, var107);
8222 var101 = var103;
8223 varonce100 = var101;
8224 }
8225 ((struct instance_core__NativeArray*)var99)->values[1]=var101;
8226 } else {
8227 var99 = varonce98;
8228 varonce98 = NULL;
8229 }
8230 ((struct instance_core__NativeArray*)var99)->values[0]=var_command;
8231 {
8232 var108 = ((val*(*)(val* self))(var99->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var99); /* native_to_s on <var99:NativeArray[String]>*/
8233 }
8234 varonce98 = var99;
8235 {
8236 var109 = core__exec___Sys___system(var95, var108);
8237 }
8238 var110 = (val*)(var109<<2|1);
8239 var_res = var110;
8240 }
8241 }
8242 {
8243 { /* Inline kernel$Int$!= (var_res,0l) on <var_res:nullable Object(Int)> */
8244 var114 = (long)(var_res)>>2;
8245 var113 = var114 == 0l;
8246 var115 = !var113;
8247 var111 = var115;
8248 goto RET_LABEL112;
8249 RET_LABEL112:(void)0;
8250 }
8251 }
8252 if (var111){
8253 {
8254 { /* Inline abstract_compiler$Toolchain$toolcontext (self) on <self:MakefileToolchain> */
8255 var118 = self->attrs[COLOR_nitc__abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
8256 if (unlikely(var118 == NULL)) {
8257 if(catchStack.cursor >= 0){
8258 longjmp(catchStack.envs[catchStack.cursor], 1);
8259 }
8260 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
8261 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 131);
8262 fatal_exit(1);
8263 }
8264 var116 = var118;
8265 RET_LABEL117:(void)0;
8266 }
8267 }
8268 if (unlikely(varonce119==NULL)) {
8269 var120 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
8270 if (likely(varonce121!=NULL)) {
8271 var122 = varonce121;
8272 } else {
8273 var123 = "Compilation Error: `make` failed with error code: ";
8274 var125 = (val*)(50l<<2|1);
8275 var126 = (val*)(50l<<2|1);
8276 var127 = (val*)((long)(0)<<2|3);
8277 var128 = (val*)((long)(0)<<2|3);
8278 var124 = core__flat___CString___to_s_unsafe(var123, var125, var126, var127, var128);
8279 var122 = var124;
8280 varonce121 = var122;
8281 }
8282 ((struct instance_core__NativeArray*)var120)->values[0]=var122;
8283 if (likely(varonce129!=NULL)) {
8284 var130 = varonce129;
8285 } else {
8286 var131 = ". The command was `";
8287 var133 = (val*)(19l<<2|1);
8288 var134 = (val*)(19l<<2|1);
8289 var135 = (val*)((long)(0)<<2|3);
8290 var136 = (val*)((long)(0)<<2|3);
8291 var132 = core__flat___CString___to_s_unsafe(var131, var133, var134, var135, var136);
8292 var130 = var132;
8293 varonce129 = var130;
8294 }
8295 ((struct instance_core__NativeArray*)var120)->values[2]=var130;
8296 if (likely(varonce137!=NULL)) {
8297 var138 = varonce137;
8298 } else {
8299 var139 = "`.";
8300 var141 = (val*)(2l<<2|1);
8301 var142 = (val*)(2l<<2|1);
8302 var143 = (val*)((long)(0)<<2|3);
8303 var144 = (val*)((long)(0)<<2|3);
8304 var140 = core__flat___CString___to_s_unsafe(var139, var141, var142, var143, var144);
8305 var138 = var140;
8306 varonce137 = var138;
8307 }
8308 ((struct instance_core__NativeArray*)var120)->values[4]=var138;
8309 } else {
8310 var120 = varonce119;
8311 varonce119 = NULL;
8312 }
8313 var146 = (long)(var_res)>>2;
8314 var145 = core__flat___Int___core__abstract_text__Object__to_s(var146);
8315 ((struct instance_core__NativeArray*)var120)->values[1]=var145;
8316 ((struct instance_core__NativeArray*)var120)->values[3]=var_command;
8317 {
8318 var147 = ((val*(*)(val* self))(var120->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var120); /* native_to_s on <var120:NativeArray[String]>*/
8319 }
8320 varonce119 = var120;
8321 {
8322 var148 = nitc___nitc__ToolContext___error(var116, ((val*)NULL), var147);
8323 }
8324 } else {
8325 }
8326 RET_LABEL:;
8327 }
8328 /* method abstract_compiler$AbstractCompiler$names for (self: AbstractCompiler): HashMap[String, String] */
8329 val* nitc___nitc__AbstractCompiler___names(val* self) {
8330 val* var /* : HashMap[String, String] */;
8331 val* var1 /* : HashMap[String, String] */;
8332 var1 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___names].val; /* _names on <self:AbstractCompiler> */
8333 if (unlikely(var1 == NULL)) {
8334 if(catchStack.cursor >= 0){
8335 longjmp(catchStack.envs[catchStack.cursor], 1);
8336 }
8337 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
8338 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 542);
8339 fatal_exit(1);
8340 }
8341 var = var1;
8342 RET_LABEL:;
8343 return var;
8344 }
8345 /* method abstract_compiler$AbstractCompiler$mainmodule for (self: AbstractCompiler): MModule */
8346 val* nitc___nitc__AbstractCompiler___mainmodule(val* self) {
8347 val* var /* : MModule */;
8348 val* var1 /* : MModule */;
8349 var1 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:AbstractCompiler> */
8350 if (unlikely(var1 == NULL)) {
8351 if(catchStack.cursor >= 0){
8352 longjmp(catchStack.envs[catchStack.cursor], 1);
8353 }
8354 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
8355 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 545);
8356 fatal_exit(1);
8357 }
8358 var = var1;
8359 RET_LABEL:;
8360 return var;
8361 }
8362 /* method abstract_compiler$AbstractCompiler$mainmodule= for (self: AbstractCompiler, MModule) */
8363 void nitc___nitc__AbstractCompiler___mainmodule_61d(val* self, val* p0) {
8364 self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val = p0; /* _mainmodule on <self:AbstractCompiler> */
8365 RET_LABEL:;
8366 }
8367 /* method abstract_compiler$AbstractCompiler$realmainmodule for (self: AbstractCompiler): MModule */
8368 val* nitc___nitc__AbstractCompiler___realmainmodule(val* self) {
8369 val* var /* : MModule */;
8370 val* var1 /* : MModule */;
8371 var1 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___realmainmodule].val; /* _realmainmodule on <self:AbstractCompiler> */
8372 if (unlikely(var1 == NULL)) {
8373 if(catchStack.cursor >= 0){
8374 longjmp(catchStack.envs[catchStack.cursor], 1);
8375 }
8376 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _realmainmodule");
8377 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 549);
8378 fatal_exit(1);
8379 }
8380 var = var1;
8381 RET_LABEL:;
8382 return var;
8383 }
8384 /* method abstract_compiler$AbstractCompiler$realmainmodule= for (self: AbstractCompiler, MModule) */
8385 void nitc___nitc__AbstractCompiler___realmainmodule_61d(val* self, val* p0) {
8386 self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___realmainmodule].val = p0; /* _realmainmodule on <self:AbstractCompiler> */
8387 RET_LABEL:;
8388 }
8389 /* method abstract_compiler$AbstractCompiler$modelbuilder for (self: AbstractCompiler): ModelBuilder */
8390 val* nitc___nitc__AbstractCompiler___modelbuilder(val* self) {
8391 val* var /* : ModelBuilder */;
8392 val* var1 /* : ModelBuilder */;
8393 var1 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:AbstractCompiler> */
8394 if (unlikely(var1 == NULL)) {
8395 if(catchStack.cursor >= 0){
8396 longjmp(catchStack.envs[catchStack.cursor], 1);
8397 }
8398 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
8399 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 552);
8400 fatal_exit(1);
8401 }
8402 var = var1;
8403 RET_LABEL:;
8404 return var;
8405 }
8406 /* method abstract_compiler$AbstractCompiler$modelbuilder= for (self: AbstractCompiler, ModelBuilder) */
8407 void nitc___nitc__AbstractCompiler___modelbuilder_61d(val* self, val* p0) {
8408 self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val = p0; /* _modelbuilder on <self:AbstractCompiler> */
8409 RET_LABEL:;
8410 }
8411 /* method abstract_compiler$AbstractCompiler$toolchain for (self: AbstractCompiler): Toolchain */
8412 val* nitc___nitc__AbstractCompiler___toolchain(val* self) {
8413 val* var /* : Toolchain */;
8414 val* var1 /* : Toolchain */;
8415 var1 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___toolchain].val; /* _toolchain on <self:AbstractCompiler> */
8416 if (unlikely(var1 == NULL)) {
8417 if(catchStack.cursor >= 0){
8418 longjmp(catchStack.envs[catchStack.cursor], 1);
8419 }
8420 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolchain");
8421 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 555);
8422 fatal_exit(1);
8423 }
8424 var = var1;
8425 RET_LABEL:;
8426 return var;
8427 }
8428 /* method abstract_compiler$AbstractCompiler$toolchain= for (self: AbstractCompiler, Toolchain) */
8429 void nitc___nitc__AbstractCompiler___toolchain_61d(val* self, val* p0) {
8430 self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___toolchain].val = p0; /* _toolchain on <self:AbstractCompiler> */
8431 RET_LABEL:;
8432 }
8433 /* method abstract_compiler$AbstractCompiler$target_platform for (self: AbstractCompiler): Platform */
8434 val* nitc___nitc__AbstractCompiler___target_platform(val* self) {
8435 val* var /* : Platform */;
8436 val* var1 /* : Platform */;
8437 var1 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___target_platform].val; /* _target_platform on <self:AbstractCompiler> */
8438 if (unlikely(var1 == NULL)) {
8439 if(catchStack.cursor >= 0){
8440 longjmp(catchStack.envs[catchStack.cursor], 1);
8441 }
8442 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _target_platform");
8443 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 563);
8444 fatal_exit(1);
8445 }
8446 var = var1;
8447 RET_LABEL:;
8448 return var;
8449 }
8450 /* method abstract_compiler$AbstractCompiler$target_platform= for (self: AbstractCompiler, Platform) */
8451 void nitc___nitc__AbstractCompiler___target_platform_61d(val* self, val* p0) {
8452 self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___target_platform].val = p0; /* _target_platform on <self:AbstractCompiler> */
8453 RET_LABEL:;
8454 }
8455 /* method abstract_compiler$AbstractCompiler$init for (self: AbstractCompiler) */
8456 void nitc___nitc__AbstractCompiler___core__kernel__Object__init(val* self) {
8457 val* var /* : MModule */;
8458 val* var2 /* : MModule */;
8459 val* var4 /* : Platform */;
8460 val* var5 /* : MModule */;
8461 val* var7 /* : MModule */;
8462 val* var8 /* : nullable Platform */;
8463 val* var9 /* : Platform */;
8464 {
8465 ((void(*)(val* self))(self->class->vft[COLOR_nitc___nitc__AbstractCompiler___core__kernel__Object__init]))(self); /* init on <self:AbstractCompiler>*/
8466 }
8467 {
8468 { /* Inline abstract_compiler$AbstractCompiler$mainmodule (self) on <self:AbstractCompiler> */
8469 var2 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:AbstractCompiler> */
8470 if (unlikely(var2 == NULL)) {
8471 if(catchStack.cursor >= 0){
8472 longjmp(catchStack.envs[catchStack.cursor], 1);
8473 }
8474 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
8475 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 545);
8476 fatal_exit(1);
8477 }
8478 var = var2;
8479 RET_LABEL1:(void)0;
8480 }
8481 }
8482 {
8483 { /* Inline abstract_compiler$AbstractCompiler$realmainmodule= (self,var) on <self:AbstractCompiler> */
8484 self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___realmainmodule].val = var; /* _realmainmodule on <self:AbstractCompiler> */
8485 RET_LABEL3:(void)0;
8486 }
8487 }
8488 {
8489 { /* Inline abstract_compiler$AbstractCompiler$mainmodule (self) on <self:AbstractCompiler> */
8490 var7 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:AbstractCompiler> */
8491 if (unlikely(var7 == NULL)) {
8492 if(catchStack.cursor >= 0){
8493 longjmp(catchStack.envs[catchStack.cursor], 1);
8494 }
8495 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
8496 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 545);
8497 fatal_exit(1);
8498 }
8499 var5 = var7;
8500 RET_LABEL6:(void)0;
8501 }
8502 }
8503 {
8504 var8 = nitc__platform___MModule___target_platform(var5);
8505 }
8506 if (var8!=NULL) {
8507 var4 = var8;
8508 } else {
8509 var9 = NEW_nitc__Platform(&type_nitc__Platform);
8510 {
8511 { /* Inline kernel$Object$init (var9) on <var9:Platform> */
8512 RET_LABEL10:(void)0;
8513 }
8514 }
8515 var4 = var9;
8516 }
8517 {
8518 { /* Inline abstract_compiler$AbstractCompiler$target_platform= (self,var4) on <self:AbstractCompiler> */
8519 self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___target_platform].val = var4; /* _target_platform on <self:AbstractCompiler> */
8520 RET_LABEL11:(void)0;
8521 }
8522 }
8523 RET_LABEL:;
8524 }
8525 /* method abstract_compiler$AbstractCompiler$new_file for (self: AbstractCompiler, String): CodeFile */
8526 val* nitc___nitc__AbstractCompiler___new_file(val* self, val* p0) {
8527 val* var /* : CodeFile */;
8528 val* var_name /* var name: String */;
8529 val* var1 /* : ModelBuilder */;
8530 val* var3 /* : ModelBuilder */;
8531 val* var4 /* : ToolContext */;
8532 val* var6 /* : ToolContext */;
8533 val* var7 /* : OptionBool */;
8534 val* var9 /* : OptionBool */;
8535 val* var10 /* : nullable Object */;
8536 val* var12 /* : nullable Object */;
8537 short int var13 /* : Bool */;
8538 val* var14 /* : Array[CodeFile] */;
8539 val* var16 /* : Array[CodeFile] */;
8540 short int var17 /* : Bool */;
8541 val* var18 /* : CodeFile */;
8542 val* var19 /* : MModule */;
8543 val* var21 /* : MModule */;
8544 val* var22 /* : String */;
8545 val* var_f /* var f: CodeFile */;
8546 val* var23 /* : Array[CodeFile] */;
8547 val* var25 /* : Array[CodeFile] */;
8548 val* var26 /* : Array[CodeFile] */;
8549 val* var28 /* : Array[CodeFile] */;
8550 val* var29 /* : nullable Object */;
8551 val* var30 /* : CodeFile */;
8552 val* var_f31 /* var f: CodeFile */;
8553 val* var32 /* : Array[CodeFile] */;
8554 val* var34 /* : Array[CodeFile] */;
8555 var_name = p0;
8556 {
8557 { /* Inline abstract_compiler$AbstractCompiler$modelbuilder (self) on <self:AbstractCompiler> */
8558 var3 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:AbstractCompiler> */
8559 if (unlikely(var3 == NULL)) {
8560 if(catchStack.cursor >= 0){
8561 longjmp(catchStack.envs[catchStack.cursor], 1);
8562 }
8563 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
8564 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 552);
8565 fatal_exit(1);
8566 }
8567 var1 = var3;
8568 RET_LABEL2:(void)0;
8569 }
8570 }
8571 {
8572 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (var1) on <var1:ModelBuilder> */
8573 var6 = var1->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var1:ModelBuilder> */
8574 if (unlikely(var6 == NULL)) {
8575 if(catchStack.cursor >= 0){
8576 longjmp(catchStack.envs[catchStack.cursor], 1);
8577 }
8578 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
8579 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
8580 fatal_exit(1);
8581 }
8582 var4 = var6;
8583 RET_LABEL5:(void)0;
8584 }
8585 }
8586 {
8587 { /* Inline abstract_compiler$ToolContext$opt_group_c_files (var4) on <var4:ToolContext> */
8588 var9 = var4->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_group_c_files].val; /* _opt_group_c_files on <var4:ToolContext> */
8589 if (unlikely(var9 == NULL)) {
8590 if(catchStack.cursor >= 0){
8591 longjmp(catchStack.envs[catchStack.cursor], 1);
8592 }
8593 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_group_c_files");
8594 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 42);
8595 fatal_exit(1);
8596 }
8597 var7 = var9;
8598 RET_LABEL8:(void)0;
8599 }
8600 }
8601 {
8602 { /* Inline opts$Option$value (var7) on <var7:OptionBool> */
8603 var12 = var7->attrs[COLOR_opts__Option___value].val; /* _value on <var7:OptionBool> */
8604 var10 = var12;
8605 RET_LABEL11:(void)0;
8606 }
8607 }
8608 var13 = (short int)((long)(var10)>>2);
8609 if (var13){
8610 {
8611 { /* Inline abstract_compiler$AbstractCompiler$files (self) on <self:AbstractCompiler> */
8612 var16 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___files].val; /* _files on <self:AbstractCompiler> */
8613 if (unlikely(var16 == NULL)) {
8614 if(catchStack.cursor >= 0){
8615 longjmp(catchStack.envs[catchStack.cursor], 1);
8616 }
8617 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files");
8618 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 592);
8619 fatal_exit(1);
8620 }
8621 var14 = var16;
8622 RET_LABEL15:(void)0;
8623 }
8624 }
8625 {
8626 var17 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var14);
8627 }
8628 if (var17){
8629 var18 = NEW_nitc__CodeFile(&type_nitc__CodeFile);
8630 {
8631 { /* Inline abstract_compiler$AbstractCompiler$mainmodule (self) on <self:AbstractCompiler> */
8632 var21 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:AbstractCompiler> */
8633 if (unlikely(var21 == NULL)) {
8634 if(catchStack.cursor >= 0){
8635 longjmp(catchStack.envs[catchStack.cursor], 1);
8636 }
8637 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
8638 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 545);
8639 fatal_exit(1);
8640 }
8641 var19 = var21;
8642 RET_LABEL20:(void)0;
8643 }
8644 }
8645 {
8646 var22 = nitc___nitc__MModule___nitc__model_base__MEntity__c_name(var19);
8647 }
8648 {
8649 ((void(*)(val* self, val* p0))(var18->class->vft[COLOR_nitc__abstract_compiler__CodeFile__name_61d]))(var18, var22); /* name= on <var18:CodeFile>*/
8650 }
8651 {
8652 ((void(*)(val* self))(var18->class->vft[COLOR_core__kernel__Object__init]))(var18); /* init on <var18:CodeFile>*/
8653 }
8654 var_f = var18;
8655 {
8656 { /* Inline abstract_compiler$AbstractCompiler$files (self) on <self:AbstractCompiler> */
8657 var25 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___files].val; /* _files on <self:AbstractCompiler> */
8658 if (unlikely(var25 == NULL)) {
8659 if(catchStack.cursor >= 0){
8660 longjmp(catchStack.envs[catchStack.cursor], 1);
8661 }
8662 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files");
8663 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 592);
8664 fatal_exit(1);
8665 }
8666 var23 = var25;
8667 RET_LABEL24:(void)0;
8668 }
8669 }
8670 {
8671 core___core__Array___core__abstract_collection__SimpleCollection__add(var23, var_f); /* Direct call array$Array$add on <var23:Array[CodeFile]>*/
8672 }
8673 } else {
8674 }
8675 {
8676 { /* Inline abstract_compiler$AbstractCompiler$files (self) on <self:AbstractCompiler> */
8677 var28 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___files].val; /* _files on <self:AbstractCompiler> */
8678 if (unlikely(var28 == NULL)) {
8679 if(catchStack.cursor >= 0){
8680 longjmp(catchStack.envs[catchStack.cursor], 1);
8681 }
8682 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files");
8683 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 592);
8684 fatal_exit(1);
8685 }
8686 var26 = var28;
8687 RET_LABEL27:(void)0;
8688 }
8689 }
8690 {
8691 var29 = core___core__SequenceRead___Collection__first(var26);
8692 }
8693 var = var29;
8694 goto RET_LABEL;
8695 } else {
8696 }
8697 var30 = NEW_nitc__CodeFile(&type_nitc__CodeFile);
8698 {
8699 ((void(*)(val* self, val* p0))(var30->class->vft[COLOR_nitc__abstract_compiler__CodeFile__name_61d]))(var30, var_name); /* name= on <var30:CodeFile>*/
8700 }
8701 {
8702 ((void(*)(val* self))(var30->class->vft[COLOR_core__kernel__Object__init]))(var30); /* init on <var30:CodeFile>*/
8703 }
8704 var_f31 = var30;
8705 {
8706 { /* Inline abstract_compiler$AbstractCompiler$files (self) on <self:AbstractCompiler> */
8707 var34 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___files].val; /* _files on <self:AbstractCompiler> */
8708 if (unlikely(var34 == NULL)) {
8709 if(catchStack.cursor >= 0){
8710 longjmp(catchStack.envs[catchStack.cursor], 1);
8711 }
8712 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files");
8713 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 592);
8714 fatal_exit(1);
8715 }
8716 var32 = var34;
8717 RET_LABEL33:(void)0;
8718 }
8719 }
8720 {
8721 core___core__Array___core__abstract_collection__SimpleCollection__add(var32, var_f31); /* Direct call array$Array$add on <var32:Array[CodeFile]>*/
8722 }
8723 var = var_f31;
8724 goto RET_LABEL;
8725 RET_LABEL:;
8726 return var;
8727 }
8728 /* method abstract_compiler$AbstractCompiler$files for (self: AbstractCompiler): Array[CodeFile] */
8729 val* nitc___nitc__AbstractCompiler___files(val* self) {
8730 val* var /* : Array[CodeFile] */;
8731 val* var1 /* : Array[CodeFile] */;
8732 var1 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___files].val; /* _files on <self:AbstractCompiler> */
8733 if (unlikely(var1 == NULL)) {
8734 if(catchStack.cursor >= 0){
8735 longjmp(catchStack.envs[catchStack.cursor], 1);
8736 }
8737 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files");
8738 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 592);
8739 fatal_exit(1);
8740 }
8741 var = var1;
8742 RET_LABEL:;
8743 return var;
8744 }
8745 /* method abstract_compiler$AbstractCompiler$header for (self: AbstractCompiler): CodeWriter */
8746 val* nitc___nitc__AbstractCompiler___header(val* self) {
8747 val* var /* : CodeWriter */;
8748 val* var1 /* : CodeWriter */;
8749 var1 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:AbstractCompiler> */
8750 if (unlikely(var1 == NULL)) {
8751 if(catchStack.cursor >= 0){
8752 longjmp(catchStack.envs[catchStack.cursor], 1);
8753 }
8754 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
8755 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 599);
8756 fatal_exit(1);
8757 }
8758 var = var1;
8759 RET_LABEL:;
8760 return var;
8761 }
8762 /* method abstract_compiler$AbstractCompiler$header= for (self: AbstractCompiler, CodeWriter) */
8763 void nitc___nitc__AbstractCompiler___header_61d(val* self, val* p0) {
8764 self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val = p0; /* _header on <self:AbstractCompiler> */
8765 RET_LABEL:;
8766 }
8767 /* method abstract_compiler$AbstractCompiler$linker_script for (self: AbstractCompiler): Array[String] */
8768 val* nitc___nitc__AbstractCompiler___linker_script(val* self) {
8769 val* var /* : Array[String] */;
8770 val* var1 /* : Array[String] */;
8771 var1 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___linker_script].val; /* _linker_script on <self:AbstractCompiler> */
8772 if (unlikely(var1 == NULL)) {
8773 if(catchStack.cursor >= 0){
8774 longjmp(catchStack.envs[catchStack.cursor], 1);
8775 }
8776 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _linker_script");
8777 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 602);
8778 fatal_exit(1);
8779 }
8780 var = var1;
8781 RET_LABEL:;
8782 return var;
8783 }
8784 /* method abstract_compiler$AbstractCompiler$provide_declaration for (self: AbstractCompiler, String, String) */
8785 void nitc___nitc__AbstractCompiler___provide_declaration(val* self, val* p0, val* p1) {
8786 val* var_key /* var key: String */;
8787 val* var_s /* var s: String */;
8788 val* var /* : HashMap[String, String] */;
8789 val* var2 /* : HashMap[String, String] */;
8790 short int var3 /* : Bool */;
8791 val* var4 /* : HashMap[String, String] */;
8792 val* var6 /* : HashMap[String, String] */;
8793 val* var7 /* : nullable Object */;
8794 short int var8 /* : Bool */;
8795 val* var9 /* : HashMap[String, String] */;
8796 val* var11 /* : HashMap[String, String] */;
8797 var_key = p0;
8798 var_s = p1;
8799 {
8800 { /* Inline abstract_compiler$AbstractCompiler$provided_declarations (self) on <self:AbstractCompiler> */
8801 var2 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___provided_declarations].val; /* _provided_declarations on <self:AbstractCompiler> */
8802 if (unlikely(var2 == NULL)) {
8803 if(catchStack.cursor >= 0){
8804 longjmp(catchStack.envs[catchStack.cursor], 1);
8805 }
8806 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _provided_declarations");
8807 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 615);
8808 fatal_exit(1);
8809 }
8810 var = var2;
8811 RET_LABEL1:(void)0;
8812 }
8813 }
8814 {
8815 var3 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var, var_key);
8816 }
8817 if (var3){
8818 {
8819 { /* Inline abstract_compiler$AbstractCompiler$provided_declarations (self) on <self:AbstractCompiler> */
8820 var6 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___provided_declarations].val; /* _provided_declarations on <self:AbstractCompiler> */
8821 if (unlikely(var6 == NULL)) {
8822 if(catchStack.cursor >= 0){
8823 longjmp(catchStack.envs[catchStack.cursor], 1);
8824 }
8825 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _provided_declarations");
8826 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 615);
8827 fatal_exit(1);
8828 }
8829 var4 = var6;
8830 RET_LABEL5:(void)0;
8831 }
8832 }
8833 {
8834 var7 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var4, var_key);
8835 }
8836 {
8837 var8 = ((short int(*)(val* self, val* p0))(var7->class->vft[COLOR_core__kernel__Object___61d_61d]))(var7, var_s); /* == on <var7:nullable Object(String)>*/
8838 }
8839 if (unlikely(!var8)) {
8840 if(catchStack.cursor >= 0){
8841 longjmp(catchStack.envs[catchStack.cursor], 1);
8842 }
8843 PRINT_ERROR("Runtime error: %s", "Assert failed");
8844 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 610);
8845 fatal_exit(1);
8846 }
8847 } else {
8848 }
8849 {
8850 { /* Inline abstract_compiler$AbstractCompiler$provided_declarations (self) on <self:AbstractCompiler> */
8851 var11 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___provided_declarations].val; /* _provided_declarations on <self:AbstractCompiler> */
8852 if (unlikely(var11 == NULL)) {
8853 if(catchStack.cursor >= 0){
8854 longjmp(catchStack.envs[catchStack.cursor], 1);
8855 }
8856 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _provided_declarations");
8857 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 615);
8858 fatal_exit(1);
8859 }
8860 var9 = var11;
8861 RET_LABEL10:(void)0;
8862 }
8863 }
8864 {
8865 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]>*/
8866 }
8867 RET_LABEL:;
8868 }
8869 /* method abstract_compiler$AbstractCompiler$provided_declarations for (self: AbstractCompiler): HashMap[String, String] */
8870 val* nitc___nitc__AbstractCompiler___provided_declarations(val* self) {
8871 val* var /* : HashMap[String, String] */;
8872 val* var1 /* : HashMap[String, String] */;
8873 var1 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___provided_declarations].val; /* _provided_declarations on <self:AbstractCompiler> */
8874 if (unlikely(var1 == NULL)) {
8875 if(catchStack.cursor >= 0){
8876 longjmp(catchStack.envs[catchStack.cursor], 1);
8877 }
8878 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _provided_declarations");
8879 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 615);
8880 fatal_exit(1);
8881 }
8882 var = var1;
8883 RET_LABEL:;
8884 return var;
8885 }
8886 /* method abstract_compiler$AbstractCompiler$requirers_of_declarations for (self: AbstractCompiler): HashMap[String, ANode] */
8887 val* nitc___nitc__AbstractCompiler___requirers_of_declarations(val* self) {
8888 val* var /* : HashMap[String, ANode] */;
8889 val* var1 /* : HashMap[String, ANode] */;
8890 var1 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___requirers_of_declarations].val; /* _requirers_of_declarations on <self:AbstractCompiler> */
8891 if (unlikely(var1 == NULL)) {
8892 if(catchStack.cursor >= 0){
8893 longjmp(catchStack.envs[catchStack.cursor], 1);
8894 }
8895 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _requirers_of_declarations");
8896 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 617);
8897 fatal_exit(1);
8898 }
8899 var = var1;
8900 RET_LABEL:;
8901 return var;
8902 }
8903 /* method abstract_compiler$AbstractCompiler$build_c_to_nit_bindings for (self: AbstractCompiler) */
8904 void nitc___nitc__AbstractCompiler___build_c_to_nit_bindings(val* self) {
8905 val* var /* : Toolchain */;
8906 val* var2 /* : Toolchain */;
8907 val* var3 /* : String */;
8908 val* var_compile_dir /* var compile_dir: String */;
8909 val* var4 /* : FileWriter */;
8910 val* var5 /* : NativeArray[String] */;
8911 static val* varonce;
8912 static val* varonce6;
8913 val* var7 /* : String */;
8914 char* var8 /* : CString */;
8915 val* var9 /* : String */;
8916 val* var10 /* : nullable Int */;
8917 val* var11 /* : nullable Int */;
8918 val* var12 /* : nullable Bool */;
8919 val* var13 /* : nullable Bool */;
8920 val* var14 /* : String */;
8921 val* var_stream /* var stream: FileWriter */;
8922 static val* varonce15;
8923 val* var16 /* : String */;
8924 char* var17 /* : CString */;
8925 val* var18 /* : String */;
8926 val* var19 /* : nullable Int */;
8927 val* var20 /* : nullable Int */;
8928 val* var21 /* : nullable Bool */;
8929 val* var22 /* : nullable Bool */;
8930 static val* varonce23;
8931 val* var24 /* : String */;
8932 char* var25 /* : CString */;
8933 val* var26 /* : String */;
8934 val* var27 /* : nullable Int */;
8935 val* var28 /* : nullable Int */;
8936 val* var29 /* : nullable Bool */;
8937 val* var30 /* : nullable Bool */;
8938 static val* varonce31;
8939 val* var32 /* : String */;
8940 char* var33 /* : CString */;
8941 val* var34 /* : String */;
8942 val* var35 /* : nullable Int */;
8943 val* var36 /* : nullable Int */;
8944 val* var37 /* : nullable Bool */;
8945 val* var38 /* : nullable Bool */;
8946 static val* varonce39;
8947 val* var40 /* : String */;
8948 char* var41 /* : CString */;
8949 val* var42 /* : String */;
8950 val* var43 /* : nullable Int */;
8951 val* var44 /* : nullable Int */;
8952 val* var45 /* : nullable Bool */;
8953 val* var46 /* : nullable Bool */;
8954 static val* varonce47;
8955 val* var48 /* : String */;
8956 char* var49 /* : CString */;
8957 val* var50 /* : String */;
8958 val* var51 /* : nullable Int */;
8959 val* var52 /* : nullable Int */;
8960 val* var53 /* : nullable Bool */;
8961 val* var54 /* : nullable Bool */;
8962 static val* varonce55;
8963 val* var56 /* : String */;
8964 char* var57 /* : CString */;
8965 val* var58 /* : String */;
8966 val* var59 /* : nullable Int */;
8967 val* var60 /* : nullable Int */;
8968 val* var61 /* : nullable Bool */;
8969 val* var62 /* : nullable Bool */;
8970 static val* varonce63;
8971 val* var64 /* : String */;
8972 char* var65 /* : CString */;
8973 val* var66 /* : String */;
8974 val* var67 /* : nullable Int */;
8975 val* var68 /* : nullable Int */;
8976 val* var69 /* : nullable Bool */;
8977 val* var70 /* : nullable Bool */;
8978 static val* varonce71;
8979 val* var72 /* : String */;
8980 char* var73 /* : CString */;
8981 val* var74 /* : String */;
8982 val* var75 /* : nullable Int */;
8983 val* var76 /* : nullable Int */;
8984 val* var77 /* : nullable Bool */;
8985 val* var78 /* : nullable Bool */;
8986 val* var80 /* : NativeArray[String] */;
8987 static val* varonce79;
8988 static val* varonce81;
8989 val* var82 /* : String */;
8990 char* var83 /* : CString */;
8991 val* var84 /* : String */;
8992 val* var85 /* : nullable Int */;
8993 val* var86 /* : nullable Int */;
8994 val* var87 /* : nullable Bool */;
8995 val* var88 /* : nullable Bool */;
8996 static val* varonce89;
8997 val* var90 /* : String */;
8998 char* var91 /* : CString */;
8999 val* var92 /* : String */;
9000 val* var93 /* : nullable Int */;
9001 val* var94 /* : nullable Int */;
9002 val* var95 /* : nullable Bool */;
9003 val* var96 /* : nullable Bool */;
9004 val* var97 /* : HashMap[String, String] */;
9005 val* var99 /* : HashMap[String, String] */;
9006 long var100 /* : Int */;
9007 val* var101 /* : String */;
9008 val* var102 /* : String */;
9009 val* var103 /* : HashMap[String, String] */;
9010 val* var105 /* : HashMap[String, String] */;
9011 val* var106 /* : RemovableCollection[nullable Object] */;
9012 val* var_ /* var : RemovableCollection[String] */;
9013 val* var107 /* : Iterator[nullable Object] */;
9014 val* var_108 /* var : Iterator[String] */;
9015 short int var109 /* : Bool */;
9016 val* var110 /* : nullable Object */;
9017 val* var_i /* var i: String */;
9018 static val* varonce111;
9019 val* var112 /* : String */;
9020 char* var113 /* : CString */;
9021 val* var114 /* : String */;
9022 val* var115 /* : nullable Int */;
9023 val* var116 /* : nullable Int */;
9024 val* var117 /* : nullable Bool */;
9025 val* var118 /* : nullable Bool */;
9026 val* var119 /* : String */;
9027 static val* varonce120;
9028 val* var121 /* : String */;
9029 char* var122 /* : CString */;
9030 val* var123 /* : String */;
9031 val* var124 /* : nullable Int */;
9032 val* var125 /* : nullable Int */;
9033 val* var126 /* : nullable Bool */;
9034 val* var127 /* : nullable Bool */;
9035 val* var128 /* : HashMap[String, String] */;
9036 val* var130 /* : HashMap[String, String] */;
9037 val* var131 /* : nullable Object */;
9038 val* var132 /* : String */;
9039 static val* varonce133;
9040 val* var134 /* : String */;
9041 char* var135 /* : CString */;
9042 val* var136 /* : String */;
9043 val* var137 /* : nullable Int */;
9044 val* var138 /* : nullable Int */;
9045 val* var139 /* : nullable Bool */;
9046 val* var140 /* : nullable Bool */;
9047 static val* varonce141;
9048 val* var142 /* : String */;
9049 char* var143 /* : CString */;
9050 val* var144 /* : String */;
9051 val* var145 /* : nullable Int */;
9052 val* var146 /* : nullable Int */;
9053 val* var147 /* : nullable Bool */;
9054 val* var148 /* : nullable Bool */;
9055 static val* varonce149;
9056 val* var150 /* : String */;
9057 char* var151 /* : CString */;
9058 val* var152 /* : String */;
9059 val* var153 /* : nullable Int */;
9060 val* var154 /* : nullable Int */;
9061 val* var155 /* : nullable Bool */;
9062 val* var156 /* : nullable Bool */;
9063 val* var158 /* : NativeArray[String] */;
9064 static val* varonce157;
9065 static val* varonce159;
9066 val* var160 /* : String */;
9067 char* var161 /* : CString */;
9068 val* var162 /* : String */;
9069 val* var163 /* : nullable Int */;
9070 val* var164 /* : nullable Int */;
9071 val* var165 /* : nullable Bool */;
9072 val* var166 /* : nullable Bool */;
9073 static val* varonce167;
9074 val* var168 /* : String */;
9075 char* var169 /* : CString */;
9076 val* var170 /* : String */;
9077 val* var171 /* : nullable Int */;
9078 val* var172 /* : nullable Int */;
9079 val* var173 /* : nullable Bool */;
9080 val* var174 /* : nullable Bool */;
9081 val* var175 /* : HashMap[String, String] */;
9082 val* var177 /* : HashMap[String, String] */;
9083 long var178 /* : Int */;
9084 val* var179 /* : String */;
9085 val* var180 /* : String */;
9086 static val* varonce181;
9087 val* var182 /* : String */;
9088 char* var183 /* : CString */;
9089 val* var184 /* : String */;
9090 val* var185 /* : nullable Int */;
9091 val* var186 /* : nullable Int */;
9092 val* var187 /* : nullable Bool */;
9093 val* var188 /* : nullable Bool */;
9094 static val* varonce189;
9095 val* var190 /* : String */;
9096 char* var191 /* : CString */;
9097 val* var192 /* : String */;
9098 val* var193 /* : nullable Int */;
9099 val* var194 /* : nullable Int */;
9100 val* var195 /* : nullable Bool */;
9101 val* var196 /* : nullable Bool */;
9102 static val* varonce197;
9103 val* var198 /* : String */;
9104 char* var199 /* : CString */;
9105 val* var200 /* : String */;
9106 val* var201 /* : nullable Int */;
9107 val* var202 /* : nullable Int */;
9108 val* var203 /* : nullable Bool */;
9109 val* var204 /* : nullable Bool */;
9110 static val* varonce205;
9111 val* var206 /* : String */;
9112 char* var207 /* : CString */;
9113 val* var208 /* : String */;
9114 val* var209 /* : nullable Int */;
9115 val* var210 /* : nullable Int */;
9116 val* var211 /* : nullable Bool */;
9117 val* var212 /* : nullable Bool */;
9118 static val* varonce213;
9119 val* var214 /* : String */;
9120 char* var215 /* : CString */;
9121 val* var216 /* : String */;
9122 val* var217 /* : nullable Int */;
9123 val* var218 /* : nullable Int */;
9124 val* var219 /* : nullable Bool */;
9125 val* var220 /* : nullable Bool */;
9126 static val* varonce221;
9127 val* var222 /* : String */;
9128 char* var223 /* : CString */;
9129 val* var224 /* : String */;
9130 val* var225 /* : nullable Int */;
9131 val* var226 /* : nullable Int */;
9132 val* var227 /* : nullable Bool */;
9133 val* var228 /* : nullable Bool */;
9134 static val* varonce229;
9135 val* var230 /* : String */;
9136 char* var231 /* : CString */;
9137 val* var232 /* : String */;
9138 val* var233 /* : nullable Int */;
9139 val* var234 /* : nullable Int */;
9140 val* var235 /* : nullable Bool */;
9141 val* var236 /* : nullable Bool */;
9142 static val* varonce237;
9143 val* var238 /* : String */;
9144 char* var239 /* : CString */;
9145 val* var240 /* : String */;
9146 val* var241 /* : nullable Int */;
9147 val* var242 /* : nullable Int */;
9148 val* var243 /* : nullable Bool */;
9149 val* var244 /* : nullable Bool */;
9150 val* var245 /* : FileWriter */;
9151 val* var247 /* : NativeArray[String] */;
9152 static val* varonce246;
9153 static val* varonce248;
9154 val* var249 /* : String */;
9155 char* var250 /* : CString */;
9156 val* var251 /* : String */;
9157 val* var252 /* : nullable Int */;
9158 val* var253 /* : nullable Int */;
9159 val* var254 /* : nullable Bool */;
9160 val* var255 /* : nullable Bool */;
9161 val* var256 /* : String */;
9162 static val* varonce257;
9163 val* var258 /* : String */;
9164 char* var259 /* : CString */;
9165 val* var260 /* : String */;
9166 val* var261 /* : nullable Int */;
9167 val* var262 /* : nullable Int */;
9168 val* var263 /* : nullable Bool */;
9169 val* var264 /* : nullable Bool */;
9170 val* var265 /* : Array[ExternFile] */;
9171 val* var267 /* : Array[ExternFile] */;
9172 val* var268 /* : ExternCFile */;
9173 val* var270 /* : NativeArray[String] */;
9174 static val* varonce269;
9175 static val* varonce271;
9176 val* var272 /* : String */;
9177 char* var273 /* : CString */;
9178 val* var274 /* : String */;
9179 val* var275 /* : nullable Int */;
9180 val* var276 /* : nullable Int */;
9181 val* var277 /* : nullable Bool */;
9182 val* var278 /* : nullable Bool */;
9183 val* var279 /* : String */;
9184 static val* varonce280;
9185 val* var281 /* : String */;
9186 char* var282 /* : CString */;
9187 val* var283 /* : String */;
9188 val* var284 /* : nullable Int */;
9189 val* var285 /* : nullable Int */;
9190 val* var286 /* : nullable Bool */;
9191 val* var287 /* : nullable Bool */;
9192 {
9193 { /* Inline abstract_compiler$AbstractCompiler$toolchain (self) on <self:AbstractCompiler> */
9194 var2 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___toolchain].val; /* _toolchain on <self:AbstractCompiler> */
9195 if (unlikely(var2 == NULL)) {
9196 if(catchStack.cursor >= 0){
9197 longjmp(catchStack.envs[catchStack.cursor], 1);
9198 }
9199 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolchain");
9200 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 555);
9201 fatal_exit(1);
9202 }
9203 var = var2;
9204 RET_LABEL1:(void)0;
9205 }
9206 }
9207 {
9208 var3 = nitc___nitc__Toolchain___compile_dir(var);
9209 }
9210 var_compile_dir = var3;
9211 var4 = NEW_core__FileWriter(&type_core__FileWriter);
9212 if (unlikely(varonce==NULL)) {
9213 var5 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
9214 if (likely(varonce6!=NULL)) {
9215 var7 = varonce6;
9216 } else {
9217 var8 = "/c_functions_hash.c";
9218 var10 = (val*)(19l<<2|1);
9219 var11 = (val*)(19l<<2|1);
9220 var12 = (val*)((long)(0)<<2|3);
9221 var13 = (val*)((long)(0)<<2|3);
9222 var9 = core__flat___CString___to_s_unsafe(var8, var10, var11, var12, var13);
9223 var7 = var9;
9224 varonce6 = var7;
9225 }
9226 ((struct instance_core__NativeArray*)var5)->values[1]=var7;
9227 } else {
9228 var5 = varonce;
9229 varonce = NULL;
9230 }
9231 ((struct instance_core__NativeArray*)var5)->values[0]=var_compile_dir;
9232 {
9233 var14 = ((val*(*)(val* self))(var5->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var5); /* native_to_s on <var5:NativeArray[String]>*/
9234 }
9235 varonce = var5;
9236 {
9237 core___core__FileWriter___open(var4, var14); /* Direct call file$FileWriter$open on <var4:FileWriter>*/
9238 }
9239 var_stream = var4;
9240 if (likely(varonce15!=NULL)) {
9241 var16 = varonce15;
9242 } else {
9243 var17 = "#include <string.h>\n";
9244 var19 = (val*)(20l<<2|1);
9245 var20 = (val*)(20l<<2|1);
9246 var21 = (val*)((long)(0)<<2|3);
9247 var22 = (val*)((long)(0)<<2|3);
9248 var18 = core__flat___CString___to_s_unsafe(var17, var19, var20, var21, var22);
9249 var16 = var18;
9250 varonce15 = var16;
9251 }
9252 {
9253 core___core__FileWriter___core__stream__Writer__write(var_stream, var16); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9254 }
9255 if (likely(varonce23!=NULL)) {
9256 var24 = varonce23;
9257 } else {
9258 var25 = "#include <stdlib.h>\n";
9259 var27 = (val*)(20l<<2|1);
9260 var28 = (val*)(20l<<2|1);
9261 var29 = (val*)((long)(0)<<2|3);
9262 var30 = (val*)((long)(0)<<2|3);
9263 var26 = core__flat___CString___to_s_unsafe(var25, var27, var28, var29, var30);
9264 var24 = var26;
9265 varonce23 = var24;
9266 }
9267 {
9268 core___core__FileWriter___core__stream__Writer__write(var_stream, var24); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9269 }
9270 if (likely(varonce31!=NULL)) {
9271 var32 = varonce31;
9272 } else {
9273 var33 = "#include \"c_functions_hash.h\"\n";
9274 var35 = (val*)(30l<<2|1);
9275 var36 = (val*)(30l<<2|1);
9276 var37 = (val*)((long)(0)<<2|3);
9277 var38 = (val*)((long)(0)<<2|3);
9278 var34 = core__flat___CString___to_s_unsafe(var33, var35, var36, var37, var38);
9279 var32 = var34;
9280 varonce31 = var32;
9281 }
9282 {
9283 core___core__FileWriter___core__stream__Writer__write(var_stream, var32); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9284 }
9285 if (likely(varonce39!=NULL)) {
9286 var40 = varonce39;
9287 } else {
9288 var41 = "typedef struct C_Nit_Names{char* name; char* nit_name;}C_Nit_Names;\n";
9289 var43 = (val*)(68l<<2|1);
9290 var44 = (val*)(68l<<2|1);
9291 var45 = (val*)((long)(0)<<2|3);
9292 var46 = (val*)((long)(0)<<2|3);
9293 var42 = core__flat___CString___to_s_unsafe(var41, var43, var44, var45, var46);
9294 var40 = var42;
9295 varonce39 = var40;
9296 }
9297 {
9298 core___core__FileWriter___core__stream__Writer__write(var_stream, var40); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9299 }
9300 if (likely(varonce47!=NULL)) {
9301 var48 = varonce47;
9302 } else {
9303 var49 = "const char* get_nit_name(register const char* procproc, register unsigned int len){\n";
9304 var51 = (val*)(84l<<2|1);
9305 var52 = (val*)(84l<<2|1);
9306 var53 = (val*)((long)(0)<<2|3);
9307 var54 = (val*)((long)(0)<<2|3);
9308 var50 = core__flat___CString___to_s_unsafe(var49, var51, var52, var53, var54);
9309 var48 = var50;
9310 varonce47 = var48;
9311 }
9312 {
9313 core___core__FileWriter___core__stream__Writer__write(var_stream, var48); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9314 }
9315 if (likely(varonce55!=NULL)) {
9316 var56 = varonce55;
9317 } else {
9318 var57 = "char* procname = malloc(len+1);";
9319 var59 = (val*)(31l<<2|1);
9320 var60 = (val*)(31l<<2|1);
9321 var61 = (val*)((long)(0)<<2|3);
9322 var62 = (val*)((long)(0)<<2|3);
9323 var58 = core__flat___CString___to_s_unsafe(var57, var59, var60, var61, var62);
9324 var56 = var58;
9325 varonce55 = var56;
9326 }
9327 {
9328 core___core__FileWriter___core__stream__Writer__write(var_stream, var56); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9329 }
9330 if (likely(varonce63!=NULL)) {
9331 var64 = varonce63;
9332 } else {
9333 var65 = "memcpy(procname, procproc, len);";
9334 var67 = (val*)(32l<<2|1);
9335 var68 = (val*)(32l<<2|1);
9336 var69 = (val*)((long)(0)<<2|3);
9337 var70 = (val*)((long)(0)<<2|3);
9338 var66 = core__flat___CString___to_s_unsafe(var65, var67, var68, var69, var70);
9339 var64 = var66;
9340 varonce63 = var64;
9341 }
9342 {
9343 core___core__FileWriter___core__stream__Writer__write(var_stream, var64); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9344 }
9345 if (likely(varonce71!=NULL)) {
9346 var72 = varonce71;
9347 } else {
9348 var73 = "procname[len] = \'\\0\';";
9349 var75 = (val*)(21l<<2|1);
9350 var76 = (val*)(21l<<2|1);
9351 var77 = (val*)((long)(0)<<2|3);
9352 var78 = (val*)((long)(0)<<2|3);
9353 var74 = core__flat___CString___to_s_unsafe(var73, var75, var76, var77, var78);
9354 var72 = var74;
9355 varonce71 = var72;
9356 }
9357 {
9358 core___core__FileWriter___core__stream__Writer__write(var_stream, var72); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9359 }
9360 if (unlikely(varonce79==NULL)) {
9361 var80 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
9362 if (likely(varonce81!=NULL)) {
9363 var82 = varonce81;
9364 } else {
9365 var83 = "static const C_Nit_Names map[";
9366 var85 = (val*)(29l<<2|1);
9367 var86 = (val*)(29l<<2|1);
9368 var87 = (val*)((long)(0)<<2|3);
9369 var88 = (val*)((long)(0)<<2|3);
9370 var84 = core__flat___CString___to_s_unsafe(var83, var85, var86, var87, var88);
9371 var82 = var84;
9372 varonce81 = var82;
9373 }
9374 ((struct instance_core__NativeArray*)var80)->values[0]=var82;
9375 if (likely(varonce89!=NULL)) {
9376 var90 = varonce89;
9377 } else {
9378 var91 = "] = {\n";
9379 var93 = (val*)(6l<<2|1);
9380 var94 = (val*)(6l<<2|1);
9381 var95 = (val*)((long)(0)<<2|3);
9382 var96 = (val*)((long)(0)<<2|3);
9383 var92 = core__flat___CString___to_s_unsafe(var91, var93, var94, var95, var96);
9384 var90 = var92;
9385 varonce89 = var90;
9386 }
9387 ((struct instance_core__NativeArray*)var80)->values[2]=var90;
9388 } else {
9389 var80 = varonce79;
9390 varonce79 = NULL;
9391 }
9392 {
9393 { /* Inline abstract_compiler$AbstractCompiler$names (self) on <self:AbstractCompiler> */
9394 var99 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___names].val; /* _names on <self:AbstractCompiler> */
9395 if (unlikely(var99 == NULL)) {
9396 if(catchStack.cursor >= 0){
9397 longjmp(catchStack.envs[catchStack.cursor], 1);
9398 }
9399 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
9400 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 542);
9401 fatal_exit(1);
9402 }
9403 var97 = var99;
9404 RET_LABEL98:(void)0;
9405 }
9406 }
9407 {
9408 var100 = core___core__HashMap___core__abstract_collection__MapRead__length(var97);
9409 }
9410 var101 = core__flat___Int___core__abstract_text__Object__to_s(var100);
9411 ((struct instance_core__NativeArray*)var80)->values[1]=var101;
9412 {
9413 var102 = ((val*(*)(val* self))(var80->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var80); /* native_to_s on <var80:NativeArray[String]>*/
9414 }
9415 varonce79 = var80;
9416 {
9417 core___core__FileWriter___core__stream__Writer__write(var_stream, var102); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9418 }
9419 {
9420 { /* Inline abstract_compiler$AbstractCompiler$names (self) on <self:AbstractCompiler> */
9421 var105 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___names].val; /* _names on <self:AbstractCompiler> */
9422 if (unlikely(var105 == NULL)) {
9423 if(catchStack.cursor >= 0){
9424 longjmp(catchStack.envs[catchStack.cursor], 1);
9425 }
9426 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
9427 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 542);
9428 fatal_exit(1);
9429 }
9430 var103 = var105;
9431 RET_LABEL104:(void)0;
9432 }
9433 }
9434 {
9435 var106 = core___core__HashMap___core__abstract_collection__MapRead__keys(var103);
9436 }
9437 var_ = var106;
9438 {
9439 var107 = ((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]>*/
9440 }
9441 var_108 = var107;
9442 for(;;) {
9443 {
9444 var109 = ((short int(*)(val* self))((((long)var_108&3)?class_info[((long)var_108&3)]:var_108->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_108); /* is_ok on <var_108:Iterator[String]>*/
9445 }
9446 if (var109){
9447 } else {
9448 goto BREAK_label;
9449 }
9450 {
9451 var110 = ((val*(*)(val* self))((((long)var_108&3)?class_info[((long)var_108&3)]:var_108->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_108); /* item on <var_108:Iterator[String]>*/
9452 }
9453 var_i = var110;
9454 if (likely(varonce111!=NULL)) {
9455 var112 = varonce111;
9456 } else {
9457 var113 = "{\"";
9458 var115 = (val*)(2l<<2|1);
9459 var116 = (val*)(2l<<2|1);
9460 var117 = (val*)((long)(0)<<2|3);
9461 var118 = (val*)((long)(0)<<2|3);
9462 var114 = core__flat___CString___to_s_unsafe(var113, var115, var116, var117, var118);
9463 var112 = var114;
9464 varonce111 = var112;
9465 }
9466 {
9467 core___core__FileWriter___core__stream__Writer__write(var_stream, var112); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9468 }
9469 {
9470 var119 = ((val*(*)(val* self))(var_i->class->vft[COLOR_core__abstract_text__Text__escape_to_c]))(var_i); /* escape_to_c on <var_i:String>*/
9471 }
9472 {
9473 core___core__FileWriter___core__stream__Writer__write(var_stream, var119); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9474 }
9475 if (likely(varonce120!=NULL)) {
9476 var121 = varonce120;
9477 } else {
9478 var122 = "\",\"";
9479 var124 = (val*)(3l<<2|1);
9480 var125 = (val*)(3l<<2|1);
9481 var126 = (val*)((long)(0)<<2|3);
9482 var127 = (val*)((long)(0)<<2|3);
9483 var123 = core__flat___CString___to_s_unsafe(var122, var124, var125, var126, var127);
9484 var121 = var123;
9485 varonce120 = var121;
9486 }
9487 {
9488 core___core__FileWriter___core__stream__Writer__write(var_stream, var121); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9489 }
9490 {
9491 { /* Inline abstract_compiler$AbstractCompiler$names (self) on <self:AbstractCompiler> */
9492 var130 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___names].val; /* _names on <self:AbstractCompiler> */
9493 if (unlikely(var130 == NULL)) {
9494 if(catchStack.cursor >= 0){
9495 longjmp(catchStack.envs[catchStack.cursor], 1);
9496 }
9497 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
9498 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 542);
9499 fatal_exit(1);
9500 }
9501 var128 = var130;
9502 RET_LABEL129:(void)0;
9503 }
9504 }
9505 {
9506 var131 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var128, var_i);
9507 }
9508 {
9509 var132 = ((val*(*)(val* self))(var131->class->vft[COLOR_core__abstract_text__Text__escape_to_c]))(var131); /* escape_to_c on <var131:nullable Object(String)>*/
9510 }
9511 {
9512 core___core__FileWriter___core__stream__Writer__write(var_stream, var132); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9513 }
9514 if (likely(varonce133!=NULL)) {
9515 var134 = varonce133;
9516 } else {
9517 var135 = "\"},\n";
9518 var137 = (val*)(4l<<2|1);
9519 var138 = (val*)(4l<<2|1);
9520 var139 = (val*)((long)(0)<<2|3);
9521 var140 = (val*)((long)(0)<<2|3);
9522 var136 = core__flat___CString___to_s_unsafe(var135, var137, var138, var139, var140);
9523 var134 = var136;
9524 varonce133 = var134;
9525 }
9526 {
9527 core___core__FileWriter___core__stream__Writer__write(var_stream, var134); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9528 }
9529 {
9530 ((void(*)(val* self))((((long)var_108&3)?class_info[((long)var_108&3)]:var_108->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_108); /* next on <var_108:Iterator[String]>*/
9531 }
9532 }
9533 BREAK_label: (void)0;
9534 {
9535 ((void(*)(val* self))((((long)var_108&3)?class_info[((long)var_108&3)]:var_108->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_108); /* finish on <var_108:Iterator[String]>*/
9536 }
9537 if (likely(varonce141!=NULL)) {
9538 var142 = varonce141;
9539 } else {
9540 var143 = "};\n";
9541 var145 = (val*)(3l<<2|1);
9542 var146 = (val*)(3l<<2|1);
9543 var147 = (val*)((long)(0)<<2|3);
9544 var148 = (val*)((long)(0)<<2|3);
9545 var144 = core__flat___CString___to_s_unsafe(var143, var145, var146, var147, var148);
9546 var142 = var144;
9547 varonce141 = var142;
9548 }
9549 {
9550 core___core__FileWriter___core__stream__Writer__write(var_stream, var142); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9551 }
9552 if (likely(varonce149!=NULL)) {
9553 var150 = varonce149;
9554 } else {
9555 var151 = "int i;";
9556 var153 = (val*)(6l<<2|1);
9557 var154 = (val*)(6l<<2|1);
9558 var155 = (val*)((long)(0)<<2|3);
9559 var156 = (val*)((long)(0)<<2|3);
9560 var152 = core__flat___CString___to_s_unsafe(var151, var153, var154, var155, var156);
9561 var150 = var152;
9562 varonce149 = var150;
9563 }
9564 {
9565 core___core__FileWriter___core__stream__Writer__write(var_stream, var150); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9566 }
9567 if (unlikely(varonce157==NULL)) {
9568 var158 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
9569 if (likely(varonce159!=NULL)) {
9570 var160 = varonce159;
9571 } else {
9572 var161 = "for(i = 0; i < ";
9573 var163 = (val*)(15l<<2|1);
9574 var164 = (val*)(15l<<2|1);
9575 var165 = (val*)((long)(0)<<2|3);
9576 var166 = (val*)((long)(0)<<2|3);
9577 var162 = core__flat___CString___to_s_unsafe(var161, var163, var164, var165, var166);
9578 var160 = var162;
9579 varonce159 = var160;
9580 }
9581 ((struct instance_core__NativeArray*)var158)->values[0]=var160;
9582 if (likely(varonce167!=NULL)) {
9583 var168 = varonce167;
9584 } else {
9585 var169 = "; i++){";
9586 var171 = (val*)(7l<<2|1);
9587 var172 = (val*)(7l<<2|1);
9588 var173 = (val*)((long)(0)<<2|3);
9589 var174 = (val*)((long)(0)<<2|3);
9590 var170 = core__flat___CString___to_s_unsafe(var169, var171, var172, var173, var174);
9591 var168 = var170;
9592 varonce167 = var168;
9593 }
9594 ((struct instance_core__NativeArray*)var158)->values[2]=var168;
9595 } else {
9596 var158 = varonce157;
9597 varonce157 = NULL;
9598 }
9599 {
9600 { /* Inline abstract_compiler$AbstractCompiler$names (self) on <self:AbstractCompiler> */
9601 var177 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___names].val; /* _names on <self:AbstractCompiler> */
9602 if (unlikely(var177 == NULL)) {
9603 if(catchStack.cursor >= 0){
9604 longjmp(catchStack.envs[catchStack.cursor], 1);
9605 }
9606 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
9607 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 542);
9608 fatal_exit(1);
9609 }
9610 var175 = var177;
9611 RET_LABEL176:(void)0;
9612 }
9613 }
9614 {
9615 var178 = core___core__HashMap___core__abstract_collection__MapRead__length(var175);
9616 }
9617 var179 = core__flat___Int___core__abstract_text__Object__to_s(var178);
9618 ((struct instance_core__NativeArray*)var158)->values[1]=var179;
9619 {
9620 var180 = ((val*(*)(val* self))(var158->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var158); /* native_to_s on <var158:NativeArray[String]>*/
9621 }
9622 varonce157 = var158;
9623 {
9624 core___core__FileWriter___core__stream__Writer__write(var_stream, var180); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9625 }
9626 if (likely(varonce181!=NULL)) {
9627 var182 = varonce181;
9628 } else {
9629 var183 = "if(strcmp(procname,map[i].name) == 0){";
9630 var185 = (val*)(38l<<2|1);
9631 var186 = (val*)(38l<<2|1);
9632 var187 = (val*)((long)(0)<<2|3);
9633 var188 = (val*)((long)(0)<<2|3);
9634 var184 = core__flat___CString___to_s_unsafe(var183, var185, var186, var187, var188);
9635 var182 = var184;
9636 varonce181 = var182;
9637 }
9638 {
9639 core___core__FileWriter___core__stream__Writer__write(var_stream, var182); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9640 }
9641 if (likely(varonce189!=NULL)) {
9642 var190 = varonce189;
9643 } else {
9644 var191 = "free(procname);";
9645 var193 = (val*)(15l<<2|1);
9646 var194 = (val*)(15l<<2|1);
9647 var195 = (val*)((long)(0)<<2|3);
9648 var196 = (val*)((long)(0)<<2|3);
9649 var192 = core__flat___CString___to_s_unsafe(var191, var193, var194, var195, var196);
9650 var190 = var192;
9651 varonce189 = var190;
9652 }
9653 {
9654 core___core__FileWriter___core__stream__Writer__write(var_stream, var190); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9655 }
9656 if (likely(varonce197!=NULL)) {
9657 var198 = varonce197;
9658 } else {
9659 var199 = "return map[i].nit_name;";
9660 var201 = (val*)(23l<<2|1);
9661 var202 = (val*)(23l<<2|1);
9662 var203 = (val*)((long)(0)<<2|3);
9663 var204 = (val*)((long)(0)<<2|3);
9664 var200 = core__flat___CString___to_s_unsafe(var199, var201, var202, var203, var204);
9665 var198 = var200;
9666 varonce197 = var198;
9667 }
9668 {
9669 core___core__FileWriter___core__stream__Writer__write(var_stream, var198); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9670 }
9671 if (likely(varonce205!=NULL)) {
9672 var206 = varonce205;
9673 } else {
9674 var207 = "}";
9675 var209 = (val*)(1l<<2|1);
9676 var210 = (val*)(1l<<2|1);
9677 var211 = (val*)((long)(0)<<2|3);
9678 var212 = (val*)((long)(0)<<2|3);
9679 var208 = core__flat___CString___to_s_unsafe(var207, var209, var210, var211, var212);
9680 var206 = var208;
9681 varonce205 = var206;
9682 }
9683 {
9684 core___core__FileWriter___core__stream__Writer__write(var_stream, var206); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9685 }
9686 if (likely(varonce213!=NULL)) {
9687 var214 = varonce213;
9688 } else {
9689 var215 = "}";
9690 var217 = (val*)(1l<<2|1);
9691 var218 = (val*)(1l<<2|1);
9692 var219 = (val*)((long)(0)<<2|3);
9693 var220 = (val*)((long)(0)<<2|3);
9694 var216 = core__flat___CString___to_s_unsafe(var215, var217, var218, var219, var220);
9695 var214 = var216;
9696 varonce213 = var214;
9697 }
9698 {
9699 core___core__FileWriter___core__stream__Writer__write(var_stream, var214); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9700 }
9701 if (likely(varonce221!=NULL)) {
9702 var222 = varonce221;
9703 } else {
9704 var223 = "free(procname);";
9705 var225 = (val*)(15l<<2|1);
9706 var226 = (val*)(15l<<2|1);
9707 var227 = (val*)((long)(0)<<2|3);
9708 var228 = (val*)((long)(0)<<2|3);
9709 var224 = core__flat___CString___to_s_unsafe(var223, var225, var226, var227, var228);
9710 var222 = var224;
9711 varonce221 = var222;
9712 }
9713 {
9714 core___core__FileWriter___core__stream__Writer__write(var_stream, var222); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9715 }
9716 if (likely(varonce229!=NULL)) {
9717 var230 = varonce229;
9718 } else {
9719 var231 = "return NULL;";
9720 var233 = (val*)(12l<<2|1);
9721 var234 = (val*)(12l<<2|1);
9722 var235 = (val*)((long)(0)<<2|3);
9723 var236 = (val*)((long)(0)<<2|3);
9724 var232 = core__flat___CString___to_s_unsafe(var231, var233, var234, var235, var236);
9725 var230 = var232;
9726 varonce229 = var230;
9727 }
9728 {
9729 core___core__FileWriter___core__stream__Writer__write(var_stream, var230); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9730 }
9731 if (likely(varonce237!=NULL)) {
9732 var238 = varonce237;
9733 } else {
9734 var239 = "}\n";
9735 var241 = (val*)(2l<<2|1);
9736 var242 = (val*)(2l<<2|1);
9737 var243 = (val*)((long)(0)<<2|3);
9738 var244 = (val*)((long)(0)<<2|3);
9739 var240 = core__flat___CString___to_s_unsafe(var239, var241, var242, var243, var244);
9740 var238 = var240;
9741 varonce237 = var238;
9742 }
9743 {
9744 core___core__FileWriter___core__stream__Writer__write(var_stream, var238); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9745 }
9746 {
9747 core___core__FileWriter___core__stream__Stream__close(var_stream); /* Direct call file$FileWriter$close on <var_stream:FileWriter>*/
9748 }
9749 var245 = NEW_core__FileWriter(&type_core__FileWriter);
9750 if (unlikely(varonce246==NULL)) {
9751 var247 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
9752 if (likely(varonce248!=NULL)) {
9753 var249 = varonce248;
9754 } else {
9755 var250 = "/c_functions_hash.h";
9756 var252 = (val*)(19l<<2|1);
9757 var253 = (val*)(19l<<2|1);
9758 var254 = (val*)((long)(0)<<2|3);
9759 var255 = (val*)((long)(0)<<2|3);
9760 var251 = core__flat___CString___to_s_unsafe(var250, var252, var253, var254, var255);
9761 var249 = var251;
9762 varonce248 = var249;
9763 }
9764 ((struct instance_core__NativeArray*)var247)->values[1]=var249;
9765 } else {
9766 var247 = varonce246;
9767 varonce246 = NULL;
9768 }
9769 ((struct instance_core__NativeArray*)var247)->values[0]=var_compile_dir;
9770 {
9771 var256 = ((val*(*)(val* self))(var247->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var247); /* native_to_s on <var247:NativeArray[String]>*/
9772 }
9773 varonce246 = var247;
9774 {
9775 core___core__FileWriter___open(var245, var256); /* Direct call file$FileWriter$open on <var245:FileWriter>*/
9776 }
9777 var_stream = var245;
9778 if (likely(varonce257!=NULL)) {
9779 var258 = varonce257;
9780 } else {
9781 var259 = "const char* get_nit_name(register const char* procname, register unsigned int len);\n";
9782 var261 = (val*)(84l<<2|1);
9783 var262 = (val*)(84l<<2|1);
9784 var263 = (val*)((long)(0)<<2|3);
9785 var264 = (val*)((long)(0)<<2|3);
9786 var260 = core__flat___CString___to_s_unsafe(var259, var261, var262, var263, var264);
9787 var258 = var260;
9788 varonce257 = var258;
9789 }
9790 {
9791 core___core__FileWriter___core__stream__Writer__write(var_stream, var258); /* Direct call file$FileWriter$write on <var_stream:FileWriter>*/
9792 }
9793 {
9794 core___core__FileWriter___core__stream__Stream__close(var_stream); /* Direct call file$FileWriter$close on <var_stream:FileWriter>*/
9795 }
9796 {
9797 { /* Inline abstract_compiler$AbstractCompiler$extern_bodies (self) on <self:AbstractCompiler> */
9798 var267 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___extern_bodies].val; /* _extern_bodies on <self:AbstractCompiler> */
9799 if (unlikely(var267 == NULL)) {
9800 if(catchStack.cursor >= 0){
9801 longjmp(catchStack.envs[catchStack.cursor], 1);
9802 }
9803 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _extern_bodies");
9804 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1075);
9805 fatal_exit(1);
9806 }
9807 var265 = var267;
9808 RET_LABEL266:(void)0;
9809 }
9810 }
9811 var268 = NEW_nitc__ExternCFile(&type_nitc__ExternCFile);
9812 if (unlikely(varonce269==NULL)) {
9813 var270 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
9814 if (likely(varonce271!=NULL)) {
9815 var272 = varonce271;
9816 } else {
9817 var273 = "/c_functions_hash.c";
9818 var275 = (val*)(19l<<2|1);
9819 var276 = (val*)(19l<<2|1);
9820 var277 = (val*)((long)(0)<<2|3);
9821 var278 = (val*)((long)(0)<<2|3);
9822 var274 = core__flat___CString___to_s_unsafe(var273, var275, var276, var277, var278);
9823 var272 = var274;
9824 varonce271 = var272;
9825 }
9826 ((struct instance_core__NativeArray*)var270)->values[1]=var272;
9827 } else {
9828 var270 = varonce269;
9829 varonce269 = NULL;
9830 }
9831 ((struct instance_core__NativeArray*)var270)->values[0]=var_compile_dir;
9832 {
9833 var279 = ((val*(*)(val* self))(var270->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var270); /* native_to_s on <var270:NativeArray[String]>*/
9834 }
9835 varonce269 = var270;
9836 if (likely(varonce280!=NULL)) {
9837 var281 = varonce280;
9838 } else {
9839 var282 = "";
9840 var284 = (val*)(0l<<2|1);
9841 var285 = (val*)(0l<<2|1);
9842 var286 = (val*)((long)(0)<<2|3);
9843 var287 = (val*)((long)(0)<<2|3);
9844 var283 = core__flat___CString___to_s_unsafe(var282, var284, var285, var286, var287);
9845 var281 = var283;
9846 varonce280 = var281;
9847 }
9848 {
9849 ((void(*)(val* self, val* p0))(var268->class->vft[COLOR_nitc__c_tools__ExternFile__filename_61d]))(var268, var279); /* filename= on <var268:ExternCFile>*/
9850 }
9851 {
9852 ((void(*)(val* self, val* p0))(var268->class->vft[COLOR_nitc__c_tools__ExternCFile__cflags_61d]))(var268, var281); /* cflags= on <var268:ExternCFile>*/
9853 }
9854 {
9855 ((void(*)(val* self))(var268->class->vft[COLOR_core__kernel__Object__init]))(var268); /* init on <var268:ExternCFile>*/
9856 }
9857 {
9858 core___core__Array___core__abstract_collection__SimpleCollection__add(var265, var268); /* Direct call array$Array$add on <var265:Array[ExternFile]>*/
9859 }
9860 RET_LABEL:;
9861 }