tests.sh: soso are always detected as failed tests
[nit.git] / c_src / abstract_compiler.sep.1.c
1 #include "abstract_compiler.sep.0.h"
2 /* method abstract_compiler#ToolContext#opt_output for (self: ToolContext): OptionString */
3 val* abstract_compiler__ToolContext__opt_output(val* self) {
4 val* var /* : OptionString */;
5 val* var1 /* : OptionString */;
6 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_output].val; /* @opt_output on <self:ToolContext> */
7 if (var1 == NULL) {
8 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_output");
9 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 29);
10 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method abstract_compiler#ToolContext#opt_output for (self: Object): OptionString */
17 val* VIRTUAL_abstract_compiler__ToolContext__opt_output(val* self) {
18 val* var /* : OptionString */;
19 val* var1 /* : OptionString */;
20 var1 = abstract_compiler__ToolContext__opt_output(self);
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method abstract_compiler#ToolContext#opt_output= for (self: ToolContext, OptionString) */
26 void abstract_compiler__ToolContext__opt_output_61d(val* self, val* p0) {
27 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_output].val = p0; /* @opt_output on <self:ToolContext> */
28 RET_LABEL:;
29 }
30 /* method abstract_compiler#ToolContext#opt_output= for (self: Object, OptionString) */
31 void VIRTUAL_abstract_compiler__ToolContext__opt_output_61d(val* self, val* p0) {
32 abstract_compiler__ToolContext__opt_output_61d(self, p0);
33 RET_LABEL:;
34 }
35 /* method abstract_compiler#ToolContext#opt_no_cc for (self: ToolContext): OptionBool */
36 val* abstract_compiler__ToolContext__opt_no_cc(val* self) {
37 val* var /* : OptionBool */;
38 val* var1 /* : OptionBool */;
39 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_cc].val; /* @opt_no_cc on <self:ToolContext> */
40 if (var1 == NULL) {
41 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_no_cc");
42 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 31);
43 show_backtrace(1);
44 }
45 var = var1;
46 RET_LABEL:;
47 return var;
48 }
49 /* method abstract_compiler#ToolContext#opt_no_cc for (self: Object): OptionBool */
50 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_cc(val* self) {
51 val* var /* : OptionBool */;
52 val* var1 /* : OptionBool */;
53 var1 = abstract_compiler__ToolContext__opt_no_cc(self);
54 var = var1;
55 RET_LABEL:;
56 return var;
57 }
58 /* method abstract_compiler#ToolContext#opt_no_cc= for (self: ToolContext, OptionBool) */
59 void abstract_compiler__ToolContext__opt_no_cc_61d(val* self, val* p0) {
60 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_cc].val = p0; /* @opt_no_cc on <self:ToolContext> */
61 RET_LABEL:;
62 }
63 /* method abstract_compiler#ToolContext#opt_no_cc= for (self: Object, OptionBool) */
64 void VIRTUAL_abstract_compiler__ToolContext__opt_no_cc_61d(val* self, val* p0) {
65 abstract_compiler__ToolContext__opt_no_cc_61d(self, p0);
66 RET_LABEL:;
67 }
68 /* method abstract_compiler#ToolContext#opt_cc_path for (self: ToolContext): OptionArray */
69 val* abstract_compiler__ToolContext__opt_cc_path(val* self) {
70 val* var /* : OptionArray */;
71 val* var1 /* : OptionArray */;
72 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_cc_path].val; /* @opt_cc_path on <self:ToolContext> */
73 if (var1 == NULL) {
74 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_cc_path");
75 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 33);
76 show_backtrace(1);
77 }
78 var = var1;
79 RET_LABEL:;
80 return var;
81 }
82 /* method abstract_compiler#ToolContext#opt_cc_path for (self: Object): OptionArray */
83 val* VIRTUAL_abstract_compiler__ToolContext__opt_cc_path(val* self) {
84 val* var /* : OptionArray */;
85 val* var1 /* : OptionArray */;
86 var1 = abstract_compiler__ToolContext__opt_cc_path(self);
87 var = var1;
88 RET_LABEL:;
89 return var;
90 }
91 /* method abstract_compiler#ToolContext#opt_cc_path= for (self: ToolContext, OptionArray) */
92 void abstract_compiler__ToolContext__opt_cc_path_61d(val* self, val* p0) {
93 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_cc_path].val = p0; /* @opt_cc_path on <self:ToolContext> */
94 RET_LABEL:;
95 }
96 /* method abstract_compiler#ToolContext#opt_cc_path= for (self: Object, OptionArray) */
97 void VIRTUAL_abstract_compiler__ToolContext__opt_cc_path_61d(val* self, val* p0) {
98 abstract_compiler__ToolContext__opt_cc_path_61d(self, p0);
99 RET_LABEL:;
100 }
101 /* method abstract_compiler#ToolContext#opt_make_flags for (self: ToolContext): OptionString */
102 val* abstract_compiler__ToolContext__opt_make_flags(val* self) {
103 val* var /* : OptionString */;
104 val* var1 /* : OptionString */;
105 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_make_flags].val; /* @opt_make_flags on <self:ToolContext> */
106 if (var1 == NULL) {
107 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_make_flags");
108 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 35);
109 show_backtrace(1);
110 }
111 var = var1;
112 RET_LABEL:;
113 return var;
114 }
115 /* method abstract_compiler#ToolContext#opt_make_flags for (self: Object): OptionString */
116 val* VIRTUAL_abstract_compiler__ToolContext__opt_make_flags(val* self) {
117 val* var /* : OptionString */;
118 val* var1 /* : OptionString */;
119 var1 = abstract_compiler__ToolContext__opt_make_flags(self);
120 var = var1;
121 RET_LABEL:;
122 return var;
123 }
124 /* method abstract_compiler#ToolContext#opt_make_flags= for (self: ToolContext, OptionString) */
125 void abstract_compiler__ToolContext__opt_make_flags_61d(val* self, val* p0) {
126 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_make_flags].val = p0; /* @opt_make_flags on <self:ToolContext> */
127 RET_LABEL:;
128 }
129 /* method abstract_compiler#ToolContext#opt_make_flags= for (self: Object, OptionString) */
130 void VIRTUAL_abstract_compiler__ToolContext__opt_make_flags_61d(val* self, val* p0) {
131 abstract_compiler__ToolContext__opt_make_flags_61d(self, p0);
132 RET_LABEL:;
133 }
134 /* method abstract_compiler#ToolContext#opt_compile_dir for (self: ToolContext): OptionString */
135 val* abstract_compiler__ToolContext__opt_compile_dir(val* self) {
136 val* var /* : OptionString */;
137 val* var1 /* : OptionString */;
138 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_compile_dir].val; /* @opt_compile_dir on <self:ToolContext> */
139 if (var1 == NULL) {
140 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_compile_dir");
141 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 37);
142 show_backtrace(1);
143 }
144 var = var1;
145 RET_LABEL:;
146 return var;
147 }
148 /* method abstract_compiler#ToolContext#opt_compile_dir for (self: Object): OptionString */
149 val* VIRTUAL_abstract_compiler__ToolContext__opt_compile_dir(val* self) {
150 val* var /* : OptionString */;
151 val* var1 /* : OptionString */;
152 var1 = abstract_compiler__ToolContext__opt_compile_dir(self);
153 var = var1;
154 RET_LABEL:;
155 return var;
156 }
157 /* method abstract_compiler#ToolContext#opt_compile_dir= for (self: ToolContext, OptionString) */
158 void abstract_compiler__ToolContext__opt_compile_dir_61d(val* self, val* p0) {
159 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_compile_dir].val = p0; /* @opt_compile_dir on <self:ToolContext> */
160 RET_LABEL:;
161 }
162 /* method abstract_compiler#ToolContext#opt_compile_dir= for (self: Object, OptionString) */
163 void VIRTUAL_abstract_compiler__ToolContext__opt_compile_dir_61d(val* self, val* p0) {
164 abstract_compiler__ToolContext__opt_compile_dir_61d(self, p0);
165 RET_LABEL:;
166 }
167 /* method abstract_compiler#ToolContext#opt_hardening for (self: ToolContext): OptionBool */
168 val* abstract_compiler__ToolContext__opt_hardening(val* self) {
169 val* var /* : OptionBool */;
170 val* var1 /* : OptionBool */;
171 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_hardening].val; /* @opt_hardening on <self:ToolContext> */
172 if (var1 == NULL) {
173 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_hardening");
174 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 39);
175 show_backtrace(1);
176 }
177 var = var1;
178 RET_LABEL:;
179 return var;
180 }
181 /* method abstract_compiler#ToolContext#opt_hardening for (self: Object): OptionBool */
182 val* VIRTUAL_abstract_compiler__ToolContext__opt_hardening(val* self) {
183 val* var /* : OptionBool */;
184 val* var1 /* : OptionBool */;
185 var1 = abstract_compiler__ToolContext__opt_hardening(self);
186 var = var1;
187 RET_LABEL:;
188 return var;
189 }
190 /* method abstract_compiler#ToolContext#opt_hardening= for (self: ToolContext, OptionBool) */
191 void abstract_compiler__ToolContext__opt_hardening_61d(val* self, val* p0) {
192 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_hardening].val = p0; /* @opt_hardening on <self:ToolContext> */
193 RET_LABEL:;
194 }
195 /* method abstract_compiler#ToolContext#opt_hardening= for (self: Object, OptionBool) */
196 void VIRTUAL_abstract_compiler__ToolContext__opt_hardening_61d(val* self, val* p0) {
197 abstract_compiler__ToolContext__opt_hardening_61d(self, p0);
198 RET_LABEL:;
199 }
200 /* method abstract_compiler#ToolContext#opt_no_shortcut_range for (self: ToolContext): OptionBool */
201 val* abstract_compiler__ToolContext__opt_no_shortcut_range(val* self) {
202 val* var /* : OptionBool */;
203 val* var1 /* : OptionBool */;
204 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_shortcut_range].val; /* @opt_no_shortcut_range on <self:ToolContext> */
205 if (var1 == NULL) {
206 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_no_shortcut_range");
207 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 41);
208 show_backtrace(1);
209 }
210 var = var1;
211 RET_LABEL:;
212 return var;
213 }
214 /* method abstract_compiler#ToolContext#opt_no_shortcut_range for (self: Object): OptionBool */
215 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_shortcut_range(val* self) {
216 val* var /* : OptionBool */;
217 val* var1 /* : OptionBool */;
218 var1 = abstract_compiler__ToolContext__opt_no_shortcut_range(self);
219 var = var1;
220 RET_LABEL:;
221 return var;
222 }
223 /* method abstract_compiler#ToolContext#opt_no_shortcut_range= for (self: ToolContext, OptionBool) */
224 void abstract_compiler__ToolContext__opt_no_shortcut_range_61d(val* self, val* p0) {
225 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_shortcut_range].val = p0; /* @opt_no_shortcut_range on <self:ToolContext> */
226 RET_LABEL:;
227 }
228 /* method abstract_compiler#ToolContext#opt_no_shortcut_range= for (self: Object, OptionBool) */
229 void VIRTUAL_abstract_compiler__ToolContext__opt_no_shortcut_range_61d(val* self, val* p0) {
230 abstract_compiler__ToolContext__opt_no_shortcut_range_61d(self, p0);
231 RET_LABEL:;
232 }
233 /* method abstract_compiler#ToolContext#opt_no_check_covariance for (self: ToolContext): OptionBool */
234 val* abstract_compiler__ToolContext__opt_no_check_covariance(val* self) {
235 val* var /* : OptionBool */;
236 val* var1 /* : OptionBool */;
237 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_check_covariance].val; /* @opt_no_check_covariance on <self:ToolContext> */
238 if (var1 == NULL) {
239 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_no_check_covariance");
240 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 43);
241 show_backtrace(1);
242 }
243 var = var1;
244 RET_LABEL:;
245 return var;
246 }
247 /* method abstract_compiler#ToolContext#opt_no_check_covariance for (self: Object): OptionBool */
248 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_check_covariance(val* self) {
249 val* var /* : OptionBool */;
250 val* var1 /* : OptionBool */;
251 var1 = abstract_compiler__ToolContext__opt_no_check_covariance(self);
252 var = var1;
253 RET_LABEL:;
254 return var;
255 }
256 /* method abstract_compiler#ToolContext#opt_no_check_covariance= for (self: ToolContext, OptionBool) */
257 void abstract_compiler__ToolContext__opt_no_check_covariance_61d(val* self, val* p0) {
258 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_check_covariance].val = p0; /* @opt_no_check_covariance on <self:ToolContext> */
259 RET_LABEL:;
260 }
261 /* method abstract_compiler#ToolContext#opt_no_check_covariance= for (self: Object, OptionBool) */
262 void VIRTUAL_abstract_compiler__ToolContext__opt_no_check_covariance_61d(val* self, val* p0) {
263 abstract_compiler__ToolContext__opt_no_check_covariance_61d(self, p0);
264 RET_LABEL:;
265 }
266 /* method abstract_compiler#ToolContext#opt_no_check_initialization for (self: ToolContext): OptionBool */
267 val* abstract_compiler__ToolContext__opt_no_check_initialization(val* self) {
268 val* var /* : OptionBool */;
269 val* var1 /* : OptionBool */;
270 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_check_initialization].val; /* @opt_no_check_initialization on <self:ToolContext> */
271 if (var1 == NULL) {
272 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_no_check_initialization");
273 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 45);
274 show_backtrace(1);
275 }
276 var = var1;
277 RET_LABEL:;
278 return var;
279 }
280 /* method abstract_compiler#ToolContext#opt_no_check_initialization for (self: Object): OptionBool */
281 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_check_initialization(val* self) {
282 val* var /* : OptionBool */;
283 val* var1 /* : OptionBool */;
284 var1 = abstract_compiler__ToolContext__opt_no_check_initialization(self);
285 var = var1;
286 RET_LABEL:;
287 return var;
288 }
289 /* method abstract_compiler#ToolContext#opt_no_check_initialization= for (self: ToolContext, OptionBool) */
290 void abstract_compiler__ToolContext__opt_no_check_initialization_61d(val* self, val* p0) {
291 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_check_initialization].val = p0; /* @opt_no_check_initialization on <self:ToolContext> */
292 RET_LABEL:;
293 }
294 /* method abstract_compiler#ToolContext#opt_no_check_initialization= for (self: Object, OptionBool) */
295 void VIRTUAL_abstract_compiler__ToolContext__opt_no_check_initialization_61d(val* self, val* p0) {
296 abstract_compiler__ToolContext__opt_no_check_initialization_61d(self, p0);
297 RET_LABEL:;
298 }
299 /* method abstract_compiler#ToolContext#opt_no_check_assert for (self: ToolContext): OptionBool */
300 val* abstract_compiler__ToolContext__opt_no_check_assert(val* self) {
301 val* var /* : OptionBool */;
302 val* var1 /* : OptionBool */;
303 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_check_assert].val; /* @opt_no_check_assert on <self:ToolContext> */
304 if (var1 == NULL) {
305 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_no_check_assert");
306 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 47);
307 show_backtrace(1);
308 }
309 var = var1;
310 RET_LABEL:;
311 return var;
312 }
313 /* method abstract_compiler#ToolContext#opt_no_check_assert for (self: Object): OptionBool */
314 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_check_assert(val* self) {
315 val* var /* : OptionBool */;
316 val* var1 /* : OptionBool */;
317 var1 = abstract_compiler__ToolContext__opt_no_check_assert(self);
318 var = var1;
319 RET_LABEL:;
320 return var;
321 }
322 /* method abstract_compiler#ToolContext#opt_no_check_assert= for (self: ToolContext, OptionBool) */
323 void abstract_compiler__ToolContext__opt_no_check_assert_61d(val* self, val* p0) {
324 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_check_assert].val = p0; /* @opt_no_check_assert on <self:ToolContext> */
325 RET_LABEL:;
326 }
327 /* method abstract_compiler#ToolContext#opt_no_check_assert= for (self: Object, OptionBool) */
328 void VIRTUAL_abstract_compiler__ToolContext__opt_no_check_assert_61d(val* self, val* p0) {
329 abstract_compiler__ToolContext__opt_no_check_assert_61d(self, p0);
330 RET_LABEL:;
331 }
332 /* method abstract_compiler#ToolContext#opt_no_check_autocast for (self: ToolContext): OptionBool */
333 val* abstract_compiler__ToolContext__opt_no_check_autocast(val* self) {
334 val* var /* : OptionBool */;
335 val* var1 /* : OptionBool */;
336 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_check_autocast].val; /* @opt_no_check_autocast on <self:ToolContext> */
337 if (var1 == NULL) {
338 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_no_check_autocast");
339 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 49);
340 show_backtrace(1);
341 }
342 var = var1;
343 RET_LABEL:;
344 return var;
345 }
346 /* method abstract_compiler#ToolContext#opt_no_check_autocast for (self: Object): OptionBool */
347 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_check_autocast(val* self) {
348 val* var /* : OptionBool */;
349 val* var1 /* : OptionBool */;
350 var1 = abstract_compiler__ToolContext__opt_no_check_autocast(self);
351 var = var1;
352 RET_LABEL:;
353 return var;
354 }
355 /* method abstract_compiler#ToolContext#opt_no_check_autocast= for (self: ToolContext, OptionBool) */
356 void abstract_compiler__ToolContext__opt_no_check_autocast_61d(val* self, val* p0) {
357 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_check_autocast].val = p0; /* @opt_no_check_autocast on <self:ToolContext> */
358 RET_LABEL:;
359 }
360 /* method abstract_compiler#ToolContext#opt_no_check_autocast= for (self: Object, OptionBool) */
361 void VIRTUAL_abstract_compiler__ToolContext__opt_no_check_autocast_61d(val* self, val* p0) {
362 abstract_compiler__ToolContext__opt_no_check_autocast_61d(self, p0);
363 RET_LABEL:;
364 }
365 /* method abstract_compiler#ToolContext#opt_no_check_other for (self: ToolContext): OptionBool */
366 val* abstract_compiler__ToolContext__opt_no_check_other(val* self) {
367 val* var /* : OptionBool */;
368 val* var1 /* : OptionBool */;
369 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_check_other].val; /* @opt_no_check_other on <self:ToolContext> */
370 if (var1 == NULL) {
371 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_no_check_other");
372 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 51);
373 show_backtrace(1);
374 }
375 var = var1;
376 RET_LABEL:;
377 return var;
378 }
379 /* method abstract_compiler#ToolContext#opt_no_check_other for (self: Object): OptionBool */
380 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_check_other(val* self) {
381 val* var /* : OptionBool */;
382 val* var1 /* : OptionBool */;
383 var1 = abstract_compiler__ToolContext__opt_no_check_other(self);
384 var = var1;
385 RET_LABEL:;
386 return var;
387 }
388 /* method abstract_compiler#ToolContext#opt_no_check_other= for (self: ToolContext, OptionBool) */
389 void abstract_compiler__ToolContext__opt_no_check_other_61d(val* self, val* p0) {
390 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_check_other].val = p0; /* @opt_no_check_other on <self:ToolContext> */
391 RET_LABEL:;
392 }
393 /* method abstract_compiler#ToolContext#opt_no_check_other= for (self: Object, OptionBool) */
394 void VIRTUAL_abstract_compiler__ToolContext__opt_no_check_other_61d(val* self, val* p0) {
395 abstract_compiler__ToolContext__opt_no_check_other_61d(self, p0);
396 RET_LABEL:;
397 }
398 /* method abstract_compiler#ToolContext#opt_typing_test_metrics for (self: ToolContext): OptionBool */
399 val* abstract_compiler__ToolContext__opt_typing_test_metrics(val* self) {
400 val* var /* : OptionBool */;
401 val* var1 /* : OptionBool */;
402 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_typing_test_metrics].val; /* @opt_typing_test_metrics on <self:ToolContext> */
403 if (var1 == NULL) {
404 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_typing_test_metrics");
405 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 53);
406 show_backtrace(1);
407 }
408 var = var1;
409 RET_LABEL:;
410 return var;
411 }
412 /* method abstract_compiler#ToolContext#opt_typing_test_metrics for (self: Object): OptionBool */
413 val* VIRTUAL_abstract_compiler__ToolContext__opt_typing_test_metrics(val* self) {
414 val* var /* : OptionBool */;
415 val* var1 /* : OptionBool */;
416 var1 = abstract_compiler__ToolContext__opt_typing_test_metrics(self);
417 var = var1;
418 RET_LABEL:;
419 return var;
420 }
421 /* method abstract_compiler#ToolContext#opt_typing_test_metrics= for (self: ToolContext, OptionBool) */
422 void abstract_compiler__ToolContext__opt_typing_test_metrics_61d(val* self, val* p0) {
423 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_typing_test_metrics].val = p0; /* @opt_typing_test_metrics on <self:ToolContext> */
424 RET_LABEL:;
425 }
426 /* method abstract_compiler#ToolContext#opt_typing_test_metrics= for (self: Object, OptionBool) */
427 void VIRTUAL_abstract_compiler__ToolContext__opt_typing_test_metrics_61d(val* self, val* p0) {
428 abstract_compiler__ToolContext__opt_typing_test_metrics_61d(self, p0);
429 RET_LABEL:;
430 }
431 /* method abstract_compiler#ToolContext#opt_no_stacktrace for (self: ToolContext): OptionBool */
432 val* abstract_compiler__ToolContext__opt_no_stacktrace(val* self) {
433 val* var /* : OptionBool */;
434 val* var1 /* : OptionBool */;
435 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_stacktrace].val; /* @opt_no_stacktrace on <self:ToolContext> */
436 if (var1 == NULL) {
437 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_no_stacktrace");
438 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 55);
439 show_backtrace(1);
440 }
441 var = var1;
442 RET_LABEL:;
443 return var;
444 }
445 /* method abstract_compiler#ToolContext#opt_no_stacktrace for (self: Object): OptionBool */
446 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_stacktrace(val* self) {
447 val* var /* : OptionBool */;
448 val* var1 /* : OptionBool */;
449 var1 = abstract_compiler__ToolContext__opt_no_stacktrace(self);
450 var = var1;
451 RET_LABEL:;
452 return var;
453 }
454 /* method abstract_compiler#ToolContext#opt_no_stacktrace= for (self: ToolContext, OptionBool) */
455 void abstract_compiler__ToolContext__opt_no_stacktrace_61d(val* self, val* p0) {
456 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_stacktrace].val = p0; /* @opt_no_stacktrace on <self:ToolContext> */
457 RET_LABEL:;
458 }
459 /* method abstract_compiler#ToolContext#opt_no_stacktrace= for (self: Object, OptionBool) */
460 void VIRTUAL_abstract_compiler__ToolContext__opt_no_stacktrace_61d(val* self, val* p0) {
461 abstract_compiler__ToolContext__opt_no_stacktrace_61d(self, p0);
462 RET_LABEL:;
463 }
464 /* method abstract_compiler#ToolContext#opt_stacktrace for (self: ToolContext): OptionBool */
465 val* abstract_compiler__ToolContext__opt_stacktrace(val* self) {
466 val* var /* : OptionBool */;
467 val* var1 /* : OptionBool */;
468 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_stacktrace].val; /* @opt_stacktrace on <self:ToolContext> */
469 if (var1 == NULL) {
470 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_stacktrace");
471 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 57);
472 show_backtrace(1);
473 }
474 var = var1;
475 RET_LABEL:;
476 return var;
477 }
478 /* method abstract_compiler#ToolContext#opt_stacktrace for (self: Object): OptionBool */
479 val* VIRTUAL_abstract_compiler__ToolContext__opt_stacktrace(val* self) {
480 val* var /* : OptionBool */;
481 val* var1 /* : OptionBool */;
482 var1 = abstract_compiler__ToolContext__opt_stacktrace(self);
483 var = var1;
484 RET_LABEL:;
485 return var;
486 }
487 /* method abstract_compiler#ToolContext#opt_stacktrace= for (self: ToolContext, OptionBool) */
488 void abstract_compiler__ToolContext__opt_stacktrace_61d(val* self, val* p0) {
489 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_stacktrace].val = p0; /* @opt_stacktrace on <self:ToolContext> */
490 RET_LABEL:;
491 }
492 /* method abstract_compiler#ToolContext#opt_stacktrace= for (self: Object, OptionBool) */
493 void VIRTUAL_abstract_compiler__ToolContext__opt_stacktrace_61d(val* self, val* p0) {
494 abstract_compiler__ToolContext__opt_stacktrace_61d(self, p0);
495 RET_LABEL:;
496 }
497 /* method abstract_compiler#ToolContext#init for (self: ToolContext) */
498 void abstract_compiler__ToolContext__init(val* self) {
499 val* var /* : OptionContext */;
500 val* var1 /* : OptionString */;
501 val* var2 /* : OptionBool */;
502 val* var3 /* : OptionString */;
503 val* var4 /* : OptionString */;
504 val* var5 /* : OptionBool */;
505 val* var6 /* : OptionBool */;
506 val* var7 /* : Array[Option] */;
507 long var8 /* : Int */;
508 val* var9 /* : NativeArray[Option] */;
509 val* var10 /* : OptionContext */;
510 val* var11 /* : OptionBool */;
511 val* var12 /* : OptionBool */;
512 val* var13 /* : OptionBool */;
513 val* var14 /* : OptionBool */;
514 val* var15 /* : OptionBool */;
515 val* var16 /* : Array[Option] */;
516 long var17 /* : Int */;
517 val* var18 /* : NativeArray[Option] */;
518 val* var19 /* : OptionContext */;
519 val* var20 /* : OptionBool */;
520 val* var21 /* : Array[Option] */;
521 long var22 /* : Int */;
522 val* var23 /* : NativeArray[Option] */;
523 val* var24 /* : OptionContext */;
524 val* var25 /* : OptionBool */;
525 val* var26 /* : Array[Option] */;
526 long var27 /* : Int */;
527 val* var28 /* : NativeArray[Option] */;
528 val* var29 /* : OptionContext */;
529 val* var30 /* : OptionBool */;
530 val* var31 /* : Array[Option] */;
531 long var32 /* : Int */;
532 val* var33 /* : NativeArray[Option] */;
533 ((void (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__init]))(self) /* init on <self:ToolContext>*/;
534 var = ((val* (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__option_context]))(self) /* option_context on <self:ToolContext>*/;
535 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_output]))(self) /* opt_output on <self:ToolContext>*/;
536 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_cc]))(self) /* opt_no_cc on <self:ToolContext>*/;
537 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_make_flags]))(self) /* opt_make_flags on <self:ToolContext>*/;
538 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_compile_dir]))(self) /* opt_compile_dir on <self:ToolContext>*/;
539 var5 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_hardening]))(self) /* opt_hardening on <self:ToolContext>*/;
540 var6 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_shortcut_range]))(self) /* opt_no_shortcut_range on <self:ToolContext>*/;
541 var7 = NEW_array__Array(&type_array__Arrayopts__Option);
542 { /* var7 = array_instance Array[Option] */
543 var8 = 6;
544 var9 = NEW_array__NativeArray(var8, &type_array__NativeArrayopts__Option);
545 ((struct instance_array__NativeArray*)var9)->values[0] = (val*) var1;
546 ((struct instance_array__NativeArray*)var9)->values[1] = (val*) var2;
547 ((struct instance_array__NativeArray*)var9)->values[2] = (val*) var3;
548 ((struct instance_array__NativeArray*)var9)->values[3] = (val*) var4;
549 ((struct instance_array__NativeArray*)var9)->values[4] = (val*) var5;
550 ((struct instance_array__NativeArray*)var9)->values[5] = (val*) var6;
551 ((void (*)(val*, val*, long))(var7->class->vft[COLOR_array__Array__with_native]))(var7, var9, var8) /* with_native on <var7:Array[Option]>*/;
552 }
553 ((void (*)(val*, val*))(var->class->vft[COLOR_opts__OptionContext__add_option]))(var, var7) /* add_option on <var:OptionContext>*/;
554 var10 = ((val* (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__option_context]))(self) /* option_context on <self:ToolContext>*/;
555 var11 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_covariance]))(self) /* opt_no_check_covariance on <self:ToolContext>*/;
556 var12 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_initialization]))(self) /* opt_no_check_initialization on <self:ToolContext>*/;
557 var13 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_assert]))(self) /* opt_no_check_assert on <self:ToolContext>*/;
558 var14 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_autocast]))(self) /* opt_no_check_autocast on <self:ToolContext>*/;
559 var15 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_other]))(self) /* opt_no_check_other on <self:ToolContext>*/;
560 var16 = NEW_array__Array(&type_array__Arrayopts__Option);
561 { /* var16 = array_instance Array[Option] */
562 var17 = 5;
563 var18 = NEW_array__NativeArray(var17, &type_array__NativeArrayopts__Option);
564 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var11;
565 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var12;
566 ((struct instance_array__NativeArray*)var18)->values[2] = (val*) var13;
567 ((struct instance_array__NativeArray*)var18)->values[3] = (val*) var14;
568 ((struct instance_array__NativeArray*)var18)->values[4] = (val*) var15;
569 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Option]>*/;
570 }
571 ((void (*)(val*, val*))(var10->class->vft[COLOR_opts__OptionContext__add_option]))(var10, var16) /* add_option on <var10:OptionContext>*/;
572 var19 = ((val* (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__option_context]))(self) /* option_context on <self:ToolContext>*/;
573 var20 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_typing_test_metrics]))(self) /* opt_typing_test_metrics on <self:ToolContext>*/;
574 var21 = NEW_array__Array(&type_array__Arrayopts__Option);
575 { /* var21 = array_instance Array[Option] */
576 var22 = 1;
577 var23 = NEW_array__NativeArray(var22, &type_array__NativeArrayopts__Option);
578 ((struct instance_array__NativeArray*)var23)->values[0] = (val*) var20;
579 ((void (*)(val*, val*, long))(var21->class->vft[COLOR_array__Array__with_native]))(var21, var23, var22) /* with_native on <var21:Array[Option]>*/;
580 }
581 ((void (*)(val*, val*))(var19->class->vft[COLOR_opts__OptionContext__add_option]))(var19, var21) /* add_option on <var19:OptionContext>*/;
582 var24 = ((val* (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__option_context]))(self) /* option_context on <self:ToolContext>*/;
583 var25 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_stacktrace]))(self) /* opt_stacktrace on <self:ToolContext>*/;
584 var26 = NEW_array__Array(&type_array__Arrayopts__Option);
585 { /* var26 = array_instance Array[Option] */
586 var27 = 1;
587 var28 = NEW_array__NativeArray(var27, &type_array__NativeArrayopts__Option);
588 ((struct instance_array__NativeArray*)var28)->values[0] = (val*) var25;
589 ((void (*)(val*, val*, long))(var26->class->vft[COLOR_array__Array__with_native]))(var26, var28, var27) /* with_native on <var26:Array[Option]>*/;
590 }
591 ((void (*)(val*, val*))(var24->class->vft[COLOR_opts__OptionContext__add_option]))(var24, var26) /* add_option on <var24:OptionContext>*/;
592 var29 = ((val* (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__option_context]))(self) /* option_context on <self:ToolContext>*/;
593 var30 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_stacktrace]))(self) /* opt_no_stacktrace on <self:ToolContext>*/;
594 var31 = NEW_array__Array(&type_array__Arrayopts__Option);
595 { /* var31 = array_instance Array[Option] */
596 var32 = 1;
597 var33 = NEW_array__NativeArray(var32, &type_array__NativeArrayopts__Option);
598 ((struct instance_array__NativeArray*)var33)->values[0] = (val*) var30;
599 ((void (*)(val*, val*, long))(var31->class->vft[COLOR_array__Array__with_native]))(var31, var33, var32) /* with_native on <var31:Array[Option]>*/;
600 }
601 ((void (*)(val*, val*))(var29->class->vft[COLOR_opts__OptionContext__add_option]))(var29, var31) /* add_option on <var29:OptionContext>*/;
602 RET_LABEL:;
603 }
604 /* method abstract_compiler#ToolContext#init for (self: Object) */
605 void VIRTUAL_abstract_compiler__ToolContext__init(val* self) {
606 abstract_compiler__ToolContext__init(self);
607 RET_LABEL:;
608 }
609 /* method abstract_compiler#ModelBuilder#init for (self: ModelBuilder, Model, ToolContext) */
610 void abstract_compiler__ModelBuilder__init(val* self, val* p0, val* p1) {
611 val* var_model /* var model: Model */;
612 val* var_toolcontext /* var toolcontext: ToolContext */;
613 short int var /* : Bool */;
614 val* var1 /* : OptionBool */;
615 val* var2 /* : nullable Object */;
616 short int var3 /* : Bool */;
617 short int var_ /* var : Bool */;
618 val* var4 /* : OptionBool */;
619 val* var5 /* : nullable Object */;
620 short int var6 /* : Bool */;
621 static val* varonce;
622 val* var7 /* : String */;
623 char* var8 /* : NativeString */;
624 long var9 /* : Int */;
625 val* var10 /* : String */;
626 long var11 /* : Int */;
627 var_model = p0;
628 var_toolcontext = p1;
629 var1 = ((val* (*)(val*))(var_toolcontext->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_stacktrace]))(var_toolcontext) /* opt_no_stacktrace on <var_toolcontext:ToolContext>*/;
630 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_opts__Option__value]))(var1) /* value on <var1:OptionBool>*/;
631 var3 = ((struct instance_kernel__Bool*)var2)->value; /* autounbox from nullable Object to Bool */;
632 var_ = var3;
633 if (var3){
634 var4 = ((val* (*)(val*))(var_toolcontext->class->vft[COLOR_abstract_compiler__ToolContext__opt_stacktrace]))(var_toolcontext) /* opt_stacktrace on <var_toolcontext:ToolContext>*/;
635 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_opts__Option__value]))(var4) /* value on <var4:OptionBool>*/;
636 var6 = ((struct instance_kernel__Bool*)var5)->value; /* autounbox from nullable Object to Bool */;
637 var = var6;
638 } else {
639 var = var_;
640 }
641 if (var){
642 if (varonce) {
643 var7 = varonce;
644 } else {
645 var8 = "Cannot use --nit-stacktrace when --no-stacktrace is activated";
646 var9 = 61;
647 var10 = string__NativeString__to_s_with_length(var8, var9);
648 var7 = var10;
649 varonce = var7;
650 }
651 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var7) /* print on <self:ModelBuilder>*/;
652 var11 = 1;
653 ((void (*)(val*, long))(self->class->vft[COLOR_kernel__Object__exit]))(self, var11) /* exit on <self:ModelBuilder>*/;
654 } else {
655 }
656 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__ModelBuilder__init]))(self, p0, p1) /* init on <self:ModelBuilder>*/;
657 RET_LABEL:;
658 }
659 /* method abstract_compiler#ModelBuilder#init for (self: Object, Model, ToolContext) */
660 void VIRTUAL_abstract_compiler__ModelBuilder__init(val* self, val* p0, val* p1) {
661 abstract_compiler__ModelBuilder__init(self, p0, p1);
662 RET_LABEL:;
663 }
664 /* method abstract_compiler#ModelBuilder#compile_dir for (self: ModelBuilder): String */
665 val* abstract_compiler__ModelBuilder__compile_dir(val* self) {
666 val* var /* : String */;
667 val* var1 /* : String */;
668 var1 = self->attrs[COLOR_abstract_compiler__ModelBuilder___64dcompile_dir].val; /* @compile_dir on <self:ModelBuilder> */
669 if (var1 == NULL) {
670 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @compile_dir");
671 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 82);
672 show_backtrace(1);
673 }
674 var = var1;
675 RET_LABEL:;
676 return var;
677 }
678 /* method abstract_compiler#ModelBuilder#compile_dir for (self: Object): String */
679 val* VIRTUAL_abstract_compiler__ModelBuilder__compile_dir(val* self) {
680 val* var /* : String */;
681 val* var1 /* : String */;
682 var1 = abstract_compiler__ModelBuilder__compile_dir(self);
683 var = var1;
684 RET_LABEL:;
685 return var;
686 }
687 /* method abstract_compiler#ModelBuilder#compile_dir= for (self: ModelBuilder, String) */
688 void abstract_compiler__ModelBuilder__compile_dir_61d(val* self, val* p0) {
689 self->attrs[COLOR_abstract_compiler__ModelBuilder___64dcompile_dir].val = p0; /* @compile_dir on <self:ModelBuilder> */
690 RET_LABEL:;
691 }
692 /* method abstract_compiler#ModelBuilder#compile_dir= for (self: Object, String) */
693 void VIRTUAL_abstract_compiler__ModelBuilder__compile_dir_61d(val* self, val* p0) {
694 abstract_compiler__ModelBuilder__compile_dir_61d(self, p0);
695 RET_LABEL:;
696 }
697 /* method abstract_compiler#ModelBuilder#write_and_make for (self: ModelBuilder, AbstractCompiler) */
698 void abstract_compiler__ModelBuilder__write_and_make(val* self, val* p0) {
699 val* var_compiler /* var compiler: AbstractCompiler */;
700 val* var /* : MModule */;
701 val* var1 /* : nullable Platform */;
702 val* var_platform /* var platform: nullable Platform */;
703 val* var2 /* : null */;
704 short int var3 /* : Bool */;
705 val* var4 /* : MakefileToolchain */;
706 val* var5 /* : ToolContext */;
707 val* var_toolchain /* var toolchain: nullable Object */;
708 val* var6 /* : ToolContext */;
709 val* var7 /* : Toolchain */;
710 val* var8 /* : String */;
711 var_compiler = p0;
712 var = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var_compiler) /* mainmodule on <var_compiler:AbstractCompiler>*/;
713 var1 = ((val* (*)(val*))(var->class->vft[COLOR_platform__MModule__target_platform]))(var) /* target_platform on <var:MModule>*/;
714 var_platform = var1;
715 var2 = NULL;
716 if (var_platform == NULL) {
717 var3 = 1; /* is null */
718 } else {
719 var3 = 0; /* arg is null but recv is not */
720 }
721 if (var3){
722 var4 = NEW_abstract_compiler__MakefileToolchain(&type_abstract_compiler__MakefileToolchain);
723 var5 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
724 ((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_compiler__Toolchain__init]))(var4, var5) /* init on <var4:MakefileToolchain>*/;
725 var_toolchain = var4;
726 } else {
727 var6 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
728 var7 = ((val* (*)(val*, val*))(var_platform->class->vft[COLOR_abstract_compiler__Platform__toolchain]))(var_platform, var6) /* toolchain on <var_platform:nullable Platform(Platform)>*/;
729 var_toolchain = var7;
730 }
731 var8 = ((val* (*)(val*))(var_toolchain->class->vft[COLOR_abstract_compiler__Toolchain__compile_dir]))(var_toolchain) /* compile_dir on <var_toolchain:nullable Object(Toolchain)>*/;
732 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__ModelBuilder__compile_dir_61d]))(self, var8) /* compile_dir= on <self:ModelBuilder>*/;
733 ((void (*)(val*, val*))(var_toolchain->class->vft[COLOR_abstract_compiler__Toolchain__write_and_make]))(var_toolchain, var_compiler) /* write_and_make on <var_toolchain:nullable Object(Toolchain)>*/;
734 RET_LABEL:;
735 }
736 /* method abstract_compiler#ModelBuilder#write_and_make for (self: Object, AbstractCompiler) */
737 void VIRTUAL_abstract_compiler__ModelBuilder__write_and_make(val* self, val* p0) {
738 abstract_compiler__ModelBuilder__write_and_make(self, p0);
739 RET_LABEL:;
740 }
741 /* method abstract_compiler#Platform#toolchain for (self: Platform, ToolContext): Toolchain */
742 val* abstract_compiler__Platform__toolchain(val* self, val* p0) {
743 val* var /* : Toolchain */;
744 const char* var_class_name;
745 var_class_name = self == NULL ? "null" : self->type->name;
746 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "toolchain", var_class_name);
747 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 101);
748 show_backtrace(1);
749 RET_LABEL:;
750 return var;
751 }
752 /* method abstract_compiler#Platform#toolchain for (self: Object, ToolContext): Toolchain */
753 val* VIRTUAL_abstract_compiler__Platform__toolchain(val* self, val* p0) {
754 val* var /* : Toolchain */;
755 val* var1 /* : Toolchain */;
756 var1 = abstract_compiler__Platform__toolchain(self, p0);
757 var = var1;
758 RET_LABEL:;
759 return var;
760 }
761 /* method abstract_compiler#Toolchain#toolcontext for (self: Toolchain): ToolContext */
762 val* abstract_compiler__Toolchain__toolcontext(val* self) {
763 val* var /* : ToolContext */;
764 val* var1 /* : ToolContext */;
765 var1 = self->attrs[COLOR_abstract_compiler__Toolchain___64dtoolcontext].val; /* @toolcontext on <self:Toolchain> */
766 if (var1 == NULL) {
767 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @toolcontext");
768 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 105);
769 show_backtrace(1);
770 }
771 var = var1;
772 RET_LABEL:;
773 return var;
774 }
775 /* method abstract_compiler#Toolchain#toolcontext for (self: Object): ToolContext */
776 val* VIRTUAL_abstract_compiler__Toolchain__toolcontext(val* self) {
777 val* var /* : ToolContext */;
778 val* var1 /* : ToolContext */;
779 var1 = abstract_compiler__Toolchain__toolcontext(self);
780 var = var1;
781 RET_LABEL:;
782 return var;
783 }
784 /* method abstract_compiler#Toolchain#toolcontext= for (self: Toolchain, ToolContext) */
785 void abstract_compiler__Toolchain__toolcontext_61d(val* self, val* p0) {
786 self->attrs[COLOR_abstract_compiler__Toolchain___64dtoolcontext].val = p0; /* @toolcontext on <self:Toolchain> */
787 RET_LABEL:;
788 }
789 /* method abstract_compiler#Toolchain#toolcontext= for (self: Object, ToolContext) */
790 void VIRTUAL_abstract_compiler__Toolchain__toolcontext_61d(val* self, val* p0) {
791 abstract_compiler__Toolchain__toolcontext_61d(self, p0);
792 RET_LABEL:;
793 }
794 /* method abstract_compiler#Toolchain#compile_dir for (self: Toolchain): String */
795 val* abstract_compiler__Toolchain__compile_dir(val* self) {
796 val* var /* : String */;
797 val* var1 /* : ToolContext */;
798 val* var2 /* : OptionString */;
799 val* var3 /* : nullable Object */;
800 val* var_compile_dir /* var compile_dir: nullable String */;
801 val* var4 /* : null */;
802 short int var5 /* : Bool */;
803 static val* varonce;
804 val* var6 /* : String */;
805 char* var7 /* : NativeString */;
806 long var8 /* : Int */;
807 val* var9 /* : String */;
808 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__Toolchain__toolcontext]))(self) /* toolcontext on <self:Toolchain>*/;
809 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__ToolContext__opt_compile_dir]))(var1) /* opt_compile_dir on <var1:ToolContext>*/;
810 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_opts__Option__value]))(var2) /* value on <var2:OptionString>*/;
811 var_compile_dir = var3;
812 var4 = NULL;
813 if (var_compile_dir == NULL) {
814 var5 = 1; /* is null */
815 } else {
816 var5 = 0; /* arg is null but recv is not */
817 }
818 if (var5){
819 if (varonce) {
820 var6 = varonce;
821 } else {
822 var7 = ".nit_compile";
823 var8 = 12;
824 var9 = string__NativeString__to_s_with_length(var7, var8);
825 var6 = var9;
826 varonce = var6;
827 }
828 var_compile_dir = var6;
829 } else {
830 }
831 var = var_compile_dir;
832 goto RET_LABEL;
833 RET_LABEL:;
834 return var;
835 }
836 /* method abstract_compiler#Toolchain#compile_dir for (self: Object): String */
837 val* VIRTUAL_abstract_compiler__Toolchain__compile_dir(val* self) {
838 val* var /* : String */;
839 val* var1 /* : String */;
840 var1 = abstract_compiler__Toolchain__compile_dir(self);
841 var = var1;
842 RET_LABEL:;
843 return var;
844 }
845 /* method abstract_compiler#Toolchain#write_and_make for (self: Toolchain, AbstractCompiler) */
846 void abstract_compiler__Toolchain__write_and_make(val* self, val* p0) {
847 const char* var_class_name;
848 var_class_name = self == NULL ? "null" : self->type->name;
849 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "write_and_make", var_class_name);
850 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 114);
851 show_backtrace(1);
852 RET_LABEL:;
853 }
854 /* method abstract_compiler#Toolchain#write_and_make for (self: Object, AbstractCompiler) */
855 void VIRTUAL_abstract_compiler__Toolchain__write_and_make(val* self, val* p0) {
856 abstract_compiler__Toolchain__write_and_make(self, p0);
857 RET_LABEL:;
858 }
859 /* method abstract_compiler#Toolchain#init for (self: Toolchain, ToolContext) */
860 void abstract_compiler__Toolchain__init(val* self, val* p0) {
861 self->attrs[COLOR_abstract_compiler__Toolchain___64dtoolcontext].val = p0; /* @toolcontext on <self:Toolchain> */
862 RET_LABEL:;
863 }
864 /* method abstract_compiler#Toolchain#init for (self: Object, ToolContext) */
865 void VIRTUAL_abstract_compiler__Toolchain__init(val* self, val* p0) {
866 abstract_compiler__Toolchain__init(self, p0);
867 RET_LABEL:;
868 }
869 /* method abstract_compiler#MakefileToolchain#cc_paths for (self: MakefileToolchain): Array[String] */
870 val* abstract_compiler__MakefileToolchain__cc_paths(val* self) {
871 val* var /* : Array[String] */;
872 val* var1 /* : Array[String] */;
873 var1 = self->attrs[COLOR_abstract_compiler__MakefileToolchain___64dcc_paths].val; /* @cc_paths on <self:MakefileToolchain> */
874 if (var1 == NULL) {
875 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @cc_paths");
876 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 119);
877 show_backtrace(1);
878 }
879 var = var1;
880 RET_LABEL:;
881 return var;
882 }
883 /* method abstract_compiler#MakefileToolchain#cc_paths for (self: Object): Array[String] */
884 val* VIRTUAL_abstract_compiler__MakefileToolchain__cc_paths(val* self) {
885 val* var /* : Array[String] */;
886 val* var1 /* : Array[String] */;
887 var1 = abstract_compiler__MakefileToolchain__cc_paths(self);
888 var = var1;
889 RET_LABEL:;
890 return var;
891 }
892 /* method abstract_compiler#MakefileToolchain#cc_paths= for (self: MakefileToolchain, Array[String]) */
893 void abstract_compiler__MakefileToolchain__cc_paths_61d(val* self, val* p0) {
894 self->attrs[COLOR_abstract_compiler__MakefileToolchain___64dcc_paths].val = p0; /* @cc_paths on <self:MakefileToolchain> */
895 RET_LABEL:;
896 }
897 /* method abstract_compiler#MakefileToolchain#cc_paths= for (self: Object, Array[String]) */
898 void VIRTUAL_abstract_compiler__MakefileToolchain__cc_paths_61d(val* self, val* p0) {
899 abstract_compiler__MakefileToolchain__cc_paths_61d(self, p0);
900 RET_LABEL:;
901 }
902 /* method abstract_compiler#MakefileToolchain#gather_cc_paths for (self: MakefileToolchain) */
903 void abstract_compiler__MakefileToolchain__gather_cc_paths(val* self) {
904 static val* varonce;
905 val* var /* : String */;
906 char* var1 /* : NativeString */;
907 long var2 /* : Int */;
908 val* var3 /* : String */;
909 val* var4 /* : String */;
910 val* var_path_env /* var path_env: String */;
911 short int var5 /* : Bool */;
912 short int var6 /* : Bool */;
913 val* var7 /* : Array[Object] */;
914 long var8 /* : Int */;
915 val* var_ /* var : Array[Object] */;
916 static val* varonce9;
917 val* var10 /* : String */;
918 char* var11 /* : NativeString */;
919 long var12 /* : Int */;
920 val* var13 /* : String */;
921 static val* varonce14;
922 val* var15 /* : String */;
923 char* var16 /* : NativeString */;
924 long var17 /* : Int */;
925 val* var18 /* : String */;
926 val* var19 /* : String */;
927 val* var_libname /* var libname: String */;
928 short int var20 /* : Bool */;
929 val* var21 /* : Array[String] */;
930 val* var22 /* : Array[Object] */;
931 long var23 /* : Int */;
932 val* var_24 /* var : Array[Object] */;
933 static val* varonce25;
934 val* var26 /* : String */;
935 char* var27 /* : NativeString */;
936 long var28 /* : Int */;
937 val* var29 /* : String */;
938 val* var30 /* : Sys */;
939 val* var31 /* : String */;
940 val* var32 /* : String */;
941 static val* varonce33;
942 val* var34 /* : String */;
943 char* var35 /* : NativeString */;
944 long var36 /* : Int */;
945 val* var37 /* : String */;
946 val* var38 /* : String */;
947 val* var_libname39 /* var libname: String */;
948 short int var40 /* : Bool */;
949 val* var41 /* : Array[String] */;
950 val* var42 /* : String */;
951 val* var43 /* : Array[String] */;
952 short int var44 /* : Bool */;
953 val* var45 /* : ToolContext */;
954 val* var46 /* : null */;
955 static val* varonce47;
956 val* var48 /* : String */;
957 char* var49 /* : NativeString */;
958 long var50 /* : Int */;
959 val* var51 /* : String */;
960 val* var52 /* : Array[String] */;
961 val* var53 /* : ToolContext */;
962 val* var54 /* : OptionArray */;
963 val* var55 /* : nullable Object */;
964 static val* varonce56;
965 val* var57 /* : String */;
966 char* var58 /* : NativeString */;
967 long var59 /* : Int */;
968 val* var60 /* : String */;
969 val* var61 /* : String */;
970 short int var62 /* : Bool */;
971 short int var63 /* : Bool */;
972 val* var64 /* : Array[String] */;
973 char var65 /* : Char */;
974 val* var66 /* : Array[String] */;
975 val* var67 /* : Pattern */;
976 if (varonce) {
977 var = varonce;
978 } else {
979 var1 = "NIT_DIR";
980 var2 = 7;
981 var3 = string__NativeString__to_s_with_length(var1, var2);
982 var = var3;
983 varonce = var;
984 }
985 var4 = ((val* (*)(val*))(var->class->vft[COLOR_environ__String__environ]))(var) /* environ on <var:String>*/;
986 var_path_env = var4;
987 var5 = ((short int (*)(val*))(var_path_env->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_path_env) /* is_empty on <var_path_env:String>*/;
988 var6 = !var5;
989 if (var6){
990 var7 = NEW_array__Array(&type_array__Arraykernel__Object);
991 var8 = 3;
992 ((void (*)(val*, long))(var7->class->vft[COLOR_array__Array__with_capacity]))(var7, var8) /* with_capacity on <var7:Array[Object]>*/;
993 var_ = var7;
994 if (varonce9) {
995 var10 = varonce9;
996 } else {
997 var11 = "";
998 var12 = 0;
999 var13 = string__NativeString__to_s_with_length(var11, var12);
1000 var10 = var13;
1001 varonce9 = var10;
1002 }
1003 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var10) /* add on <var_:Array[Object]>*/;
1004 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_path_env) /* add on <var_:Array[Object]>*/;
1005 if (varonce14) {
1006 var15 = varonce14;
1007 } else {
1008 var16 = "/clib";
1009 var17 = 5;
1010 var18 = string__NativeString__to_s_with_length(var16, var17);
1011 var15 = var18;
1012 varonce14 = var15;
1013 }
1014 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var15) /* add on <var_:Array[Object]>*/;
1015 var19 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
1016 var_libname = var19;
1017 var20 = ((short int (*)(val*))(var_libname->class->vft[COLOR_file__String__file_exists]))(var_libname) /* file_exists on <var_libname:String>*/;
1018 if (var20){
1019 var21 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MakefileToolchain__cc_paths]))(self) /* cc_paths on <self:MakefileToolchain>*/;
1020 ((void (*)(val*, val*))(var21->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var21, var_libname) /* add on <var21:Array[String]>*/;
1021 } else {
1022 }
1023 } else {
1024 }
1025 var22 = NEW_array__Array(&type_array__Arraykernel__Object);
1026 var23 = 3;
1027 ((void (*)(val*, long))(var22->class->vft[COLOR_array__Array__with_capacity]))(var22, var23) /* with_capacity on <var22:Array[Object]>*/;
1028 var_24 = var22;
1029 if (varonce25) {
1030 var26 = varonce25;
1031 } else {
1032 var27 = "";
1033 var28 = 0;
1034 var29 = string__NativeString__to_s_with_length(var27, var28);
1035 var26 = var29;
1036 varonce25 = var26;
1037 }
1038 ((void (*)(val*, val*))(var_24->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_24, var26) /* add on <var_24:Array[Object]>*/;
1039 var30 = ((val* (*)(val*))(self->class->vft[COLOR_kernel__Object__sys]))(self) /* sys on <self:MakefileToolchain>*/;
1040 var31 = ((val* (*)(val*))(var30->class->vft[COLOR_string__Sys__program_name]))(var30) /* program_name on <var30:Sys>*/;
1041 var32 = ((val* (*)(val*))(var31->class->vft[COLOR_file__String__dirname]))(var31) /* dirname on <var31:String>*/;
1042 ((void (*)(val*, val*))(var_24->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_24, var32) /* add on <var_24:Array[Object]>*/;
1043 if (varonce33) {
1044 var34 = varonce33;
1045 } else {
1046 var35 = "/../clib";
1047 var36 = 8;
1048 var37 = string__NativeString__to_s_with_length(var35, var36);
1049 var34 = var37;
1050 varonce33 = var34;
1051 }
1052 ((void (*)(val*, val*))(var_24->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_24, var34) /* add on <var_24:Array[Object]>*/;
1053 var38 = ((val* (*)(val*))(var_24->class->vft[COLOR_string__Object__to_s]))(var_24) /* to_s on <var_24:Array[Object]>*/;
1054 var_libname39 = var38;
1055 var40 = ((short int (*)(val*))(var_libname39->class->vft[COLOR_file__String__file_exists]))(var_libname39) /* file_exists on <var_libname39:String>*/;
1056 if (var40){
1057 var41 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MakefileToolchain__cc_paths]))(self) /* cc_paths on <self:MakefileToolchain>*/;
1058 var42 = ((val* (*)(val*))(var_libname39->class->vft[COLOR_file__String__simplify_path]))(var_libname39) /* simplify_path on <var_libname39:String>*/;
1059 ((void (*)(val*, val*))(var41->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var41, var42) /* add on <var41:Array[String]>*/;
1060 } else {
1061 }
1062 var43 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MakefileToolchain__cc_paths]))(self) /* cc_paths on <self:MakefileToolchain>*/;
1063 var44 = ((short int (*)(val*))(var43->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var43) /* is_empty on <var43:Array[String]>*/;
1064 if (var44){
1065 var45 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__Toolchain__toolcontext]))(self) /* toolcontext on <self:MakefileToolchain>*/;
1066 var46 = NULL;
1067 if (varonce47) {
1068 var48 = varonce47;
1069 } else {
1070 var49 = "Cannot determine the nit clib path. define envvar NIT_DIR.";
1071 var50 = 58;
1072 var51 = string__NativeString__to_s_with_length(var49, var50);
1073 var48 = var51;
1074 varonce47 = var48;
1075 }
1076 ((void (*)(val*, val*, val*))(var45->class->vft[COLOR_toolcontext__ToolContext__error]))(var45, var46, var48) /* error on <var45:ToolContext>*/;
1077 } else {
1078 }
1079 var52 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MakefileToolchain__cc_paths]))(self) /* cc_paths on <self:MakefileToolchain>*/;
1080 var53 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__Toolchain__toolcontext]))(self) /* toolcontext on <self:MakefileToolchain>*/;
1081 var54 = ((val* (*)(val*))(var53->class->vft[COLOR_abstract_compiler__ToolContext__opt_cc_path]))(var53) /* opt_cc_path on <var53:ToolContext>*/;
1082 var55 = ((val* (*)(val*))(var54->class->vft[COLOR_opts__Option__value]))(var54) /* value on <var54:OptionArray>*/;
1083 ((void (*)(val*, val*))(var52->class->vft[COLOR_abstract_collection__Sequence__append]))(var52, var55) /* append on <var52:Array[String]>*/;
1084 if (varonce56) {
1085 var57 = varonce56;
1086 } else {
1087 var58 = "NIT_CC_PATH";
1088 var59 = 11;
1089 var60 = string__NativeString__to_s_with_length(var58, var59);
1090 var57 = var60;
1091 varonce56 = var57;
1092 }
1093 var61 = ((val* (*)(val*))(var57->class->vft[COLOR_environ__String__environ]))(var57) /* environ on <var57:String>*/;
1094 var_path_env = var61;
1095 var62 = ((short int (*)(val*))(var_path_env->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_path_env) /* is_empty on <var_path_env:String>*/;
1096 var63 = !var62;
1097 if (var63){
1098 var64 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MakefileToolchain__cc_paths]))(self) /* cc_paths on <self:MakefileToolchain>*/;
1099 var65 = ':';
1100 var67 = BOX_kernel__Char(var65); /* autobox from Char to Pattern */
1101 var66 = ((val* (*)(val*, val*))(var_path_env->class->vft[COLOR_string_search__String__split_with]))(var_path_env, var67) /* split_with on <var_path_env:String>*/;
1102 ((void (*)(val*, val*))(var64->class->vft[COLOR_abstract_collection__Sequence__append]))(var64, var66) /* append on <var64:Array[String]>*/;
1103 } else {
1104 }
1105 RET_LABEL:;
1106 }
1107 /* method abstract_compiler#MakefileToolchain#gather_cc_paths for (self: Object) */
1108 void VIRTUAL_abstract_compiler__MakefileToolchain__gather_cc_paths(val* self) {
1109 abstract_compiler__MakefileToolchain__gather_cc_paths(self);
1110 RET_LABEL:;
1111 }
1112 /* method abstract_compiler#MakefileToolchain#write_and_make for (self: MakefileToolchain, AbstractCompiler) */
1113 void abstract_compiler__MakefileToolchain__write_and_make(val* self, val* p0) {
1114 val* var_compiler /* var compiler: AbstractCompiler */;
1115 val* var /* : MModule */;
1116 val* var_mainmodule /* var mainmodule: MModule */;
1117 val* var1 /* : String */;
1118 val* var_compile_dir /* var compile_dir: String */;
1119 long var2 /* : Int */;
1120 long var_time0 /* var time0: Int */;
1121 val* var3 /* : ToolContext */;
1122 static val* varonce;
1123 val* var4 /* : String */;
1124 char* var5 /* : NativeString */;
1125 long var6 /* : Int */;
1126 val* var7 /* : String */;
1127 long var8 /* : Int */;
1128 val* var9 /* : Array[String] */;
1129 val* var_cfiles /* var cfiles: Array[String] */;
1130 long var10 /* : Int */;
1131 long var_time1 /* var time1: Int */;
1132 val* var11 /* : ToolContext */;
1133 static val* varonce12;
1134 val* var13 /* : String */;
1135 char* var14 /* : NativeString */;
1136 long var15 /* : Int */;
1137 val* var16 /* : String */;
1138 long var17 /* : Int */;
1139 long var19 /* : Int */;
1140 static val* varonce20;
1141 val* var21 /* : String */;
1142 char* var22 /* : NativeString */;
1143 long var23 /* : Int */;
1144 val* var24 /* : String */;
1145 val* var25 /* : Array[Object] */;
1146 long var26 /* : Int */;
1147 val* var27 /* : NativeArray[Object] */;
1148 val* var28 /* : Object */;
1149 val* var29 /* : String */;
1150 long var30 /* : Int */;
1151 val* var31 /* : ToolContext */;
1152 val* var32 /* : OptionBool */;
1153 val* var33 /* : nullable Object */;
1154 short int var34 /* : Bool */;
1155 val* var35 /* : ToolContext */;
1156 static val* varonce36;
1157 val* var37 /* : String */;
1158 char* var38 /* : NativeString */;
1159 long var39 /* : Int */;
1160 val* var40 /* : String */;
1161 long var41 /* : Int */;
1162 long var42 /* : Int */;
1163 val* var43 /* : ToolContext */;
1164 static val* varonce44;
1165 val* var45 /* : String */;
1166 char* var46 /* : NativeString */;
1167 long var47 /* : Int */;
1168 val* var48 /* : String */;
1169 long var49 /* : Int */;
1170 long var51 /* : Int */;
1171 static val* varonce52;
1172 val* var53 /* : String */;
1173 char* var54 /* : NativeString */;
1174 long var55 /* : Int */;
1175 val* var56 /* : String */;
1176 val* var57 /* : Array[Object] */;
1177 long var58 /* : Int */;
1178 val* var59 /* : NativeArray[Object] */;
1179 val* var60 /* : Object */;
1180 val* var61 /* : String */;
1181 long var62 /* : Int */;
1182 var_compiler = p0;
1183 ((void (*)(val*))(self->class->vft[COLOR_abstract_compiler__MakefileToolchain__gather_cc_paths]))(self) /* gather_cc_paths on <self:MakefileToolchain>*/;
1184 var = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var_compiler) /* mainmodule on <var_compiler:AbstractCompiler>*/;
1185 var_mainmodule = var;
1186 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__Toolchain__compile_dir]))(self) /* compile_dir on <self:MakefileToolchain>*/;
1187 var_compile_dir = var1;
1188 var2 = ((long (*)(val*))(self->class->vft[COLOR_time__Object__get_time]))(self) /* get_time on <self:MakefileToolchain>*/;
1189 var_time0 = var2;
1190 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__Toolchain__toolcontext]))(self) /* toolcontext on <self:MakefileToolchain>*/;
1191 if (varonce) {
1192 var4 = varonce;
1193 } else {
1194 var5 = "*** WRITING C ***";
1195 var6 = 17;
1196 var7 = string__NativeString__to_s_with_length(var5, var6);
1197 var4 = var7;
1198 varonce = var4;
1199 }
1200 var8 = 1;
1201 ((void (*)(val*, val*, long))(var3->class->vft[COLOR_toolcontext__ToolContext__info]))(var3, var4, var8) /* info on <var3:ToolContext>*/;
1202 ((void (*)(val*))(var_compile_dir->class->vft[COLOR_file__String__mkdir]))(var_compile_dir) /* mkdir on <var_compile_dir:String>*/;
1203 var9 = NEW_array__Array(&type_array__Arraystring__String);
1204 ((void (*)(val*))(var9->class->vft[COLOR_array__Array__init]))(var9) /* init on <var9:Array[String]>*/;
1205 var_cfiles = var9;
1206 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__MakefileToolchain__write_files]))(self, var_compiler, var_compile_dir, var_cfiles) /* write_files on <self:MakefileToolchain>*/;
1207 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__MakefileToolchain__write_makefile]))(self, var_compiler, var_compile_dir, var_cfiles) /* write_makefile on <self:MakefileToolchain>*/;
1208 var10 = ((long (*)(val*))(self->class->vft[COLOR_time__Object__get_time]))(self) /* get_time on <self:MakefileToolchain>*/;
1209 var_time1 = var10;
1210 var11 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__Toolchain__toolcontext]))(self) /* toolcontext on <self:MakefileToolchain>*/;
1211 if (varonce12) {
1212 var13 = varonce12;
1213 } else {
1214 var14 = "*** END WRITING C: ";
1215 var15 = 19;
1216 var16 = string__NativeString__to_s_with_length(var14, var15);
1217 var13 = var16;
1218 varonce12 = var13;
1219 }
1220 { /* Inline kernel#Int#- (var_time1,var_time0) */
1221 var19 = var_time1 - var_time0;
1222 var17 = var19;
1223 goto RET_LABEL18;
1224 RET_LABEL18:(void)0;
1225 }
1226 if (varonce20) {
1227 var21 = varonce20;
1228 } else {
1229 var22 = " ***";
1230 var23 = 4;
1231 var24 = string__NativeString__to_s_with_length(var22, var23);
1232 var21 = var24;
1233 varonce20 = var21;
1234 }
1235 var25 = NEW_array__Array(&type_array__Arraykernel__Object);
1236 { /* var25 = array_instance Array[Object] */
1237 var26 = 3;
1238 var27 = NEW_array__NativeArray(var26, &type_array__NativeArraykernel__Object);
1239 ((struct instance_array__NativeArray*)var27)->values[0] = (val*) var13;
1240 var28 = BOX_kernel__Int(var17); /* autobox from Int to Object */
1241 ((struct instance_array__NativeArray*)var27)->values[1] = (val*) var28;
1242 ((struct instance_array__NativeArray*)var27)->values[2] = (val*) var21;
1243 ((void (*)(val*, val*, long))(var25->class->vft[COLOR_array__Array__with_native]))(var25, var27, var26) /* with_native on <var25:Array[Object]>*/;
1244 }
1245 var29 = ((val* (*)(val*))(var25->class->vft[COLOR_string__Object__to_s]))(var25) /* to_s on <var25:Array[Object]>*/;
1246 var30 = 2;
1247 ((void (*)(val*, val*, long))(var11->class->vft[COLOR_toolcontext__ToolContext__info]))(var11, var29, var30) /* info on <var11:ToolContext>*/;
1248 var31 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__Toolchain__toolcontext]))(self) /* toolcontext on <self:MakefileToolchain>*/;
1249 var32 = ((val* (*)(val*))(var31->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_cc]))(var31) /* opt_no_cc on <var31:ToolContext>*/;
1250 var33 = ((val* (*)(val*))(var32->class->vft[COLOR_opts__Option__value]))(var32) /* value on <var32:OptionBool>*/;
1251 var34 = ((struct instance_kernel__Bool*)var33)->value; /* autounbox from nullable Object to Bool */;
1252 if (var34){
1253 goto RET_LABEL;
1254 } else {
1255 }
1256 var_time0 = var_time1;
1257 var35 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__Toolchain__toolcontext]))(self) /* toolcontext on <self:MakefileToolchain>*/;
1258 if (varonce36) {
1259 var37 = varonce36;
1260 } else {
1261 var38 = "*** COMPILING C ***";
1262 var39 = 19;
1263 var40 = string__NativeString__to_s_with_length(var38, var39);
1264 var37 = var40;
1265 varonce36 = var37;
1266 }
1267 var41 = 1;
1268 ((void (*)(val*, val*, long))(var35->class->vft[COLOR_toolcontext__ToolContext__info]))(var35, var37, var41) /* info on <var35:ToolContext>*/;
1269 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__MakefileToolchain__compile_c_code]))(self, var_compiler, var_compile_dir) /* compile_c_code on <self:MakefileToolchain>*/;
1270 var42 = ((long (*)(val*))(self->class->vft[COLOR_time__Object__get_time]))(self) /* get_time on <self:MakefileToolchain>*/;
1271 var_time1 = var42;
1272 var43 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__Toolchain__toolcontext]))(self) /* toolcontext on <self:MakefileToolchain>*/;
1273 if (varonce44) {
1274 var45 = varonce44;
1275 } else {
1276 var46 = "*** END COMPILING C: ";
1277 var47 = 21;
1278 var48 = string__NativeString__to_s_with_length(var46, var47);
1279 var45 = var48;
1280 varonce44 = var45;
1281 }
1282 { /* Inline kernel#Int#- (var_time1,var_time0) */
1283 var51 = var_time1 - var_time0;
1284 var49 = var51;
1285 goto RET_LABEL50;
1286 RET_LABEL50:(void)0;
1287 }
1288 if (varonce52) {
1289 var53 = varonce52;
1290 } else {
1291 var54 = " ***";
1292 var55 = 4;
1293 var56 = string__NativeString__to_s_with_length(var54, var55);
1294 var53 = var56;
1295 varonce52 = var53;
1296 }
1297 var57 = NEW_array__Array(&type_array__Arraykernel__Object);
1298 { /* var57 = array_instance Array[Object] */
1299 var58 = 3;
1300 var59 = NEW_array__NativeArray(var58, &type_array__NativeArraykernel__Object);
1301 ((struct instance_array__NativeArray*)var59)->values[0] = (val*) var45;
1302 var60 = BOX_kernel__Int(var49); /* autobox from Int to Object */
1303 ((struct instance_array__NativeArray*)var59)->values[1] = (val*) var60;
1304 ((struct instance_array__NativeArray*)var59)->values[2] = (val*) var53;
1305 ((void (*)(val*, val*, long))(var57->class->vft[COLOR_array__Array__with_native]))(var57, var59, var58) /* with_native on <var57:Array[Object]>*/;
1306 }
1307 var61 = ((val* (*)(val*))(var57->class->vft[COLOR_string__Object__to_s]))(var57) /* to_s on <var57:Array[Object]>*/;
1308 var62 = 2;
1309 ((void (*)(val*, val*, long))(var43->class->vft[COLOR_toolcontext__ToolContext__info]))(var43, var61, var62) /* info on <var43:ToolContext>*/;
1310 RET_LABEL:;
1311 }
1312 /* method abstract_compiler#MakefileToolchain#write_and_make for (self: Object, AbstractCompiler) */
1313 void VIRTUAL_abstract_compiler__MakefileToolchain__write_and_make(val* self, val* p0) {
1314 abstract_compiler__MakefileToolchain__write_and_make(self, p0);
1315 RET_LABEL:;
1316 }
1317 /* method abstract_compiler#MakefileToolchain#write_files for (self: MakefileToolchain, AbstractCompiler, String, Array[String]) */
1318 void abstract_compiler__MakefileToolchain__write_files(val* self, val* p0, val* p1, val* p2) {
1319 val* var_compiler /* var compiler: AbstractCompiler */;
1320 val* var_compile_dir /* var compile_dir: String */;
1321 val* var_cfiles /* var cfiles: Array[String] */;
1322 val* var /* : ToolContext */;
1323 val* var1 /* : OptionBool */;
1324 val* var2 /* : nullable Object */;
1325 short int var3 /* : Bool */;
1326 val* var4 /* : ExternCFile */;
1327 static val* varonce;
1328 val* var5 /* : String */;
1329 char* var6 /* : NativeString */;
1330 long var7 /* : Int */;
1331 val* var8 /* : String */;
1332 static val* varonce9;
1333 val* var10 /* : String */;
1334 char* var11 /* : NativeString */;
1335 long var12 /* : Int */;
1336 val* var13 /* : String */;
1337 val* var_gc_chooser /* var gc_chooser: ExternCFile */;
1338 val* var14 /* : Array[ExternFile] */;
1339 val* var15 /* : Array[String] */;
1340 val* var16 /* : Array[String] */;
1341 val* var17 /* : nullable Object */;
1342 static val* varonce18;
1343 val* var19 /* : String */;
1344 char* var20 /* : NativeString */;
1345 long var21 /* : Int */;
1346 val* var22 /* : String */;
1347 val* var23 /* : Array[Object] */;
1348 long var24 /* : Int */;
1349 val* var25 /* : NativeArray[Object] */;
1350 val* var26 /* : String */;
1351 val* var27 /* : Array[String] */;
1352 val* var28 /* : Array[String] */;
1353 val* var29 /* : nullable Object */;
1354 static val* varonce30;
1355 val* var31 /* : String */;
1356 char* var32 /* : NativeString */;
1357 long var33 /* : Int */;
1358 val* var34 /* : String */;
1359 val* var35 /* : Array[Object] */;
1360 long var36 /* : Int */;
1361 val* var37 /* : NativeArray[Object] */;
1362 val* var38 /* : String */;
1363 val* var39 /* : ToolContext */;
1364 val* var40 /* : ModelBuilder */;
1365 val* var41 /* : HashMap[MModule, AModule] */;
1366 val* var_m2m /* var m2m: HashMap[MModule, AModule] */;
1367 val* var42 /* : MModule */;
1368 val* var43 /* : POSetElement[MModule] */;
1369 val* var44 /* : Collection[Object] */;
1370 val* var45 /* : Iterator[nullable Object] */;
1371 short int var46 /* : Bool */;
1372 val* var47 /* : nullable Object */;
1373 val* var_m /* var m: MModule */;
1374 val* var48 /* : Collection[Object] */;
1375 short int var49 /* : Bool */;
1376 val* var50 /* : nullable Object */;
1377 val* var_amodule /* var amodule: AModule */;
1378 short int var51 /* : Bool */;
1379 short int var52 /* : Bool */;
1380 short int var_ /* var : Bool */;
1381 short int var53 /* : Bool */;
1382 val* var54 /* : Array[String] */;
1383 val* var55 /* : Iterator[nullable Object] */;
1384 short int var56 /* : Bool */;
1385 val* var57 /* : nullable Object */;
1386 val* var_src /* var src: String */;
1387 static val* varonce58;
1388 val* var59 /* : String */;
1389 char* var60 /* : NativeString */;
1390 long var61 /* : Int */;
1391 val* var62 /* : String */;
1392 val* var63 /* : String */;
1393 val* var_basename /* var basename: String */;
1394 val* var64 /* : Array[Object] */;
1395 long var65 /* : Int */;
1396 val* var_66 /* var : Array[Object] */;
1397 static val* varonce67;
1398 val* var68 /* : String */;
1399 char* var69 /* : NativeString */;
1400 long var70 /* : Int */;
1401 val* var71 /* : String */;
1402 static val* varonce72;
1403 val* var73 /* : String */;
1404 char* var74 /* : NativeString */;
1405 long var75 /* : Int */;
1406 val* var76 /* : String */;
1407 static val* varonce77;
1408 val* var78 /* : String */;
1409 char* var79 /* : NativeString */;
1410 long var80 /* : Int */;
1411 val* var81 /* : String */;
1412 val* var82 /* : String */;
1413 val* var_dst /* var dst: String */;
1414 val* var84 /* : CodeWriter */;
1415 val* var85 /* : CodeFile */;
1416 val* var86 /* : String */;
1417 static val* varonce87;
1418 val* var88 /* : String */;
1419 char* var89 /* : NativeString */;
1420 long var90 /* : Int */;
1421 val* var91 /* : String */;
1422 val* var92 /* : String */;
1423 val* var_hfilename /* var hfilename: String */;
1424 val* var93 /* : Array[Object] */;
1425 long var94 /* : Int */;
1426 val* var_95 /* var : Array[Object] */;
1427 static val* varonce96;
1428 val* var97 /* : String */;
1429 char* var98 /* : NativeString */;
1430 long var99 /* : Int */;
1431 val* var100 /* : String */;
1432 static val* varonce101;
1433 val* var102 /* : String */;
1434 char* var103 /* : NativeString */;
1435 long var104 /* : Int */;
1436 val* var105 /* : String */;
1437 static val* varonce106;
1438 val* var107 /* : String */;
1439 char* var108 /* : NativeString */;
1440 long var109 /* : Int */;
1441 val* var110 /* : String */;
1442 val* var111 /* : String */;
1443 val* var_hfilepath /* var hfilepath: String */;
1444 val* var112 /* : OFStream */;
1445 val* var_h /* var h: OFStream */;
1446 val* var113 /* : CodeWriter */;
1447 val* var114 /* : List[String] */;
1448 val* var115 /* : Iterator[nullable Object] */;
1449 short int var116 /* : Bool */;
1450 val* var117 /* : nullable Object */;
1451 val* var_l /* var l: String */;
1452 static val* varonce118;
1453 val* var119 /* : String */;
1454 char* var120 /* : NativeString */;
1455 long var121 /* : Int */;
1456 val* var122 /* : String */;
1457 val* var124 /* : CodeWriter */;
1458 val* var125 /* : List[String] */;
1459 val* var126 /* : Iterator[nullable Object] */;
1460 short int var127 /* : Bool */;
1461 val* var128 /* : nullable Object */;
1462 val* var_l129 /* var l: String */;
1463 static val* varonce130;
1464 val* var131 /* : String */;
1465 char* var132 /* : NativeString */;
1466 long var133 /* : Int */;
1467 val* var134 /* : String */;
1468 val* var136 /* : List[CodeFile] */;
1469 val* var137 /* : Iterator[nullable Object] */;
1470 short int var138 /* : Bool */;
1471 val* var139 /* : nullable Object */;
1472 val* var_f /* var f: CodeFile */;
1473 long var140 /* : Int */;
1474 long var_i /* var i: Int */;
1475 val* var141 /* : null */;
1476 val* var_hfile /* var hfile: nullable OFStream */;
1477 long var142 /* : Int */;
1478 long var_count /* var count: Int */;
1479 val* var143 /* : Array[Object] */;
1480 long var144 /* : Int */;
1481 val* var_145 /* var : Array[Object] */;
1482 static val* varonce146;
1483 val* var147 /* : String */;
1484 char* var148 /* : NativeString */;
1485 long var149 /* : Int */;
1486 val* var150 /* : String */;
1487 val* var151 /* : String */;
1488 static val* varonce152;
1489 val* var153 /* : String */;
1490 char* var154 /* : NativeString */;
1491 long var155 /* : Int */;
1492 val* var156 /* : String */;
1493 val* var157 /* : String */;
1494 val* var_cfilename /* var cfilename: String */;
1495 val* var158 /* : Array[Object] */;
1496 long var159 /* : Int */;
1497 val* var_160 /* var : Array[Object] */;
1498 static val* varonce161;
1499 val* var162 /* : String */;
1500 char* var163 /* : NativeString */;
1501 long var164 /* : Int */;
1502 val* var165 /* : String */;
1503 static val* varonce166;
1504 val* var167 /* : String */;
1505 char* var168 /* : NativeString */;
1506 long var169 /* : Int */;
1507 val* var170 /* : String */;
1508 static val* varonce171;
1509 val* var172 /* : String */;
1510 char* var173 /* : NativeString */;
1511 long var174 /* : Int */;
1512 val* var175 /* : String */;
1513 val* var176 /* : String */;
1514 val* var_cfilepath /* var cfilepath: String */;
1515 val* var177 /* : OFStream */;
1516 static val* varonce178;
1517 val* var179 /* : String */;
1518 char* var180 /* : NativeString */;
1519 long var181 /* : Int */;
1520 val* var182 /* : String */;
1521 static val* varonce183;
1522 val* var184 /* : String */;
1523 char* var185 /* : NativeString */;
1524 long var186 /* : Int */;
1525 val* var187 /* : String */;
1526 val* var188 /* : Array[Object] */;
1527 long var189 /* : Int */;
1528 val* var190 /* : NativeArray[Object] */;
1529 val* var191 /* : String */;
1530 val* var192 /* : HashSet[String] */;
1531 val* var193 /* : Iterator[nullable Object] */;
1532 short int var194 /* : Bool */;
1533 val* var195 /* : nullable Object */;
1534 val* var_key /* var key: String */;
1535 val* var196 /* : HashMap[String, String] */;
1536 short int var197 /* : Bool */;
1537 short int var198 /* : Bool */;
1538 val* var199 /* : HashMap[String, ANode] */;
1539 val* var200 /* : nullable Object */;
1540 val* var_node /* var node: nullable ANode */;
1541 val* var201 /* : null */;
1542 short int var202 /* : Bool */;
1543 static val* varonce203;
1544 val* var204 /* : String */;
1545 char* var205 /* : NativeString */;
1546 long var206 /* : Int */;
1547 val* var207 /* : String */;
1548 val* var208 /* : Array[Object] */;
1549 long var209 /* : Int */;
1550 val* var210 /* : NativeArray[Object] */;
1551 val* var211 /* : String */;
1552 static val* varonce212;
1553 val* var213 /* : String */;
1554 char* var214 /* : NativeString */;
1555 long var215 /* : Int */;
1556 val* var216 /* : String */;
1557 val* var217 /* : Array[Object] */;
1558 long var218 /* : Int */;
1559 val* var219 /* : NativeArray[Object] */;
1560 val* var220 /* : String */;
1561 val* var221 /* : HashMap[String, String] */;
1562 val* var222 /* : nullable Object */;
1563 static val* varonce223;
1564 val* var224 /* : String */;
1565 char* var225 /* : NativeString */;
1566 long var226 /* : Int */;
1567 val* var227 /* : String */;
1568 val* var229 /* : null */;
1569 val* var_file /* var file: nullable OFStream */;
1570 val* var230 /* : Array[CodeWriter] */;
1571 val* var231 /* : Iterator[nullable Object] */;
1572 short int var232 /* : Bool */;
1573 val* var233 /* : nullable Object */;
1574 val* var_vis /* var vis: CodeWriter */;
1575 val* var234 /* : CodeWriter */;
1576 short int var235 /* : Bool */;
1577 val* var237 /* : List[String] */;
1578 long var238 /* : Int */;
1579 val* var239 /* : List[String] */;
1580 long var240 /* : Int */;
1581 long var241 /* : Int */;
1582 long var243 /* : Int */;
1583 long var_total_lines /* var total_lines: Int */;
1584 long var244 /* : Int */;
1585 short int var245 /* : Bool */;
1586 short int var247 /* : Bool */;
1587 long var248 /* : Int */;
1588 long var250 /* : Int */;
1589 short int var251 /* : Bool */;
1590 val* var252 /* : null */;
1591 short int var253 /* : Bool */;
1592 short int var_254 /* var : Bool */;
1593 long var255 /* : Int */;
1594 short int var256 /* : Bool */;
1595 short int var258 /* : Bool */;
1596 int cltype;
1597 int idtype;
1598 const char* var_class_name;
1599 short int var259 /* : Bool */;
1600 long var260 /* : Int */;
1601 long var261 /* : Int */;
1602 long var263 /* : Int */;
1603 val* var264 /* : null */;
1604 short int var265 /* : Bool */;
1605 val* var266 /* : Array[Object] */;
1606 long var267 /* : Int */;
1607 val* var_268 /* var : Array[Object] */;
1608 static val* varonce269;
1609 val* var270 /* : String */;
1610 char* var271 /* : NativeString */;
1611 long var272 /* : Int */;
1612 val* var273 /* : String */;
1613 val* var274 /* : String */;
1614 static val* varonce275;
1615 val* var276 /* : String */;
1616 char* var277 /* : NativeString */;
1617 long var278 /* : Int */;
1618 val* var279 /* : String */;
1619 val* var280 /* : nullable Object */;
1620 static val* varonce281;
1621 val* var282 /* : String */;
1622 char* var283 /* : NativeString */;
1623 long var284 /* : Int */;
1624 val* var285 /* : String */;
1625 val* var286 /* : String */;
1626 val* var287 /* : Array[Object] */;
1627 long var288 /* : Int */;
1628 val* var_289 /* var : Array[Object] */;
1629 static val* varonce290;
1630 val* var291 /* : String */;
1631 char* var292 /* : NativeString */;
1632 long var293 /* : Int */;
1633 val* var294 /* : String */;
1634 static val* varonce295;
1635 val* var296 /* : String */;
1636 char* var297 /* : NativeString */;
1637 long var298 /* : Int */;
1638 val* var299 /* : String */;
1639 static val* varonce300;
1640 val* var301 /* : String */;
1641 char* var302 /* : NativeString */;
1642 long var303 /* : Int */;
1643 val* var304 /* : String */;
1644 val* var305 /* : String */;
1645 val* var306 /* : ToolContext */;
1646 static val* varonce307;
1647 val* var308 /* : String */;
1648 char* var309 /* : NativeString */;
1649 long var310 /* : Int */;
1650 val* var311 /* : String */;
1651 val* var312 /* : Array[Object] */;
1652 long var313 /* : Int */;
1653 val* var314 /* : NativeArray[Object] */;
1654 val* var315 /* : String */;
1655 long var316 /* : Int */;
1656 val* var317 /* : OFStream */;
1657 static val* varonce318;
1658 val* var319 /* : String */;
1659 char* var320 /* : NativeString */;
1660 long var321 /* : Int */;
1661 val* var322 /* : String */;
1662 val* var323 /* : String */;
1663 static val* varonce324;
1664 val* var325 /* : String */;
1665 char* var326 /* : NativeString */;
1666 long var327 /* : Int */;
1667 val* var328 /* : String */;
1668 val* var329 /* : Array[Object] */;
1669 long var330 /* : Int */;
1670 val* var331 /* : NativeArray[Object] */;
1671 val* var332 /* : String */;
1672 val* var333 /* : List[String] */;
1673 val* var334 /* : Iterator[nullable Object] */;
1674 short int var335 /* : Bool */;
1675 val* var336 /* : nullable Object */;
1676 val* var_l337 /* var l: String */;
1677 static val* varonce338;
1678 val* var339 /* : String */;
1679 char* var340 /* : NativeString */;
1680 long var341 /* : Int */;
1681 val* var342 /* : String */;
1682 val* var344 /* : List[String] */;
1683 val* var345 /* : Iterator[nullable Object] */;
1684 short int var346 /* : Bool */;
1685 val* var347 /* : nullable Object */;
1686 val* var_l348 /* var l: String */;
1687 static val* varonce349;
1688 val* var350 /* : String */;
1689 char* var351 /* : NativeString */;
1690 long var352 /* : Int */;
1691 val* var353 /* : String */;
1692 val* var355 /* : null */;
1693 short int var356 /* : Bool */;
1694 val* var358 /* : ToolContext */;
1695 static val* varonce359;
1696 val* var360 /* : String */;
1697 char* var361 /* : NativeString */;
1698 long var362 /* : Int */;
1699 val* var363 /* : String */;
1700 long var364 /* : Int */;
1701 val* var365 /* : Array[Object] */;
1702 long var366 /* : Int */;
1703 val* var367 /* : NativeArray[Object] */;
1704 val* var368 /* : Object */;
1705 val* var369 /* : String */;
1706 long var370 /* : Int */;
1707 var_compiler = p0;
1708 var_compile_dir = p1;
1709 var_cfiles = p2;
1710 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__Toolchain__toolcontext]))(self) /* toolcontext on <self:MakefileToolchain>*/;
1711 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_compiler__ToolContext__opt_stacktrace]))(var) /* opt_stacktrace on <var:ToolContext>*/;
1712 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_opts__Option__value]))(var1) /* value on <var1:OptionBool>*/;
1713 var3 = ((struct instance_kernel__Bool*)var2)->value; /* autounbox from nullable Object to Bool */;
1714 if (var3){
1715 ((void (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__build_c_to_nit_bindings]))(var_compiler) /* build_c_to_nit_bindings on <var_compiler:AbstractCompiler>*/;
1716 } else {
1717 }
1718 var4 = NEW_c__ExternCFile(&type_c__ExternCFile);
1719 if (varonce) {
1720 var5 = varonce;
1721 } else {
1722 var6 = "gc_chooser.c";
1723 var7 = 12;
1724 var8 = string__NativeString__to_s_with_length(var6, var7);
1725 var5 = var8;
1726 varonce = var5;
1727 }
1728 if (varonce9) {
1729 var10 = varonce9;
1730 } else {
1731 var11 = "-DWITH_LIBGC";
1732 var12 = 12;
1733 var13 = string__NativeString__to_s_with_length(var11, var12);
1734 var10 = var13;
1735 varonce9 = var10;
1736 }
1737 ((void (*)(val*, val*, val*))(var4->class->vft[COLOR_c__ExternCFile__init]))(var4, var5, var10) /* init on <var4:ExternCFile>*/;
1738 var_gc_chooser = var4;
1739 var14 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__extern_bodies]))(var_compiler) /* extern_bodies on <var_compiler:AbstractCompiler>*/;
1740 ((void (*)(val*, val*))(var14->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var14, var_gc_chooser) /* add on <var14:Array[ExternFile]>*/;
1741 var15 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__files_to_copy]))(var_compiler) /* files_to_copy on <var_compiler:AbstractCompiler>*/;
1742 var16 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MakefileToolchain__cc_paths]))(self) /* cc_paths on <self:MakefileToolchain>*/;
1743 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_abstract_collection__Collection__first]))(var16) /* first on <var16:Array[String]>*/;
1744 if (varonce18) {
1745 var19 = varonce18;
1746 } else {
1747 var20 = "/gc_chooser.c";
1748 var21 = 13;
1749 var22 = string__NativeString__to_s_with_length(var20, var21);
1750 var19 = var22;
1751 varonce18 = var19;
1752 }
1753 var23 = NEW_array__Array(&type_array__Arraykernel__Object);
1754 { /* var23 = array_instance Array[Object] */
1755 var24 = 2;
1756 var25 = NEW_array__NativeArray(var24, &type_array__NativeArraykernel__Object);
1757 ((struct instance_array__NativeArray*)var25)->values[0] = (val*) var17;
1758 ((struct instance_array__NativeArray*)var25)->values[1] = (val*) var19;
1759 ((void (*)(val*, val*, long))(var23->class->vft[COLOR_array__Array__with_native]))(var23, var25, var24) /* with_native on <var23:Array[Object]>*/;
1760 }
1761 var26 = ((val* (*)(val*))(var23->class->vft[COLOR_string__Object__to_s]))(var23) /* to_s on <var23:Array[Object]>*/;
1762 ((void (*)(val*, val*))(var15->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var15, var26) /* add on <var15:Array[String]>*/;
1763 var27 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__files_to_copy]))(var_compiler) /* files_to_copy on <var_compiler:AbstractCompiler>*/;
1764 var28 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MakefileToolchain__cc_paths]))(self) /* cc_paths on <self:MakefileToolchain>*/;
1765 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_abstract_collection__Collection__first]))(var28) /* first on <var28:Array[String]>*/;
1766 if (varonce30) {
1767 var31 = varonce30;
1768 } else {
1769 var32 = "/gc_chooser.h";
1770 var33 = 13;
1771 var34 = string__NativeString__to_s_with_length(var32, var33);
1772 var31 = var34;
1773 varonce30 = var31;
1774 }
1775 var35 = NEW_array__Array(&type_array__Arraykernel__Object);
1776 { /* var35 = array_instance Array[Object] */
1777 var36 = 2;
1778 var37 = NEW_array__NativeArray(var36, &type_array__NativeArraykernel__Object);
1779 ((struct instance_array__NativeArray*)var37)->values[0] = (val*) var29;
1780 ((struct instance_array__NativeArray*)var37)->values[1] = (val*) var31;
1781 ((void (*)(val*, val*, long))(var35->class->vft[COLOR_array__Array__with_native]))(var35, var37, var36) /* with_native on <var35:Array[Object]>*/;
1782 }
1783 var38 = ((val* (*)(val*))(var35->class->vft[COLOR_string__Object__to_s]))(var35) /* to_s on <var35:Array[Object]>*/;
1784 ((void (*)(val*, val*))(var27->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var27, var38) /* add on <var27:Array[String]>*/;
1785 var39 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__Toolchain__toolcontext]))(self) /* toolcontext on <self:MakefileToolchain>*/;
1786 var40 = ((val* (*)(val*))(var39->class->vft[COLOR_modelbuilder__ToolContext__modelbuilder]))(var39) /* modelbuilder on <var39:ToolContext>*/;
1787 var41 = ((val* (*)(val*))(var40->class->vft[COLOR_modelbuilder__ModelBuilder__mmodule2nmodule]))(var40) /* mmodule2nmodule on <var40:ModelBuilder>*/;
1788 var_m2m = var41;
1789 var42 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var_compiler) /* mainmodule on <var_compiler:AbstractCompiler>*/;
1790 var43 = ((val* (*)(val*))(var42->class->vft[COLOR_mmodule__MModule__in_importation]))(var42) /* in_importation on <var42:MModule>*/;
1791 var44 = ((val* (*)(val*))(var43->class->vft[COLOR_poset__POSetElement__greaters]))(var43) /* greaters on <var43:POSetElement[MModule]>*/;
1792 var45 = ((val* (*)(val*))(var44->class->vft[COLOR_abstract_collection__Collection__iterator]))(var44) /* iterator on <var44:Collection[Object](Collection[MModule])>*/;
1793 for(;;) {
1794 var46 = ((short int (*)(val*))(var45->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var45) /* is_ok on <var45:Iterator[nullable Object]>*/;
1795 if(!var46) break;
1796 var47 = ((val* (*)(val*))(var45->class->vft[COLOR_abstract_collection__Iterator__item]))(var45) /* item on <var45:Iterator[nullable Object]>*/;
1797 var_m = var47;
1798 var48 = ((val* (*)(val*))(var_m2m->class->vft[COLOR_abstract_collection__MapRead__keys]))(var_m2m) /* keys on <var_m2m:HashMap[MModule, AModule]>*/;
1799 var49 = ((short int (*)(val*, val*))(var48->class->vft[COLOR_abstract_collection__Collection__has]))(var48, var_m) /* has on <var48:Collection[Object](HashMapKeys[MModule, AModule])>*/;
1800 if (var49){
1801 var50 = ((val* (*)(val*, val*))(var_m2m->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_m2m, var_m) /* [] on <var_m2m:HashMap[MModule, AModule]>*/;
1802 var_amodule = var50;
1803 var52 = ((short int (*)(val*))(var_m->class->vft[COLOR_common_ffi__MModule__uses_ffi]))(var_m) /* uses_ffi on <var_m:MModule>*/;
1804 var_ = var52;
1805 if (var52){
1806 var51 = var_;
1807 } else {
1808 var53 = ((short int (*)(val*))(var_amodule->class->vft[COLOR_abstract_compiler__AModule__uses_legacy_ni]))(var_amodule) /* uses_legacy_ni on <var_amodule:AModule>*/;
1809 var51 = var53;
1810 }
1811 if (var51){
1812 ((void (*)(val*, val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__finalize_ffi_for_module]))(var_compiler, var_amodule) /* finalize_ffi_for_module on <var_compiler:AbstractCompiler>*/;
1813 } else {
1814 }
1815 } else {
1816 }
1817 CONTINUE_label: (void)0;
1818 ((void (*)(val*))(var45->class->vft[COLOR_abstract_collection__Iterator__next]))(var45) /* next on <var45:Iterator[nullable Object]>*/;
1819 }
1820 BREAK_label: (void)0;
1821 var54 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__files_to_copy]))(var_compiler) /* files_to_copy on <var_compiler:AbstractCompiler>*/;
1822 var55 = ((val* (*)(val*))(var54->class->vft[COLOR_abstract_collection__Collection__iterator]))(var54) /* iterator on <var54:Array[String]>*/;
1823 for(;;) {
1824 var56 = ((short int (*)(val*))(var55->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var55) /* is_ok on <var55:Iterator[nullable Object]>*/;
1825 if(!var56) break;
1826 var57 = ((val* (*)(val*))(var55->class->vft[COLOR_abstract_collection__Iterator__item]))(var55) /* item on <var55:Iterator[nullable Object]>*/;
1827 var_src = var57;
1828 if (varonce58) {
1829 var59 = varonce58;
1830 } else {
1831 var60 = "";
1832 var61 = 0;
1833 var62 = string__NativeString__to_s_with_length(var60, var61);
1834 var59 = var62;
1835 varonce58 = var59;
1836 }
1837 var63 = ((val* (*)(val*, val*))(var_src->class->vft[COLOR_file__String__basename]))(var_src, var59) /* basename on <var_src:String>*/;
1838 var_basename = var63;
1839 var64 = NEW_array__Array(&type_array__Arraykernel__Object);
1840 var65 = 5;
1841 ((void (*)(val*, long))(var64->class->vft[COLOR_array__Array__with_capacity]))(var64, var65) /* with_capacity on <var64:Array[Object]>*/;
1842 var_66 = var64;
1843 if (varonce67) {
1844 var68 = varonce67;
1845 } else {
1846 var69 = "";
1847 var70 = 0;
1848 var71 = string__NativeString__to_s_with_length(var69, var70);
1849 var68 = var71;
1850 varonce67 = var68;
1851 }
1852 ((void (*)(val*, val*))(var_66->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_66, var68) /* add on <var_66:Array[Object]>*/;
1853 ((void (*)(val*, val*))(var_66->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_66, var_compile_dir) /* add on <var_66:Array[Object]>*/;
1854 if (varonce72) {
1855 var73 = varonce72;
1856 } else {
1857 var74 = "/";
1858 var75 = 1;
1859 var76 = string__NativeString__to_s_with_length(var74, var75);
1860 var73 = var76;
1861 varonce72 = var73;
1862 }
1863 ((void (*)(val*, val*))(var_66->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_66, var73) /* add on <var_66:Array[Object]>*/;
1864 ((void (*)(val*, val*))(var_66->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_66, var_basename) /* add on <var_66:Array[Object]>*/;
1865 if (varonce77) {
1866 var78 = varonce77;
1867 } else {
1868 var79 = "";
1869 var80 = 0;
1870 var81 = string__NativeString__to_s_with_length(var79, var80);
1871 var78 = var81;
1872 varonce77 = var78;
1873 }
1874 ((void (*)(val*, val*))(var_66->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_66, var78) /* add on <var_66:Array[Object]>*/;
1875 var82 = ((val* (*)(val*))(var_66->class->vft[COLOR_string__Object__to_s]))(var_66) /* to_s on <var_66:Array[Object]>*/;
1876 var_dst = var82;
1877 ((void (*)(val*, val*))(var_src->class->vft[COLOR_file__String__file_copy_to]))(var_src, var_dst) /* file_copy_to on <var_src:String>*/;
1878 CONTINUE_label83: (void)0;
1879 ((void (*)(val*))(var55->class->vft[COLOR_abstract_collection__Iterator__next]))(var55) /* next on <var55:Iterator[nullable Object]>*/;
1880 }
1881 BREAK_label83: (void)0;
1882 var84 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(var_compiler) /* header on <var_compiler:AbstractCompiler>*/;
1883 var85 = ((val* (*)(val*))(var84->class->vft[COLOR_abstract_compiler__CodeWriter__file]))(var84) /* file on <var84:CodeWriter>*/;
1884 var86 = ((val* (*)(val*))(var85->class->vft[COLOR_abstract_compiler__CodeFile__name]))(var85) /* name on <var85:CodeFile>*/;
1885 if (varonce87) {
1886 var88 = varonce87;
1887 } else {
1888 var89 = ".h";
1889 var90 = 2;
1890 var91 = string__NativeString__to_s_with_length(var89, var90);
1891 var88 = var91;
1892 varonce87 = var88;
1893 }
1894 var92 = ((val* (*)(val*, val*))(var86->class->vft[COLOR_string__String___43d]))(var86, var88) /* + on <var86:String>*/;
1895 var_hfilename = var92;
1896 var93 = NEW_array__Array(&type_array__Arraykernel__Object);
1897 var94 = 5;
1898 ((void (*)(val*, long))(var93->class->vft[COLOR_array__Array__with_capacity]))(var93, var94) /* with_capacity on <var93:Array[Object]>*/;
1899 var_95 = var93;
1900 if (varonce96) {
1901 var97 = varonce96;
1902 } else {
1903 var98 = "";
1904 var99 = 0;
1905 var100 = string__NativeString__to_s_with_length(var98, var99);
1906 var97 = var100;
1907 varonce96 = var97;
1908 }
1909 ((void (*)(val*, val*))(var_95->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_95, var97) /* add on <var_95:Array[Object]>*/;
1910 ((void (*)(val*, val*))(var_95->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_95, var_compile_dir) /* add on <var_95:Array[Object]>*/;
1911 if (varonce101) {
1912 var102 = varonce101;
1913 } else {
1914 var103 = "/";
1915 var104 = 1;
1916 var105 = string__NativeString__to_s_with_length(var103, var104);
1917 var102 = var105;
1918 varonce101 = var102;
1919 }
1920 ((void (*)(val*, val*))(var_95->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_95, var102) /* add on <var_95:Array[Object]>*/;
1921 ((void (*)(val*, val*))(var_95->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_95, var_hfilename) /* add on <var_95:Array[Object]>*/;
1922 if (varonce106) {
1923 var107 = varonce106;
1924 } else {
1925 var108 = "";
1926 var109 = 0;
1927 var110 = string__NativeString__to_s_with_length(var108, var109);
1928 var107 = var110;
1929 varonce106 = var107;
1930 }
1931 ((void (*)(val*, val*))(var_95->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_95, var107) /* add on <var_95:Array[Object]>*/;
1932 var111 = ((val* (*)(val*))(var_95->class->vft[COLOR_string__Object__to_s]))(var_95) /* to_s on <var_95:Array[Object]>*/;
1933 var_hfilepath = var111;
1934 var112 = NEW_file__OFStream(&type_file__OFStream);
1935 ((void (*)(val*, val*))(var112->class->vft[COLOR_file__OFStream__open]))(var112, var_hfilepath) /* open on <var112:OFStream>*/;
1936 var_h = var112;
1937 var113 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(var_compiler) /* header on <var_compiler:AbstractCompiler>*/;
1938 var114 = ((val* (*)(val*))(var113->class->vft[COLOR_abstract_compiler__CodeWriter__decl_lines]))(var113) /* decl_lines on <var113:CodeWriter>*/;
1939 var115 = ((val* (*)(val*))(var114->class->vft[COLOR_abstract_collection__Collection__iterator]))(var114) /* iterator on <var114:List[String]>*/;
1940 for(;;) {
1941 var116 = ((short int (*)(val*))(var115->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var115) /* is_ok on <var115:Iterator[nullable Object]>*/;
1942 if(!var116) break;
1943 var117 = ((val* (*)(val*))(var115->class->vft[COLOR_abstract_collection__Iterator__item]))(var115) /* item on <var115:Iterator[nullable Object]>*/;
1944 var_l = var117;
1945 ((void (*)(val*, val*))(var_h->class->vft[COLOR_stream__OStream__write]))(var_h, var_l) /* write on <var_h:OFStream>*/;
1946 if (varonce118) {
1947 var119 = varonce118;
1948 } else {
1949 var120 = "\n";
1950 var121 = 1;
1951 var122 = string__NativeString__to_s_with_length(var120, var121);
1952 var119 = var122;
1953 varonce118 = var119;
1954 }
1955 ((void (*)(val*, val*))(var_h->class->vft[COLOR_stream__OStream__write]))(var_h, var119) /* write on <var_h:OFStream>*/;
1956 CONTINUE_label123: (void)0;
1957 ((void (*)(val*))(var115->class->vft[COLOR_abstract_collection__Iterator__next]))(var115) /* next on <var115:Iterator[nullable Object]>*/;
1958 }
1959 BREAK_label123: (void)0;
1960 var124 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(var_compiler) /* header on <var_compiler:AbstractCompiler>*/;
1961 var125 = ((val* (*)(val*))(var124->class->vft[COLOR_abstract_compiler__CodeWriter__lines]))(var124) /* lines on <var124:CodeWriter>*/;
1962 var126 = ((val* (*)(val*))(var125->class->vft[COLOR_abstract_collection__Collection__iterator]))(var125) /* iterator on <var125:List[String]>*/;
1963 for(;;) {
1964 var127 = ((short int (*)(val*))(var126->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var126) /* is_ok on <var126:Iterator[nullable Object]>*/;
1965 if(!var127) break;
1966 var128 = ((val* (*)(val*))(var126->class->vft[COLOR_abstract_collection__Iterator__item]))(var126) /* item on <var126:Iterator[nullable Object]>*/;
1967 var_l129 = var128;
1968 ((void (*)(val*, val*))(var_h->class->vft[COLOR_stream__OStream__write]))(var_h, var_l129) /* write on <var_h:OFStream>*/;
1969 if (varonce130) {
1970 var131 = varonce130;
1971 } else {
1972 var132 = "\n";
1973 var133 = 1;
1974 var134 = string__NativeString__to_s_with_length(var132, var133);
1975 var131 = var134;
1976 varonce130 = var131;
1977 }
1978 ((void (*)(val*, val*))(var_h->class->vft[COLOR_stream__OStream__write]))(var_h, var131) /* write on <var_h:OFStream>*/;
1979 CONTINUE_label135: (void)0;
1980 ((void (*)(val*))(var126->class->vft[COLOR_abstract_collection__Iterator__next]))(var126) /* next on <var126:Iterator[nullable Object]>*/;
1981 }
1982 BREAK_label135: (void)0;
1983 ((void (*)(val*))(var_h->class->vft[COLOR_stream__IOS__close]))(var_h) /* close on <var_h:OFStream>*/;
1984 var136 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__files]))(var_compiler) /* files on <var_compiler:AbstractCompiler>*/;
1985 var137 = ((val* (*)(val*))(var136->class->vft[COLOR_abstract_collection__Collection__iterator]))(var136) /* iterator on <var136:List[CodeFile]>*/;
1986 for(;;) {
1987 var138 = ((short int (*)(val*))(var137->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var137) /* is_ok on <var137:Iterator[nullable Object]>*/;
1988 if(!var138) break;
1989 var139 = ((val* (*)(val*))(var137->class->vft[COLOR_abstract_collection__Iterator__item]))(var137) /* item on <var137:Iterator[nullable Object]>*/;
1990 var_f = var139;
1991 var140 = 0;
1992 var_i = var140;
1993 var141 = NULL;
1994 var_hfile = var141;
1995 var142 = 0;
1996 var_count = var142;
1997 var143 = NEW_array__Array(&type_array__Arraykernel__Object);
1998 var144 = 3;
1999 ((void (*)(val*, long))(var143->class->vft[COLOR_array__Array__with_capacity]))(var143, var144) /* with_capacity on <var143:Array[Object]>*/;
2000 var_145 = var143;
2001 if (varonce146) {
2002 var147 = varonce146;
2003 } else {
2004 var148 = "";
2005 var149 = 0;
2006 var150 = string__NativeString__to_s_with_length(var148, var149);
2007 var147 = var150;
2008 varonce146 = var147;
2009 }
2010 ((void (*)(val*, val*))(var_145->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_145, var147) /* add on <var_145:Array[Object]>*/;
2011 var151 = ((val* (*)(val*))(var_f->class->vft[COLOR_abstract_compiler__CodeFile__name]))(var_f) /* name on <var_f:CodeFile>*/;
2012 ((void (*)(val*, val*))(var_145->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_145, var151) /* add on <var_145:Array[Object]>*/;
2013 if (varonce152) {
2014 var153 = varonce152;
2015 } else {
2016 var154 = ".0.h";
2017 var155 = 4;
2018 var156 = string__NativeString__to_s_with_length(var154, var155);
2019 var153 = var156;
2020 varonce152 = var153;
2021 }
2022 ((void (*)(val*, val*))(var_145->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_145, var153) /* add on <var_145:Array[Object]>*/;
2023 var157 = ((val* (*)(val*))(var_145->class->vft[COLOR_string__Object__to_s]))(var_145) /* to_s on <var_145:Array[Object]>*/;
2024 var_cfilename = var157;
2025 var158 = NEW_array__Array(&type_array__Arraykernel__Object);
2026 var159 = 5;
2027 ((void (*)(val*, long))(var158->class->vft[COLOR_array__Array__with_capacity]))(var158, var159) /* with_capacity on <var158:Array[Object]>*/;
2028 var_160 = var158;
2029 if (varonce161) {
2030 var162 = varonce161;
2031 } else {
2032 var163 = "";
2033 var164 = 0;
2034 var165 = string__NativeString__to_s_with_length(var163, var164);
2035 var162 = var165;
2036 varonce161 = var162;
2037 }
2038 ((void (*)(val*, val*))(var_160->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_160, var162) /* add on <var_160:Array[Object]>*/;
2039 ((void (*)(val*, val*))(var_160->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_160, var_compile_dir) /* add on <var_160:Array[Object]>*/;
2040 if (varonce166) {
2041 var167 = varonce166;
2042 } else {
2043 var168 = "/";
2044 var169 = 1;
2045 var170 = string__NativeString__to_s_with_length(var168, var169);
2046 var167 = var170;
2047 varonce166 = var167;
2048 }
2049 ((void (*)(val*, val*))(var_160->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_160, var167) /* add on <var_160:Array[Object]>*/;
2050 ((void (*)(val*, val*))(var_160->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_160, var_cfilename) /* add on <var_160:Array[Object]>*/;
2051 if (varonce171) {
2052 var172 = varonce171;
2053 } else {
2054 var173 = "";
2055 var174 = 0;
2056 var175 = string__NativeString__to_s_with_length(var173, var174);
2057 var172 = var175;
2058 varonce171 = var172;
2059 }
2060 ((void (*)(val*, val*))(var_160->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_160, var172) /* add on <var_160:Array[Object]>*/;
2061 var176 = ((val* (*)(val*))(var_160->class->vft[COLOR_string__Object__to_s]))(var_160) /* to_s on <var_160:Array[Object]>*/;
2062 var_cfilepath = var176;
2063 var177 = NEW_file__OFStream(&type_file__OFStream);
2064 ((void (*)(val*, val*))(var177->class->vft[COLOR_file__OFStream__open]))(var177, var_cfilepath) /* open on <var177:OFStream>*/;
2065 var_hfile = var177;
2066 if (varonce178) {
2067 var179 = varonce178;
2068 } else {
2069 var180 = "#include \"";
2070 var181 = 10;
2071 var182 = string__NativeString__to_s_with_length(var180, var181);
2072 var179 = var182;
2073 varonce178 = var179;
2074 }
2075 if (varonce183) {
2076 var184 = varonce183;
2077 } else {
2078 var185 = "\"\n";
2079 var186 = 2;
2080 var187 = string__NativeString__to_s_with_length(var185, var186);
2081 var184 = var187;
2082 varonce183 = var184;
2083 }
2084 var188 = NEW_array__Array(&type_array__Arraykernel__Object);
2085 { /* var188 = array_instance Array[Object] */
2086 var189 = 3;
2087 var190 = NEW_array__NativeArray(var189, &type_array__NativeArraykernel__Object);
2088 ((struct instance_array__NativeArray*)var190)->values[0] = (val*) var179;
2089 ((struct instance_array__NativeArray*)var190)->values[1] = (val*) var_hfilename;
2090 ((struct instance_array__NativeArray*)var190)->values[2] = (val*) var184;
2091 ((void (*)(val*, val*, long))(var188->class->vft[COLOR_array__Array__with_native]))(var188, var190, var189) /* with_native on <var188:Array[Object]>*/;
2092 }
2093 var191 = ((val* (*)(val*))(var188->class->vft[COLOR_string__Object__to_s]))(var188) /* to_s on <var188:Array[Object]>*/;
2094 ((void (*)(val*, val*))(var_hfile->class->vft[COLOR_stream__OStream__write]))(var_hfile, var191) /* write on <var_hfile:nullable OFStream(OFStream)>*/;
2095 var192 = ((val* (*)(val*))(var_f->class->vft[COLOR_abstract_compiler__CodeFile__required_declarations]))(var_f) /* required_declarations on <var_f:CodeFile>*/;
2096 var193 = ((val* (*)(val*))(var192->class->vft[COLOR_abstract_collection__Collection__iterator]))(var192) /* iterator on <var192:HashSet[String]>*/;
2097 for(;;) {
2098 var194 = ((short int (*)(val*))(var193->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var193) /* is_ok on <var193:Iterator[nullable Object]>*/;
2099 if(!var194) break;
2100 var195 = ((val* (*)(val*))(var193->class->vft[COLOR_abstract_collection__Iterator__item]))(var193) /* item on <var193:Iterator[nullable Object]>*/;
2101 var_key = var195;
2102 var196 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__provided_declarations]))(var_compiler) /* provided_declarations on <var_compiler:AbstractCompiler>*/;
2103 var197 = ((short int (*)(val*, val*))(var196->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var196, var_key) /* has_key on <var196:HashMap[String, String]>*/;
2104 var198 = !var197;
2105 if (var198){
2106 var199 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__requirers_of_declarations]))(var_compiler) /* requirers_of_declarations on <var_compiler:AbstractCompiler>*/;
2107 var200 = ((val* (*)(val*, val*))(var199->class->vft[COLOR_abstract_collection__MapRead__get_or_null]))(var199, var_key) /* get_or_null on <var199:HashMap[String, ANode]>*/;
2108 var_node = var200;
2109 var201 = NULL;
2110 if (var_node == NULL) {
2111 var202 = 0; /* is null */
2112 } else {
2113 var202 = 1; /* arg is null and recv is not */
2114 }
2115 if (var202){
2116 if (varonce203) {
2117 var204 = varonce203;
2118 } else {
2119 var205 = "No provided declaration for ";
2120 var206 = 28;
2121 var207 = string__NativeString__to_s_with_length(var205, var206);
2122 var204 = var207;
2123 varonce203 = var204;
2124 }
2125 var208 = NEW_array__Array(&type_array__Arraykernel__Object);
2126 { /* var208 = array_instance Array[Object] */
2127 var209 = 2;
2128 var210 = NEW_array__NativeArray(var209, &type_array__NativeArraykernel__Object);
2129 ((struct instance_array__NativeArray*)var210)->values[0] = (val*) var204;
2130 ((struct instance_array__NativeArray*)var210)->values[1] = (val*) var_key;
2131 ((void (*)(val*, val*, long))(var208->class->vft[COLOR_array__Array__with_native]))(var208, var210, var209) /* with_native on <var208:Array[Object]>*/;
2132 }
2133 var211 = ((val* (*)(val*))(var208->class->vft[COLOR_string__Object__to_s]))(var208) /* to_s on <var208:Array[Object]>*/;
2134 ((void (*)(val*, val*))(var_node->class->vft[COLOR_parser_nodes__ANode__debug]))(var_node, var211) /* debug on <var_node:nullable ANode(ANode)>*/;
2135 } else {
2136 if (varonce212) {
2137 var213 = varonce212;
2138 } else {
2139 var214 = "No provided declaration for ";
2140 var215 = 28;
2141 var216 = string__NativeString__to_s_with_length(var214, var215);
2142 var213 = var216;
2143 varonce212 = var213;
2144 }
2145 var217 = NEW_array__Array(&type_array__Arraykernel__Object);
2146 { /* var217 = array_instance Array[Object] */
2147 var218 = 2;
2148 var219 = NEW_array__NativeArray(var218, &type_array__NativeArraykernel__Object);
2149 ((struct instance_array__NativeArray*)var219)->values[0] = (val*) var213;
2150 ((struct instance_array__NativeArray*)var219)->values[1] = (val*) var_key;
2151 ((void (*)(val*, val*, long))(var217->class->vft[COLOR_array__Array__with_native]))(var217, var219, var218) /* with_native on <var217:Array[Object]>*/;
2152 }
2153 var220 = ((val* (*)(val*))(var217->class->vft[COLOR_string__Object__to_s]))(var217) /* to_s on <var217:Array[Object]>*/;
2154 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var220) /* print on <self:MakefileToolchain>*/;
2155 }
2156 fprintf(stderr, "Runtime error: %s", "Aborted");
2157 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 245);
2158 show_backtrace(1);
2159 } else {
2160 }
2161 var221 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__provided_declarations]))(var_compiler) /* provided_declarations on <var_compiler:AbstractCompiler>*/;
2162 var222 = ((val* (*)(val*, val*))(var221->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var221, var_key) /* [] on <var221:HashMap[String, String]>*/;
2163 ((void (*)(val*, val*))(var_hfile->class->vft[COLOR_stream__OStream__write]))(var_hfile, var222) /* write on <var_hfile:nullable OFStream(OFStream)>*/;
2164 if (varonce223) {
2165 var224 = varonce223;
2166 } else {
2167 var225 = "\n";
2168 var226 = 1;
2169 var227 = string__NativeString__to_s_with_length(var225, var226);
2170 var224 = var227;
2171 varonce223 = var224;
2172 }
2173 ((void (*)(val*, val*))(var_hfile->class->vft[COLOR_stream__OStream__write]))(var_hfile, var224) /* write on <var_hfile:nullable OFStream(OFStream)>*/;
2174 CONTINUE_label228: (void)0;
2175 ((void (*)(val*))(var193->class->vft[COLOR_abstract_collection__Iterator__next]))(var193) /* next on <var193:Iterator[nullable Object]>*/;
2176 }
2177 BREAK_label228: (void)0;
2178 ((void (*)(val*))(var_hfile->class->vft[COLOR_stream__IOS__close]))(var_hfile) /* close on <var_hfile:nullable OFStream(OFStream)>*/;
2179 var229 = NULL;
2180 var_file = var229;
2181 var230 = ((val* (*)(val*))(var_f->class->vft[COLOR_abstract_compiler__CodeFile__writers]))(var_f) /* writers on <var_f:CodeFile>*/;
2182 var231 = ((val* (*)(val*))(var230->class->vft[COLOR_abstract_collection__Collection__iterator]))(var230) /* iterator on <var230:Array[CodeWriter]>*/;
2183 for(;;) {
2184 var232 = ((short int (*)(val*))(var231->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var231) /* is_ok on <var231:Iterator[nullable Object]>*/;
2185 if(!var232) break;
2186 var233 = ((val* (*)(val*))(var231->class->vft[COLOR_abstract_collection__Iterator__item]))(var231) /* item on <var231:Iterator[nullable Object]>*/;
2187 var_vis = var233;
2188 var234 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(var_compiler) /* header on <var_compiler:AbstractCompiler>*/;
2189 var235 = ((short int (*)(val*, val*))(var_vis->class->vft[COLOR_kernel__Object___61d_61d]))(var_vis, var234) /* == on <var_vis:CodeWriter>*/;
2190 if (var235){
2191 goto CONTINUE_label236;
2192 } else {
2193 }
2194 var237 = ((val* (*)(val*))(var_vis->class->vft[COLOR_abstract_compiler__CodeWriter__lines]))(var_vis) /* lines on <var_vis:CodeWriter>*/;
2195 var238 = ((long (*)(val*))(var237->class->vft[COLOR_abstract_collection__Collection__length]))(var237) /* length on <var237:List[String]>*/;
2196 var239 = ((val* (*)(val*))(var_vis->class->vft[COLOR_abstract_compiler__CodeWriter__decl_lines]))(var_vis) /* decl_lines on <var_vis:CodeWriter>*/;
2197 var240 = ((long (*)(val*))(var239->class->vft[COLOR_abstract_collection__Collection__length]))(var239) /* length on <var239:List[String]>*/;
2198 { /* Inline kernel#Int#+ (var238,var240) */
2199 var243 = var238 + var240;
2200 var241 = var243;
2201 goto RET_LABEL242;
2202 RET_LABEL242:(void)0;
2203 }
2204 var_total_lines = var241;
2205 var244 = 0;
2206 { /* Inline kernel#Int#== (var_total_lines,var244) */
2207 var247 = var_total_lines == var244;
2208 var245 = var247;
2209 goto RET_LABEL246;
2210 RET_LABEL246:(void)0;
2211 }
2212 if (var245){
2213 goto CONTINUE_label236;
2214 } else {
2215 }
2216 { /* Inline kernel#Int#+ (var_count,var_total_lines) */
2217 var250 = var_count + var_total_lines;
2218 var248 = var250;
2219 goto RET_LABEL249;
2220 RET_LABEL249:(void)0;
2221 }
2222 var_count = var248;
2223 var252 = NULL;
2224 if (var_file == NULL) {
2225 var253 = 1; /* is null */
2226 } else {
2227 var253 = 0; /* arg is null but recv is not */
2228 }
2229 var_254 = var253;
2230 if (var253){
2231 var251 = var_254;
2232 } else {
2233 var255 = 10000;
2234 { /* Inline kernel#Int#> (var_count,var255) */
2235 /* Covariant cast for argument 0 (i) <var255:Int> isa OTHER */
2236 /* <var255:Int> isa OTHER */
2237 var258 = 1; /* easy <var255:Int> isa OTHER*/
2238 if (!var258) {
2239 var_class_name = type_kernel__Int.name;
2240 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2241 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
2242 show_backtrace(1);
2243 }
2244 var259 = var_count > var255;
2245 var256 = var259;
2246 goto RET_LABEL257;
2247 RET_LABEL257:(void)0;
2248 }
2249 var251 = var256;
2250 }
2251 if (var251){
2252 var260 = 1;
2253 { /* Inline kernel#Int#+ (var_i,var260) */
2254 var263 = var_i + var260;
2255 var261 = var263;
2256 goto RET_LABEL262;
2257 RET_LABEL262:(void)0;
2258 }
2259 var_i = var261;
2260 var264 = NULL;
2261 if (var_file == NULL) {
2262 var265 = 0; /* is null */
2263 } else {
2264 var265 = 1; /* arg is null and recv is not */
2265 }
2266 if (var265){
2267 ((void (*)(val*))(var_file->class->vft[COLOR_stream__IOS__close]))(var_file) /* close on <var_file:nullable OFStream(OFStream)>*/;
2268 } else {
2269 }
2270 var266 = NEW_array__Array(&type_array__Arraykernel__Object);
2271 var267 = 5;
2272 ((void (*)(val*, long))(var266->class->vft[COLOR_array__Array__with_capacity]))(var266, var267) /* with_capacity on <var266:Array[Object]>*/;
2273 var_268 = var266;
2274 if (varonce269) {
2275 var270 = varonce269;
2276 } else {
2277 var271 = "";
2278 var272 = 0;
2279 var273 = string__NativeString__to_s_with_length(var271, var272);
2280 var270 = var273;
2281 varonce269 = var270;
2282 }
2283 ((void (*)(val*, val*))(var_268->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_268, var270) /* add on <var_268:Array[Object]>*/;
2284 var274 = ((val* (*)(val*))(var_f->class->vft[COLOR_abstract_compiler__CodeFile__name]))(var_f) /* name on <var_f:CodeFile>*/;
2285 ((void (*)(val*, val*))(var_268->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_268, var274) /* add on <var_268:Array[Object]>*/;
2286 if (varonce275) {
2287 var276 = varonce275;
2288 } else {
2289 var277 = ".";
2290 var278 = 1;
2291 var279 = string__NativeString__to_s_with_length(var277, var278);
2292 var276 = var279;
2293 varonce275 = var276;
2294 }
2295 ((void (*)(val*, val*))(var_268->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_268, var276) /* add on <var_268:Array[Object]>*/;
2296 var280 = BOX_kernel__Int(var_i); /* autobox from Int to nullable Object */
2297 ((void (*)(val*, val*))(var_268->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_268, var280) /* add on <var_268:Array[Object]>*/;
2298 if (varonce281) {
2299 var282 = varonce281;
2300 } else {
2301 var283 = ".c";
2302 var284 = 2;
2303 var285 = string__NativeString__to_s_with_length(var283, var284);
2304 var282 = var285;
2305 varonce281 = var282;
2306 }
2307 ((void (*)(val*, val*))(var_268->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_268, var282) /* add on <var_268:Array[Object]>*/;
2308 var286 = ((val* (*)(val*))(var_268->class->vft[COLOR_string__Object__to_s]))(var_268) /* to_s on <var_268:Array[Object]>*/;
2309 var_cfilename = var286;
2310 var287 = NEW_array__Array(&type_array__Arraykernel__Object);
2311 var288 = 5;
2312 ((void (*)(val*, long))(var287->class->vft[COLOR_array__Array__with_capacity]))(var287, var288) /* with_capacity on <var287:Array[Object]>*/;
2313 var_289 = var287;
2314 if (varonce290) {
2315 var291 = varonce290;
2316 } else {
2317 var292 = "";
2318 var293 = 0;
2319 var294 = string__NativeString__to_s_with_length(var292, var293);
2320 var291 = var294;
2321 varonce290 = var291;
2322 }
2323 ((void (*)(val*, val*))(var_289->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_289, var291) /* add on <var_289:Array[Object]>*/;
2324 ((void (*)(val*, val*))(var_289->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_289, var_compile_dir) /* add on <var_289:Array[Object]>*/;
2325 if (varonce295) {
2326 var296 = varonce295;
2327 } else {
2328 var297 = "/";
2329 var298 = 1;
2330 var299 = string__NativeString__to_s_with_length(var297, var298);
2331 var296 = var299;
2332 varonce295 = var296;
2333 }
2334 ((void (*)(val*, val*))(var_289->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_289, var296) /* add on <var_289:Array[Object]>*/;
2335 ((void (*)(val*, val*))(var_289->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_289, var_cfilename) /* add on <var_289:Array[Object]>*/;
2336 if (varonce300) {
2337 var301 = varonce300;
2338 } else {
2339 var302 = "";
2340 var303 = 0;
2341 var304 = string__NativeString__to_s_with_length(var302, var303);
2342 var301 = var304;
2343 varonce300 = var301;
2344 }
2345 ((void (*)(val*, val*))(var_289->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_289, var301) /* add on <var_289:Array[Object]>*/;
2346 var305 = ((val* (*)(val*))(var_289->class->vft[COLOR_string__Object__to_s]))(var_289) /* to_s on <var_289:Array[Object]>*/;
2347 var_cfilepath = var305;
2348 var306 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__Toolchain__toolcontext]))(self) /* toolcontext on <self:MakefileToolchain>*/;
2349 if (varonce307) {
2350 var308 = varonce307;
2351 } else {
2352 var309 = "new C source files to compile: ";
2353 var310 = 31;
2354 var311 = string__NativeString__to_s_with_length(var309, var310);
2355 var308 = var311;
2356 varonce307 = var308;
2357 }
2358 var312 = NEW_array__Array(&type_array__Arraykernel__Object);
2359 { /* var312 = array_instance Array[Object] */
2360 var313 = 2;
2361 var314 = NEW_array__NativeArray(var313, &type_array__NativeArraykernel__Object);
2362 ((struct instance_array__NativeArray*)var314)->values[0] = (val*) var308;
2363 ((struct instance_array__NativeArray*)var314)->values[1] = (val*) var_cfilepath;
2364 ((void (*)(val*, val*, long))(var312->class->vft[COLOR_array__Array__with_native]))(var312, var314, var313) /* with_native on <var312:Array[Object]>*/;
2365 }
2366 var315 = ((val* (*)(val*))(var312->class->vft[COLOR_string__Object__to_s]))(var312) /* to_s on <var312:Array[Object]>*/;
2367 var316 = 3;
2368 ((void (*)(val*, val*, long))(var306->class->vft[COLOR_toolcontext__ToolContext__info]))(var306, var315, var316) /* info on <var306:ToolContext>*/;
2369 ((void (*)(val*, val*))(var_cfiles->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_cfiles, var_cfilename) /* add on <var_cfiles:Array[String]>*/;
2370 var317 = NEW_file__OFStream(&type_file__OFStream);
2371 ((void (*)(val*, val*))(var317->class->vft[COLOR_file__OFStream__open]))(var317, var_cfilepath) /* open on <var317:OFStream>*/;
2372 var_file = var317;
2373 if (varonce318) {
2374 var319 = varonce318;
2375 } else {
2376 var320 = "#include \"";
2377 var321 = 10;
2378 var322 = string__NativeString__to_s_with_length(var320, var321);
2379 var319 = var322;
2380 varonce318 = var319;
2381 }
2382 var323 = ((val* (*)(val*))(var_f->class->vft[COLOR_abstract_compiler__CodeFile__name]))(var_f) /* name on <var_f:CodeFile>*/;
2383 if (varonce324) {
2384 var325 = varonce324;
2385 } else {
2386 var326 = ".0.h\"\n";
2387 var327 = 6;
2388 var328 = string__NativeString__to_s_with_length(var326, var327);
2389 var325 = var328;
2390 varonce324 = var325;
2391 }
2392 var329 = NEW_array__Array(&type_array__Arraykernel__Object);
2393 { /* var329 = array_instance Array[Object] */
2394 var330 = 3;
2395 var331 = NEW_array__NativeArray(var330, &type_array__NativeArraykernel__Object);
2396 ((struct instance_array__NativeArray*)var331)->values[0] = (val*) var319;
2397 ((struct instance_array__NativeArray*)var331)->values[1] = (val*) var323;
2398 ((struct instance_array__NativeArray*)var331)->values[2] = (val*) var325;
2399 ((void (*)(val*, val*, long))(var329->class->vft[COLOR_array__Array__with_native]))(var329, var331, var330) /* with_native on <var329:Array[Object]>*/;
2400 }
2401 var332 = ((val* (*)(val*))(var329->class->vft[COLOR_string__Object__to_s]))(var329) /* to_s on <var329:Array[Object]>*/;
2402 ((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var332) /* write on <var_file:nullable OFStream(OFStream)>*/;
2403 var_count = var_total_lines;
2404 } else {
2405 }
2406 var333 = ((val* (*)(val*))(var_vis->class->vft[COLOR_abstract_compiler__CodeWriter__decl_lines]))(var_vis) /* decl_lines on <var_vis:CodeWriter>*/;
2407 var334 = ((val* (*)(val*))(var333->class->vft[COLOR_abstract_collection__Collection__iterator]))(var333) /* iterator on <var333:List[String]>*/;
2408 for(;;) {
2409 var335 = ((short int (*)(val*))(var334->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var334) /* is_ok on <var334:Iterator[nullable Object]>*/;
2410 if(!var335) break;
2411 var336 = ((val* (*)(val*))(var334->class->vft[COLOR_abstract_collection__Iterator__item]))(var334) /* item on <var334:Iterator[nullable Object]>*/;
2412 var_l337 = var336;
2413 ((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var_l337) /* write on <var_file:nullable OFStream(OFStream)>*/;
2414 if (varonce338) {
2415 var339 = varonce338;
2416 } else {
2417 var340 = "\n";
2418 var341 = 1;
2419 var342 = string__NativeString__to_s_with_length(var340, var341);
2420 var339 = var342;
2421 varonce338 = var339;
2422 }
2423 ((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var339) /* write on <var_file:nullable OFStream(OFStream)>*/;
2424 CONTINUE_label343: (void)0;
2425 ((void (*)(val*))(var334->class->vft[COLOR_abstract_collection__Iterator__next]))(var334) /* next on <var334:Iterator[nullable Object]>*/;
2426 }
2427 BREAK_label343: (void)0;
2428 var344 = ((val* (*)(val*))(var_vis->class->vft[COLOR_abstract_compiler__CodeWriter__lines]))(var_vis) /* lines on <var_vis:CodeWriter>*/;
2429 var345 = ((val* (*)(val*))(var344->class->vft[COLOR_abstract_collection__Collection__iterator]))(var344) /* iterator on <var344:List[String]>*/;
2430 for(;;) {
2431 var346 = ((short int (*)(val*))(var345->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var345) /* is_ok on <var345:Iterator[nullable Object]>*/;
2432 if(!var346) break;
2433 var347 = ((val* (*)(val*))(var345->class->vft[COLOR_abstract_collection__Iterator__item]))(var345) /* item on <var345:Iterator[nullable Object]>*/;
2434 var_l348 = var347;
2435 ((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var_l348) /* write on <var_file:nullable OFStream(OFStream)>*/;
2436 if (varonce349) {
2437 var350 = varonce349;
2438 } else {
2439 var351 = "\n";
2440 var352 = 1;
2441 var353 = string__NativeString__to_s_with_length(var351, var352);
2442 var350 = var353;
2443 varonce349 = var350;
2444 }
2445 ((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var350) /* write on <var_file:nullable OFStream(OFStream)>*/;
2446 CONTINUE_label354: (void)0;
2447 ((void (*)(val*))(var345->class->vft[COLOR_abstract_collection__Iterator__next]))(var345) /* next on <var345:Iterator[nullable Object]>*/;
2448 }
2449 BREAK_label354: (void)0;
2450 CONTINUE_label236: (void)0;
2451 ((void (*)(val*))(var231->class->vft[COLOR_abstract_collection__Iterator__next]))(var231) /* next on <var231:Iterator[nullable Object]>*/;
2452 }
2453 BREAK_label236: (void)0;
2454 var355 = NULL;
2455 if (var_file == NULL) {
2456 var356 = 0; /* is null */
2457 } else {
2458 var356 = 1; /* arg is null and recv is not */
2459 }
2460 if (var356){
2461 ((void (*)(val*))(var_file->class->vft[COLOR_stream__IOS__close]))(var_file) /* close on <var_file:nullable OFStream(OFStream)>*/;
2462 } else {
2463 }
2464 CONTINUE_label357: (void)0;
2465 ((void (*)(val*))(var137->class->vft[COLOR_abstract_collection__Iterator__next]))(var137) /* next on <var137:Iterator[nullable Object]>*/;
2466 }
2467 BREAK_label357: (void)0;
2468 var358 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__Toolchain__toolcontext]))(self) /* toolcontext on <self:MakefileToolchain>*/;
2469 if (varonce359) {
2470 var360 = varonce359;
2471 } else {
2472 var361 = "Total C source files to compile: ";
2473 var362 = 33;
2474 var363 = string__NativeString__to_s_with_length(var361, var362);
2475 var360 = var363;
2476 varonce359 = var360;
2477 }
2478 var364 = ((long (*)(val*))(var_cfiles->class->vft[COLOR_abstract_collection__Collection__length]))(var_cfiles) /* length on <var_cfiles:Array[String]>*/;
2479 var365 = NEW_array__Array(&type_array__Arraykernel__Object);
2480 { /* var365 = array_instance Array[Object] */
2481 var366 = 2;
2482 var367 = NEW_array__NativeArray(var366, &type_array__NativeArraykernel__Object);
2483 ((struct instance_array__NativeArray*)var367)->values[0] = (val*) var360;
2484 var368 = BOX_kernel__Int(var364); /* autobox from Int to Object */
2485 ((struct instance_array__NativeArray*)var367)->values[1] = (val*) var368;
2486 ((void (*)(val*, val*, long))(var365->class->vft[COLOR_array__Array__with_native]))(var365, var367, var366) /* with_native on <var365:Array[Object]>*/;
2487 }
2488 var369 = ((val* (*)(val*))(var365->class->vft[COLOR_string__Object__to_s]))(var365) /* to_s on <var365:Array[Object]>*/;
2489 var370 = 2;
2490 ((void (*)(val*, val*, long))(var358->class->vft[COLOR_toolcontext__ToolContext__info]))(var358, var369, var370) /* info on <var358:ToolContext>*/;
2491 RET_LABEL:;
2492 }
2493 /* method abstract_compiler#MakefileToolchain#write_files for (self: Object, AbstractCompiler, String, Array[String]) */
2494 void VIRTUAL_abstract_compiler__MakefileToolchain__write_files(val* self, val* p0, val* p1, val* p2) {
2495 abstract_compiler__MakefileToolchain__write_files(self, p0, p1, p2);
2496 RET_LABEL:;
2497 }
2498 /* method abstract_compiler#MakefileToolchain#write_makefile for (self: MakefileToolchain, AbstractCompiler, String, Array[String]) */
2499 void abstract_compiler__MakefileToolchain__write_makefile(val* self, val* p0, val* p1, val* p2) {
2500 val* var_compiler /* var compiler: AbstractCompiler */;
2501 val* var_compile_dir /* var compile_dir: String */;
2502 val* var_cfiles /* var cfiles: Array[String] */;
2503 val* var /* : MModule */;
2504 val* var_mainmodule /* var mainmodule: MModule */;
2505 val* var1 /* : ToolContext */;
2506 val* var2 /* : OptionString */;
2507 val* var3 /* : nullable Object */;
2508 val* var_outname /* var outname: nullable String */;
2509 val* var4 /* : null */;
2510 short int var5 /* : Bool */;
2511 val* var6 /* : Array[Object] */;
2512 long var7 /* : Int */;
2513 val* var_ /* var : Array[Object] */;
2514 static val* varonce;
2515 val* var8 /* : String */;
2516 char* var9 /* : NativeString */;
2517 long var10 /* : Int */;
2518 val* var11 /* : String */;
2519 val* var12 /* : String */;
2520 static val* varonce13;
2521 val* var14 /* : String */;
2522 char* var15 /* : NativeString */;
2523 long var16 /* : Int */;
2524 val* var17 /* : String */;
2525 val* var18 /* : String */;
2526 static val* varonce19;
2527 val* var20 /* : String */;
2528 char* var21 /* : NativeString */;
2529 long var22 /* : Int */;
2530 val* var23 /* : String */;
2531 val* var_orig_dir /* var orig_dir: String */;
2532 val* var24 /* : String */;
2533 val* var25 /* : String */;
2534 val* var_outpath /* var outpath: String */;
2535 val* var26 /* : Array[Object] */;
2536 long var27 /* : Int */;
2537 val* var_28 /* var : Array[Object] */;
2538 static val* varonce29;
2539 val* var30 /* : String */;
2540 char* var31 /* : NativeString */;
2541 long var32 /* : Int */;
2542 val* var33 /* : String */;
2543 val* var34 /* : String */;
2544 static val* varonce35;
2545 val* var36 /* : String */;
2546 char* var37 /* : NativeString */;
2547 long var38 /* : Int */;
2548 val* var39 /* : String */;
2549 val* var40 /* : String */;
2550 val* var_makename /* var makename: String */;
2551 val* var41 /* : Array[Object] */;
2552 long var42 /* : Int */;
2553 val* var_43 /* var : Array[Object] */;
2554 static val* varonce44;
2555 val* var45 /* : String */;
2556 char* var46 /* : NativeString */;
2557 long var47 /* : Int */;
2558 val* var48 /* : String */;
2559 static val* varonce49;
2560 val* var50 /* : String */;
2561 char* var51 /* : NativeString */;
2562 long var52 /* : Int */;
2563 val* var53 /* : String */;
2564 static val* varonce54;
2565 val* var55 /* : String */;
2566 char* var56 /* : NativeString */;
2567 long var57 /* : Int */;
2568 val* var58 /* : String */;
2569 val* var59 /* : String */;
2570 val* var_makepath /* var makepath: String */;
2571 val* var60 /* : OFStream */;
2572 val* var_makefile /* var makefile: OFStream */;
2573 static val* varonce61;
2574 val* var62 /* : String */;
2575 char* var63 /* : NativeString */;
2576 long var64 /* : Int */;
2577 val* var65 /* : String */;
2578 val* var_cc_includes /* var cc_includes: String */;
2579 val* var66 /* : Array[String] */;
2580 val* var67 /* : Iterator[nullable Object] */;
2581 short int var68 /* : Bool */;
2582 val* var69 /* : nullable Object */;
2583 val* var_p /* var p: String */;
2584 static val* varonce70;
2585 val* var71 /* : String */;
2586 char* var72 /* : NativeString */;
2587 long var73 /* : Int */;
2588 val* var74 /* : String */;
2589 val* var75 /* : String */;
2590 static val* varonce76;
2591 val* var77 /* : String */;
2592 char* var78 /* : NativeString */;
2593 long var79 /* : Int */;
2594 val* var80 /* : String */;
2595 val* var81 /* : String */;
2596 val* var82 /* : String */;
2597 val* var83 /* : HashSet[String] */;
2598 val* var_linker_options /* var linker_options: HashSet[String] */;
2599 val* var84 /* : ToolContext */;
2600 val* var85 /* : ModelBuilder */;
2601 val* var86 /* : HashMap[MModule, AModule] */;
2602 val* var_m2m /* var m2m: HashMap[MModule, AModule] */;
2603 val* var87 /* : POSetElement[MModule] */;
2604 val* var88 /* : Collection[Object] */;
2605 val* var89 /* : Iterator[nullable Object] */;
2606 short int var90 /* : Bool */;
2607 val* var91 /* : nullable Object */;
2608 val* var_m /* var m: MModule */;
2609 val* var92 /* : Collection[Object] */;
2610 short int var93 /* : Bool */;
2611 val* var94 /* : nullable Object */;
2612 val* var_amod /* var amod: AModule */;
2613 val* var95 /* : String */;
2614 val* var97 /* : ToolContext */;
2615 val* var98 /* : OptionBool */;
2616 val* var99 /* : nullable Object */;
2617 short int var100 /* : Bool */;
2618 short int var101 /* : Bool */;
2619 static val* varonce102;
2620 val* var103 /* : String */;
2621 char* var104 /* : NativeString */;
2622 long var105 /* : Int */;
2623 val* var106 /* : String */;
2624 static val* varonce107;
2625 val* var108 /* : String */;
2626 char* var109 /* : NativeString */;
2627 long var110 /* : Int */;
2628 val* var111 /* : String */;
2629 static val* varonce112;
2630 val* var113 /* : String */;
2631 char* var114 /* : NativeString */;
2632 long var115 /* : Int */;
2633 val* var116 /* : String */;
2634 static val* varonce117;
2635 val* var118 /* : String */;
2636 char* var119 /* : NativeString */;
2637 long var120 /* : Int */;
2638 val* var121 /* : String */;
2639 val* var122 /* : String */;
2640 static val* varonce123;
2641 val* var124 /* : String */;
2642 char* var125 /* : NativeString */;
2643 long var126 /* : Int */;
2644 val* var127 /* : String */;
2645 val* var128 /* : Array[Object] */;
2646 long var129 /* : Int */;
2647 val* var130 /* : NativeArray[Object] */;
2648 val* var131 /* : String */;
2649 static val* varonce132;
2650 val* var133 /* : String */;
2651 char* var134 /* : NativeString */;
2652 long var135 /* : Int */;
2653 val* var136 /* : String */;
2654 static val* varonce137;
2655 val* var138 /* : String */;
2656 char* var139 /* : NativeString */;
2657 long var140 /* : Int */;
2658 val* var141 /* : String */;
2659 val* var142 /* : Array[Object] */;
2660 long var143 /* : Int */;
2661 val* var144 /* : NativeArray[Object] */;
2662 val* var145 /* : String */;
2663 val* var146 /* : Array[String] */;
2664 val* var_ofiles /* var ofiles: Array[String] */;
2665 val* var147 /* : Array[String] */;
2666 val* var_dep_rules /* var dep_rules: Array[String] */;
2667 val* var148 /* : Iterator[nullable Object] */;
2668 short int var149 /* : Bool */;
2669 val* var150 /* : nullable Object */;
2670 val* var_f /* var f: String */;
2671 static val* varonce151;
2672 val* var152 /* : String */;
2673 char* var153 /* : NativeString */;
2674 long var154 /* : Int */;
2675 val* var155 /* : String */;
2676 val* var156 /* : String */;
2677 static val* varonce157;
2678 val* var158 /* : String */;
2679 char* var159 /* : NativeString */;
2680 long var160 /* : Int */;
2681 val* var161 /* : String */;
2682 val* var162 /* : String */;
2683 val* var_o /* var o: String */;
2684 static val* varonce163;
2685 val* var164 /* : String */;
2686 char* var165 /* : NativeString */;
2687 long var166 /* : Int */;
2688 val* var167 /* : String */;
2689 static val* varonce168;
2690 val* var169 /* : String */;
2691 char* var170 /* : NativeString */;
2692 long var171 /* : Int */;
2693 val* var172 /* : String */;
2694 static val* varonce173;
2695 val* var174 /* : String */;
2696 char* var175 /* : NativeString */;
2697 long var176 /* : Int */;
2698 val* var177 /* : String */;
2699 static val* varonce178;
2700 val* var179 /* : String */;
2701 char* var180 /* : NativeString */;
2702 long var181 /* : Int */;
2703 val* var182 /* : String */;
2704 val* var183 /* : Array[Object] */;
2705 long var184 /* : Int */;
2706 val* var185 /* : NativeArray[Object] */;
2707 val* var186 /* : String */;
2708 val* var188 /* : Array[ExternFile] */;
2709 val* var189 /* : Iterator[nullable Object] */;
2710 short int var190 /* : Bool */;
2711 val* var191 /* : nullable Object */;
2712 val* var_f192 /* var f: ExternFile */;
2713 short int var193 /* : Bool */;
2714 int cltype;
2715 int idtype;
2716 val* var194 /* : String */;
2717 static val* varonce195;
2718 val* var196 /* : String */;
2719 char* var197 /* : NativeString */;
2720 long var198 /* : Int */;
2721 val* var199 /* : String */;
2722 val* var200 /* : String */;
2723 val* var_basename /* var basename: String */;
2724 val* var201 /* : Array[Object] */;
2725 long var202 /* : Int */;
2726 val* var_203 /* var : Array[Object] */;
2727 static val* varonce204;
2728 val* var205 /* : String */;
2729 char* var206 /* : NativeString */;
2730 long var207 /* : Int */;
2731 val* var208 /* : String */;
2732 static val* varonce209;
2733 val* var210 /* : String */;
2734 char* var211 /* : NativeString */;
2735 long var212 /* : Int */;
2736 val* var213 /* : String */;
2737 val* var214 /* : String */;
2738 val* var_o215 /* var o: String */;
2739 val* var216 /* : String */;
2740 static val* varonce217;
2741 val* var218 /* : String */;
2742 char* var219 /* : NativeString */;
2743 long var220 /* : Int */;
2744 val* var221 /* : String */;
2745 val* var222 /* : String */;
2746 val* var_ff /* var ff: String */;
2747 static val* varonce223;
2748 val* var224 /* : String */;
2749 char* var225 /* : NativeString */;
2750 long var226 /* : Int */;
2751 val* var227 /* : String */;
2752 static val* varonce228;
2753 val* var229 /* : String */;
2754 char* var230 /* : NativeString */;
2755 long var231 /* : Int */;
2756 val* var232 /* : String */;
2757 val* var233 /* : String */;
2758 static val* varonce234;
2759 val* var235 /* : String */;
2760 char* var236 /* : NativeString */;
2761 long var237 /* : Int */;
2762 val* var238 /* : String */;
2763 static val* varonce239;
2764 val* var240 /* : String */;
2765 char* var241 /* : NativeString */;
2766 long var242 /* : Int */;
2767 val* var243 /* : String */;
2768 static val* varonce244;
2769 val* var245 /* : String */;
2770 char* var246 /* : NativeString */;
2771 long var247 /* : Int */;
2772 val* var248 /* : String */;
2773 val* var249 /* : Array[Object] */;
2774 long var250 /* : Int */;
2775 val* var251 /* : NativeArray[Object] */;
2776 val* var252 /* : String */;
2777 val* var253 /* : String */;
2778 val* var_o254 /* var o: String */;
2779 val* var255 /* : String */;
2780 static val* varonce256;
2781 val* var257 /* : String */;
2782 char* var258 /* : NativeString */;
2783 long var259 /* : Int */;
2784 val* var260 /* : String */;
2785 val* var261 /* : String */;
2786 val* var_ff262 /* var ff: String */;
2787 static val* varonce263;
2788 val* var264 /* : String */;
2789 char* var265 /* : NativeString */;
2790 long var266 /* : Int */;
2791 val* var267 /* : String */;
2792 static val* varonce268;
2793 val* var269 /* : String */;
2794 char* var270 /* : NativeString */;
2795 long var271 /* : Int */;
2796 val* var272 /* : String */;
2797 val* var273 /* : Array[Object] */;
2798 long var274 /* : Int */;
2799 val* var275 /* : NativeArray[Object] */;
2800 val* var276 /* : String */;
2801 static val* varonce277;
2802 val* var278 /* : String */;
2803 char* var279 /* : NativeString */;
2804 long var280 /* : Int */;
2805 val* var281 /* : String */;
2806 val* var282 /* : String */;
2807 static val* varonce283;
2808 val* var284 /* : String */;
2809 char* var285 /* : NativeString */;
2810 long var286 /* : Int */;
2811 val* var287 /* : String */;
2812 val* var288 /* : Array[Object] */;
2813 long var289 /* : Int */;
2814 val* var290 /* : NativeArray[Object] */;
2815 val* var291 /* : String */;
2816 val* var292 /* : String */;
2817 short int var293 /* : Bool */;
2818 int cltype294;
2819 int idtype295;
2820 static val* varonce297;
2821 val* var298 /* : String */;
2822 char* var299 /* : NativeString */;
2823 long var300 /* : Int */;
2824 val* var301 /* : String */;
2825 static val* varonce302;
2826 val* var303 /* : String */;
2827 char* var304 /* : NativeString */;
2828 long var305 /* : Int */;
2829 val* var306 /* : String */;
2830 val* var307 /* : String */;
2831 static val* varonce308;
2832 val* var309 /* : String */;
2833 char* var310 /* : NativeString */;
2834 long var311 /* : Int */;
2835 val* var312 /* : String */;
2836 static val* varonce313;
2837 val* var314 /* : String */;
2838 char* var315 /* : NativeString */;
2839 long var316 /* : Int */;
2840 val* var317 /* : String */;
2841 static val* varonce318;
2842 val* var319 /* : String */;
2843 char* var320 /* : NativeString */;
2844 long var321 /* : Int */;
2845 val* var322 /* : String */;
2846 val* var323 /* : String */;
2847 static val* varonce324;
2848 val* var325 /* : String */;
2849 char* var326 /* : NativeString */;
2850 long var327 /* : Int */;
2851 val* var328 /* : String */;
2852 val* var329 /* : Array[Object] */;
2853 long var330 /* : Int */;
2854 val* var331 /* : NativeArray[Object] */;
2855 val* var332 /* : String */;
2856 static val* varonce333;
2857 val* var334 /* : String */;
2858 char* var335 /* : NativeString */;
2859 long var336 /* : Int */;
2860 val* var337 /* : String */;
2861 static val* varonce338;
2862 val* var339 /* : String */;
2863 char* var340 /* : NativeString */;
2864 long var341 /* : Int */;
2865 val* var342 /* : String */;
2866 val* var343 /* : String */;
2867 static val* varonce344;
2868 val* var345 /* : String */;
2869 char* var346 /* : NativeString */;
2870 long var347 /* : Int */;
2871 val* var348 /* : String */;
2872 val* var349 /* : Array[Object] */;
2873 long var350 /* : Int */;
2874 val* var351 /* : NativeArray[Object] */;
2875 val* var352 /* : String */;
2876 val* var353 /* : ToolContext */;
2877 static val* varonce354;
2878 val* var355 /* : String */;
2879 char* var356 /* : NativeString */;
2880 long var357 /* : Int */;
2881 val* var358 /* : String */;
2882 val* var359 /* : Array[Object] */;
2883 long var360 /* : Int */;
2884 val* var361 /* : NativeArray[Object] */;
2885 val* var362 /* : String */;
2886 long var363 /* : Int */;
2887 var_compiler = p0;
2888 var_compile_dir = p1;
2889 var_cfiles = p2;
2890 var = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var_compiler) /* mainmodule on <var_compiler:AbstractCompiler>*/;
2891 var_mainmodule = var;
2892 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__Toolchain__toolcontext]))(self) /* toolcontext on <self:MakefileToolchain>*/;
2893 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__ToolContext__opt_output]))(var1) /* opt_output on <var1:ToolContext>*/;
2894 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_opts__Option__value]))(var2) /* value on <var2:OptionString>*/;
2895 var_outname = var3;
2896 var4 = NULL;
2897 if (var_outname == NULL) {
2898 var5 = 1; /* is null */
2899 } else {
2900 var5 = 0; /* arg is null but recv is not */
2901 }
2902 if (var5){
2903 var6 = NEW_array__Array(&type_array__Arraykernel__Object);
2904 var7 = 3;
2905 ((void (*)(val*, long))(var6->class->vft[COLOR_array__Array__with_capacity]))(var6, var7) /* with_capacity on <var6:Array[Object]>*/;
2906 var_ = var6;
2907 if (varonce) {
2908 var8 = varonce;
2909 } else {
2910 var9 = "";
2911 var10 = 0;
2912 var11 = string__NativeString__to_s_with_length(var9, var10);
2913 var8 = var11;
2914 varonce = var8;
2915 }
2916 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var8) /* add on <var_:Array[Object]>*/;
2917 var12 = ((val* (*)(val*))(var_mainmodule->class->vft[COLOR_mmodule__MModule__name]))(var_mainmodule) /* name on <var_mainmodule:MModule>*/;
2918 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var12) /* add on <var_:Array[Object]>*/;
2919 if (varonce13) {
2920 var14 = varonce13;
2921 } else {
2922 var15 = "";
2923 var16 = 0;
2924 var17 = string__NativeString__to_s_with_length(var15, var16);
2925 var14 = var17;
2926 varonce13 = var14;
2927 }
2928 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var14) /* add on <var_:Array[Object]>*/;
2929 var18 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
2930 var_outname = var18;
2931 } else {
2932 }
2933 if (varonce19) {
2934 var20 = varonce19;
2935 } else {
2936 var21 = "..";
2937 var22 = 2;
2938 var23 = string__NativeString__to_s_with_length(var21, var22);
2939 var20 = var23;
2940 varonce19 = var20;
2941 }
2942 var_orig_dir = var20;
2943 var24 = ((val* (*)(val*, val*))(var_orig_dir->class->vft[COLOR_file__String__join_path]))(var_orig_dir, var_outname) /* join_path on <var_orig_dir:String>*/;
2944 var25 = ((val* (*)(val*))(var24->class->vft[COLOR_file__String__simplify_path]))(var24) /* simplify_path on <var24:String>*/;
2945 var_outpath = var25;
2946 var26 = NEW_array__Array(&type_array__Arraykernel__Object);
2947 var27 = 3;
2948 ((void (*)(val*, long))(var26->class->vft[COLOR_array__Array__with_capacity]))(var26, var27) /* with_capacity on <var26:Array[Object]>*/;
2949 var_28 = var26;
2950 if (varonce29) {
2951 var30 = varonce29;
2952 } else {
2953 var31 = "";
2954 var32 = 0;
2955 var33 = string__NativeString__to_s_with_length(var31, var32);
2956 var30 = var33;
2957 varonce29 = var30;
2958 }
2959 ((void (*)(val*, val*))(var_28->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_28, var30) /* add on <var_28:Array[Object]>*/;
2960 var34 = ((val* (*)(val*))(var_mainmodule->class->vft[COLOR_mmodule__MModule__name]))(var_mainmodule) /* name on <var_mainmodule:MModule>*/;
2961 ((void (*)(val*, val*))(var_28->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_28, var34) /* add on <var_28:Array[Object]>*/;
2962 if (varonce35) {
2963 var36 = varonce35;
2964 } else {
2965 var37 = ".mk";
2966 var38 = 3;
2967 var39 = string__NativeString__to_s_with_length(var37, var38);
2968 var36 = var39;
2969 varonce35 = var36;
2970 }
2971 ((void (*)(val*, val*))(var_28->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_28, var36) /* add on <var_28:Array[Object]>*/;
2972 var40 = ((val* (*)(val*))(var_28->class->vft[COLOR_string__Object__to_s]))(var_28) /* to_s on <var_28:Array[Object]>*/;
2973 var_makename = var40;
2974 var41 = NEW_array__Array(&type_array__Arraykernel__Object);
2975 var42 = 5;
2976 ((void (*)(val*, long))(var41->class->vft[COLOR_array__Array__with_capacity]))(var41, var42) /* with_capacity on <var41:Array[Object]>*/;
2977 var_43 = var41;
2978 if (varonce44) {
2979 var45 = varonce44;
2980 } else {
2981 var46 = "";
2982 var47 = 0;
2983 var48 = string__NativeString__to_s_with_length(var46, var47);
2984 var45 = var48;
2985 varonce44 = var45;
2986 }
2987 ((void (*)(val*, val*))(var_43->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_43, var45) /* add on <var_43:Array[Object]>*/;
2988 ((void (*)(val*, val*))(var_43->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_43, var_compile_dir) /* add on <var_43:Array[Object]>*/;
2989 if (varonce49) {
2990 var50 = varonce49;
2991 } else {
2992 var51 = "/";
2993 var52 = 1;
2994 var53 = string__NativeString__to_s_with_length(var51, var52);
2995 var50 = var53;
2996 varonce49 = var50;
2997 }
2998 ((void (*)(val*, val*))(var_43->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_43, var50) /* add on <var_43:Array[Object]>*/;
2999 ((void (*)(val*, val*))(var_43->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_43, var_makename) /* add on <var_43:Array[Object]>*/;
3000 if (varonce54) {
3001 var55 = varonce54;
3002 } else {
3003 var56 = "";
3004 var57 = 0;
3005 var58 = string__NativeString__to_s_with_length(var56, var57);
3006 var55 = var58;
3007 varonce54 = var55;
3008 }
3009 ((void (*)(val*, val*))(var_43->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_43, var55) /* add on <var_43:Array[Object]>*/;
3010 var59 = ((val* (*)(val*))(var_43->class->vft[COLOR_string__Object__to_s]))(var_43) /* to_s on <var_43:Array[Object]>*/;
3011 var_makepath = var59;
3012 var60 = NEW_file__OFStream(&type_file__OFStream);
3013 ((void (*)(val*, val*))(var60->class->vft[COLOR_file__OFStream__open]))(var60, var_makepath) /* open on <var60:OFStream>*/;
3014 var_makefile = var60;
3015 if (varonce61) {
3016 var62 = varonce61;
3017 } else {
3018 var63 = "";
3019 var64 = 0;
3020 var65 = string__NativeString__to_s_with_length(var63, var64);
3021 var62 = var65;
3022 varonce61 = var62;
3023 }
3024 var_cc_includes = var62;
3025 var66 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MakefileToolchain__cc_paths]))(self) /* cc_paths on <self:MakefileToolchain>*/;
3026 var67 = ((val* (*)(val*))(var66->class->vft[COLOR_abstract_collection__Collection__iterator]))(var66) /* iterator on <var66:Array[String]>*/;
3027 for(;;) {
3028 var68 = ((short int (*)(val*))(var67->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var67) /* is_ok on <var67:Iterator[nullable Object]>*/;
3029 if(!var68) break;
3030 var69 = ((val* (*)(val*))(var67->class->vft[COLOR_abstract_collection__Iterator__item]))(var67) /* item on <var67:Iterator[nullable Object]>*/;
3031 var_p = var69;
3032 if (varonce70) {
3033 var71 = varonce70;
3034 } else {
3035 var72 = " -I \"";
3036 var73 = 5;
3037 var74 = string__NativeString__to_s_with_length(var72, var73);
3038 var71 = var74;
3039 varonce70 = var71;
3040 }
3041 var75 = ((val* (*)(val*, val*))(var71->class->vft[COLOR_string__String___43d]))(var71, var_p) /* + on <var71:String>*/;
3042 if (varonce76) {
3043 var77 = varonce76;
3044 } else {
3045 var78 = "\"";
3046 var79 = 1;
3047 var80 = string__NativeString__to_s_with_length(var78, var79);
3048 var77 = var80;
3049 varonce76 = var77;
3050 }
3051 var81 = ((val* (*)(val*, val*))(var75->class->vft[COLOR_string__String___43d]))(var75, var77) /* + on <var75:String>*/;
3052 var82 = ((val* (*)(val*, val*))(var_cc_includes->class->vft[COLOR_string__String___43d]))(var_cc_includes, var81) /* + on <var_cc_includes:String>*/;
3053 var_cc_includes = var82;
3054 CONTINUE_label: (void)0;
3055 ((void (*)(val*))(var67->class->vft[COLOR_abstract_collection__Iterator__next]))(var67) /* next on <var67:Iterator[nullable Object]>*/;
3056 }
3057 BREAK_label: (void)0;
3058 var83 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetstring__String);
3059 ((void (*)(val*))(var83->class->vft[COLOR_hash_collection__HashSet__init]))(var83) /* init on <var83:HashSet[String]>*/;
3060 var_linker_options = var83;
3061 var84 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__Toolchain__toolcontext]))(self) /* toolcontext on <self:MakefileToolchain>*/;
3062 var85 = ((val* (*)(val*))(var84->class->vft[COLOR_modelbuilder__ToolContext__modelbuilder]))(var84) /* modelbuilder on <var84:ToolContext>*/;
3063 var86 = ((val* (*)(val*))(var85->class->vft[COLOR_modelbuilder__ModelBuilder__mmodule2nmodule]))(var85) /* mmodule2nmodule on <var85:ModelBuilder>*/;
3064 var_m2m = var86;
3065 var87 = ((val* (*)(val*))(var_mainmodule->class->vft[COLOR_mmodule__MModule__in_importation]))(var_mainmodule) /* in_importation on <var_mainmodule:MModule>*/;
3066 var88 = ((val* (*)(val*))(var87->class->vft[COLOR_poset__POSetElement__greaters]))(var87) /* greaters on <var87:POSetElement[MModule]>*/;
3067 var89 = ((val* (*)(val*))(var88->class->vft[COLOR_abstract_collection__Collection__iterator]))(var88) /* iterator on <var88:Collection[Object](Collection[MModule])>*/;
3068 for(;;) {
3069 var90 = ((short int (*)(val*))(var89->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var89) /* is_ok on <var89:Iterator[nullable Object]>*/;
3070 if(!var90) break;
3071 var91 = ((val* (*)(val*))(var89->class->vft[COLOR_abstract_collection__Iterator__item]))(var89) /* item on <var89:Iterator[nullable Object]>*/;
3072 var_m = var91;
3073 var92 = ((val* (*)(val*))(var_m2m->class->vft[COLOR_abstract_collection__MapRead__keys]))(var_m2m) /* keys on <var_m2m:HashMap[MModule, AModule]>*/;
3074 var93 = ((short int (*)(val*, val*))(var92->class->vft[COLOR_abstract_collection__Collection__has]))(var92, var_m) /* has on <var92:Collection[Object](HashMapKeys[MModule, AModule])>*/;
3075 if (var93){
3076 var94 = ((val* (*)(val*, val*))(var_m2m->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_m2m, var_m) /* [] on <var_m2m:HashMap[MModule, AModule]>*/;
3077 var_amod = var94;
3078 var95 = ((val* (*)(val*))(var_amod->class->vft[COLOR_c__AModule__c_linker_options]))(var_amod) /* c_linker_options on <var_amod:AModule>*/;
3079 ((void (*)(val*, val*))(var_linker_options->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_linker_options, var95) /* add on <var_linker_options:HashSet[String]>*/;
3080 } else {
3081 }
3082 CONTINUE_label96: (void)0;
3083 ((void (*)(val*))(var89->class->vft[COLOR_abstract_collection__Iterator__next]))(var89) /* next on <var89:Iterator[nullable Object]>*/;
3084 }
3085 BREAK_label96: (void)0;
3086 var97 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__Toolchain__toolcontext]))(self) /* toolcontext on <self:MakefileToolchain>*/;
3087 var98 = ((val* (*)(val*))(var97->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_stacktrace]))(var97) /* opt_no_stacktrace on <var97:ToolContext>*/;
3088 var99 = ((val* (*)(val*))(var98->class->vft[COLOR_opts__Option__value]))(var98) /* value on <var98:OptionBool>*/;
3089 var100 = ((struct instance_kernel__Bool*)var99)->value; /* autounbox from nullable Object to Bool */;
3090 var101 = !var100;
3091 if (var101){
3092 if (varonce102) {
3093 var103 = varonce102;
3094 } else {
3095 var104 = "-lunwind";
3096 var105 = 8;
3097 var106 = string__NativeString__to_s_with_length(var104, var105);
3098 var103 = var106;
3099 varonce102 = var103;
3100 }
3101 ((void (*)(val*, val*))(var_linker_options->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_linker_options, var103) /* add on <var_linker_options:HashSet[String]>*/;
3102 } else {
3103 }
3104 if (varonce107) {
3105 var108 = varonce107;
3106 } else {
3107 var109 = "CC = ccache cc\nCFLAGS = -g -O2\nCINCL = ";
3108 var110 = 39;
3109 var111 = string__NativeString__to_s_with_length(var109, var110);
3110 var108 = var111;
3111 varonce107 = var108;
3112 }
3113 if (varonce112) {
3114 var113 = varonce112;
3115 } else {
3116 var114 = "\nLDFLAGS ?= \nLDLIBS ?= -lm -lgc ";
3117 var115 = 33;
3118 var116 = string__NativeString__to_s_with_length(var114, var115);
3119 var113 = var116;
3120 varonce112 = var113;
3121 }
3122 if (varonce117) {
3123 var118 = varonce117;
3124 } else {
3125 var119 = " ";
3126 var120 = 1;
3127 var121 = string__NativeString__to_s_with_length(var119, var120);
3128 var118 = var121;
3129 varonce117 = var118;
3130 }
3131 var122 = ((val* (*)(val*, val*))(var_linker_options->class->vft[COLOR_string__Collection__join]))(var_linker_options, var118) /* join on <var_linker_options:HashSet[String]>*/;
3132 if (varonce123) {
3133 var124 = varonce123;
3134 } else {
3135 var125 = "\n\n";
3136 var126 = 2;
3137 var127 = string__NativeString__to_s_with_length(var125, var126);
3138 var124 = var127;
3139 varonce123 = var124;
3140 }
3141 var128 = NEW_array__Array(&type_array__Arraykernel__Object);
3142 { /* var128 = array_instance Array[Object] */
3143 var129 = 5;
3144 var130 = NEW_array__NativeArray(var129, &type_array__NativeArraykernel__Object);
3145 ((struct instance_array__NativeArray*)var130)->values[0] = (val*) var108;
3146 ((struct instance_array__NativeArray*)var130)->values[1] = (val*) var_cc_includes;
3147 ((struct instance_array__NativeArray*)var130)->values[2] = (val*) var113;
3148 ((struct instance_array__NativeArray*)var130)->values[3] = (val*) var122;
3149 ((struct instance_array__NativeArray*)var130)->values[4] = (val*) var124;
3150 ((void (*)(val*, val*, long))(var128->class->vft[COLOR_array__Array__with_native]))(var128, var130, var129) /* with_native on <var128:Array[Object]>*/;
3151 }
3152 var131 = ((val* (*)(val*))(var128->class->vft[COLOR_string__Object__to_s]))(var128) /* to_s on <var128:Array[Object]>*/;
3153 ((void (*)(val*, val*))(var_makefile->class->vft[COLOR_stream__OStream__write]))(var_makefile, var131) /* write on <var_makefile:OFStream>*/;
3154 if (varonce132) {
3155 var133 = varonce132;
3156 } else {
3157 var134 = "all: ";
3158 var135 = 5;
3159 var136 = string__NativeString__to_s_with_length(var134, var135);
3160 var133 = var136;
3161 varonce132 = var133;
3162 }
3163 if (varonce137) {
3164 var138 = varonce137;
3165 } else {
3166 var139 = "\n\n";
3167 var140 = 2;
3168 var141 = string__NativeString__to_s_with_length(var139, var140);
3169 var138 = var141;
3170 varonce137 = var138;
3171 }
3172 var142 = NEW_array__Array(&type_array__Arraykernel__Object);
3173 { /* var142 = array_instance Array[Object] */
3174 var143 = 3;
3175 var144 = NEW_array__NativeArray(var143, &type_array__NativeArraykernel__Object);
3176 ((struct instance_array__NativeArray*)var144)->values[0] = (val*) var133;
3177 ((struct instance_array__NativeArray*)var144)->values[1] = (val*) var_outpath;
3178 ((struct instance_array__NativeArray*)var144)->values[2] = (val*) var138;
3179 ((void (*)(val*, val*, long))(var142->class->vft[COLOR_array__Array__with_native]))(var142, var144, var143) /* with_native on <var142:Array[Object]>*/;
3180 }
3181 var145 = ((val* (*)(val*))(var142->class->vft[COLOR_string__Object__to_s]))(var142) /* to_s on <var142:Array[Object]>*/;
3182 ((void (*)(val*, val*))(var_makefile->class->vft[COLOR_stream__OStream__write]))(var_makefile, var145) /* write on <var_makefile:OFStream>*/;
3183 var146 = NEW_array__Array(&type_array__Arraystring__String);
3184 ((void (*)(val*))(var146->class->vft[COLOR_array__Array__init]))(var146) /* init on <var146:Array[String]>*/;
3185 var_ofiles = var146;
3186 var147 = NEW_array__Array(&type_array__Arraystring__String);
3187 ((void (*)(val*))(var147->class->vft[COLOR_array__Array__init]))(var147) /* init on <var147:Array[String]>*/;
3188 var_dep_rules = var147;
3189 var148 = ((val* (*)(val*))(var_cfiles->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_cfiles) /* iterator on <var_cfiles:Array[String]>*/;
3190 for(;;) {
3191 var149 = ((short int (*)(val*))(var148->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var148) /* is_ok on <var148:Iterator[nullable Object]>*/;
3192 if(!var149) break;
3193 var150 = ((val* (*)(val*))(var148->class->vft[COLOR_abstract_collection__Iterator__item]))(var148) /* item on <var148:Iterator[nullable Object]>*/;
3194 var_f = var150;
3195 if (varonce151) {
3196 var152 = varonce151;
3197 } else {
3198 var153 = ".c";
3199 var154 = 2;
3200 var155 = string__NativeString__to_s_with_length(var153, var154);
3201 var152 = var155;
3202 varonce151 = var152;
3203 }
3204 var156 = ((val* (*)(val*, val*))(var_f->class->vft[COLOR_file__String__strip_extension]))(var_f, var152) /* strip_extension on <var_f:String>*/;
3205 if (varonce157) {
3206 var158 = varonce157;
3207 } else {
3208 var159 = ".o";
3209 var160 = 2;
3210 var161 = string__NativeString__to_s_with_length(var159, var160);
3211 var158 = var161;
3212 varonce157 = var158;
3213 }
3214 var162 = ((val* (*)(val*, val*))(var156->class->vft[COLOR_string__String___43d]))(var156, var158) /* + on <var156:String>*/;
3215 var_o = var162;
3216 if (varonce163) {
3217 var164 = varonce163;
3218 } else {
3219 var165 = ": ";
3220 var166 = 2;
3221 var167 = string__NativeString__to_s_with_length(var165, var166);
3222 var164 = var167;
3223 varonce163 = var164;
3224 }
3225 if (varonce168) {
3226 var169 = varonce168;
3227 } else {
3228 var170 = "\n\11$(CC) $(CFLAGS) $(CINCL) -D NONITCNI -c -o ";
3229 var171 = 45;
3230 var172 = string__NativeString__to_s_with_length(var170, var171);
3231 var169 = var172;
3232 varonce168 = var169;
3233 }
3234 if (varonce173) {
3235 var174 = varonce173;
3236 } else {
3237 var175 = " ";
3238 var176 = 1;
3239 var177 = string__NativeString__to_s_with_length(var175, var176);
3240 var174 = var177;
3241 varonce173 = var174;
3242 }
3243 if (varonce178) {
3244 var179 = varonce178;
3245 } else {
3246 var180 = "\n\n";
3247 var181 = 2;
3248 var182 = string__NativeString__to_s_with_length(var180, var181);
3249 var179 = var182;
3250 varonce178 = var179;
3251 }
3252 var183 = NEW_array__Array(&type_array__Arraykernel__Object);
3253 { /* var183 = array_instance Array[Object] */
3254 var184 = 8;
3255 var185 = NEW_array__NativeArray(var184, &type_array__NativeArraykernel__Object);
3256 ((struct instance_array__NativeArray*)var185)->values[0] = (val*) var_o;
3257 ((struct instance_array__NativeArray*)var185)->values[1] = (val*) var164;
3258 ((struct instance_array__NativeArray*)var185)->values[2] = (val*) var_f;
3259 ((struct instance_array__NativeArray*)var185)->values[3] = (val*) var169;
3260 ((struct instance_array__NativeArray*)var185)->values[4] = (val*) var_o;
3261 ((struct instance_array__NativeArray*)var185)->values[5] = (val*) var174;
3262 ((struct instance_array__NativeArray*)var185)->values[6] = (val*) var_f;
3263 ((struct instance_array__NativeArray*)var185)->values[7] = (val*) var179;
3264 ((void (*)(val*, val*, long))(var183->class->vft[COLOR_array__Array__with_native]))(var183, var185, var184) /* with_native on <var183:Array[Object]>*/;
3265 }
3266 var186 = ((val* (*)(val*))(var183->class->vft[COLOR_string__Object__to_s]))(var183) /* to_s on <var183:Array[Object]>*/;
3267 ((void (*)(val*, val*))(var_makefile->class->vft[COLOR_stream__OStream__write]))(var_makefile, var186) /* write on <var_makefile:OFStream>*/;
3268 ((void (*)(val*, val*))(var_ofiles->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_ofiles, var_o) /* add on <var_ofiles:Array[String]>*/;
3269 ((void (*)(val*, val*))(var_dep_rules->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_dep_rules, var_o) /* add on <var_dep_rules:Array[String]>*/;
3270 CONTINUE_label187: (void)0;
3271 ((void (*)(val*))(var148->class->vft[COLOR_abstract_collection__Iterator__next]))(var148) /* next on <var148:Iterator[nullable Object]>*/;
3272 }
3273 BREAK_label187: (void)0;
3274 var188 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__extern_bodies]))(var_compiler) /* extern_bodies on <var_compiler:AbstractCompiler>*/;
3275 var189 = ((val* (*)(val*))(var188->class->vft[COLOR_abstract_collection__Collection__iterator]))(var188) /* iterator on <var188:Array[ExternFile]>*/;
3276 for(;;) {
3277 var190 = ((short int (*)(val*))(var189->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var189) /* is_ok on <var189:Iterator[nullable Object]>*/;
3278 if(!var190) break;
3279 var191 = ((val* (*)(val*))(var189->class->vft[COLOR_abstract_collection__Iterator__item]))(var189) /* item on <var189:Iterator[nullable Object]>*/;
3280 var_f192 = var191;
3281 /* <var_f192:ExternFile> isa ExternCFile */
3282 cltype = type_c__ExternCFile.color;
3283 idtype = type_c__ExternCFile.id;
3284 if(cltype >= var_f192->type->table_size) {
3285 var193 = 0;
3286 } else {
3287 var193 = var_f192->type->type_table[cltype] == idtype;
3288 }
3289 if (var193){
3290 var194 = ((val* (*)(val*))(var_f192->class->vft[COLOR_ffi_base__ExternFile__filename]))(var_f192) /* filename on <var_f192:ExternFile(ExternCFile)>*/;
3291 if (varonce195) {
3292 var196 = varonce195;
3293 } else {
3294 var197 = ".c";
3295 var198 = 2;
3296 var199 = string__NativeString__to_s_with_length(var197, var198);
3297 var196 = var199;
3298 varonce195 = var196;
3299 }
3300 var200 = ((val* (*)(val*, val*))(var194->class->vft[COLOR_file__String__basename]))(var194, var196) /* basename on <var194:String>*/;
3301 var_basename = var200;
3302 var201 = NEW_array__Array(&type_array__Arraykernel__Object);
3303 var202 = 3;
3304 ((void (*)(val*, long))(var201->class->vft[COLOR_array__Array__with_capacity]))(var201, var202) /* with_capacity on <var201:Array[Object]>*/;
3305 var_203 = var201;
3306 if (varonce204) {
3307 var205 = varonce204;
3308 } else {
3309 var206 = "";
3310 var207 = 0;
3311 var208 = string__NativeString__to_s_with_length(var206, var207);
3312 var205 = var208;
3313 varonce204 = var205;
3314 }
3315 ((void (*)(val*, val*))(var_203->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_203, var205) /* add on <var_203:Array[Object]>*/;
3316 ((void (*)(val*, val*))(var_203->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_203, var_basename) /* add on <var_203:Array[Object]>*/;
3317 if (varonce209) {
3318 var210 = varonce209;
3319 } else {
3320 var211 = ".extern.o";
3321 var212 = 9;
3322 var213 = string__NativeString__to_s_with_length(var211, var212);
3323 var210 = var213;
3324 varonce209 = var210;
3325 }
3326 ((void (*)(val*, val*))(var_203->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_203, var210) /* add on <var_203:Array[Object]>*/;
3327 var214 = ((val* (*)(val*))(var_203->class->vft[COLOR_string__Object__to_s]))(var_203) /* to_s on <var_203:Array[Object]>*/;
3328 var_o215 = var214;
3329 var216 = ((val* (*)(val*))(var_f192->class->vft[COLOR_ffi_base__ExternFile__filename]))(var_f192) /* filename on <var_f192:ExternFile(ExternCFile)>*/;
3330 if (varonce217) {
3331 var218 = varonce217;
3332 } else {
3333 var219 = "";
3334 var220 = 0;
3335 var221 = string__NativeString__to_s_with_length(var219, var220);
3336 var218 = var221;
3337 varonce217 = var218;
3338 }
3339 var222 = ((val* (*)(val*, val*))(var216->class->vft[COLOR_file__String__basename]))(var216, var218) /* basename on <var216:String>*/;
3340 var_ff = var222;
3341 if (varonce223) {
3342 var224 = varonce223;
3343 } else {
3344 var225 = ": ";
3345 var226 = 2;
3346 var227 = string__NativeString__to_s_with_length(var225, var226);
3347 var224 = var227;
3348 varonce223 = var224;
3349 }
3350 if (varonce228) {
3351 var229 = varonce228;
3352 } else {
3353 var230 = "\n\11$(CC) $(CFLAGS) -D NONITCNI ";
3354 var231 = 30;
3355 var232 = string__NativeString__to_s_with_length(var230, var231);
3356 var229 = var232;
3357 varonce228 = var229;
3358 }
3359 var233 = ((val* (*)(val*))(var_f192->class->vft[COLOR_c__ExternCFile__cflags]))(var_f192) /* cflags on <var_f192:ExternFile(ExternCFile)>*/;
3360 if (varonce234) {
3361 var235 = varonce234;
3362 } else {
3363 var236 = " -c -o ";
3364 var237 = 7;
3365 var238 = string__NativeString__to_s_with_length(var236, var237);
3366 var235 = var238;
3367 varonce234 = var235;
3368 }
3369 if (varonce239) {
3370 var240 = varonce239;
3371 } else {
3372 var241 = " ";
3373 var242 = 1;
3374 var243 = string__NativeString__to_s_with_length(var241, var242);
3375 var240 = var243;
3376 varonce239 = var240;
3377 }
3378 if (varonce244) {
3379 var245 = varonce244;
3380 } else {
3381 var246 = "\n\n";
3382 var247 = 2;
3383 var248 = string__NativeString__to_s_with_length(var246, var247);
3384 var245 = var248;
3385 varonce244 = var245;
3386 }
3387 var249 = NEW_array__Array(&type_array__Arraykernel__Object);
3388 { /* var249 = array_instance Array[Object] */
3389 var250 = 10;
3390 var251 = NEW_array__NativeArray(var250, &type_array__NativeArraykernel__Object);
3391 ((struct instance_array__NativeArray*)var251)->values[0] = (val*) var_o215;
3392 ((struct instance_array__NativeArray*)var251)->values[1] = (val*) var224;
3393 ((struct instance_array__NativeArray*)var251)->values[2] = (val*) var_ff;
3394 ((struct instance_array__NativeArray*)var251)->values[3] = (val*) var229;
3395 ((struct instance_array__NativeArray*)var251)->values[4] = (val*) var233;
3396 ((struct instance_array__NativeArray*)var251)->values[5] = (val*) var235;
3397 ((struct instance_array__NativeArray*)var251)->values[6] = (val*) var_o215;
3398 ((struct instance_array__NativeArray*)var251)->values[7] = (val*) var240;
3399 ((struct instance_array__NativeArray*)var251)->values[8] = (val*) var_ff;
3400 ((struct instance_array__NativeArray*)var251)->values[9] = (val*) var245;
3401 ((void (*)(val*, val*, long))(var249->class->vft[COLOR_array__Array__with_native]))(var249, var251, var250) /* with_native on <var249:Array[Object]>*/;
3402 }
3403 var252 = ((val* (*)(val*))(var249->class->vft[COLOR_string__Object__to_s]))(var249) /* to_s on <var249:Array[Object]>*/;
3404 ((void (*)(val*, val*))(var_makefile->class->vft[COLOR_stream__OStream__write]))(var_makefile, var252) /* write on <var_makefile:OFStream>*/;
3405 ((void (*)(val*, val*))(var_ofiles->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_ofiles, var_o215) /* add on <var_ofiles:Array[String]>*/;
3406 ((void (*)(val*, val*))(var_dep_rules->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_dep_rules, var_o215) /* add on <var_dep_rules:Array[String]>*/;
3407 } else {
3408 var253 = ((val* (*)(val*))(var_f192->class->vft[COLOR_ffi_base__ExternFile__makefile_rule_name]))(var_f192) /* makefile_rule_name on <var_f192:ExternFile>*/;
3409 var_o254 = var253;
3410 var255 = ((val* (*)(val*))(var_f192->class->vft[COLOR_ffi_base__ExternFile__filename]))(var_f192) /* filename on <var_f192:ExternFile>*/;
3411 if (varonce256) {
3412 var257 = varonce256;
3413 } else {
3414 var258 = "";
3415 var259 = 0;
3416 var260 = string__NativeString__to_s_with_length(var258, var259);
3417 var257 = var260;
3418 varonce256 = var257;
3419 }
3420 var261 = ((val* (*)(val*, val*))(var255->class->vft[COLOR_file__String__basename]))(var255, var257) /* basename on <var255:String>*/;
3421 var_ff262 = var261;
3422 if (varonce263) {
3423 var264 = varonce263;
3424 } else {
3425 var265 = ": ";
3426 var266 = 2;
3427 var267 = string__NativeString__to_s_with_length(var265, var266);
3428 var264 = var267;
3429 varonce263 = var264;
3430 }
3431 if (varonce268) {
3432 var269 = varonce268;
3433 } else {
3434 var270 = "\n";
3435 var271 = 1;
3436 var272 = string__NativeString__to_s_with_length(var270, var271);
3437 var269 = var272;
3438 varonce268 = var269;
3439 }
3440 var273 = NEW_array__Array(&type_array__Arraykernel__Object);
3441 { /* var273 = array_instance Array[Object] */
3442 var274 = 4;
3443 var275 = NEW_array__NativeArray(var274, &type_array__NativeArraykernel__Object);
3444 ((struct instance_array__NativeArray*)var275)->values[0] = (val*) var_o254;
3445 ((struct instance_array__NativeArray*)var275)->values[1] = (val*) var264;
3446 ((struct instance_array__NativeArray*)var275)->values[2] = (val*) var_ff262;
3447 ((struct instance_array__NativeArray*)var275)->values[3] = (val*) var269;
3448 ((void (*)(val*, val*, long))(var273->class->vft[COLOR_array__Array__with_native]))(var273, var275, var274) /* with_native on <var273:Array[Object]>*/;
3449 }
3450 var276 = ((val* (*)(val*))(var273->class->vft[COLOR_string__Object__to_s]))(var273) /* to_s on <var273:Array[Object]>*/;
3451 ((void (*)(val*, val*))(var_makefile->class->vft[COLOR_stream__OStream__write]))(var_makefile, var276) /* write on <var_makefile:OFStream>*/;
3452 if (varonce277) {
3453 var278 = varonce277;
3454 } else {
3455 var279 = "\11";
3456 var280 = 1;
3457 var281 = string__NativeString__to_s_with_length(var279, var280);
3458 var278 = var281;
3459 varonce277 = var278;
3460 }
3461 var282 = ((val* (*)(val*))(var_f192->class->vft[COLOR_ffi_base__ExternFile__makefile_rule_content]))(var_f192) /* makefile_rule_content on <var_f192:ExternFile>*/;
3462 if (varonce283) {
3463 var284 = varonce283;
3464 } else {
3465 var285 = "\n";
3466 var286 = 1;
3467 var287 = string__NativeString__to_s_with_length(var285, var286);
3468 var284 = var287;
3469 varonce283 = var284;
3470 }
3471 var288 = NEW_array__Array(&type_array__Arraykernel__Object);
3472 { /* var288 = array_instance Array[Object] */
3473 var289 = 3;
3474 var290 = NEW_array__NativeArray(var289, &type_array__NativeArraykernel__Object);
3475 ((struct instance_array__NativeArray*)var290)->values[0] = (val*) var278;
3476 ((struct instance_array__NativeArray*)var290)->values[1] = (val*) var282;
3477 ((struct instance_array__NativeArray*)var290)->values[2] = (val*) var284;
3478 ((void (*)(val*, val*, long))(var288->class->vft[COLOR_array__Array__with_native]))(var288, var290, var289) /* with_native on <var288:Array[Object]>*/;
3479 }
3480 var291 = ((val* (*)(val*))(var288->class->vft[COLOR_string__Object__to_s]))(var288) /* to_s on <var288:Array[Object]>*/;
3481 ((void (*)(val*, val*))(var_makefile->class->vft[COLOR_stream__OStream__write]))(var_makefile, var291) /* write on <var_makefile:OFStream>*/;
3482 var292 = ((val* (*)(val*))(var_f192->class->vft[COLOR_ffi_base__ExternFile__makefile_rule_name]))(var_f192) /* makefile_rule_name on <var_f192:ExternFile>*/;
3483 ((void (*)(val*, val*))(var_dep_rules->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_dep_rules, var292) /* add on <var_dep_rules:Array[String]>*/;
3484 /* <var_f192:ExternFile> isa ExternCppFile */
3485 cltype294 = type_cpp__ExternCppFile.color;
3486 idtype295 = type_cpp__ExternCppFile.id;
3487 if(cltype294 >= var_f192->type->table_size) {
3488 var293 = 0;
3489 } else {
3490 var293 = var_f192->type->type_table[cltype294] == idtype295;
3491 }
3492 if (var293){
3493 ((void (*)(val*, val*))(var_ofiles->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_ofiles, var_o254) /* add on <var_ofiles:Array[String]>*/;
3494 } else {
3495 }
3496 }
3497 CONTINUE_label296: (void)0;
3498 ((void (*)(val*))(var189->class->vft[COLOR_abstract_collection__Iterator__next]))(var189) /* next on <var189:Iterator[nullable Object]>*/;
3499 }
3500 BREAK_label296: (void)0;
3501 if (varonce297) {
3502 var298 = varonce297;
3503 } else {
3504 var299 = ": ";
3505 var300 = 2;
3506 var301 = string__NativeString__to_s_with_length(var299, var300);
3507 var298 = var301;
3508 varonce297 = var298;
3509 }
3510 if (varonce302) {
3511 var303 = varonce302;
3512 } else {
3513 var304 = " ";
3514 var305 = 1;
3515 var306 = string__NativeString__to_s_with_length(var304, var305);
3516 var303 = var306;
3517 varonce302 = var303;
3518 }
3519 var307 = ((val* (*)(val*, val*))(var_ofiles->class->vft[COLOR_string__Collection__join]))(var_ofiles, var303) /* join on <var_ofiles:Array[String]>*/;
3520 if (varonce308) {
3521 var309 = varonce308;
3522 } else {
3523 var310 = "\n\11$(CC) $(LDFLAGS) -o ";
3524 var311 = 22;
3525 var312 = string__NativeString__to_s_with_length(var310, var311);
3526 var309 = var312;
3527 varonce308 = var309;
3528 }
3529 if (varonce313) {
3530 var314 = varonce313;
3531 } else {
3532 var315 = " ";
3533 var316 = 1;
3534 var317 = string__NativeString__to_s_with_length(var315, var316);
3535 var314 = var317;
3536 varonce313 = var314;
3537 }
3538 if (varonce318) {
3539 var319 = varonce318;
3540 } else {
3541 var320 = " ";
3542 var321 = 1;
3543 var322 = string__NativeString__to_s_with_length(var320, var321);
3544 var319 = var322;
3545 varonce318 = var319;
3546 }
3547 var323 = ((val* (*)(val*, val*))(var_ofiles->class->vft[COLOR_string__Collection__join]))(var_ofiles, var319) /* join on <var_ofiles:Array[String]>*/;
3548 if (varonce324) {
3549 var325 = varonce324;
3550 } else {
3551 var326 = " $(LDLIBS)\n\n";
3552 var327 = 12;
3553 var328 = string__NativeString__to_s_with_length(var326, var327);
3554 var325 = var328;
3555 varonce324 = var325;
3556 }
3557 var329 = NEW_array__Array(&type_array__Arraykernel__Object);
3558 { /* var329 = array_instance Array[Object] */
3559 var330 = 8;
3560 var331 = NEW_array__NativeArray(var330, &type_array__NativeArraykernel__Object);
3561 ((struct instance_array__NativeArray*)var331)->values[0] = (val*) var_outpath;
3562 ((struct instance_array__NativeArray*)var331)->values[1] = (val*) var298;
3563 ((struct instance_array__NativeArray*)var331)->values[2] = (val*) var307;
3564 ((struct instance_array__NativeArray*)var331)->values[3] = (val*) var309;
3565 ((struct instance_array__NativeArray*)var331)->values[4] = (val*) var_outpath;
3566 ((struct instance_array__NativeArray*)var331)->values[5] = (val*) var314;
3567 ((struct instance_array__NativeArray*)var331)->values[6] = (val*) var323;
3568 ((struct instance_array__NativeArray*)var331)->values[7] = (val*) var325;
3569 ((void (*)(val*, val*, long))(var329->class->vft[COLOR_array__Array__with_native]))(var329, var331, var330) /* with_native on <var329:Array[Object]>*/;
3570 }
3571 var332 = ((val* (*)(val*))(var329->class->vft[COLOR_string__Object__to_s]))(var329) /* to_s on <var329:Array[Object]>*/;
3572 ((void (*)(val*, val*))(var_makefile->class->vft[COLOR_stream__OStream__write]))(var_makefile, var332) /* write on <var_makefile:OFStream>*/;
3573 if (varonce333) {
3574 var334 = varonce333;
3575 } else {
3576 var335 = "clean:\n\11rm ";
3577 var336 = 11;
3578 var337 = string__NativeString__to_s_with_length(var335, var336);
3579 var334 = var337;
3580 varonce333 = var334;
3581 }
3582 if (varonce338) {
3583 var339 = varonce338;
3584 } else {
3585 var340 = " ";
3586 var341 = 1;
3587 var342 = string__NativeString__to_s_with_length(var340, var341);
3588 var339 = var342;
3589 varonce338 = var339;
3590 }
3591 var343 = ((val* (*)(val*, val*))(var_ofiles->class->vft[COLOR_string__Collection__join]))(var_ofiles, var339) /* join on <var_ofiles:Array[String]>*/;
3592 if (varonce344) {
3593 var345 = varonce344;
3594 } else {
3595 var346 = " 2>/dev/null\n\n";
3596 var347 = 14;
3597 var348 = string__NativeString__to_s_with_length(var346, var347);
3598 var345 = var348;
3599 varonce344 = var345;
3600 }
3601 var349 = NEW_array__Array(&type_array__Arraykernel__Object);
3602 { /* var349 = array_instance Array[Object] */
3603 var350 = 3;
3604 var351 = NEW_array__NativeArray(var350, &type_array__NativeArraykernel__Object);
3605 ((struct instance_array__NativeArray*)var351)->values[0] = (val*) var334;
3606 ((struct instance_array__NativeArray*)var351)->values[1] = (val*) var343;
3607 ((struct instance_array__NativeArray*)var351)->values[2] = (val*) var345;
3608 ((void (*)(val*, val*, long))(var349->class->vft[COLOR_array__Array__with_native]))(var349, var351, var350) /* with_native on <var349:Array[Object]>*/;
3609 }
3610 var352 = ((val* (*)(val*))(var349->class->vft[COLOR_string__Object__to_s]))(var349) /* to_s on <var349:Array[Object]>*/;
3611 ((void (*)(val*, val*))(var_makefile->class->vft[COLOR_stream__OStream__write]))(var_makefile, var352) /* write on <var_makefile:OFStream>*/;
3612 ((void (*)(val*))(var_makefile->class->vft[COLOR_stream__IOS__close]))(var_makefile) /* close on <var_makefile:OFStream>*/;
3613 var353 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__Toolchain__toolcontext]))(self) /* toolcontext on <self:MakefileToolchain>*/;
3614 if (varonce354) {
3615 var355 = varonce354;
3616 } else {
3617 var356 = "Generated makefile: ";
3618 var357 = 20;
3619 var358 = string__NativeString__to_s_with_length(var356, var357);
3620 var355 = var358;
3621 varonce354 = var355;
3622 }
3623 var359 = NEW_array__Array(&type_array__Arraykernel__Object);
3624 { /* var359 = array_instance Array[Object] */
3625 var360 = 2;
3626 var361 = NEW_array__NativeArray(var360, &type_array__NativeArraykernel__Object);
3627 ((struct instance_array__NativeArray*)var361)->values[0] = (val*) var355;
3628 ((struct instance_array__NativeArray*)var361)->values[1] = (val*) var_makepath;
3629 ((void (*)(val*, val*, long))(var359->class->vft[COLOR_array__Array__with_native]))(var359, var361, var360) /* with_native on <var359:Array[Object]>*/;
3630 }
3631 var362 = ((val* (*)(val*))(var359->class->vft[COLOR_string__Object__to_s]))(var359) /* to_s on <var359:Array[Object]>*/;
3632 var363 = 2;
3633 ((void (*)(val*, val*, long))(var353->class->vft[COLOR_toolcontext__ToolContext__info]))(var353, var362, var363) /* info on <var353:ToolContext>*/;
3634 RET_LABEL:;
3635 }
3636 /* method abstract_compiler#MakefileToolchain#write_makefile for (self: Object, AbstractCompiler, String, Array[String]) */
3637 void VIRTUAL_abstract_compiler__MakefileToolchain__write_makefile(val* self, val* p0, val* p1, val* p2) {
3638 abstract_compiler__MakefileToolchain__write_makefile(self, p0, p1, p2);
3639 RET_LABEL:;
3640 }
3641 /* method abstract_compiler#MakefileToolchain#compile_c_code for (self: MakefileToolchain, AbstractCompiler, String) */
3642 void abstract_compiler__MakefileToolchain__compile_c_code(val* self, val* p0, val* p1) {
3643 val* var_compiler /* var compiler: AbstractCompiler */;
3644 val* var_compile_dir /* var compile_dir: String */;
3645 val* var /* : Array[Object] */;
3646 long var1 /* : Int */;
3647 val* var_ /* var : Array[Object] */;
3648 static val* varonce;
3649 val* var2 /* : String */;
3650 char* var3 /* : NativeString */;
3651 long var4 /* : Int */;
3652 val* var5 /* : String */;
3653 val* var6 /* : MModule */;
3654 val* var7 /* : String */;
3655 static val* varonce8;
3656 val* var9 /* : String */;
3657 char* var10 /* : NativeString */;
3658 long var11 /* : Int */;
3659 val* var12 /* : String */;
3660 val* var13 /* : String */;
3661 val* var_makename /* var makename: String */;
3662 val* var14 /* : ToolContext */;
3663 val* var15 /* : OptionString */;
3664 val* var16 /* : nullable Object */;
3665 val* var_makeflags /* var makeflags: nullable String */;
3666 val* var17 /* : null */;
3667 short int var18 /* : Bool */;
3668 static val* varonce19;
3669 val* var20 /* : String */;
3670 char* var21 /* : NativeString */;
3671 long var22 /* : Int */;
3672 val* var23 /* : String */;
3673 val* var24 /* : ToolContext */;
3674 static val* varonce25;
3675 val* var26 /* : String */;
3676 char* var27 /* : NativeString */;
3677 long var28 /* : Int */;
3678 val* var29 /* : String */;
3679 static val* varonce30;
3680 val* var31 /* : String */;
3681 char* var32 /* : NativeString */;
3682 long var33 /* : Int */;
3683 val* var34 /* : String */;
3684 static val* varonce35;
3685 val* var36 /* : String */;
3686 char* var37 /* : NativeString */;
3687 long var38 /* : Int */;
3688 val* var39 /* : String */;
3689 val* var40 /* : Array[Object] */;
3690 long var41 /* : Int */;
3691 val* var42 /* : NativeArray[Object] */;
3692 val* var43 /* : String */;
3693 long var44 /* : Int */;
3694 val* var45 /* : ToolContext */;
3695 long var46 /* : Int */;
3696 long var47 /* : Int */;
3697 short int var48 /* : Bool */;
3698 short int var50 /* : Bool */;
3699 int cltype;
3700 int idtype;
3701 const char* var_class_name;
3702 short int var51 /* : Bool */;
3703 val* var52 /* : Sys */;
3704 static val* varonce53;
3705 val* var54 /* : String */;
3706 char* var55 /* : NativeString */;
3707 long var56 /* : Int */;
3708 val* var57 /* : String */;
3709 static val* varonce58;
3710 val* var59 /* : String */;
3711 char* var60 /* : NativeString */;
3712 long var61 /* : Int */;
3713 val* var62 /* : String */;
3714 static val* varonce63;
3715 val* var64 /* : String */;
3716 char* var65 /* : NativeString */;
3717 long var66 /* : Int */;
3718 val* var67 /* : String */;
3719 static val* varonce68;
3720 val* var69 /* : String */;
3721 char* var70 /* : NativeString */;
3722 long var71 /* : Int */;
3723 val* var72 /* : String */;
3724 val* var73 /* : Array[Object] */;
3725 long var74 /* : Int */;
3726 val* var75 /* : NativeArray[Object] */;
3727 val* var76 /* : String */;
3728 long var77 /* : Int */;
3729 val* var78 /* : nullable Object */;
3730 val* var_res /* var res: nullable Object */;
3731 val* var79 /* : Sys */;
3732 static val* varonce80;
3733 val* var81 /* : String */;
3734 char* var82 /* : NativeString */;
3735 long var83 /* : Int */;
3736 val* var84 /* : String */;
3737 static val* varonce85;
3738 val* var86 /* : String */;
3739 char* var87 /* : NativeString */;
3740 long var88 /* : Int */;
3741 val* var89 /* : String */;
3742 static val* varonce90;
3743 val* var91 /* : String */;
3744 char* var92 /* : NativeString */;
3745 long var93 /* : Int */;
3746 val* var94 /* : String */;
3747 static val* varonce95;
3748 val* var96 /* : String */;
3749 char* var97 /* : NativeString */;
3750 long var98 /* : Int */;
3751 val* var99 /* : String */;
3752 val* var100 /* : Array[Object] */;
3753 long var101 /* : Int */;
3754 val* var102 /* : NativeArray[Object] */;
3755 val* var103 /* : String */;
3756 long var104 /* : Int */;
3757 val* var105 /* : nullable Object */;
3758 long var106 /* : Int */;
3759 short int var107 /* : Bool */;
3760 short int var109 /* : Bool */;
3761 long var110 /* : Int */;
3762 short int var111 /* : Bool */;
3763 val* var112 /* : ToolContext */;
3764 val* var113 /* : null */;
3765 static val* varonce114;
3766 val* var115 /* : String */;
3767 char* var116 /* : NativeString */;
3768 long var117 /* : Int */;
3769 val* var118 /* : String */;
3770 static val* varonce119;
3771 val* var120 /* : String */;
3772 char* var121 /* : NativeString */;
3773 long var122 /* : Int */;
3774 val* var123 /* : String */;
3775 val* var124 /* : Array[Object] */;
3776 long var125 /* : Int */;
3777 val* var126 /* : NativeArray[Object] */;
3778 val* var127 /* : String */;
3779 var_compiler = p0;
3780 var_compile_dir = p1;
3781 var = NEW_array__Array(&type_array__Arraykernel__Object);
3782 var1 = 3;
3783 ((void (*)(val*, long))(var->class->vft[COLOR_array__Array__with_capacity]))(var, var1) /* with_capacity on <var:Array[Object]>*/;
3784 var_ = var;
3785 if (varonce) {
3786 var2 = varonce;
3787 } else {
3788 var3 = "";
3789 var4 = 0;
3790 var5 = string__NativeString__to_s_with_length(var3, var4);
3791 var2 = var5;
3792 varonce = var2;
3793 }
3794 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var2) /* add on <var_:Array[Object]>*/;
3795 var6 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var_compiler) /* mainmodule on <var_compiler:AbstractCompiler>*/;
3796 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_mmodule__MModule__name]))(var6) /* name on <var6:MModule>*/;
3797 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var7) /* add on <var_:Array[Object]>*/;
3798 if (varonce8) {
3799 var9 = varonce8;
3800 } else {
3801 var10 = ".mk";
3802 var11 = 3;
3803 var12 = string__NativeString__to_s_with_length(var10, var11);
3804 var9 = var12;
3805 varonce8 = var9;
3806 }
3807 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var9) /* add on <var_:Array[Object]>*/;
3808 var13 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
3809 var_makename = var13;
3810 var14 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__Toolchain__toolcontext]))(self) /* toolcontext on <self:MakefileToolchain>*/;
3811 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_compiler__ToolContext__opt_make_flags]))(var14) /* opt_make_flags on <var14:ToolContext>*/;
3812 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_opts__Option__value]))(var15) /* value on <var15:OptionString>*/;
3813 var_makeflags = var16;
3814 var17 = NULL;
3815 if (var_makeflags == NULL) {
3816 var18 = 1; /* is null */
3817 } else {
3818 var18 = 0; /* arg is null but recv is not */
3819 }
3820 if (var18){
3821 if (varonce19) {
3822 var20 = varonce19;
3823 } else {
3824 var21 = "";
3825 var22 = 0;
3826 var23 = string__NativeString__to_s_with_length(var21, var22);
3827 var20 = var23;
3828 varonce19 = var20;
3829 }
3830 var_makeflags = var20;
3831 } else {
3832 }
3833 var24 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__Toolchain__toolcontext]))(self) /* toolcontext on <self:MakefileToolchain>*/;
3834 if (varonce25) {
3835 var26 = varonce25;
3836 } else {
3837 var27 = "make -B -C ";
3838 var28 = 11;
3839 var29 = string__NativeString__to_s_with_length(var27, var28);
3840 var26 = var29;
3841 varonce25 = var26;
3842 }
3843 if (varonce30) {
3844 var31 = varonce30;
3845 } else {
3846 var32 = " -f ";
3847 var33 = 4;
3848 var34 = string__NativeString__to_s_with_length(var32, var33);
3849 var31 = var34;
3850 varonce30 = var31;
3851 }
3852 if (varonce35) {
3853 var36 = varonce35;
3854 } else {
3855 var37 = " -j 4 ";
3856 var38 = 6;
3857 var39 = string__NativeString__to_s_with_length(var37, var38);
3858 var36 = var39;
3859 varonce35 = var36;
3860 }
3861 var40 = NEW_array__Array(&type_array__Arraykernel__Object);
3862 { /* var40 = array_instance Array[Object] */
3863 var41 = 6;
3864 var42 = NEW_array__NativeArray(var41, &type_array__NativeArraykernel__Object);
3865 ((struct instance_array__NativeArray*)var42)->values[0] = (val*) var26;
3866 ((struct instance_array__NativeArray*)var42)->values[1] = (val*) var_compile_dir;
3867 ((struct instance_array__NativeArray*)var42)->values[2] = (val*) var31;
3868 ((struct instance_array__NativeArray*)var42)->values[3] = (val*) var_makename;
3869 ((struct instance_array__NativeArray*)var42)->values[4] = (val*) var36;
3870 ((struct instance_array__NativeArray*)var42)->values[5] = (val*) var_makeflags;
3871 ((void (*)(val*, val*, long))(var40->class->vft[COLOR_array__Array__with_native]))(var40, var42, var41) /* with_native on <var40:Array[Object]>*/;
3872 }
3873 var43 = ((val* (*)(val*))(var40->class->vft[COLOR_string__Object__to_s]))(var40) /* to_s on <var40:Array[Object]>*/;
3874 var44 = 2;
3875 ((void (*)(val*, val*, long))(var24->class->vft[COLOR_toolcontext__ToolContext__info]))(var24, var43, var44) /* info on <var24:ToolContext>*/;
3876 var45 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__Toolchain__toolcontext]))(self) /* toolcontext on <self:MakefileToolchain>*/;
3877 var46 = ((long (*)(val*))(var45->class->vft[COLOR_toolcontext__ToolContext__verbose_level]))(var45) /* verbose_level on <var45:ToolContext>*/;
3878 var47 = 3;
3879 { /* Inline kernel#Int#>= (var46,var47) */
3880 /* Covariant cast for argument 0 (i) <var47:Int> isa OTHER */
3881 /* <var47:Int> isa OTHER */
3882 var50 = 1; /* easy <var47:Int> isa OTHER*/
3883 if (!var50) {
3884 var_class_name = type_kernel__Int.name;
3885 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3886 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
3887 show_backtrace(1);
3888 }
3889 var51 = var46 >= var47;
3890 var48 = var51;
3891 goto RET_LABEL49;
3892 RET_LABEL49:(void)0;
3893 }
3894 if (var48){
3895 var52 = ((val* (*)(val*))(self->class->vft[COLOR_kernel__Object__sys]))(self) /* sys on <self:MakefileToolchain>*/;
3896 if (varonce53) {
3897 var54 = varonce53;
3898 } else {
3899 var55 = "make -B -C ";
3900 var56 = 11;
3901 var57 = string__NativeString__to_s_with_length(var55, var56);
3902 var54 = var57;
3903 varonce53 = var54;
3904 }
3905 if (varonce58) {
3906 var59 = varonce58;
3907 } else {
3908 var60 = " -f ";
3909 var61 = 4;
3910 var62 = string__NativeString__to_s_with_length(var60, var61);
3911 var59 = var62;
3912 varonce58 = var59;
3913 }
3914 if (varonce63) {
3915 var64 = varonce63;
3916 } else {
3917 var65 = " -j 4 ";
3918 var66 = 6;
3919 var67 = string__NativeString__to_s_with_length(var65, var66);
3920 var64 = var67;
3921 varonce63 = var64;
3922 }
3923 if (varonce68) {
3924 var69 = varonce68;
3925 } else {
3926 var70 = " 2>&1";
3927 var71 = 5;
3928 var72 = string__NativeString__to_s_with_length(var70, var71);
3929 var69 = var72;
3930 varonce68 = var69;
3931 }
3932 var73 = NEW_array__Array(&type_array__Arraykernel__Object);
3933 { /* var73 = array_instance Array[Object] */
3934 var74 = 7;
3935 var75 = NEW_array__NativeArray(var74, &type_array__NativeArraykernel__Object);
3936 ((struct instance_array__NativeArray*)var75)->values[0] = (val*) var54;
3937 ((struct instance_array__NativeArray*)var75)->values[1] = (val*) var_compile_dir;
3938 ((struct instance_array__NativeArray*)var75)->values[2] = (val*) var59;
3939 ((struct instance_array__NativeArray*)var75)->values[3] = (val*) var_makename;
3940 ((struct instance_array__NativeArray*)var75)->values[4] = (val*) var64;
3941 ((struct instance_array__NativeArray*)var75)->values[5] = (val*) var_makeflags;
3942 ((struct instance_array__NativeArray*)var75)->values[6] = (val*) var69;
3943 ((void (*)(val*, val*, long))(var73->class->vft[COLOR_array__Array__with_native]))(var73, var75, var74) /* with_native on <var73:Array[Object]>*/;
3944 }
3945 var76 = ((val* (*)(val*))(var73->class->vft[COLOR_string__Object__to_s]))(var73) /* to_s on <var73:Array[Object]>*/;
3946 var77 = ((long (*)(val*, val*))(var52->class->vft[COLOR_exec__Sys__system]))(var52, var76) /* system on <var52:Sys>*/;
3947 var78 = BOX_kernel__Int(var77); /* autobox from Int to nullable Object */
3948 var_res = var78;
3949 } else {
3950 var79 = ((val* (*)(val*))(self->class->vft[COLOR_kernel__Object__sys]))(self) /* sys on <self:MakefileToolchain>*/;
3951 if (varonce80) {
3952 var81 = varonce80;
3953 } else {
3954 var82 = "make -B -C ";
3955 var83 = 11;
3956 var84 = string__NativeString__to_s_with_length(var82, var83);
3957 var81 = var84;
3958 varonce80 = var81;
3959 }
3960 if (varonce85) {
3961 var86 = varonce85;
3962 } else {
3963 var87 = " -f ";
3964 var88 = 4;
3965 var89 = string__NativeString__to_s_with_length(var87, var88);
3966 var86 = var89;
3967 varonce85 = var86;
3968 }
3969 if (varonce90) {
3970 var91 = varonce90;
3971 } else {
3972 var92 = " -j 4 ";
3973 var93 = 6;
3974 var94 = string__NativeString__to_s_with_length(var92, var93);
3975 var91 = var94;
3976 varonce90 = var91;
3977 }
3978 if (varonce95) {
3979 var96 = varonce95;
3980 } else {
3981 var97 = " 2>&1 >/dev/null";
3982 var98 = 16;
3983 var99 = string__NativeString__to_s_with_length(var97, var98);
3984 var96 = var99;
3985 varonce95 = var96;
3986 }
3987 var100 = NEW_array__Array(&type_array__Arraykernel__Object);
3988 { /* var100 = array_instance Array[Object] */
3989 var101 = 7;
3990 var102 = NEW_array__NativeArray(var101, &type_array__NativeArraykernel__Object);
3991 ((struct instance_array__NativeArray*)var102)->values[0] = (val*) var81;
3992 ((struct instance_array__NativeArray*)var102)->values[1] = (val*) var_compile_dir;
3993 ((struct instance_array__NativeArray*)var102)->values[2] = (val*) var86;
3994 ((struct instance_array__NativeArray*)var102)->values[3] = (val*) var_makename;
3995 ((struct instance_array__NativeArray*)var102)->values[4] = (val*) var91;
3996 ((struct instance_array__NativeArray*)var102)->values[5] = (val*) var_makeflags;
3997 ((struct instance_array__NativeArray*)var102)->values[6] = (val*) var96;
3998 ((void (*)(val*, val*, long))(var100->class->vft[COLOR_array__Array__with_native]))(var100, var102, var101) /* with_native on <var100:Array[Object]>*/;
3999 }
4000 var103 = ((val* (*)(val*))(var100->class->vft[COLOR_string__Object__to_s]))(var100) /* to_s on <var100:Array[Object]>*/;
4001 var104 = ((long (*)(val*, val*))(var79->class->vft[COLOR_exec__Sys__system]))(var79, var103) /* system on <var79:Sys>*/;
4002 var105 = BOX_kernel__Int(var104); /* autobox from Int to nullable Object */
4003 var_res = var105;
4004 }
4005 var106 = 0;
4006 { /* Inline kernel#Int#!= (var_res,var106) */
4007 var109 = (var_res != NULL) && (var_res->class == &class_kernel__Int);
4008 if (var109) {
4009 var110 = ((struct instance_kernel__Int*)var_res)->value; /* autounbox from nullable Object to Int */;
4010 var109 = (var110 == var106);
4011 }
4012 var111 = !var109;
4013 var107 = var111;
4014 goto RET_LABEL108;
4015 RET_LABEL108:(void)0;
4016 }
4017 if (var107){
4018 var112 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__Toolchain__toolcontext]))(self) /* toolcontext on <self:MakefileToolchain>*/;
4019 var113 = NULL;
4020 if (varonce114) {
4021 var115 = varonce114;
4022 } else {
4023 var116 = "make failed! Error code: ";
4024 var117 = 25;
4025 var118 = string__NativeString__to_s_with_length(var116, var117);
4026 var115 = var118;
4027 varonce114 = var115;
4028 }
4029 if (varonce119) {
4030 var120 = varonce119;
4031 } else {
4032 var121 = ".";
4033 var122 = 1;
4034 var123 = string__NativeString__to_s_with_length(var121, var122);
4035 var120 = var123;
4036 varonce119 = var120;
4037 }
4038 var124 = NEW_array__Array(&type_array__Arraykernel__Object);
4039 { /* var124 = array_instance Array[Object] */
4040 var125 = 3;
4041 var126 = NEW_array__NativeArray(var125, &type_array__NativeArraykernel__Object);
4042 ((struct instance_array__NativeArray*)var126)->values[0] = (val*) var115;
4043 ((struct instance_array__NativeArray*)var126)->values[1] = (val*) var_res;
4044 ((struct instance_array__NativeArray*)var126)->values[2] = (val*) var120;
4045 ((void (*)(val*, val*, long))(var124->class->vft[COLOR_array__Array__with_native]))(var124, var126, var125) /* with_native on <var124:Array[Object]>*/;
4046 }
4047 var127 = ((val* (*)(val*))(var124->class->vft[COLOR_string__Object__to_s]))(var124) /* to_s on <var124:Array[Object]>*/;
4048 ((void (*)(val*, val*, val*))(var112->class->vft[COLOR_toolcontext__ToolContext__error]))(var112, var113, var127) /* error on <var112:ToolContext>*/;
4049 } else {
4050 }
4051 RET_LABEL:;
4052 }
4053 /* method abstract_compiler#MakefileToolchain#compile_c_code for (self: Object, AbstractCompiler, String) */
4054 void VIRTUAL_abstract_compiler__MakefileToolchain__compile_c_code(val* self, val* p0, val* p1) {
4055 abstract_compiler__MakefileToolchain__compile_c_code(self, p0, p1);
4056 RET_LABEL:;
4057 }
4058 /* method abstract_compiler#AbstractCompiler#names for (self: AbstractCompiler): HashMap[String, String] */
4059 val* abstract_compiler__AbstractCompiler__names(val* self) {
4060 val* var /* : HashMap[String, String] */;
4061 val* var1 /* : HashMap[String, String] */;
4062 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dnames].val; /* @names on <self:AbstractCompiler> */
4063 if (var1 == NULL) {
4064 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @names");
4065 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 377);
4066 show_backtrace(1);
4067 }
4068 var = var1;
4069 RET_LABEL:;
4070 return var;
4071 }
4072 /* method abstract_compiler#AbstractCompiler#names for (self: Object): HashMap[String, String] */
4073 val* VIRTUAL_abstract_compiler__AbstractCompiler__names(val* self) {
4074 val* var /* : HashMap[String, String] */;
4075 val* var1 /* : HashMap[String, String] */;
4076 var1 = abstract_compiler__AbstractCompiler__names(self);
4077 var = var1;
4078 RET_LABEL:;
4079 return var;
4080 }
4081 /* method abstract_compiler#AbstractCompiler#names= for (self: AbstractCompiler, HashMap[String, String]) */
4082 void abstract_compiler__AbstractCompiler__names_61d(val* self, val* p0) {
4083 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dnames].val = p0; /* @names on <self:AbstractCompiler> */
4084 RET_LABEL:;
4085 }
4086 /* method abstract_compiler#AbstractCompiler#names= for (self: Object, HashMap[String, String]) */
4087 void VIRTUAL_abstract_compiler__AbstractCompiler__names_61d(val* self, val* p0) {
4088 abstract_compiler__AbstractCompiler__names_61d(self, p0);
4089 RET_LABEL:;
4090 }
4091 /* method abstract_compiler#AbstractCompiler#mainmodule for (self: AbstractCompiler): MModule */
4092 val* abstract_compiler__AbstractCompiler__mainmodule(val* self) {
4093 val* var /* : MModule */;
4094 val* var1 /* : MModule */;
4095 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dmainmodule].val; /* @mainmodule on <self:AbstractCompiler> */
4096 if (var1 == NULL) {
4097 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mainmodule");
4098 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 380);
4099 show_backtrace(1);
4100 }
4101 var = var1;
4102 RET_LABEL:;
4103 return var;
4104 }
4105 /* method abstract_compiler#AbstractCompiler#mainmodule for (self: Object): MModule */
4106 val* VIRTUAL_abstract_compiler__AbstractCompiler__mainmodule(val* self) {
4107 val* var /* : MModule */;
4108 val* var1 /* : MModule */;
4109 var1 = abstract_compiler__AbstractCompiler__mainmodule(self);
4110 var = var1;
4111 RET_LABEL:;
4112 return var;
4113 }
4114 /* method abstract_compiler#AbstractCompiler#mainmodule= for (self: AbstractCompiler, MModule) */
4115 void abstract_compiler__AbstractCompiler__mainmodule_61d(val* self, val* p0) {
4116 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dmainmodule].val = p0; /* @mainmodule on <self:AbstractCompiler> */
4117 RET_LABEL:;
4118 }
4119 /* method abstract_compiler#AbstractCompiler#mainmodule= for (self: Object, MModule) */
4120 void VIRTUAL_abstract_compiler__AbstractCompiler__mainmodule_61d(val* self, val* p0) {
4121 abstract_compiler__AbstractCompiler__mainmodule_61d(self, p0);
4122 RET_LABEL:;
4123 }
4124 /* method abstract_compiler#AbstractCompiler#realmainmodule for (self: AbstractCompiler): MModule */
4125 val* abstract_compiler__AbstractCompiler__realmainmodule(val* self) {
4126 val* var /* : MModule */;
4127 val* var1 /* : MModule */;
4128 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64drealmainmodule].val; /* @realmainmodule on <self:AbstractCompiler> */
4129 if (var1 == NULL) {
4130 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @realmainmodule");
4131 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 384);
4132 show_backtrace(1);
4133 }
4134 var = var1;
4135 RET_LABEL:;
4136 return var;
4137 }
4138 /* method abstract_compiler#AbstractCompiler#realmainmodule for (self: Object): MModule */
4139 val* VIRTUAL_abstract_compiler__AbstractCompiler__realmainmodule(val* self) {
4140 val* var /* : MModule */;
4141 val* var1 /* : MModule */;
4142 var1 = abstract_compiler__AbstractCompiler__realmainmodule(self);
4143 var = var1;
4144 RET_LABEL:;
4145 return var;
4146 }
4147 /* method abstract_compiler#AbstractCompiler#realmainmodule= for (self: AbstractCompiler, MModule) */
4148 void abstract_compiler__AbstractCompiler__realmainmodule_61d(val* self, val* p0) {
4149 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64drealmainmodule].val = p0; /* @realmainmodule on <self:AbstractCompiler> */
4150 RET_LABEL:;
4151 }
4152 /* method abstract_compiler#AbstractCompiler#realmainmodule= for (self: Object, MModule) */
4153 void VIRTUAL_abstract_compiler__AbstractCompiler__realmainmodule_61d(val* self, val* p0) {
4154 abstract_compiler__AbstractCompiler__realmainmodule_61d(self, p0);
4155 RET_LABEL:;
4156 }
4157 /* method abstract_compiler#AbstractCompiler#modelbuilder for (self: AbstractCompiler): ModelBuilder */
4158 val* abstract_compiler__AbstractCompiler__modelbuilder(val* self) {
4159 val* var /* : ModelBuilder */;
4160 val* var1 /* : ModelBuilder */;
4161 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dmodelbuilder].val; /* @modelbuilder on <self:AbstractCompiler> */
4162 if (var1 == NULL) {
4163 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @modelbuilder");
4164 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 387);
4165 show_backtrace(1);
4166 }
4167 var = var1;
4168 RET_LABEL:;
4169 return var;
4170 }
4171 /* method abstract_compiler#AbstractCompiler#modelbuilder for (self: Object): ModelBuilder */
4172 val* VIRTUAL_abstract_compiler__AbstractCompiler__modelbuilder(val* self) {
4173 val* var /* : ModelBuilder */;
4174 val* var1 /* : ModelBuilder */;
4175 var1 = abstract_compiler__AbstractCompiler__modelbuilder(self);
4176 var = var1;
4177 RET_LABEL:;
4178 return var;
4179 }
4180 /* method abstract_compiler#AbstractCompiler#modelbuilder= for (self: AbstractCompiler, ModelBuilder) */
4181 void abstract_compiler__AbstractCompiler__modelbuilder_61d(val* self, val* p0) {
4182 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dmodelbuilder].val = p0; /* @modelbuilder on <self:AbstractCompiler> */
4183 RET_LABEL:;
4184 }
4185 /* method abstract_compiler#AbstractCompiler#modelbuilder= for (self: Object, ModelBuilder) */
4186 void VIRTUAL_abstract_compiler__AbstractCompiler__modelbuilder_61d(val* self, val* p0) {
4187 abstract_compiler__AbstractCompiler__modelbuilder_61d(self, p0);
4188 RET_LABEL:;
4189 }
4190 /* method abstract_compiler#AbstractCompiler#hardening for (self: AbstractCompiler): Bool */
4191 short int abstract_compiler__AbstractCompiler__hardening(val* self) {
4192 short int var /* : Bool */;
4193 val* var1 /* : ModelBuilder */;
4194 val* var2 /* : ToolContext */;
4195 val* var3 /* : OptionBool */;
4196 val* var4 /* : nullable Object */;
4197 short int var5 /* : Bool */;
4198 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
4199 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var1) /* toolcontext on <var1:ModelBuilder>*/;
4200 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__ToolContext__opt_hardening]))(var2) /* opt_hardening on <var2:ToolContext>*/;
4201 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_opts__Option__value]))(var3) /* value on <var3:OptionBool>*/;
4202 var5 = ((struct instance_kernel__Bool*)var4)->value; /* autounbox from nullable Object to Bool */;
4203 var = var5;
4204 goto RET_LABEL;
4205 RET_LABEL:;
4206 return var;
4207 }
4208 /* method abstract_compiler#AbstractCompiler#hardening for (self: Object): Bool */
4209 short int VIRTUAL_abstract_compiler__AbstractCompiler__hardening(val* self) {
4210 short int var /* : Bool */;
4211 short int var1 /* : Bool */;
4212 var1 = abstract_compiler__AbstractCompiler__hardening(self);
4213 var = var1;
4214 RET_LABEL:;
4215 return var;
4216 }
4217 /* method abstract_compiler#AbstractCompiler#init for (self: AbstractCompiler, MModule, ModelBuilder) */
4218 void abstract_compiler__AbstractCompiler__init(val* self, val* p0, val* p1) {
4219 val* var_mainmodule /* var mainmodule: MModule */;
4220 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
4221 var_mainmodule = p0;
4222 var_modelbuilder = p1;
4223 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule_61d]))(self, var_mainmodule) /* mainmodule= on <self:AbstractCompiler>*/;
4224 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__realmainmodule_61d]))(self, var_mainmodule) /* realmainmodule= on <self:AbstractCompiler>*/;
4225 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder_61d]))(self, var_modelbuilder) /* modelbuilder= on <self:AbstractCompiler>*/;
4226 RET_LABEL:;
4227 }
4228 /* method abstract_compiler#AbstractCompiler#init for (self: Object, MModule, ModelBuilder) */
4229 void VIRTUAL_abstract_compiler__AbstractCompiler__init(val* self, val* p0, val* p1) {
4230 abstract_compiler__AbstractCompiler__init(self, p0, p1);
4231 RET_LABEL:;
4232 }
4233 /* method abstract_compiler#AbstractCompiler#new_file for (self: AbstractCompiler, String): CodeFile */
4234 val* abstract_compiler__AbstractCompiler__new_file(val* self, val* p0) {
4235 val* var /* : CodeFile */;
4236 val* var_name /* var name: String */;
4237 val* var1 /* : CodeFile */;
4238 val* var_f /* var f: CodeFile */;
4239 val* var2 /* : List[CodeFile] */;
4240 var_name = p0;
4241 var1 = NEW_abstract_compiler__CodeFile(&type_abstract_compiler__CodeFile);
4242 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_compiler__CodeFile__init]))(var1, var_name) /* init on <var1:CodeFile>*/;
4243 var_f = var1;
4244 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__files]))(self) /* files on <self:AbstractCompiler>*/;
4245 ((void (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var2, var_f) /* add on <var2:List[CodeFile]>*/;
4246 var = var_f;
4247 goto RET_LABEL;
4248 RET_LABEL:;
4249 return var;
4250 }
4251 /* method abstract_compiler#AbstractCompiler#new_file for (self: Object, String): CodeFile */
4252 val* VIRTUAL_abstract_compiler__AbstractCompiler__new_file(val* self, val* p0) {
4253 val* var /* : CodeFile */;
4254 val* var1 /* : CodeFile */;
4255 var1 = abstract_compiler__AbstractCompiler__new_file(self, p0);
4256 var = var1;
4257 RET_LABEL:;
4258 return var;
4259 }
4260 /* method abstract_compiler#AbstractCompiler#files for (self: AbstractCompiler): List[CodeFile] */
4261 val* abstract_compiler__AbstractCompiler__files(val* self) {
4262 val* var /* : List[CodeFile] */;
4263 val* var1 /* : List[CodeFile] */;
4264 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dfiles].val; /* @files on <self:AbstractCompiler> */
4265 if (var1 == NULL) {
4266 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @files");
4267 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 409);
4268 show_backtrace(1);
4269 }
4270 var = var1;
4271 RET_LABEL:;
4272 return var;
4273 }
4274 /* method abstract_compiler#AbstractCompiler#files for (self: Object): List[CodeFile] */
4275 val* VIRTUAL_abstract_compiler__AbstractCompiler__files(val* self) {
4276 val* var /* : List[CodeFile] */;
4277 val* var1 /* : List[CodeFile] */;
4278 var1 = abstract_compiler__AbstractCompiler__files(self);
4279 var = var1;
4280 RET_LABEL:;
4281 return var;
4282 }
4283 /* method abstract_compiler#AbstractCompiler#files= for (self: AbstractCompiler, List[CodeFile]) */
4284 void abstract_compiler__AbstractCompiler__files_61d(val* self, val* p0) {
4285 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dfiles].val = p0; /* @files on <self:AbstractCompiler> */
4286 RET_LABEL:;
4287 }
4288 /* method abstract_compiler#AbstractCompiler#files= for (self: Object, List[CodeFile]) */
4289 void VIRTUAL_abstract_compiler__AbstractCompiler__files_61d(val* self, val* p0) {
4290 abstract_compiler__AbstractCompiler__files_61d(self, p0);
4291 RET_LABEL:;
4292 }
4293 /* method abstract_compiler#AbstractCompiler#new_visitor for (self: AbstractCompiler): AbstractCompilerVisitor */
4294 val* abstract_compiler__AbstractCompiler__new_visitor(val* self) {
4295 val* var /* : AbstractCompilerVisitor */;
4296 const char* var_class_name;
4297 var_class_name = self == NULL ? "null" : self->type->name;
4298 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "new_visitor", var_class_name);
4299 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 413);
4300 show_backtrace(1);
4301 RET_LABEL:;
4302 return var;
4303 }
4304 /* method abstract_compiler#AbstractCompiler#new_visitor for (self: Object): AbstractCompilerVisitor */
4305 val* VIRTUAL_abstract_compiler__AbstractCompiler__new_visitor(val* self) {
4306 val* var /* : AbstractCompilerVisitor */;
4307 val* var1 /* : AbstractCompilerVisitor */;
4308 var1 = abstract_compiler__AbstractCompiler__new_visitor(self);
4309 var = var1;
4310 RET_LABEL:;
4311 return var;
4312 }
4313 /* method abstract_compiler#AbstractCompiler#header for (self: AbstractCompiler): CodeWriter */
4314 val* abstract_compiler__AbstractCompiler__header(val* self) {
4315 val* var /* : CodeWriter */;
4316 val* var1 /* : CodeWriter */;
4317 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dheader].val; /* @header on <self:AbstractCompiler> */
4318 if (var1 == NULL) {
4319 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @header");
4320 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 416);
4321 show_backtrace(1);
4322 }
4323 var = var1;
4324 RET_LABEL:;
4325 return var;
4326 }
4327 /* method abstract_compiler#AbstractCompiler#header for (self: Object): CodeWriter */
4328 val* VIRTUAL_abstract_compiler__AbstractCompiler__header(val* self) {
4329 val* var /* : CodeWriter */;
4330 val* var1 /* : CodeWriter */;
4331 var1 = abstract_compiler__AbstractCompiler__header(self);
4332 var = var1;
4333 RET_LABEL:;
4334 return var;
4335 }
4336 /* method abstract_compiler#AbstractCompiler#header= for (self: AbstractCompiler, CodeWriter) */
4337 void abstract_compiler__AbstractCompiler__header_61d(val* self, val* p0) {
4338 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dheader].val = p0; /* @header on <self:AbstractCompiler> */
4339 RET_LABEL:;
4340 }
4341 /* method abstract_compiler#AbstractCompiler#header= for (self: Object, CodeWriter) */
4342 void VIRTUAL_abstract_compiler__AbstractCompiler__header_61d(val* self, val* p0) {
4343 abstract_compiler__AbstractCompiler__header_61d(self, p0);
4344 RET_LABEL:;
4345 }
4346 /* method abstract_compiler#AbstractCompiler#provide_declaration for (self: AbstractCompiler, String, String) */
4347 void abstract_compiler__AbstractCompiler__provide_declaration(val* self, val* p0, val* p1) {
4348 val* var_key /* var key: String */;
4349 val* var_s /* var s: String */;
4350 val* var /* : HashMap[String, String] */;
4351 short int var1 /* : Bool */;
4352 val* var2 /* : HashMap[String, String] */;
4353 val* var3 /* : nullable Object */;
4354 short int var4 /* : Bool */;
4355 val* var5 /* : HashMap[String, String] */;
4356 var_key = p0;
4357 var_s = p1;
4358 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provided_declarations]))(self) /* provided_declarations on <self:AbstractCompiler>*/;
4359 var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var, var_key) /* has_key on <var:HashMap[String, String]>*/;
4360 if (var1){
4361 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provided_declarations]))(self) /* provided_declarations on <self:AbstractCompiler>*/;
4362 var3 = ((val* (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var2, var_key) /* [] on <var2:HashMap[String, String]>*/;
4363 var4 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_kernel__Object___61d_61d]))(var3, var_s) /* == on <var3:nullable Object(String)>*/;
4364 if (!var4) {
4365 fprintf(stderr, "Runtime error: %s", "Assert failed");
4366 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 423);
4367 show_backtrace(1);
4368 }
4369 } else {
4370 }
4371 var5 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provided_declarations]))(self) /* provided_declarations on <self:AbstractCompiler>*/;
4372 ((void (*)(val*, val*, val*))(var5->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var5, var_key, var_s) /* []= on <var5:HashMap[String, String]>*/;
4373 RET_LABEL:;
4374 }
4375 /* method abstract_compiler#AbstractCompiler#provide_declaration for (self: Object, String, String) */
4376 void VIRTUAL_abstract_compiler__AbstractCompiler__provide_declaration(val* self, val* p0, val* p1) {
4377 abstract_compiler__AbstractCompiler__provide_declaration(self, p0, p1);
4378 RET_LABEL:;
4379 }
4380 /* method abstract_compiler#AbstractCompiler#provided_declarations for (self: AbstractCompiler): HashMap[String, String] */
4381 val* abstract_compiler__AbstractCompiler__provided_declarations(val* self) {
4382 val* var /* : HashMap[String, String] */;
4383 val* var1 /* : HashMap[String, String] */;
4384 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dprovided_declarations].val; /* @provided_declarations on <self:AbstractCompiler> */
4385 if (var1 == NULL) {
4386 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @provided_declarations");
4387 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 428);
4388 show_backtrace(1);
4389 }
4390 var = var1;
4391 RET_LABEL:;
4392 return var;
4393 }
4394 /* method abstract_compiler#AbstractCompiler#provided_declarations for (self: Object): HashMap[String, String] */
4395 val* VIRTUAL_abstract_compiler__AbstractCompiler__provided_declarations(val* self) {
4396 val* var /* : HashMap[String, String] */;
4397 val* var1 /* : HashMap[String, String] */;
4398 var1 = abstract_compiler__AbstractCompiler__provided_declarations(self);
4399 var = var1;
4400 RET_LABEL:;
4401 return var;
4402 }
4403 /* method abstract_compiler#AbstractCompiler#provided_declarations= for (self: AbstractCompiler, HashMap[String, String]) */
4404 void abstract_compiler__AbstractCompiler__provided_declarations_61d(val* self, val* p0) {
4405 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dprovided_declarations].val = p0; /* @provided_declarations on <self:AbstractCompiler> */
4406 RET_LABEL:;
4407 }
4408 /* method abstract_compiler#AbstractCompiler#provided_declarations= for (self: Object, HashMap[String, String]) */
4409 void VIRTUAL_abstract_compiler__AbstractCompiler__provided_declarations_61d(val* self, val* p0) {
4410 abstract_compiler__AbstractCompiler__provided_declarations_61d(self, p0);
4411 RET_LABEL:;
4412 }
4413 /* method abstract_compiler#AbstractCompiler#requirers_of_declarations for (self: AbstractCompiler): HashMap[String, ANode] */
4414 val* abstract_compiler__AbstractCompiler__requirers_of_declarations(val* self) {
4415 val* var /* : HashMap[String, ANode] */;
4416 val* var1 /* : HashMap[String, ANode] */;
4417 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64drequirers_of_declarations].val; /* @requirers_of_declarations on <self:AbstractCompiler> */
4418 if (var1 == NULL) {
4419 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @requirers_of_declarations");
4420 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 430);
4421 show_backtrace(1);
4422 }
4423 var = var1;
4424 RET_LABEL:;
4425 return var;
4426 }
4427 /* method abstract_compiler#AbstractCompiler#requirers_of_declarations for (self: Object): HashMap[String, ANode] */
4428 val* VIRTUAL_abstract_compiler__AbstractCompiler__requirers_of_declarations(val* self) {
4429 val* var /* : HashMap[String, ANode] */;
4430 val* var1 /* : HashMap[String, ANode] */;
4431 var1 = abstract_compiler__AbstractCompiler__requirers_of_declarations(self);
4432 var = var1;
4433 RET_LABEL:;
4434 return var;
4435 }
4436 /* method abstract_compiler#AbstractCompiler#requirers_of_declarations= for (self: AbstractCompiler, HashMap[String, ANode]) */
4437 void abstract_compiler__AbstractCompiler__requirers_of_declarations_61d(val* self, val* p0) {
4438 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64drequirers_of_declarations].val = p0; /* @requirers_of_declarations on <self:AbstractCompiler> */
4439 RET_LABEL:;
4440 }
4441 /* method abstract_compiler#AbstractCompiler#requirers_of_declarations= for (self: Object, HashMap[String, ANode]) */
4442 void VIRTUAL_abstract_compiler__AbstractCompiler__requirers_of_declarations_61d(val* self, val* p0) {
4443 abstract_compiler__AbstractCompiler__requirers_of_declarations_61d(self, p0);
4444 RET_LABEL:;
4445 }
4446 /* method abstract_compiler#AbstractCompiler#build_c_to_nit_bindings for (self: AbstractCompiler) */
4447 void abstract_compiler__AbstractCompiler__build_c_to_nit_bindings(val* self) {
4448 val* var /* : ModelBuilder */;
4449 val* var1 /* : String */;
4450 val* var_compile_dir /* var compile_dir: String */;
4451 val* var2 /* : OFStream */;
4452 val* var3 /* : Array[Object] */;
4453 long var4 /* : Int */;
4454 val* var_ /* var : Array[Object] */;
4455 static val* varonce;
4456 val* var5 /* : String */;
4457 char* var6 /* : NativeString */;
4458 long var7 /* : Int */;
4459 val* var8 /* : String */;
4460 static val* varonce9;
4461 val* var10 /* : String */;
4462 char* var11 /* : NativeString */;
4463 long var12 /* : Int */;
4464 val* var13 /* : String */;
4465 val* var14 /* : String */;
4466 val* var_stream /* var stream: OFStream */;
4467 static val* varonce15;
4468 val* var16 /* : String */;
4469 char* var17 /* : NativeString */;
4470 long var18 /* : Int */;
4471 val* var19 /* : String */;
4472 static val* varonce20;
4473 val* var21 /* : String */;
4474 char* var22 /* : NativeString */;
4475 long var23 /* : Int */;
4476 val* var24 /* : String */;
4477 static val* varonce25;
4478 val* var26 /* : String */;
4479 char* var27 /* : NativeString */;
4480 long var28 /* : Int */;
4481 val* var29 /* : String */;
4482 static val* varonce30;
4483 val* var31 /* : String */;
4484 char* var32 /* : NativeString */;
4485 long var33 /* : Int */;
4486 val* var34 /* : String */;
4487 static val* varonce35;
4488 val* var36 /* : String */;
4489 char* var37 /* : NativeString */;
4490 long var38 /* : Int */;
4491 val* var39 /* : String */;
4492 val* var40 /* : HashMap[String, String] */;
4493 val* var41 /* : Collection[Object] */;
4494 val* var42 /* : Iterator[nullable Object] */;
4495 short int var43 /* : Bool */;
4496 val* var44 /* : nullable Object */;
4497 val* var_i /* var i: String */;
4498 static val* varonce45;
4499 val* var46 /* : String */;
4500 char* var47 /* : NativeString */;
4501 long var48 /* : Int */;
4502 val* var49 /* : String */;
4503 val* var50 /* : HashMap[String, String] */;
4504 val* var51 /* : nullable Object */;
4505 static val* varonce52;
4506 val* var53 /* : String */;
4507 char* var54 /* : NativeString */;
4508 long var55 /* : Int */;
4509 val* var56 /* : String */;
4510 static val* varonce57;
4511 val* var58 /* : String */;
4512 char* var59 /* : NativeString */;
4513 long var60 /* : Int */;
4514 val* var61 /* : String */;
4515 static val* varonce62;
4516 val* var63 /* : String */;
4517 char* var64 /* : NativeString */;
4518 long var65 /* : Int */;
4519 val* var66 /* : String */;
4520 val* var67 /* : OFStream */;
4521 val* var68 /* : Array[Object] */;
4522 long var69 /* : Int */;
4523 val* var_70 /* var : Array[Object] */;
4524 static val* varonce71;
4525 val* var72 /* : String */;
4526 char* var73 /* : NativeString */;
4527 long var74 /* : Int */;
4528 val* var75 /* : String */;
4529 static val* varonce76;
4530 val* var77 /* : String */;
4531 char* var78 /* : NativeString */;
4532 long var79 /* : Int */;
4533 val* var80 /* : String */;
4534 val* var81 /* : String */;
4535 static val* varonce82;
4536 val* var83 /* : String */;
4537 char* var84 /* : NativeString */;
4538 long var85 /* : Int */;
4539 val* var86 /* : String */;
4540 static val* varonce87;
4541 val* var88 /* : String */;
4542 char* var89 /* : NativeString */;
4543 long var90 /* : Int */;
4544 val* var91 /* : String */;
4545 val* var92 /* : Process */;
4546 static val* varonce93;
4547 val* var94 /* : String */;
4548 char* var95 /* : NativeString */;
4549 long var96 /* : Int */;
4550 val* var97 /* : String */;
4551 val* var98 /* : Array[Object] */;
4552 long var99 /* : Int */;
4553 val* var_100 /* var : Array[Object] */;
4554 static val* varonce101;
4555 val* var102 /* : String */;
4556 char* var103 /* : NativeString */;
4557 long var104 /* : Int */;
4558 val* var105 /* : String */;
4559 static val* varonce106;
4560 val* var107 /* : String */;
4561 char* var108 /* : NativeString */;
4562 long var109 /* : Int */;
4563 val* var110 /* : String */;
4564 val* var111 /* : String */;
4565 static val* varonce112;
4566 val* var113 /* : String */;
4567 char* var114 /* : NativeString */;
4568 long var115 /* : Int */;
4569 val* var116 /* : String */;
4570 static val* varonce117;
4571 val* var118 /* : String */;
4572 char* var119 /* : NativeString */;
4573 long var120 /* : Int */;
4574 val* var121 /* : String */;
4575 val* var122 /* : Array[Object] */;
4576 long var123 /* : Int */;
4577 val* var_124 /* var : Array[Object] */;
4578 static val* varonce125;
4579 val* var126 /* : String */;
4580 char* var127 /* : NativeString */;
4581 long var128 /* : Int */;
4582 val* var129 /* : String */;
4583 static val* varonce130;
4584 val* var131 /* : String */;
4585 char* var132 /* : NativeString */;
4586 long var133 /* : Int */;
4587 val* var134 /* : String */;
4588 val* var135 /* : String */;
4589 static val* varonce136;
4590 val* var137 /* : String */;
4591 char* var138 /* : NativeString */;
4592 long var139 /* : Int */;
4593 val* var140 /* : String */;
4594 val* var141 /* : Array[String] */;
4595 long var142 /* : Int */;
4596 val* var143 /* : NativeArray[String] */;
4597 val* var_x /* var x: Process */;
4598 val* var144 /* : Array[ExternFile] */;
4599 val* var145 /* : ExternCFile */;
4600 val* var146 /* : Array[Object] */;
4601 long var147 /* : Int */;
4602 val* var_148 /* var : Array[Object] */;
4603 static val* varonce149;
4604 val* var150 /* : String */;
4605 char* var151 /* : NativeString */;
4606 long var152 /* : Int */;
4607 val* var153 /* : String */;
4608 static val* varonce154;
4609 val* var155 /* : String */;
4610 char* var156 /* : NativeString */;
4611 long var157 /* : Int */;
4612 val* var158 /* : String */;
4613 val* var159 /* : String */;
4614 static val* varonce160;
4615 val* var161 /* : String */;
4616 char* var162 /* : NativeString */;
4617 long var163 /* : Int */;
4618 val* var164 /* : String */;
4619 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
4620 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_compiler__ModelBuilder__compile_dir]))(var) /* compile_dir on <var:ModelBuilder>*/;
4621 var_compile_dir = var1;
4622 var2 = NEW_file__OFStream(&type_file__OFStream);
4623 var3 = NEW_array__Array(&type_array__Arraykernel__Object);
4624 var4 = 3;
4625 ((void (*)(val*, long))(var3->class->vft[COLOR_array__Array__with_capacity]))(var3, var4) /* with_capacity on <var3:Array[Object]>*/;
4626 var_ = var3;
4627 if (varonce) {
4628 var5 = varonce;
4629 } else {
4630 var6 = "";
4631 var7 = 0;
4632 var8 = string__NativeString__to_s_with_length(var6, var7);
4633 var5 = var8;
4634 varonce = var5;
4635 }
4636 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var5) /* add on <var_:Array[Object]>*/;
4637 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_compile_dir) /* add on <var_:Array[Object]>*/;
4638 if (varonce9) {
4639 var10 = varonce9;
4640 } else {
4641 var11 = "/C_fun_names";
4642 var12 = 12;
4643 var13 = string__NativeString__to_s_with_length(var11, var12);
4644 var10 = var13;
4645 varonce9 = var10;
4646 }
4647 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var10) /* add on <var_:Array[Object]>*/;
4648 var14 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
4649 ((void (*)(val*, val*))(var2->class->vft[COLOR_file__OFStream__open]))(var2, var14) /* open on <var2:OFStream>*/;
4650 var_stream = var2;
4651 if (varonce15) {
4652 var16 = varonce15;
4653 } else {
4654 var17 = "%{\n#include \"c_functions_hash.h\"\n%}\n";
4655 var18 = 36;
4656 var19 = string__NativeString__to_s_with_length(var17, var18);
4657 var16 = var19;
4658 varonce15 = var16;
4659 }
4660 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var16) /* write on <var_stream:OFStream>*/;
4661 if (varonce20) {
4662 var21 = varonce20;
4663 } else {
4664 var22 = "%define lookup-function-name get_nit_name\n";
4665 var23 = 42;
4666 var24 = string__NativeString__to_s_with_length(var22, var23);
4667 var21 = var24;
4668 varonce20 = var21;
4669 }
4670 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var21) /* write on <var_stream:OFStream>*/;
4671 if (varonce25) {
4672 var26 = varonce25;
4673 } else {
4674 var27 = "struct C_Nit_Names;\n";
4675 var28 = 20;
4676 var29 = string__NativeString__to_s_with_length(var27, var28);
4677 var26 = var29;
4678 varonce25 = var26;
4679 }
4680 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var26) /* write on <var_stream:OFStream>*/;
4681 if (varonce30) {
4682 var31 = varonce30;
4683 } else {
4684 var32 = "%%\n";
4685 var33 = 3;
4686 var34 = string__NativeString__to_s_with_length(var32, var33);
4687 var31 = var34;
4688 varonce30 = var31;
4689 }
4690 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var31) /* write on <var_stream:OFStream>*/;
4691 if (varonce35) {
4692 var36 = varonce35;
4693 } else {
4694 var37 = "####\n";
4695 var38 = 5;
4696 var39 = string__NativeString__to_s_with_length(var37, var38);
4697 var36 = var39;
4698 varonce35 = var36;
4699 }
4700 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var36) /* write on <var_stream:OFStream>*/;
4701 var40 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__names]))(self) /* names on <self:AbstractCompiler>*/;
4702 var41 = ((val* (*)(val*))(var40->class->vft[COLOR_abstract_collection__MapRead__keys]))(var40) /* keys on <var40:HashMap[String, String]>*/;
4703 var42 = ((val* (*)(val*))(var41->class->vft[COLOR_abstract_collection__Collection__iterator]))(var41) /* iterator on <var41:Collection[Object](HashMapKeys[String, String])>*/;
4704 for(;;) {
4705 var43 = ((short int (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var42) /* is_ok on <var42:Iterator[nullable Object]>*/;
4706 if(!var43) break;
4707 var44 = ((val* (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__item]))(var42) /* item on <var42:Iterator[nullable Object]>*/;
4708 var_i = var44;
4709 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var_i) /* write on <var_stream:OFStream>*/;
4710 if (varonce45) {
4711 var46 = varonce45;
4712 } else {
4713 var47 = ",\11\"";
4714 var48 = 3;
4715 var49 = string__NativeString__to_s_with_length(var47, var48);
4716 var46 = var49;
4717 varonce45 = var46;
4718 }
4719 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var46) /* write on <var_stream:OFStream>*/;
4720 var50 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__names]))(self) /* names on <self:AbstractCompiler>*/;
4721 var51 = ((val* (*)(val*, val*))(var50->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var50, var_i) /* [] on <var50:HashMap[String, String]>*/;
4722 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var51) /* write on <var_stream:OFStream>*/;
4723 if (varonce52) {
4724 var53 = varonce52;
4725 } else {
4726 var54 = "\"\n";
4727 var55 = 2;
4728 var56 = string__NativeString__to_s_with_length(var54, var55);
4729 var53 = var56;
4730 varonce52 = var53;
4731 }
4732 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var53) /* write on <var_stream:OFStream>*/;
4733 CONTINUE_label: (void)0;
4734 ((void (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__next]))(var42) /* next on <var42:Iterator[nullable Object]>*/;
4735 }
4736 BREAK_label: (void)0;
4737 if (varonce57) {
4738 var58 = varonce57;
4739 } else {
4740 var59 = "####\n";
4741 var60 = 5;
4742 var61 = string__NativeString__to_s_with_length(var59, var60);
4743 var58 = var61;
4744 varonce57 = var58;
4745 }
4746 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var58) /* write on <var_stream:OFStream>*/;
4747 if (varonce62) {
4748 var63 = varonce62;
4749 } else {
4750 var64 = "%%\n";
4751 var65 = 3;
4752 var66 = string__NativeString__to_s_with_length(var64, var65);
4753 var63 = var66;
4754 varonce62 = var63;
4755 }
4756 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var63) /* write on <var_stream:OFStream>*/;
4757 ((void (*)(val*))(var_stream->class->vft[COLOR_stream__IOS__close]))(var_stream) /* close on <var_stream:OFStream>*/;
4758 var67 = NEW_file__OFStream(&type_file__OFStream);
4759 var68 = NEW_array__Array(&type_array__Arraykernel__Object);
4760 var69 = 3;
4761 ((void (*)(val*, long))(var68->class->vft[COLOR_array__Array__with_capacity]))(var68, var69) /* with_capacity on <var68:Array[Object]>*/;
4762 var_70 = var68;
4763 if (varonce71) {
4764 var72 = varonce71;
4765 } else {
4766 var73 = "";
4767 var74 = 0;
4768 var75 = string__NativeString__to_s_with_length(var73, var74);
4769 var72 = var75;
4770 varonce71 = var72;
4771 }
4772 ((void (*)(val*, val*))(var_70->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_70, var72) /* add on <var_70:Array[Object]>*/;
4773 ((void (*)(val*, val*))(var_70->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_70, var_compile_dir) /* add on <var_70:Array[Object]>*/;
4774 if (varonce76) {
4775 var77 = varonce76;
4776 } else {
4777 var78 = "/c_functions_hash.h";
4778 var79 = 19;
4779 var80 = string__NativeString__to_s_with_length(var78, var79);
4780 var77 = var80;
4781 varonce76 = var77;
4782 }
4783 ((void (*)(val*, val*))(var_70->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_70, var77) /* add on <var_70:Array[Object]>*/;
4784 var81 = ((val* (*)(val*))(var_70->class->vft[COLOR_string__Object__to_s]))(var_70) /* to_s on <var_70:Array[Object]>*/;
4785 ((void (*)(val*, val*))(var67->class->vft[COLOR_file__OFStream__open]))(var67, var81) /* open on <var67:OFStream>*/;
4786 var_stream = var67;
4787 if (varonce82) {
4788 var83 = varonce82;
4789 } else {
4790 var84 = "typedef struct C_Nit_Names{char* name; char* nit_name;}C_Nit_Names;\n";
4791 var85 = 68;
4792 var86 = string__NativeString__to_s_with_length(var84, var85);
4793 var83 = var86;
4794 varonce82 = var83;
4795 }
4796 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var83) /* write on <var_stream:OFStream>*/;
4797 if (varonce87) {
4798 var88 = varonce87;
4799 } else {
4800 var89 = "const struct C_Nit_Names* get_nit_name(register const char *str, register unsigned int len);\n";
4801 var90 = 93;
4802 var91 = string__NativeString__to_s_with_length(var89, var90);
4803 var88 = var91;
4804 varonce87 = var88;
4805 }
4806 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var88) /* write on <var_stream:OFStream>*/;
4807 ((void (*)(val*))(var_stream->class->vft[COLOR_stream__IOS__close]))(var_stream) /* close on <var_stream:OFStream>*/;
4808 var92 = NEW_exec__Process(&type_exec__Process);
4809 if (varonce93) {
4810 var94 = varonce93;
4811 } else {
4812 var95 = "gperf";
4813 var96 = 5;
4814 var97 = string__NativeString__to_s_with_length(var95, var96);
4815 var94 = var97;
4816 varonce93 = var94;
4817 }
4818 var98 = NEW_array__Array(&type_array__Arraykernel__Object);
4819 var99 = 3;
4820 ((void (*)(val*, long))(var98->class->vft[COLOR_array__Array__with_capacity]))(var98, var99) /* with_capacity on <var98:Array[Object]>*/;
4821 var_100 = var98;
4822 if (varonce101) {
4823 var102 = varonce101;
4824 } else {
4825 var103 = "";
4826 var104 = 0;
4827 var105 = string__NativeString__to_s_with_length(var103, var104);
4828 var102 = var105;
4829 varonce101 = var102;
4830 }
4831 ((void (*)(val*, val*))(var_100->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_100, var102) /* add on <var_100:Array[Object]>*/;
4832 ((void (*)(val*, val*))(var_100->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_100, var_compile_dir) /* add on <var_100:Array[Object]>*/;
4833 if (varonce106) {
4834 var107 = varonce106;
4835 } else {
4836 var108 = "/C_fun_names";
4837 var109 = 12;
4838 var110 = string__NativeString__to_s_with_length(var108, var109);
4839 var107 = var110;
4840 varonce106 = var107;
4841 }
4842 ((void (*)(val*, val*))(var_100->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_100, var107) /* add on <var_100:Array[Object]>*/;
4843 var111 = ((val* (*)(val*))(var_100->class->vft[COLOR_string__Object__to_s]))(var_100) /* to_s on <var_100:Array[Object]>*/;
4844 if (varonce112) {
4845 var113 = varonce112;
4846 } else {
4847 var114 = "-t";
4848 var115 = 2;
4849 var116 = string__NativeString__to_s_with_length(var114, var115);
4850 var113 = var116;
4851 varonce112 = var113;
4852 }
4853 if (varonce117) {
4854 var118 = varonce117;
4855 } else {
4856 var119 = "-7";
4857 var120 = 2;
4858 var121 = string__NativeString__to_s_with_length(var119, var120);
4859 var118 = var121;
4860 varonce117 = var118;
4861 }
4862 var122 = NEW_array__Array(&type_array__Arraykernel__Object);
4863 var123 = 3;
4864 ((void (*)(val*, long))(var122->class->vft[COLOR_array__Array__with_capacity]))(var122, var123) /* with_capacity on <var122:Array[Object]>*/;
4865 var_124 = var122;
4866 if (varonce125) {
4867 var126 = varonce125;
4868 } else {
4869 var127 = "--output-file=";
4870 var128 = 14;
4871 var129 = string__NativeString__to_s_with_length(var127, var128);
4872 var126 = var129;
4873 varonce125 = var126;
4874 }
4875 ((void (*)(val*, val*))(var_124->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_124, var126) /* add on <var_124:Array[Object]>*/;
4876 ((void (*)(val*, val*))(var_124->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_124, var_compile_dir) /* add on <var_124:Array[Object]>*/;
4877 if (varonce130) {
4878 var131 = varonce130;
4879 } else {
4880 var132 = "/c_functions_hash.c";
4881 var133 = 19;
4882 var134 = string__NativeString__to_s_with_length(var132, var133);
4883 var131 = var134;
4884 varonce130 = var131;
4885 }
4886 ((void (*)(val*, val*))(var_124->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_124, var131) /* add on <var_124:Array[Object]>*/;
4887 var135 = ((val* (*)(val*))(var_124->class->vft[COLOR_string__Object__to_s]))(var_124) /* to_s on <var_124:Array[Object]>*/;
4888 if (varonce136) {
4889 var137 = varonce136;
4890 } else {
4891 var138 = "-C";
4892 var139 = 2;
4893 var140 = string__NativeString__to_s_with_length(var138, var139);
4894 var137 = var140;
4895 varonce136 = var137;
4896 }
4897 var141 = NEW_array__Array(&type_array__Arraystring__String);
4898 { /* var141 = array_instance Array[String] */
4899 var142 = 5;
4900 var143 = NEW_array__NativeArray(var142, &type_array__NativeArraystring__String);
4901 ((struct instance_array__NativeArray*)var143)->values[0] = (val*) var111;
4902 ((struct instance_array__NativeArray*)var143)->values[1] = (val*) var113;
4903 ((struct instance_array__NativeArray*)var143)->values[2] = (val*) var118;
4904 ((struct instance_array__NativeArray*)var143)->values[3] = (val*) var135;
4905 ((struct instance_array__NativeArray*)var143)->values[4] = (val*) var137;
4906 ((void (*)(val*, val*, long))(var141->class->vft[COLOR_array__Array__with_native]))(var141, var143, var142) /* with_native on <var141:Array[String]>*/;
4907 }
4908 ((void (*)(val*, val*, val*))(var92->class->vft[COLOR_exec__Process__init]))(var92, var94, var141) /* init on <var92:Process>*/;
4909 var_x = var92;
4910 ((void (*)(val*))(var_x->class->vft[COLOR_exec__Process__wait]))(var_x) /* wait on <var_x:Process>*/;
4911 var144 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__extern_bodies]))(self) /* extern_bodies on <self:AbstractCompiler>*/;
4912 var145 = NEW_c__ExternCFile(&type_c__ExternCFile);
4913 var146 = NEW_array__Array(&type_array__Arraykernel__Object);
4914 var147 = 3;
4915 ((void (*)(val*, long))(var146->class->vft[COLOR_array__Array__with_capacity]))(var146, var147) /* with_capacity on <var146:Array[Object]>*/;
4916 var_148 = var146;
4917 if (varonce149) {
4918 var150 = varonce149;
4919 } else {
4920 var151 = "";
4921 var152 = 0;
4922 var153 = string__NativeString__to_s_with_length(var151, var152);
4923 var150 = var153;
4924 varonce149 = var150;
4925 }
4926 ((void (*)(val*, val*))(var_148->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_148, var150) /* add on <var_148:Array[Object]>*/;
4927 ((void (*)(val*, val*))(var_148->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_148, var_compile_dir) /* add on <var_148:Array[Object]>*/;
4928 if (varonce154) {
4929 var155 = varonce154;
4930 } else {
4931 var156 = "/c_functions_hash.c";
4932 var157 = 19;
4933 var158 = string__NativeString__to_s_with_length(var156, var157);
4934 var155 = var158;
4935 varonce154 = var155;
4936 }
4937 ((void (*)(val*, val*))(var_148->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_148, var155) /* add on <var_148:Array[Object]>*/;
4938 var159 = ((val* (*)(val*))(var_148->class->vft[COLOR_string__Object__to_s]))(var_148) /* to_s on <var_148:Array[Object]>*/;
4939 if (varonce160) {
4940 var161 = varonce160;
4941 } else {
4942 var162 = "";
4943 var163 = 0;
4944 var164 = string__NativeString__to_s_with_length(var162, var163);
4945 var161 = var164;
4946 varonce160 = var161;
4947 }
4948 ((void (*)(val*, val*, val*))(var145->class->vft[COLOR_c__ExternCFile__init]))(var145, var159, var161) /* init on <var145:ExternCFile>*/;
4949 ((void (*)(val*, val*))(var144->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var144, var145) /* add on <var144:Array[ExternFile]>*/;
4950 RET_LABEL:;
4951 }
4952 /* method abstract_compiler#AbstractCompiler#build_c_to_nit_bindings for (self: Object) */
4953 void VIRTUAL_abstract_compiler__AbstractCompiler__build_c_to_nit_bindings(val* self) {
4954 abstract_compiler__AbstractCompiler__build_c_to_nit_bindings(self);
4955 RET_LABEL:;
4956 }
4957 /* method abstract_compiler#AbstractCompiler#compile_header for (self: AbstractCompiler) */
4958 void abstract_compiler__AbstractCompiler__compile_header(val* self) {
4959 val* var /* : CodeWriter */;
4960 val* var_v /* var v: CodeWriter */;
4961 val* var1 /* : ModelBuilder */;
4962 val* var2 /* : ToolContext */;
4963 val* var_toolctx /* var toolctx: ToolContext */;
4964 val* var3 /* : CodeWriter */;
4965 static val* varonce;
4966 val* var4 /* : String */;
4967 char* var5 /* : NativeString */;
4968 long var6 /* : Int */;
4969 val* var7 /* : String */;
4970 val* var8 /* : CodeWriter */;
4971 static val* varonce9;
4972 val* var10 /* : String */;
4973 char* var11 /* : NativeString */;
4974 long var12 /* : Int */;
4975 val* var13 /* : String */;
4976 val* var14 /* : CodeWriter */;
4977 static val* varonce15;
4978 val* var16 /* : String */;
4979 char* var17 /* : NativeString */;
4980 long var18 /* : Int */;
4981 val* var19 /* : String */;
4982 val* var20 /* : CodeWriter */;
4983 static val* varonce21;
4984 val* var22 /* : String */;
4985 char* var23 /* : NativeString */;
4986 long var24 /* : Int */;
4987 val* var25 /* : String */;
4988 val* var26 /* : CodeWriter */;
4989 static val* varonce27;
4990 val* var28 /* : String */;
4991 char* var29 /* : NativeString */;
4992 long var30 /* : Int */;
4993 val* var31 /* : String */;
4994 val* var32 /* : CodeWriter */;
4995 static val* varonce33;
4996 val* var34 /* : String */;
4997 char* var35 /* : NativeString */;
4998 long var36 /* : Int */;
4999 val* var37 /* : String */;
5000 val* var38 /* : CodeWriter */;
5001 static val* varonce39;
5002 val* var40 /* : String */;
5003 char* var41 /* : NativeString */;
5004 long var42 /* : Int */;
5005 val* var43 /* : String */;
5006 val* var44 /* : CodeWriter */;
5007 static val* varonce45;
5008 val* var46 /* : String */;
5009 char* var47 /* : NativeString */;
5010 long var48 /* : Int */;
5011 val* var49 /* : String */;
5012 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
5013 var_v = var;
5014 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
5015 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var1) /* toolcontext on <var1:ModelBuilder>*/;
5016 var_toolctx = var2;
5017 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
5018 if (varonce) {
5019 var4 = varonce;
5020 } else {
5021 var5 = "#include <stdlib.h>";
5022 var6 = 19;
5023 var7 = string__NativeString__to_s_with_length(var5, var6);
5024 var4 = var7;
5025 varonce = var4;
5026 }
5027 ((void (*)(val*, val*))(var3->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var3, var4) /* add_decl on <var3:CodeWriter>*/;
5028 var8 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
5029 if (varonce9) {
5030 var10 = varonce9;
5031 } else {
5032 var11 = "#include <stdio.h>";
5033 var12 = 18;
5034 var13 = string__NativeString__to_s_with_length(var11, var12);
5035 var10 = var13;
5036 varonce9 = var10;
5037 }
5038 ((void (*)(val*, val*))(var8->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var8, var10) /* add_decl on <var8:CodeWriter>*/;
5039 var14 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
5040 if (varonce15) {
5041 var16 = varonce15;
5042 } else {
5043 var17 = "#include <string.h>";
5044 var18 = 19;
5045 var19 = string__NativeString__to_s_with_length(var17, var18);
5046 var16 = var19;
5047 varonce15 = var16;
5048 }
5049 ((void (*)(val*, val*))(var14->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var14, var16) /* add_decl on <var14:CodeWriter>*/;
5050 var20 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
5051 if (varonce21) {
5052 var22 = varonce21;
5053 } else {
5054 var23 = "#include \"gc_chooser.h\"";
5055 var24 = 23;
5056 var25 = string__NativeString__to_s_with_length(var23, var24);
5057 var22 = var25;
5058 varonce21 = var22;
5059 }
5060 ((void (*)(val*, val*))(var20->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var20, var22) /* add_decl on <var20:CodeWriter>*/;
5061 ((void (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__compile_header_structs]))(self) /* compile_header_structs on <self:AbstractCompiler>*/;
5062 ((void (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__compile_nitni_structs]))(self) /* compile_nitni_structs on <self:AbstractCompiler>*/;
5063 var26 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
5064 if (varonce27) {
5065 var28 = varonce27;
5066 } else {
5067 var29 = "void show_backtrace(int);";
5068 var30 = 25;
5069 var31 = string__NativeString__to_s_with_length(var29, var30);
5070 var28 = var31;
5071 varonce27 = var28;
5072 }
5073 ((void (*)(val*, val*))(var26->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var26, var28) /* add_decl on <var26:CodeWriter>*/;
5074 var32 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
5075 if (varonce33) {
5076 var34 = varonce33;
5077 } else {
5078 var35 = "extern int glob_argc;";
5079 var36 = 21;
5080 var37 = string__NativeString__to_s_with_length(var35, var36);
5081 var34 = var37;
5082 varonce33 = var34;
5083 }
5084 ((void (*)(val*, val*))(var32->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var32, var34) /* add_decl on <var32:CodeWriter>*/;
5085 var38 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
5086 if (varonce39) {
5087 var40 = varonce39;
5088 } else {
5089 var41 = "extern char **glob_argv;";
5090 var42 = 24;
5091 var43 = string__NativeString__to_s_with_length(var41, var42);
5092 var40 = var43;
5093 varonce39 = var40;
5094 }
5095 ((void (*)(val*, val*))(var38->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var38, var40) /* add_decl on <var38:CodeWriter>*/;
5096 var44 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
5097 if (varonce45) {
5098 var46 = varonce45;
5099 } else {
5100 var47 = "extern val *glob_sys;";
5101 var48 = 21;
5102 var49 = string__NativeString__to_s_with_length(var47, var48);
5103 var46 = var49;
5104 varonce45 = var46;
5105 }
5106 ((void (*)(val*, val*))(var44->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var44, var46) /* add_decl on <var44:CodeWriter>*/;
5107 RET_LABEL:;
5108 }
5109 /* method abstract_compiler#AbstractCompiler#compile_header for (self: Object) */
5110 void VIRTUAL_abstract_compiler__AbstractCompiler__compile_header(val* self) {
5111 abstract_compiler__AbstractCompiler__compile_header(self);
5112 RET_LABEL:;
5113 }
5114 /* method abstract_compiler#AbstractCompiler#compile_header_structs for (self: AbstractCompiler) */
5115 void abstract_compiler__AbstractCompiler__compile_header_structs(val* self) {
5116 const char* var_class_name;
5117 var_class_name = self == NULL ? "null" : self->type->name;
5118 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "compile_header_structs", var_class_name);
5119 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 487);
5120 show_backtrace(1);
5121 RET_LABEL:;
5122 }
5123 /* method abstract_compiler#AbstractCompiler#compile_header_structs for (self: Object) */
5124 void VIRTUAL_abstract_compiler__AbstractCompiler__compile_header_structs(val* self) {
5125 abstract_compiler__AbstractCompiler__compile_header_structs(self);
5126 RET_LABEL:;
5127 }
5128 /* method abstract_compiler#AbstractCompiler#compile_nitni_structs for (self: AbstractCompiler) */
5129 void abstract_compiler__AbstractCompiler__compile_nitni_structs(val* self) {
5130 const char* var_class_name;
5131 var_class_name = self == NULL ? "null" : self->type->name;
5132 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "compile_nitni_structs", var_class_name);
5133 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 490);
5134 show_backtrace(1);
5135 RET_LABEL:;
5136 }
5137 /* method abstract_compiler#AbstractCompiler#compile_nitni_structs for (self: Object) */
5138 void VIRTUAL_abstract_compiler__AbstractCompiler__compile_nitni_structs(val* self) {
5139 abstract_compiler__AbstractCompiler__compile_nitni_structs(self);
5140 RET_LABEL:;
5141 }
5142 /* method abstract_compiler#AbstractCompiler#compile_main_function for (self: AbstractCompiler) */
5143 void abstract_compiler__AbstractCompiler__compile_main_function(val* self) {
5144 val* var /* : AbstractCompilerVisitor */;
5145 val* var_v /* var v: AbstractCompilerVisitor */;
5146 val* var1 /* : ModelBuilder */;
5147 val* var2 /* : ToolContext */;
5148 val* var3 /* : OptionBool */;
5149 val* var4 /* : nullable Object */;
5150 short int var5 /* : Bool */;
5151 static val* varonce;
5152 val* var6 /* : String */;
5153 char* var7 /* : NativeString */;
5154 long var8 /* : Int */;
5155 val* var9 /* : String */;
5156 static val* varonce10;
5157 val* var11 /* : String */;
5158 char* var12 /* : NativeString */;
5159 long var13 /* : Int */;
5160 val* var14 /* : String */;
5161 val* var15 /* : ModelBuilder */;
5162 val* var16 /* : ToolContext */;
5163 val* var17 /* : OptionBool */;
5164 val* var18 /* : nullable Object */;
5165 short int var19 /* : Bool */;
5166 short int var20 /* : Bool */;
5167 static val* varonce21;
5168 val* var22 /* : String */;
5169 char* var23 /* : NativeString */;
5170 long var24 /* : Int */;
5171 val* var25 /* : String */;
5172 static val* varonce26;
5173 val* var27 /* : String */;
5174 char* var28 /* : NativeString */;
5175 long var29 /* : Int */;
5176 val* var30 /* : String */;
5177 static val* varonce31;
5178 val* var32 /* : String */;
5179 char* var33 /* : NativeString */;
5180 long var34 /* : Int */;
5181 val* var35 /* : String */;
5182 static val* varonce36;
5183 val* var37 /* : String */;
5184 char* var38 /* : NativeString */;
5185 long var39 /* : Int */;
5186 val* var40 /* : String */;
5187 static val* varonce41;
5188 val* var42 /* : String */;
5189 char* var43 /* : NativeString */;
5190 long var44 /* : Int */;
5191 val* var45 /* : String */;
5192 val* var46 /* : ModelBuilder */;
5193 val* var47 /* : ToolContext */;
5194 val* var48 /* : OptionBool */;
5195 val* var49 /* : nullable Object */;
5196 short int var50 /* : Bool */;
5197 val* var51 /* : Array[String] */;
5198 val* var52 /* : Iterator[nullable Object] */;
5199 short int var53 /* : Bool */;
5200 val* var54 /* : nullable Object */;
5201 val* var_tag /* var tag: String */;
5202 static val* varonce55;
5203 val* var56 /* : String */;
5204 char* var57 /* : NativeString */;
5205 long var58 /* : Int */;
5206 val* var59 /* : String */;
5207 static val* varonce60;
5208 val* var61 /* : String */;
5209 char* var62 /* : NativeString */;
5210 long var63 /* : Int */;
5211 val* var64 /* : String */;
5212 val* var65 /* : Array[Object] */;
5213 long var66 /* : Int */;
5214 val* var67 /* : NativeArray[Object] */;
5215 val* var68 /* : String */;
5216 static val* varonce69;
5217 val* var70 /* : String */;
5218 char* var71 /* : NativeString */;
5219 long var72 /* : Int */;
5220 val* var73 /* : String */;
5221 static val* varonce74;
5222 val* var75 /* : String */;
5223 char* var76 /* : NativeString */;
5224 long var77 /* : Int */;
5225 val* var78 /* : String */;
5226 val* var79 /* : Array[Object] */;
5227 long var80 /* : Int */;
5228 val* var81 /* : NativeArray[Object] */;
5229 val* var82 /* : String */;
5230 static val* varonce83;
5231 val* var84 /* : String */;
5232 char* var85 /* : NativeString */;
5233 long var86 /* : Int */;
5234 val* var87 /* : String */;
5235 static val* varonce88;
5236 val* var89 /* : String */;
5237 char* var90 /* : NativeString */;
5238 long var91 /* : Int */;
5239 val* var92 /* : String */;
5240 val* var93 /* : Array[Object] */;
5241 long var94 /* : Int */;
5242 val* var95 /* : NativeArray[Object] */;
5243 val* var96 /* : String */;
5244 val* var97 /* : AbstractCompiler */;
5245 val* var98 /* : CodeWriter */;
5246 static val* varonce99;
5247 val* var100 /* : String */;
5248 char* var101 /* : NativeString */;
5249 long var102 /* : Int */;
5250 val* var103 /* : String */;
5251 static val* varonce104;
5252 val* var105 /* : String */;
5253 char* var106 /* : NativeString */;
5254 long var107 /* : Int */;
5255 val* var108 /* : String */;
5256 val* var109 /* : Array[Object] */;
5257 long var110 /* : Int */;
5258 val* var111 /* : NativeArray[Object] */;
5259 val* var112 /* : String */;
5260 val* var113 /* : AbstractCompiler */;
5261 val* var114 /* : CodeWriter */;
5262 static val* varonce115;
5263 val* var116 /* : String */;
5264 char* var117 /* : NativeString */;
5265 long var118 /* : Int */;
5266 val* var119 /* : String */;
5267 static val* varonce120;
5268 val* var121 /* : String */;
5269 char* var122 /* : NativeString */;
5270 long var123 /* : Int */;
5271 val* var124 /* : String */;
5272 val* var125 /* : Array[Object] */;
5273 long var126 /* : Int */;
5274 val* var127 /* : NativeArray[Object] */;
5275 val* var128 /* : String */;
5276 val* var129 /* : AbstractCompiler */;
5277 val* var130 /* : CodeWriter */;
5278 static val* varonce131;
5279 val* var132 /* : String */;
5280 char* var133 /* : NativeString */;
5281 long var134 /* : Int */;
5282 val* var135 /* : String */;
5283 static val* varonce136;
5284 val* var137 /* : String */;
5285 char* var138 /* : NativeString */;
5286 long var139 /* : Int */;
5287 val* var140 /* : String */;
5288 val* var141 /* : Array[Object] */;
5289 long var142 /* : Int */;
5290 val* var143 /* : NativeArray[Object] */;
5291 val* var144 /* : String */;
5292 static val* varonce145;
5293 val* var146 /* : String */;
5294 char* var147 /* : NativeString */;
5295 long var148 /* : Int */;
5296 val* var149 /* : String */;
5297 static val* varonce150;
5298 val* var151 /* : String */;
5299 char* var152 /* : NativeString */;
5300 long var153 /* : Int */;
5301 val* var154 /* : String */;
5302 static val* varonce155;
5303 val* var156 /* : String */;
5304 char* var157 /* : NativeString */;
5305 long var158 /* : Int */;
5306 val* var159 /* : String */;
5307 static val* varonce160;
5308 val* var161 /* : String */;
5309 char* var162 /* : NativeString */;
5310 long var163 /* : Int */;
5311 val* var164 /* : String */;
5312 static val* varonce165;
5313 val* var166 /* : String */;
5314 char* var167 /* : NativeString */;
5315 long var168 /* : Int */;
5316 val* var169 /* : String */;
5317 val* var170 /* : ModelBuilder */;
5318 val* var171 /* : ToolContext */;
5319 val* var172 /* : OptionBool */;
5320 val* var173 /* : nullable Object */;
5321 short int var174 /* : Bool */;
5322 short int var175 /* : Bool */;
5323 static val* varonce176;
5324 val* var177 /* : String */;
5325 char* var178 /* : NativeString */;
5326 long var179 /* : Int */;
5327 val* var180 /* : String */;
5328 static val* varonce181;
5329 val* var182 /* : String */;
5330 char* var183 /* : NativeString */;
5331 long var184 /* : Int */;
5332 val* var185 /* : String */;
5333 static val* varonce186;
5334 val* var187 /* : String */;
5335 char* var188 /* : NativeString */;
5336 long var189 /* : Int */;
5337 val* var190 /* : String */;
5338 static val* varonce191;
5339 val* var192 /* : String */;
5340 char* var193 /* : NativeString */;
5341 long var194 /* : Int */;
5342 val* var195 /* : String */;
5343 static val* varonce196;
5344 val* var197 /* : String */;
5345 char* var198 /* : NativeString */;
5346 long var199 /* : Int */;
5347 val* var200 /* : String */;
5348 static val* varonce201;
5349 val* var202 /* : String */;
5350 char* var203 /* : NativeString */;
5351 long var204 /* : Int */;
5352 val* var205 /* : String */;
5353 static val* varonce206;
5354 val* var207 /* : String */;
5355 char* var208 /* : NativeString */;
5356 long var209 /* : Int */;
5357 val* var210 /* : String */;
5358 static val* varonce211;
5359 val* var212 /* : String */;
5360 char* var213 /* : NativeString */;
5361 long var214 /* : Int */;
5362 val* var215 /* : String */;
5363 static val* varonce216;
5364 val* var217 /* : String */;
5365 char* var218 /* : NativeString */;
5366 long var219 /* : Int */;
5367 val* var220 /* : String */;
5368 static val* varonce221;
5369 val* var222 /* : String */;
5370 char* var223 /* : NativeString */;
5371 long var224 /* : Int */;
5372 val* var225 /* : String */;
5373 static val* varonce226;
5374 val* var227 /* : String */;
5375 char* var228 /* : NativeString */;
5376 long var229 /* : Int */;
5377 val* var230 /* : String */;
5378 static val* varonce231;
5379 val* var232 /* : String */;
5380 char* var233 /* : NativeString */;
5381 long var234 /* : Int */;
5382 val* var235 /* : String */;
5383 static val* varonce236;
5384 val* var237 /* : String */;
5385 char* var238 /* : NativeString */;
5386 long var239 /* : Int */;
5387 val* var240 /* : String */;
5388 val* var241 /* : ModelBuilder */;
5389 val* var242 /* : ToolContext */;
5390 val* var243 /* : OptionBool */;
5391 val* var244 /* : nullable Object */;
5392 short int var245 /* : Bool */;
5393 static val* varonce246;
5394 val* var247 /* : String */;
5395 char* var248 /* : NativeString */;
5396 long var249 /* : Int */;
5397 val* var250 /* : String */;
5398 static val* varonce251;
5399 val* var252 /* : String */;
5400 char* var253 /* : NativeString */;
5401 long var254 /* : Int */;
5402 val* var255 /* : String */;
5403 static val* varonce256;
5404 val* var257 /* : String */;
5405 char* var258 /* : NativeString */;
5406 long var259 /* : Int */;
5407 val* var260 /* : String */;
5408 static val* varonce261;
5409 val* var262 /* : String */;
5410 char* var263 /* : NativeString */;
5411 long var264 /* : Int */;
5412 val* var265 /* : String */;
5413 static val* varonce266;
5414 val* var267 /* : String */;
5415 char* var268 /* : NativeString */;
5416 long var269 /* : Int */;
5417 val* var270 /* : String */;
5418 static val* varonce271;
5419 val* var272 /* : String */;
5420 char* var273 /* : NativeString */;
5421 long var274 /* : Int */;
5422 val* var275 /* : String */;
5423 static val* varonce276;
5424 val* var277 /* : String */;
5425 char* var278 /* : NativeString */;
5426 long var279 /* : Int */;
5427 val* var280 /* : String */;
5428 static val* varonce281;
5429 val* var282 /* : String */;
5430 char* var283 /* : NativeString */;
5431 long var284 /* : Int */;
5432 val* var285 /* : String */;
5433 static val* varonce286;
5434 val* var287 /* : String */;
5435 char* var288 /* : NativeString */;
5436 long var289 /* : Int */;
5437 val* var290 /* : String */;
5438 static val* varonce291;
5439 val* var292 /* : String */;
5440 char* var293 /* : NativeString */;
5441 long var294 /* : Int */;
5442 val* var295 /* : String */;
5443 static val* varonce296;
5444 val* var297 /* : String */;
5445 char* var298 /* : NativeString */;
5446 long var299 /* : Int */;
5447 val* var300 /* : String */;
5448 static val* varonce301;
5449 val* var302 /* : String */;
5450 char* var303 /* : NativeString */;
5451 long var304 /* : Int */;
5452 val* var305 /* : String */;
5453 static val* varonce306;
5454 val* var307 /* : String */;
5455 char* var308 /* : NativeString */;
5456 long var309 /* : Int */;
5457 val* var310 /* : String */;
5458 static val* varonce311;
5459 val* var312 /* : String */;
5460 char* var313 /* : NativeString */;
5461 long var314 /* : Int */;
5462 val* var315 /* : String */;
5463 static val* varonce316;
5464 val* var317 /* : String */;
5465 char* var318 /* : NativeString */;
5466 long var319 /* : Int */;
5467 val* var320 /* : String */;
5468 static val* varonce321;
5469 val* var322 /* : String */;
5470 char* var323 /* : NativeString */;
5471 long var324 /* : Int */;
5472 val* var325 /* : String */;
5473 static val* varonce326;
5474 val* var327 /* : String */;
5475 char* var328 /* : NativeString */;
5476 long var329 /* : Int */;
5477 val* var330 /* : String */;
5478 static val* varonce331;
5479 val* var332 /* : String */;
5480 char* var333 /* : NativeString */;
5481 long var334 /* : Int */;
5482 val* var335 /* : String */;
5483 static val* varonce336;
5484 val* var337 /* : String */;
5485 char* var338 /* : NativeString */;
5486 long var339 /* : Int */;
5487 val* var340 /* : String */;
5488 static val* varonce341;
5489 val* var342 /* : String */;
5490 char* var343 /* : NativeString */;
5491 long var344 /* : Int */;
5492 val* var345 /* : String */;
5493 static val* varonce346;
5494 val* var347 /* : String */;
5495 char* var348 /* : NativeString */;
5496 long var349 /* : Int */;
5497 val* var350 /* : String */;
5498 static val* varonce351;
5499 val* var352 /* : String */;
5500 char* var353 /* : NativeString */;
5501 long var354 /* : Int */;
5502 val* var355 /* : String */;
5503 val* var356 /* : MModule */;
5504 val* var357 /* : nullable MClassType */;
5505 val* var_main_type /* var main_type: nullable MClassType */;
5506 val* var358 /* : null */;
5507 short int var359 /* : Bool */;
5508 val* var360 /* : AbstractCompiler */;
5509 val* var361 /* : MModule */;
5510 val* var_mainmodule /* var mainmodule: MModule */;
5511 val* var362 /* : RuntimeVariable */;
5512 val* var_glob_sys /* var glob_sys: RuntimeVariable */;
5513 static val* varonce363;
5514 val* var364 /* : String */;
5515 char* var365 /* : NativeString */;
5516 long var366 /* : Int */;
5517 val* var367 /* : String */;
5518 static val* varonce368;
5519 val* var369 /* : String */;
5520 char* var370 /* : NativeString */;
5521 long var371 /* : Int */;
5522 val* var372 /* : String */;
5523 val* var373 /* : Array[Object] */;
5524 long var374 /* : Int */;
5525 val* var375 /* : NativeArray[Object] */;
5526 val* var376 /* : String */;
5527 static val* varonce377;
5528 val* var378 /* : String */;
5529 char* var379 /* : NativeString */;
5530 long var380 /* : Int */;
5531 val* var381 /* : String */;
5532 val* var382 /* : MClass */;
5533 val* var383 /* : nullable MMethod */;
5534 val* var_main_init /* var main_init: nullable MMethod */;
5535 val* var384 /* : null */;
5536 short int var385 /* : Bool */;
5537 val* var386 /* : Array[RuntimeVariable] */;
5538 long var387 /* : Int */;
5539 val* var388 /* : NativeArray[RuntimeVariable] */;
5540 val* var389 /* : nullable RuntimeVariable */;
5541 static val* varonce390;
5542 val* var391 /* : String */;
5543 char* var392 /* : NativeString */;
5544 long var393 /* : Int */;
5545 val* var394 /* : String */;
5546 val* var395 /* : MClass */;
5547 val* var396 /* : nullable MMethod */;
5548 val* var_main_method /* var main_method: nullable MMethod */;
5549 val* var397 /* : null */;
5550 short int var398 /* : Bool */;
5551 val* var399 /* : Array[RuntimeVariable] */;
5552 long var400 /* : Int */;
5553 val* var401 /* : NativeArray[RuntimeVariable] */;
5554 val* var402 /* : nullable RuntimeVariable */;
5555 val* var403 /* : ModelBuilder */;
5556 val* var404 /* : ToolContext */;
5557 val* var405 /* : OptionBool */;
5558 val* var406 /* : nullable Object */;
5559 short int var407 /* : Bool */;
5560 static val* varonce408;
5561 val* var409 /* : String */;
5562 char* var410 /* : NativeString */;
5563 long var411 /* : Int */;
5564 val* var412 /* : String */;
5565 static val* varonce413;
5566 val* var414 /* : String */;
5567 char* var415 /* : NativeString */;
5568 long var416 /* : Int */;
5569 val* var417 /* : String */;
5570 static val* varonce418;
5571 val* var419 /* : String */;
5572 char* var420 /* : NativeString */;
5573 long var421 /* : Int */;
5574 val* var422 /* : String */;
5575 static val* varonce423;
5576 val* var424 /* : String */;
5577 char* var425 /* : NativeString */;
5578 long var426 /* : Int */;
5579 val* var427 /* : String */;
5580 val* var428 /* : Array[String] */;
5581 val* var429 /* : Iterator[nullable Object] */;
5582 short int var430 /* : Bool */;
5583 val* var431 /* : nullable Object */;
5584 val* var_tag432 /* var tag: String */;
5585 static val* varonce433;
5586 val* var434 /* : String */;
5587 char* var435 /* : NativeString */;
5588 long var436 /* : Int */;
5589 val* var437 /* : String */;
5590 static val* varonce438;
5591 val* var439 /* : String */;
5592 char* var440 /* : NativeString */;
5593 long var441 /* : Int */;
5594 val* var442 /* : String */;
5595 val* var443 /* : Array[Object] */;
5596 long var444 /* : Int */;
5597 val* var445 /* : NativeArray[Object] */;
5598 val* var446 /* : String */;
5599 static val* varonce447;
5600 val* var448 /* : String */;
5601 char* var449 /* : NativeString */;
5602 long var450 /* : Int */;
5603 val* var451 /* : String */;
5604 static val* varonce452;
5605 val* var453 /* : String */;
5606 char* var454 /* : NativeString */;
5607 long var455 /* : Int */;
5608 val* var456 /* : String */;
5609 static val* varonce457;
5610 val* var458 /* : String */;
5611 char* var459 /* : NativeString */;
5612 long var460 /* : Int */;
5613 val* var461 /* : String */;
5614 static val* varonce462;
5615 val* var463 /* : String */;
5616 char* var464 /* : NativeString */;
5617 long var465 /* : Int */;
5618 val* var466 /* : String */;
5619 static val* varonce467;
5620 val* var468 /* : String */;
5621 char* var469 /* : NativeString */;
5622 long var470 /* : Int */;
5623 val* var471 /* : String */;
5624 val* var472 /* : Array[Object] */;
5625 long var473 /* : Int */;
5626 val* var474 /* : NativeArray[Object] */;
5627 val* var475 /* : String */;
5628 static val* varonce476;
5629 val* var477 /* : String */;
5630 char* var478 /* : NativeString */;
5631 long var479 /* : Int */;
5632 val* var480 /* : String */;
5633 static val* varonce481;
5634 val* var482 /* : String */;
5635 char* var483 /* : NativeString */;
5636 long var484 /* : Int */;
5637 val* var485 /* : String */;
5638 val* var486 /* : Array[Object] */;
5639 long var487 /* : Int */;
5640 val* var488 /* : NativeArray[Object] */;
5641 val* var489 /* : String */;
5642 static val* varonce490;
5643 val* var491 /* : String */;
5644 char* var492 /* : NativeString */;
5645 long var493 /* : Int */;
5646 val* var494 /* : String */;
5647 static val* varonce495;
5648 val* var496 /* : String */;
5649 char* var497 /* : NativeString */;
5650 long var498 /* : Int */;
5651 val* var499 /* : String */;
5652 val* var500 /* : Array[Object] */;
5653 long var501 /* : Int */;
5654 val* var502 /* : NativeArray[Object] */;
5655 val* var503 /* : String */;
5656 static val* varonce504;
5657 val* var505 /* : String */;
5658 char* var506 /* : NativeString */;
5659 long var507 /* : Int */;
5660 val* var508 /* : String */;
5661 static val* varonce509;
5662 val* var510 /* : String */;
5663 char* var511 /* : NativeString */;
5664 long var512 /* : Int */;
5665 val* var513 /* : String */;
5666 val* var514 /* : Array[Object] */;
5667 long var515 /* : Int */;
5668 val* var516 /* : NativeArray[Object] */;
5669 val* var517 /* : String */;
5670 static val* varonce518;
5671 val* var519 /* : String */;
5672 char* var520 /* : NativeString */;
5673 long var521 /* : Int */;
5674 val* var522 /* : String */;
5675 static val* varonce523;
5676 val* var524 /* : String */;
5677 char* var525 /* : NativeString */;
5678 long var526 /* : Int */;
5679 val* var527 /* : String */;
5680 val* var528 /* : Array[Object] */;
5681 long var529 /* : Int */;
5682 val* var530 /* : NativeArray[Object] */;
5683 val* var531 /* : String */;
5684 static val* varonce533;
5685 val* var534 /* : String */;
5686 char* var535 /* : NativeString */;
5687 long var536 /* : Int */;
5688 val* var537 /* : String */;
5689 static val* varonce538;
5690 val* var539 /* : String */;
5691 char* var540 /* : NativeString */;
5692 long var541 /* : Int */;
5693 val* var542 /* : String */;
5694 val* var543 /* : Array[String] */;
5695 val* var544 /* : Array[nullable Object] */;
5696 val* var_tags /* var tags: Array[String] */;
5697 static val* varonce545;
5698 val* var546 /* : String */;
5699 char* var547 /* : NativeString */;
5700 long var548 /* : Int */;
5701 val* var549 /* : String */;
5702 val* var550 /* : Iterator[nullable Object] */;
5703 short int var551 /* : Bool */;
5704 val* var552 /* : nullable Object */;
5705 val* var_tag553 /* var tag: String */;
5706 static val* varonce554;
5707 val* var555 /* : String */;
5708 char* var556 /* : NativeString */;
5709 long var557 /* : Int */;
5710 val* var558 /* : String */;
5711 static val* varonce559;
5712 val* var560 /* : String */;
5713 char* var561 /* : NativeString */;
5714 long var562 /* : Int */;
5715 val* var563 /* : String */;
5716 val* var564 /* : Array[Object] */;
5717 long var565 /* : Int */;
5718 val* var566 /* : NativeArray[Object] */;
5719 val* var567 /* : String */;
5720 static val* varonce568;
5721 val* var569 /* : String */;
5722 char* var570 /* : NativeString */;
5723 long var571 /* : Int */;
5724 val* var572 /* : String */;
5725 static val* varonce573;
5726 val* var574 /* : String */;
5727 char* var575 /* : NativeString */;
5728 long var576 /* : Int */;
5729 val* var577 /* : String */;
5730 static val* varonce578;
5731 val* var579 /* : String */;
5732 char* var580 /* : NativeString */;
5733 long var581 /* : Int */;
5734 val* var582 /* : String */;
5735 val* var583 /* : Array[Object] */;
5736 long var584 /* : Int */;
5737 val* var585 /* : NativeArray[Object] */;
5738 val* var586 /* : String */;
5739 static val* varonce587;
5740 val* var588 /* : String */;
5741 char* var589 /* : NativeString */;
5742 long var590 /* : Int */;
5743 val* var591 /* : String */;
5744 static val* varonce592;
5745 val* var593 /* : String */;
5746 char* var594 /* : NativeString */;
5747 long var595 /* : Int */;
5748 val* var596 /* : String */;
5749 static val* varonce597;
5750 val* var598 /* : String */;
5751 char* var599 /* : NativeString */;
5752 long var600 /* : Int */;
5753 val* var601 /* : String */;
5754 val* var602 /* : Array[Object] */;
5755 long var603 /* : Int */;
5756 val* var604 /* : NativeArray[Object] */;
5757 val* var605 /* : String */;
5758 static val* varonce606;
5759 val* var607 /* : String */;
5760 char* var608 /* : NativeString */;
5761 long var609 /* : Int */;
5762 val* var610 /* : String */;
5763 static val* varonce611;
5764 val* var612 /* : String */;
5765 char* var613 /* : NativeString */;
5766 long var614 /* : Int */;
5767 val* var615 /* : String */;
5768 static val* varonce616;
5769 val* var617 /* : String */;
5770 char* var618 /* : NativeString */;
5771 long var619 /* : Int */;
5772 val* var620 /* : String */;
5773 val* var621 /* : Array[Object] */;
5774 long var622 /* : Int */;
5775 val* var623 /* : NativeArray[Object] */;
5776 val* var624 /* : String */;
5777 static val* varonce625;
5778 val* var626 /* : String */;
5779 char* var627 /* : NativeString */;
5780 long var628 /* : Int */;
5781 val* var629 /* : String */;
5782 static val* varonce630;
5783 val* var631 /* : String */;
5784 char* var632 /* : NativeString */;
5785 long var633 /* : Int */;
5786 val* var634 /* : String */;
5787 static val* varonce635;
5788 val* var636 /* : String */;
5789 char* var637 /* : NativeString */;
5790 long var638 /* : Int */;
5791 val* var639 /* : String */;
5792 val* var640 /* : Array[Object] */;
5793 long var641 /* : Int */;
5794 val* var642 /* : NativeArray[Object] */;
5795 val* var643 /* : String */;
5796 static val* varonce645;
5797 val* var646 /* : String */;
5798 char* var647 /* : NativeString */;
5799 long var648 /* : Int */;
5800 val* var649 /* : String */;
5801 static val* varonce650;
5802 val* var651 /* : String */;
5803 char* var652 /* : NativeString */;
5804 long var653 /* : Int */;
5805 val* var654 /* : String */;
5806 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_visitor]))(self) /* new_visitor on <self:AbstractCompiler>*/;
5807 var_v = var;
5808 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
5809 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var1) /* toolcontext on <var1:ModelBuilder>*/;
5810 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__ToolContext__opt_stacktrace]))(var2) /* opt_stacktrace on <var2:ToolContext>*/;
5811 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_opts__Option__value]))(var3) /* value on <var3:OptionBool>*/;
5812 var5 = ((struct instance_kernel__Bool*)var4)->value; /* autounbox from nullable Object to Bool */;
5813 if (var5){
5814 if (varonce) {
5815 var6 = varonce;
5816 } else {
5817 var7 = "#include \"c_functions_hash.h\"";
5818 var8 = 29;
5819 var9 = string__NativeString__to_s_with_length(var7, var8);
5820 var6 = var9;
5821 varonce = var6;
5822 }
5823 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var6) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5824 } else {
5825 }
5826 if (varonce10) {
5827 var11 = varonce10;
5828 } else {
5829 var12 = "#include <signal.h>";
5830 var13 = 19;
5831 var14 = string__NativeString__to_s_with_length(var12, var13);
5832 var11 = var14;
5833 varonce10 = var11;
5834 }
5835 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var11) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5836 var15 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
5837 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var15) /* toolcontext on <var15:ModelBuilder>*/;
5838 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_stacktrace]))(var16) /* opt_no_stacktrace on <var16:ToolContext>*/;
5839 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_opts__Option__value]))(var17) /* value on <var17:OptionBool>*/;
5840 var19 = ((struct instance_kernel__Bool*)var18)->value; /* autounbox from nullable Object to Bool */;
5841 var20 = !var19;
5842 if (var20){
5843 if (varonce21) {
5844 var22 = varonce21;
5845 } else {
5846 var23 = "#define UNW_LOCAL_ONLY";
5847 var24 = 22;
5848 var25 = string__NativeString__to_s_with_length(var23, var24);
5849 var22 = var25;
5850 varonce21 = var22;
5851 }
5852 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var22) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5853 if (varonce26) {
5854 var27 = varonce26;
5855 } else {
5856 var28 = "#include <libunwind.h>";
5857 var29 = 22;
5858 var30 = string__NativeString__to_s_with_length(var28, var29);
5859 var27 = var30;
5860 varonce26 = var27;
5861 }
5862 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var27) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5863 } else {
5864 }
5865 if (varonce31) {
5866 var32 = varonce31;
5867 } else {
5868 var33 = "int glob_argc;";
5869 var34 = 14;
5870 var35 = string__NativeString__to_s_with_length(var33, var34);
5871 var32 = var35;
5872 varonce31 = var32;
5873 }
5874 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var32) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5875 if (varonce36) {
5876 var37 = varonce36;
5877 } else {
5878 var38 = "char **glob_argv;";
5879 var39 = 17;
5880 var40 = string__NativeString__to_s_with_length(var38, var39);
5881 var37 = var40;
5882 varonce36 = var37;
5883 }
5884 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var37) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5885 if (varonce41) {
5886 var42 = varonce41;
5887 } else {
5888 var43 = "val *glob_sys;";
5889 var44 = 14;
5890 var45 = string__NativeString__to_s_with_length(var43, var44);
5891 var42 = var45;
5892 varonce41 = var42;
5893 }
5894 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var42) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5895 var46 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
5896 var47 = ((val* (*)(val*))(var46->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var46) /* toolcontext on <var46:ModelBuilder>*/;
5897 var48 = ((val* (*)(val*))(var47->class->vft[COLOR_abstract_compiler__ToolContext__opt_typing_test_metrics]))(var47) /* opt_typing_test_metrics on <var47:ToolContext>*/;
5898 var49 = ((val* (*)(val*))(var48->class->vft[COLOR_opts__Option__value]))(var48) /* value on <var48:OptionBool>*/;
5899 var50 = ((struct instance_kernel__Bool*)var49)->value; /* autounbox from nullable Object to Bool */;
5900 if (var50){
5901 var51 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_tags]))(self) /* count_type_test_tags on <self:AbstractCompiler>*/;
5902 var52 = ((val* (*)(val*))(var51->class->vft[COLOR_abstract_collection__Collection__iterator]))(var51) /* iterator on <var51:Array[String]>*/;
5903 for(;;) {
5904 var53 = ((short int (*)(val*))(var52->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var52) /* is_ok on <var52:Iterator[nullable Object]>*/;
5905 if(!var53) break;
5906 var54 = ((val* (*)(val*))(var52->class->vft[COLOR_abstract_collection__Iterator__item]))(var52) /* item on <var52:Iterator[nullable Object]>*/;
5907 var_tag = var54;
5908 if (varonce55) {
5909 var56 = varonce55;
5910 } else {
5911 var57 = "long count_type_test_resolved_";
5912 var58 = 30;
5913 var59 = string__NativeString__to_s_with_length(var57, var58);
5914 var56 = var59;
5915 varonce55 = var56;
5916 }
5917 if (varonce60) {
5918 var61 = varonce60;
5919 } else {
5920 var62 = ";";
5921 var63 = 1;
5922 var64 = string__NativeString__to_s_with_length(var62, var63);
5923 var61 = var64;
5924 varonce60 = var61;
5925 }
5926 var65 = NEW_array__Array(&type_array__Arraykernel__Object);
5927 { /* var65 = array_instance Array[Object] */
5928 var66 = 3;
5929 var67 = NEW_array__NativeArray(var66, &type_array__NativeArraykernel__Object);
5930 ((struct instance_array__NativeArray*)var67)->values[0] = (val*) var56;
5931 ((struct instance_array__NativeArray*)var67)->values[1] = (val*) var_tag;
5932 ((struct instance_array__NativeArray*)var67)->values[2] = (val*) var61;
5933 ((void (*)(val*, val*, long))(var65->class->vft[COLOR_array__Array__with_native]))(var65, var67, var66) /* with_native on <var65:Array[Object]>*/;
5934 }
5935 var68 = ((val* (*)(val*))(var65->class->vft[COLOR_string__Object__to_s]))(var65) /* to_s on <var65:Array[Object]>*/;
5936 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var68) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5937 if (varonce69) {
5938 var70 = varonce69;
5939 } else {
5940 var71 = "long count_type_test_unresolved_";
5941 var72 = 32;
5942 var73 = string__NativeString__to_s_with_length(var71, var72);
5943 var70 = var73;
5944 varonce69 = var70;
5945 }
5946 if (varonce74) {
5947 var75 = varonce74;
5948 } else {
5949 var76 = ";";
5950 var77 = 1;
5951 var78 = string__NativeString__to_s_with_length(var76, var77);
5952 var75 = var78;
5953 varonce74 = var75;
5954 }
5955 var79 = NEW_array__Array(&type_array__Arraykernel__Object);
5956 { /* var79 = array_instance Array[Object] */
5957 var80 = 3;
5958 var81 = NEW_array__NativeArray(var80, &type_array__NativeArraykernel__Object);
5959 ((struct instance_array__NativeArray*)var81)->values[0] = (val*) var70;
5960 ((struct instance_array__NativeArray*)var81)->values[1] = (val*) var_tag;
5961 ((struct instance_array__NativeArray*)var81)->values[2] = (val*) var75;
5962 ((void (*)(val*, val*, long))(var79->class->vft[COLOR_array__Array__with_native]))(var79, var81, var80) /* with_native on <var79:Array[Object]>*/;
5963 }
5964 var82 = ((val* (*)(val*))(var79->class->vft[COLOR_string__Object__to_s]))(var79) /* to_s on <var79:Array[Object]>*/;
5965 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var82) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5966 if (varonce83) {
5967 var84 = varonce83;
5968 } else {
5969 var85 = "long count_type_test_skipped_";
5970 var86 = 29;
5971 var87 = string__NativeString__to_s_with_length(var85, var86);
5972 var84 = var87;
5973 varonce83 = var84;
5974 }
5975 if (varonce88) {
5976 var89 = varonce88;
5977 } else {
5978 var90 = ";";
5979 var91 = 1;
5980 var92 = string__NativeString__to_s_with_length(var90, var91);
5981 var89 = var92;
5982 varonce88 = var89;
5983 }
5984 var93 = NEW_array__Array(&type_array__Arraykernel__Object);
5985 { /* var93 = array_instance Array[Object] */
5986 var94 = 3;
5987 var95 = NEW_array__NativeArray(var94, &type_array__NativeArraykernel__Object);
5988 ((struct instance_array__NativeArray*)var95)->values[0] = (val*) var84;
5989 ((struct instance_array__NativeArray*)var95)->values[1] = (val*) var_tag;
5990 ((struct instance_array__NativeArray*)var95)->values[2] = (val*) var89;
5991 ((void (*)(val*, val*, long))(var93->class->vft[COLOR_array__Array__with_native]))(var93, var95, var94) /* with_native on <var93:Array[Object]>*/;
5992 }
5993 var96 = ((val* (*)(val*))(var93->class->vft[COLOR_string__Object__to_s]))(var93) /* to_s on <var93:Array[Object]>*/;
5994 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var96) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5995 var97 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(var_v) /* compiler on <var_v:AbstractCompilerVisitor>*/;
5996 var98 = ((val* (*)(val*))(var97->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(var97) /* header on <var97:AbstractCompiler>*/;
5997 if (varonce99) {
5998 var100 = varonce99;
5999 } else {
6000 var101 = "extern long count_type_test_resolved_";
6001 var102 = 37;
6002 var103 = string__NativeString__to_s_with_length(var101, var102);
6003 var100 = var103;
6004 varonce99 = var100;
6005 }
6006 if (varonce104) {
6007 var105 = varonce104;
6008 } else {
6009 var106 = ";";
6010 var107 = 1;
6011 var108 = string__NativeString__to_s_with_length(var106, var107);
6012 var105 = var108;
6013 varonce104 = var105;
6014 }
6015 var109 = NEW_array__Array(&type_array__Arraykernel__Object);
6016 { /* var109 = array_instance Array[Object] */
6017 var110 = 3;
6018 var111 = NEW_array__NativeArray(var110, &type_array__NativeArraykernel__Object);
6019 ((struct instance_array__NativeArray*)var111)->values[0] = (val*) var100;
6020 ((struct instance_array__NativeArray*)var111)->values[1] = (val*) var_tag;
6021 ((struct instance_array__NativeArray*)var111)->values[2] = (val*) var105;
6022 ((void (*)(val*, val*, long))(var109->class->vft[COLOR_array__Array__with_native]))(var109, var111, var110) /* with_native on <var109:Array[Object]>*/;
6023 }
6024 var112 = ((val* (*)(val*))(var109->class->vft[COLOR_string__Object__to_s]))(var109) /* to_s on <var109:Array[Object]>*/;
6025 ((void (*)(val*, val*))(var98->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var98, var112) /* add_decl on <var98:CodeWriter>*/;
6026 var113 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(var_v) /* compiler on <var_v:AbstractCompilerVisitor>*/;
6027 var114 = ((val* (*)(val*))(var113->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(var113) /* header on <var113:AbstractCompiler>*/;
6028 if (varonce115) {
6029 var116 = varonce115;
6030 } else {
6031 var117 = "extern long count_type_test_unresolved_";
6032 var118 = 39;
6033 var119 = string__NativeString__to_s_with_length(var117, var118);
6034 var116 = var119;
6035 varonce115 = var116;
6036 }
6037 if (varonce120) {
6038 var121 = varonce120;
6039 } else {
6040 var122 = ";";
6041 var123 = 1;
6042 var124 = string__NativeString__to_s_with_length(var122, var123);
6043 var121 = var124;
6044 varonce120 = var121;
6045 }
6046 var125 = NEW_array__Array(&type_array__Arraykernel__Object);
6047 { /* var125 = array_instance Array[Object] */
6048 var126 = 3;
6049 var127 = NEW_array__NativeArray(var126, &type_array__NativeArraykernel__Object);
6050 ((struct instance_array__NativeArray*)var127)->values[0] = (val*) var116;
6051 ((struct instance_array__NativeArray*)var127)->values[1] = (val*) var_tag;
6052 ((struct instance_array__NativeArray*)var127)->values[2] = (val*) var121;
6053 ((void (*)(val*, val*, long))(var125->class->vft[COLOR_array__Array__with_native]))(var125, var127, var126) /* with_native on <var125:Array[Object]>*/;
6054 }
6055 var128 = ((val* (*)(val*))(var125->class->vft[COLOR_string__Object__to_s]))(var125) /* to_s on <var125:Array[Object]>*/;
6056 ((void (*)(val*, val*))(var114->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var114, var128) /* add_decl on <var114:CodeWriter>*/;
6057 var129 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(var_v) /* compiler on <var_v:AbstractCompilerVisitor>*/;
6058 var130 = ((val* (*)(val*))(var129->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(var129) /* header on <var129:AbstractCompiler>*/;
6059 if (varonce131) {
6060 var132 = varonce131;
6061 } else {
6062 var133 = "extern long count_type_test_skipped_";
6063 var134 = 36;
6064 var135 = string__NativeString__to_s_with_length(var133, var134);
6065 var132 = var135;
6066 varonce131 = var132;
6067 }
6068 if (varonce136) {
6069 var137 = varonce136;
6070 } else {
6071 var138 = ";";
6072 var139 = 1;
6073 var140 = string__NativeString__to_s_with_length(var138, var139);
6074 var137 = var140;
6075 varonce136 = var137;
6076 }
6077 var141 = NEW_array__Array(&type_array__Arraykernel__Object);
6078 { /* var141 = array_instance Array[Object] */
6079 var142 = 3;
6080 var143 = NEW_array__NativeArray(var142, &type_array__NativeArraykernel__Object);
6081 ((struct instance_array__NativeArray*)var143)->values[0] = (val*) var132;
6082 ((struct instance_array__NativeArray*)var143)->values[1] = (val*) var_tag;
6083 ((struct instance_array__NativeArray*)var143)->values[2] = (val*) var137;
6084 ((void (*)(val*, val*, long))(var141->class->vft[COLOR_array__Array__with_native]))(var141, var143, var142) /* with_native on <var141:Array[Object]>*/;
6085 }
6086 var144 = ((val* (*)(val*))(var141->class->vft[COLOR_string__Object__to_s]))(var141) /* to_s on <var141:Array[Object]>*/;
6087 ((void (*)(val*, val*))(var130->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var130, var144) /* add_decl on <var130:CodeWriter>*/;
6088 CONTINUE_label: (void)0;
6089 ((void (*)(val*))(var52->class->vft[COLOR_abstract_collection__Iterator__next]))(var52) /* next on <var52:Iterator[nullable Object]>*/;
6090 }
6091 BREAK_label: (void)0;
6092 } else {
6093 }
6094 if (varonce145) {
6095 var146 = varonce145;
6096 } else {
6097 var147 = "void sig_handler(int signo){";
6098 var148 = 28;
6099 var149 = string__NativeString__to_s_with_length(var147, var148);
6100 var146 = var149;
6101 varonce145 = var146;
6102 }
6103 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var146) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6104 if (varonce150) {
6105 var151 = varonce150;
6106 } else {
6107 var152 = "printf(\"Caught signal : %s\\n\", strsignal(signo));";
6108 var153 = 49;
6109 var154 = string__NativeString__to_s_with_length(var152, var153);
6110 var151 = var154;
6111 varonce150 = var151;
6112 }
6113 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var151) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6114 if (varonce155) {
6115 var156 = varonce155;
6116 } else {
6117 var157 = "show_backtrace(signo);";
6118 var158 = 22;
6119 var159 = string__NativeString__to_s_with_length(var157, var158);
6120 var156 = var159;
6121 varonce155 = var156;
6122 }
6123 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var156) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6124 if (varonce160) {
6125 var161 = varonce160;
6126 } else {
6127 var162 = "}";
6128 var163 = 1;
6129 var164 = string__NativeString__to_s_with_length(var162, var163);
6130 var161 = var164;
6131 varonce160 = var161;
6132 }
6133 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var161) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6134 if (varonce165) {
6135 var166 = varonce165;
6136 } else {
6137 var167 = "void show_backtrace (int signo) {";
6138 var168 = 33;
6139 var169 = string__NativeString__to_s_with_length(var167, var168);
6140 var166 = var169;
6141 varonce165 = var166;
6142 }
6143 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var166) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6144 var170 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
6145 var171 = ((val* (*)(val*))(var170->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var170) /* toolcontext on <var170:ModelBuilder>*/;
6146 var172 = ((val* (*)(val*))(var171->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_stacktrace]))(var171) /* opt_no_stacktrace on <var171:ToolContext>*/;
6147 var173 = ((val* (*)(val*))(var172->class->vft[COLOR_opts__Option__value]))(var172) /* value on <var172:OptionBool>*/;
6148 var174 = ((struct instance_kernel__Bool*)var173)->value; /* autounbox from nullable Object to Bool */;
6149 var175 = !var174;
6150 if (var175){
6151 if (varonce176) {
6152 var177 = varonce176;
6153 } else {
6154 var178 = "char* opt = getenv(\"NIT_NO_STACK\");";
6155 var179 = 35;
6156 var180 = string__NativeString__to_s_with_length(var178, var179);
6157 var177 = var180;
6158 varonce176 = var177;
6159 }
6160 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var177) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6161 if (varonce181) {
6162 var182 = varonce181;
6163 } else {
6164 var183 = "unw_cursor_t cursor;";
6165 var184 = 20;
6166 var185 = string__NativeString__to_s_with_length(var183, var184);
6167 var182 = var185;
6168 varonce181 = var182;
6169 }
6170 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var182) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6171 if (varonce186) {
6172 var187 = varonce186;
6173 } else {
6174 var188 = "if(opt==NULL){";
6175 var189 = 14;
6176 var190 = string__NativeString__to_s_with_length(var188, var189);
6177 var187 = var190;
6178 varonce186 = var187;
6179 }
6180 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var187) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6181 if (varonce191) {
6182 var192 = varonce191;
6183 } else {
6184 var193 = "unw_context_t uc;";
6185 var194 = 17;
6186 var195 = string__NativeString__to_s_with_length(var193, var194);
6187 var192 = var195;
6188 varonce191 = var192;
6189 }
6190 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var192) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6191 if (varonce196) {
6192 var197 = varonce196;
6193 } else {
6194 var198 = "unw_word_t ip;";
6195 var199 = 14;
6196 var200 = string__NativeString__to_s_with_length(var198, var199);
6197 var197 = var200;
6198 varonce196 = var197;
6199 }
6200 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var197) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6201 if (varonce201) {
6202 var202 = varonce201;
6203 } else {
6204 var203 = "char* procname = malloc(sizeof(char) * 100);";
6205 var204 = 44;
6206 var205 = string__NativeString__to_s_with_length(var203, var204);
6207 var202 = var205;
6208 varonce201 = var202;
6209 }
6210 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var202) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6211 if (varonce206) {
6212 var207 = varonce206;
6213 } else {
6214 var208 = "unw_getcontext(&uc);";
6215 var209 = 20;
6216 var210 = string__NativeString__to_s_with_length(var208, var209);
6217 var207 = var210;
6218 varonce206 = var207;
6219 }
6220 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var207) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6221 if (varonce211) {
6222 var212 = varonce211;
6223 } else {
6224 var213 = "unw_init_local(&cursor, &uc);";
6225 var214 = 29;
6226 var215 = string__NativeString__to_s_with_length(var213, var214);
6227 var212 = var215;
6228 varonce211 = var212;
6229 }
6230 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var212) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6231 if (varonce216) {
6232 var217 = varonce216;
6233 } else {
6234 var218 = "printf(\"-------------------------------------------------\\n\");";
6235 var219 = 62;
6236 var220 = string__NativeString__to_s_with_length(var218, var219);
6237 var217 = var220;
6238 varonce216 = var217;
6239 }
6240 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var217) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6241 if (varonce221) {
6242 var222 = varonce221;
6243 } else {
6244 var223 = "printf(\"-- Stack Trace ------------------------------\\n\");";
6245 var224 = 62;
6246 var225 = string__NativeString__to_s_with_length(var223, var224);
6247 var222 = var225;
6248 varonce221 = var222;
6249 }
6250 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var222) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6251 if (varonce226) {
6252 var227 = varonce226;
6253 } else {
6254 var228 = "printf(\"-------------------------------------------------\\n\");";
6255 var229 = 62;
6256 var230 = string__NativeString__to_s_with_length(var228, var229);
6257 var227 = var230;
6258 varonce226 = var227;
6259 }
6260 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var227) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6261 if (varonce231) {
6262 var232 = varonce231;
6263 } else {
6264 var233 = "while (unw_step(&cursor) > 0) {";
6265 var234 = 31;
6266 var235 = string__NativeString__to_s_with_length(var233, var234);
6267 var232 = var235;
6268 varonce231 = var232;
6269 }
6270 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var232) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6271 if (varonce236) {
6272 var237 = varonce236;
6273 } else {
6274 var238 = "\11unw_get_proc_name(&cursor, procname, 100, &ip);";
6275 var239 = 48;
6276 var240 = string__NativeString__to_s_with_length(var238, var239);
6277 var237 = var240;
6278 varonce236 = var237;
6279 }
6280 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var237) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6281 var241 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
6282 var242 = ((val* (*)(val*))(var241->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var241) /* toolcontext on <var241:ModelBuilder>*/;
6283 var243 = ((val* (*)(val*))(var242->class->vft[COLOR_abstract_compiler__ToolContext__opt_stacktrace]))(var242) /* opt_stacktrace on <var242:ToolContext>*/;
6284 var244 = ((val* (*)(val*))(var243->class->vft[COLOR_opts__Option__value]))(var243) /* value on <var243:OptionBool>*/;
6285 var245 = ((struct instance_kernel__Bool*)var244)->value; /* autounbox from nullable Object to Bool */;
6286 if (var245){
6287 if (varonce246) {
6288 var247 = varonce246;
6289 } else {
6290 var248 = "\11const C_Nit_Names* recv = get_nit_name(procname, strlen(procname));";
6291 var249 = 68;
6292 var250 = string__NativeString__to_s_with_length(var248, var249);
6293 var247 = var250;
6294 varonce246 = var247;
6295 }
6296 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var247) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6297 if (varonce251) {
6298 var252 = varonce251;
6299 } else {
6300 var253 = "\11if (recv != 0){";
6301 var254 = 16;
6302 var255 = string__NativeString__to_s_with_length(var253, var254);
6303 var252 = var255;
6304 varonce251 = var252;
6305 }
6306 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var252) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6307 if (varonce256) {
6308 var257 = varonce256;
6309 } else {
6310 var258 = "\11\11printf(\"` %s\\n\", recv->nit_name);";
6311 var259 = 35;
6312 var260 = string__NativeString__to_s_with_length(var258, var259);
6313 var257 = var260;
6314 varonce256 = var257;
6315 }
6316 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var257) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6317 if (varonce261) {
6318 var262 = varonce261;
6319 } else {
6320 var263 = "\11}else{";
6321 var264 = 7;
6322 var265 = string__NativeString__to_s_with_length(var263, var264);
6323 var262 = var265;
6324 varonce261 = var262;
6325 }
6326 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var262) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6327 if (varonce266) {
6328 var267 = varonce266;
6329 } else {
6330 var268 = "\11\11printf(\"` %s\\n\", procname);";
6331 var269 = 29;
6332 var270 = string__NativeString__to_s_with_length(var268, var269);
6333 var267 = var270;
6334 varonce266 = var267;
6335 }
6336 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var267) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6337 if (varonce271) {
6338 var272 = varonce271;
6339 } else {
6340 var273 = "\11}";
6341 var274 = 2;
6342 var275 = string__NativeString__to_s_with_length(var273, var274);
6343 var272 = var275;
6344 varonce271 = var272;
6345 }
6346 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var272) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6347 } else {
6348 if (varonce276) {
6349 var277 = varonce276;
6350 } else {
6351 var278 = "\11printf(\"` %s \\n\",procname);";
6352 var279 = 28;
6353 var280 = string__NativeString__to_s_with_length(var278, var279);
6354 var277 = var280;
6355 varonce276 = var277;
6356 }
6357 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var277) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6358 }
6359 if (varonce281) {
6360 var282 = varonce281;
6361 } else {
6362 var283 = "}";
6363 var284 = 1;
6364 var285 = string__NativeString__to_s_with_length(var283, var284);
6365 var282 = var285;
6366 varonce281 = var282;
6367 }
6368 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var282) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6369 if (varonce286) {
6370 var287 = varonce286;
6371 } else {
6372 var288 = "printf(\"-------------------------------------------------\\n\");";
6373 var289 = 62;
6374 var290 = string__NativeString__to_s_with_length(var288, var289);
6375 var287 = var290;
6376 varonce286 = var287;
6377 }
6378 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var287) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6379 if (varonce291) {
6380 var292 = varonce291;
6381 } else {
6382 var293 = "free(procname);";
6383 var294 = 15;
6384 var295 = string__NativeString__to_s_with_length(var293, var294);
6385 var292 = var295;
6386 varonce291 = var292;
6387 }
6388 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var292) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6389 if (varonce296) {
6390 var297 = varonce296;
6391 } else {
6392 var298 = "}";
6393 var299 = 1;
6394 var300 = string__NativeString__to_s_with_length(var298, var299);
6395 var297 = var300;
6396 varonce296 = var297;
6397 }
6398 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var297) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6399 } else {
6400 }
6401 if (varonce301) {
6402 var302 = varonce301;
6403 } else {
6404 var303 = "exit(signo);";
6405 var304 = 12;
6406 var305 = string__NativeString__to_s_with_length(var303, var304);
6407 var302 = var305;
6408 varonce301 = var302;
6409 }
6410 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var302) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6411 if (varonce306) {
6412 var307 = varonce306;
6413 } else {
6414 var308 = "}";
6415 var309 = 1;
6416 var310 = string__NativeString__to_s_with_length(var308, var309);
6417 var307 = var310;
6418 varonce306 = var307;
6419 }
6420 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var307) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6421 if (varonce311) {
6422 var312 = varonce311;
6423 } else {
6424 var313 = "int main(int argc, char** argv) {";
6425 var314 = 33;
6426 var315 = string__NativeString__to_s_with_length(var313, var314);
6427 var312 = var315;
6428 varonce311 = var312;
6429 }
6430 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var312) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6431 if (varonce316) {
6432 var317 = varonce316;
6433 } else {
6434 var318 = "signal(SIGABRT, sig_handler);";
6435 var319 = 29;
6436 var320 = string__NativeString__to_s_with_length(var318, var319);
6437 var317 = var320;
6438 varonce316 = var317;
6439 }
6440 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var317) /* add on <var_v:AbstractCompilerVisitor>*/;
6441 if (varonce321) {
6442 var322 = varonce321;
6443 } else {
6444 var323 = "signal(SIGFPE, sig_handler);";
6445 var324 = 28;
6446 var325 = string__NativeString__to_s_with_length(var323, var324);
6447 var322 = var325;
6448 varonce321 = var322;
6449 }
6450 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var322) /* add on <var_v:AbstractCompilerVisitor>*/;
6451 if (varonce326) {
6452 var327 = varonce326;
6453 } else {
6454 var328 = "signal(SIGILL, sig_handler);";
6455 var329 = 28;
6456 var330 = string__NativeString__to_s_with_length(var328, var329);
6457 var327 = var330;
6458 varonce326 = var327;
6459 }
6460 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var327) /* add on <var_v:AbstractCompilerVisitor>*/;
6461 if (varonce331) {
6462 var332 = varonce331;
6463 } else {
6464 var333 = "signal(SIGINT, sig_handler);";
6465 var334 = 28;
6466 var335 = string__NativeString__to_s_with_length(var333, var334);
6467 var332 = var335;
6468 varonce331 = var332;
6469 }
6470 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var332) /* add on <var_v:AbstractCompilerVisitor>*/;
6471 if (varonce336) {
6472 var337 = varonce336;
6473 } else {
6474 var338 = "signal(SIGTERM, sig_handler);";
6475 var339 = 29;
6476 var340 = string__NativeString__to_s_with_length(var338, var339);
6477 var337 = var340;
6478 varonce336 = var337;
6479 }
6480 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var337) /* add on <var_v:AbstractCompilerVisitor>*/;
6481 if (varonce341) {
6482 var342 = varonce341;
6483 } else {
6484 var343 = "signal(SIGSEGV, sig_handler);";
6485 var344 = 29;
6486 var345 = string__NativeString__to_s_with_length(var343, var344);
6487 var342 = var345;
6488 varonce341 = var342;
6489 }
6490 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var342) /* add on <var_v:AbstractCompilerVisitor>*/;
6491 if (varonce346) {
6492 var347 = varonce346;
6493 } else {
6494 var348 = "glob_argc = argc; glob_argv = argv;";
6495 var349 = 35;
6496 var350 = string__NativeString__to_s_with_length(var348, var349);
6497 var347 = var350;
6498 varonce346 = var347;
6499 }
6500 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var347) /* add on <var_v:AbstractCompilerVisitor>*/;
6501 if (varonce351) {
6502 var352 = varonce351;
6503 } else {
6504 var353 = "initialize_gc_option();";
6505 var354 = 23;
6506 var355 = string__NativeString__to_s_with_length(var353, var354);
6507 var352 = var355;
6508 varonce351 = var352;
6509 }
6510 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var352) /* add on <var_v:AbstractCompilerVisitor>*/;
6511 var356 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:AbstractCompiler>*/;
6512 var357 = ((val* (*)(val*))(var356->class->vft[COLOR_model__MModule__sys_type]))(var356) /* sys_type on <var356:MModule>*/;
6513 var_main_type = var357;
6514 var358 = NULL;
6515 if (var_main_type == NULL) {
6516 var359 = 0; /* is null */
6517 } else {
6518 var359 = 1; /* arg is null and recv is not */
6519 }
6520 if (var359){
6521 var360 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(var_v) /* compiler on <var_v:AbstractCompilerVisitor>*/;
6522 var361 = ((val* (*)(val*))(var360->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var360) /* mainmodule on <var360:AbstractCompiler>*/;
6523 var_mainmodule = var361;
6524 var362 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__init_instance]))(var_v, var_main_type) /* init_instance on <var_v:AbstractCompilerVisitor>*/;
6525 var_glob_sys = var362;
6526 if (varonce363) {
6527 var364 = varonce363;
6528 } else {
6529 var365 = "glob_sys = ";
6530 var366 = 11;
6531 var367 = string__NativeString__to_s_with_length(var365, var366);
6532 var364 = var367;
6533 varonce363 = var364;
6534 }
6535 if (varonce368) {
6536 var369 = varonce368;
6537 } else {
6538 var370 = ";";
6539 var371 = 1;
6540 var372 = string__NativeString__to_s_with_length(var370, var371);
6541 var369 = var372;
6542 varonce368 = var369;
6543 }
6544 var373 = NEW_array__Array(&type_array__Arraykernel__Object);
6545 { /* var373 = array_instance Array[Object] */
6546 var374 = 3;
6547 var375 = NEW_array__NativeArray(var374, &type_array__NativeArraykernel__Object);
6548 ((struct instance_array__NativeArray*)var375)->values[0] = (val*) var364;
6549 ((struct instance_array__NativeArray*)var375)->values[1] = (val*) var_glob_sys;
6550 ((struct instance_array__NativeArray*)var375)->values[2] = (val*) var369;
6551 ((void (*)(val*, val*, long))(var373->class->vft[COLOR_array__Array__with_native]))(var373, var375, var374) /* with_native on <var373:Array[Object]>*/;
6552 }
6553 var376 = ((val* (*)(val*))(var373->class->vft[COLOR_string__Object__to_s]))(var373) /* to_s on <var373:Array[Object]>*/;
6554 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var376) /* add on <var_v:AbstractCompilerVisitor>*/;
6555 if (varonce377) {
6556 var378 = varonce377;
6557 } else {
6558 var379 = "init";
6559 var380 = 4;
6560 var381 = string__NativeString__to_s_with_length(var379, var380);
6561 var378 = var381;
6562 varonce377 = var378;
6563 }
6564 var382 = ((val* (*)(val*))(var_main_type->class->vft[COLOR_model__MClassType__mclass]))(var_main_type) /* mclass on <var_main_type:nullable MClassType(MClassType)>*/;
6565 var383 = ((val* (*)(val*, val*, val*))(var_mainmodule->class->vft[COLOR_model__MModule__try_get_primitive_method]))(var_mainmodule, var378, var382) /* try_get_primitive_method on <var_mainmodule:MModule>*/;
6566 var_main_init = var383;
6567 var384 = NULL;
6568 if (var_main_init == NULL) {
6569 var385 = 0; /* is null */
6570 } else {
6571 var385 = 1; /* arg is null and recv is not */
6572 }
6573 if (var385){
6574 var386 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
6575 { /* var386 = array_instance Array[RuntimeVariable] */
6576 var387 = 1;
6577 var388 = NEW_array__NativeArray(var387, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
6578 ((struct instance_array__NativeArray*)var388)->values[0] = (val*) var_glob_sys;
6579 ((void (*)(val*, val*, long))(var386->class->vft[COLOR_array__Array__with_native]))(var386, var388, var387) /* with_native on <var386:Array[RuntimeVariable]>*/;
6580 }
6581 var389 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(var_v, var_main_init, var386) /* send on <var_v:AbstractCompilerVisitor>*/;
6582 var389;
6583 } else {
6584 }
6585 if (varonce390) {
6586 var391 = varonce390;
6587 } else {
6588 var392 = "main";
6589 var393 = 4;
6590 var394 = string__NativeString__to_s_with_length(var392, var393);
6591 var391 = var394;
6592 varonce390 = var391;
6593 }
6594 var395 = ((val* (*)(val*))(var_main_type->class->vft[COLOR_model__MClassType__mclass]))(var_main_type) /* mclass on <var_main_type:nullable MClassType(MClassType)>*/;
6595 var396 = ((val* (*)(val*, val*, val*))(var_mainmodule->class->vft[COLOR_model__MModule__try_get_primitive_method]))(var_mainmodule, var391, var395) /* try_get_primitive_method on <var_mainmodule:MModule>*/;
6596 var_main_method = var396;
6597 var397 = NULL;
6598 if (var_main_method == NULL) {
6599 var398 = 0; /* is null */
6600 } else {
6601 var398 = 1; /* arg is null and recv is not */
6602 }
6603 if (var398){
6604 var399 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
6605 { /* var399 = array_instance Array[RuntimeVariable] */
6606 var400 = 1;
6607 var401 = NEW_array__NativeArray(var400, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
6608 ((struct instance_array__NativeArray*)var401)->values[0] = (val*) var_glob_sys;
6609 ((void (*)(val*, val*, long))(var399->class->vft[COLOR_array__Array__with_native]))(var399, var401, var400) /* with_native on <var399:Array[RuntimeVariable]>*/;
6610 }
6611 var402 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(var_v, var_main_method, var399) /* send on <var_v:AbstractCompilerVisitor>*/;
6612 var402;
6613 } else {
6614 }
6615 } else {
6616 }
6617 var403 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
6618 var404 = ((val* (*)(val*))(var403->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var403) /* toolcontext on <var403:ModelBuilder>*/;
6619 var405 = ((val* (*)(val*))(var404->class->vft[COLOR_abstract_compiler__ToolContext__opt_typing_test_metrics]))(var404) /* opt_typing_test_metrics on <var404:ToolContext>*/;
6620 var406 = ((val* (*)(val*))(var405->class->vft[COLOR_opts__Option__value]))(var405) /* value on <var405:OptionBool>*/;
6621 var407 = ((struct instance_kernel__Bool*)var406)->value; /* autounbox from nullable Object to Bool */;
6622 if (var407){
6623 if (varonce408) {
6624 var409 = varonce408;
6625 } else {
6626 var410 = "long count_type_test_resolved_total = 0;";
6627 var411 = 40;
6628 var412 = string__NativeString__to_s_with_length(var410, var411);
6629 var409 = var412;
6630 varonce408 = var409;
6631 }
6632 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var409) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6633 if (varonce413) {
6634 var414 = varonce413;
6635 } else {
6636 var415 = "long count_type_test_unresolved_total = 0;";
6637 var416 = 42;
6638 var417 = string__NativeString__to_s_with_length(var415, var416);
6639 var414 = var417;
6640 varonce413 = var414;
6641 }
6642 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var414) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6643 if (varonce418) {
6644 var419 = varonce418;
6645 } else {
6646 var420 = "long count_type_test_skipped_total = 0;";
6647 var421 = 39;
6648 var422 = string__NativeString__to_s_with_length(var420, var421);
6649 var419 = var422;
6650 varonce418 = var419;
6651 }
6652 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var419) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6653 if (varonce423) {
6654 var424 = varonce423;
6655 } else {
6656 var425 = "long count_type_test_total_total = 0;";
6657 var426 = 37;
6658 var427 = string__NativeString__to_s_with_length(var425, var426);
6659 var424 = var427;
6660 varonce423 = var424;
6661 }
6662 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var424) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6663 var428 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_tags]))(self) /* count_type_test_tags on <self:AbstractCompiler>*/;
6664 var429 = ((val* (*)(val*))(var428->class->vft[COLOR_abstract_collection__Collection__iterator]))(var428) /* iterator on <var428:Array[String]>*/;
6665 for(;;) {
6666 var430 = ((short int (*)(val*))(var429->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var429) /* is_ok on <var429:Iterator[nullable Object]>*/;
6667 if(!var430) break;
6668 var431 = ((val* (*)(val*))(var429->class->vft[COLOR_abstract_collection__Iterator__item]))(var429) /* item on <var429:Iterator[nullable Object]>*/;
6669 var_tag432 = var431;
6670 if (varonce433) {
6671 var434 = varonce433;
6672 } else {
6673 var435 = "long count_type_test_total_";
6674 var436 = 27;
6675 var437 = string__NativeString__to_s_with_length(var435, var436);
6676 var434 = var437;
6677 varonce433 = var434;
6678 }
6679 if (varonce438) {
6680 var439 = varonce438;
6681 } else {
6682 var440 = ";";
6683 var441 = 1;
6684 var442 = string__NativeString__to_s_with_length(var440, var441);
6685 var439 = var442;
6686 varonce438 = var439;
6687 }
6688 var443 = NEW_array__Array(&type_array__Arraykernel__Object);
6689 { /* var443 = array_instance Array[Object] */
6690 var444 = 3;
6691 var445 = NEW_array__NativeArray(var444, &type_array__NativeArraykernel__Object);
6692 ((struct instance_array__NativeArray*)var445)->values[0] = (val*) var434;
6693 ((struct instance_array__NativeArray*)var445)->values[1] = (val*) var_tag432;
6694 ((struct instance_array__NativeArray*)var445)->values[2] = (val*) var439;
6695 ((void (*)(val*, val*, long))(var443->class->vft[COLOR_array__Array__with_native]))(var443, var445, var444) /* with_native on <var443:Array[Object]>*/;
6696 }
6697 var446 = ((val* (*)(val*))(var443->class->vft[COLOR_string__Object__to_s]))(var443) /* to_s on <var443:Array[Object]>*/;
6698 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var446) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
6699 if (varonce447) {
6700 var448 = varonce447;
6701 } else {
6702 var449 = "count_type_test_total_";
6703 var450 = 22;
6704 var451 = string__NativeString__to_s_with_length(var449, var450);
6705 var448 = var451;
6706 varonce447 = var448;
6707 }
6708 if (varonce452) {
6709 var453 = varonce452;
6710 } else {
6711 var454 = " = count_type_test_resolved_";
6712 var455 = 28;
6713 var456 = string__NativeString__to_s_with_length(var454, var455);
6714 var453 = var456;
6715 varonce452 = var453;
6716 }
6717 if (varonce457) {
6718 var458 = varonce457;
6719 } else {
6720 var459 = " + count_type_test_unresolved_";
6721 var460 = 30;
6722 var461 = string__NativeString__to_s_with_length(var459, var460);
6723 var458 = var461;
6724 varonce457 = var458;
6725 }
6726 if (varonce462) {
6727 var463 = varonce462;
6728 } else {
6729 var464 = " + count_type_test_skipped_";
6730 var465 = 27;
6731 var466 = string__NativeString__to_s_with_length(var464, var465);
6732 var463 = var466;
6733 varonce462 = var463;
6734 }
6735 if (varonce467) {
6736 var468 = varonce467;
6737 } else {
6738 var469 = ";";
6739 var470 = 1;
6740 var471 = string__NativeString__to_s_with_length(var469, var470);
6741 var468 = var471;
6742 varonce467 = var468;
6743 }
6744 var472 = NEW_array__Array(&type_array__Arraykernel__Object);
6745 { /* var472 = array_instance Array[Object] */
6746 var473 = 9;
6747 var474 = NEW_array__NativeArray(var473, &type_array__NativeArraykernel__Object);
6748 ((struct instance_array__NativeArray*)var474)->values[0] = (val*) var448;
6749 ((struct instance_array__NativeArray*)var474)->values[1] = (val*) var_tag432;
6750 ((struct instance_array__NativeArray*)var474)->values[2] = (val*) var453;
6751 ((struct instance_array__NativeArray*)var474)->values[3] = (val*) var_tag432;
6752 ((struct instance_array__NativeArray*)var474)->values[4] = (val*) var458;
6753 ((struct instance_array__NativeArray*)var474)->values[5] = (val*) var_tag432;
6754 ((struct instance_array__NativeArray*)var474)->values[6] = (val*) var463;
6755 ((struct instance_array__NativeArray*)var474)->values[7] = (val*) var_tag432;
6756 ((struct instance_array__NativeArray*)var474)->values[8] = (val*) var468;
6757 ((void (*)(val*, val*, long))(var472->class->vft[COLOR_array__Array__with_native]))(var472, var474, var473) /* with_native on <var472:Array[Object]>*/;
6758 }
6759 var475 = ((val* (*)(val*))(var472->class->vft[COLOR_string__Object__to_s]))(var472) /* to_s on <var472:Array[Object]>*/;
6760 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var475) /* add on <var_v:AbstractCompilerVisitor>*/;
6761 if (varonce476) {
6762 var477 = varonce476;
6763 } else {
6764 var478 = "count_type_test_resolved_total += count_type_test_resolved_";
6765 var479 = 59;
6766 var480 = string__NativeString__to_s_with_length(var478, var479);
6767 var477 = var480;
6768 varonce476 = var477;
6769 }
6770 if (varonce481) {
6771 var482 = varonce481;
6772 } else {
6773 var483 = ";";
6774 var484 = 1;
6775 var485 = string__NativeString__to_s_with_length(var483, var484);
6776 var482 = var485;
6777 varonce481 = var482;
6778 }
6779 var486 = NEW_array__Array(&type_array__Arraykernel__Object);
6780 { /* var486 = array_instance Array[Object] */
6781 var487 = 3;
6782 var488 = NEW_array__NativeArray(var487, &type_array__NativeArraykernel__Object);
6783 ((struct instance_array__NativeArray*)var488)->values[0] = (val*) var477;
6784 ((struct instance_array__NativeArray*)var488)->values[1] = (val*) var_tag432;
6785 ((struct instance_array__NativeArray*)var488)->values[2] = (val*) var482;
6786 ((void (*)(val*, val*, long))(var486->class->vft[COLOR_array__Array__with_native]))(var486, var488, var487) /* with_native on <var486:Array[Object]>*/;
6787 }
6788 var489 = ((val* (*)(val*))(var486->class->vft[COLOR_string__Object__to_s]))(var486) /* to_s on <var486:Array[Object]>*/;
6789 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var489) /* add on <var_v:AbstractCompilerVisitor>*/;
6790 if (varonce490) {
6791 var491 = varonce490;
6792 } else {
6793 var492 = "count_type_test_unresolved_total += count_type_test_unresolved_";
6794 var493 = 63;
6795 var494 = string__NativeString__to_s_with_length(var492, var493);
6796 var491 = var494;
6797 varonce490 = var491;
6798 }
6799 if (varonce495) {
6800 var496 = varonce495;
6801 } else {
6802 var497 = ";";
6803 var498 = 1;
6804 var499 = string__NativeString__to_s_with_length(var497, var498);
6805 var496 = var499;
6806 varonce495 = var496;
6807 }
6808 var500 = NEW_array__Array(&type_array__Arraykernel__Object);
6809 { /* var500 = array_instance Array[Object] */
6810 var501 = 3;
6811 var502 = NEW_array__NativeArray(var501, &type_array__NativeArraykernel__Object);
6812 ((struct instance_array__NativeArray*)var502)->values[0] = (val*) var491;
6813 ((struct instance_array__NativeArray*)var502)->values[1] = (val*) var_tag432;
6814 ((struct instance_array__NativeArray*)var502)->values[2] = (val*) var496;
6815 ((void (*)(val*, val*, long))(var500->class->vft[COLOR_array__Array__with_native]))(var500, var502, var501) /* with_native on <var500:Array[Object]>*/;
6816 }
6817 var503 = ((val* (*)(val*))(var500->class->vft[COLOR_string__Object__to_s]))(var500) /* to_s on <var500:Array[Object]>*/;
6818 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var503) /* add on <var_v:AbstractCompilerVisitor>*/;
6819 if (varonce504) {
6820 var505 = varonce504;
6821 } else {
6822 var506 = "count_type_test_skipped_total += count_type_test_skipped_";
6823 var507 = 57;
6824 var508 = string__NativeString__to_s_with_length(var506, var507);
6825 var505 = var508;
6826 varonce504 = var505;
6827 }
6828 if (varonce509) {
6829 var510 = varonce509;
6830 } else {
6831 var511 = ";";
6832 var512 = 1;
6833 var513 = string__NativeString__to_s_with_length(var511, var512);
6834 var510 = var513;
6835 varonce509 = var510;
6836 }
6837 var514 = NEW_array__Array(&type_array__Arraykernel__Object);
6838 { /* var514 = array_instance Array[Object] */
6839 var515 = 3;
6840 var516 = NEW_array__NativeArray(var515, &type_array__NativeArraykernel__Object);
6841 ((struct instance_array__NativeArray*)var516)->values[0] = (val*) var505;
6842 ((struct instance_array__NativeArray*)var516)->values[1] = (val*) var_tag432;
6843 ((struct instance_array__NativeArray*)var516)->values[2] = (val*) var510;
6844 ((void (*)(val*, val*, long))(var514->class->vft[COLOR_array__Array__with_native]))(var514, var516, var515) /* with_native on <var514:Array[Object]>*/;
6845 }
6846 var517 = ((val* (*)(val*))(var514->class->vft[COLOR_string__Object__to_s]))(var514) /* to_s on <var514:Array[Object]>*/;
6847 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var517) /* add on <var_v:AbstractCompilerVisitor>*/;
6848 if (varonce518) {
6849 var519 = varonce518;
6850 } else {
6851 var520 = "count_type_test_total_total += count_type_test_total_";
6852 var521 = 53;
6853 var522 = string__NativeString__to_s_with_length(var520, var521);
6854 var519 = var522;
6855 varonce518 = var519;
6856 }
6857 if (varonce523) {
6858 var524 = varonce523;
6859 } else {
6860 var525 = ";";
6861 var526 = 1;
6862 var527 = string__NativeString__to_s_with_length(var525, var526);
6863 var524 = var527;
6864 varonce523 = var524;
6865 }
6866 var528 = NEW_array__Array(&type_array__Arraykernel__Object);
6867 { /* var528 = array_instance Array[Object] */
6868 var529 = 3;
6869 var530 = NEW_array__NativeArray(var529, &type_array__NativeArraykernel__Object);
6870 ((struct instance_array__NativeArray*)var530)->values[0] = (val*) var519;
6871 ((struct instance_array__NativeArray*)var530)->values[1] = (val*) var_tag432;
6872 ((struct instance_array__NativeArray*)var530)->values[2] = (val*) var524;
6873 ((void (*)(val*, val*, long))(var528->class->vft[COLOR_array__Array__with_native]))(var528, var530, var529) /* with_native on <var528:Array[Object]>*/;
6874 }
6875 var531 = ((val* (*)(val*))(var528->class->vft[COLOR_string__Object__to_s]))(var528) /* to_s on <var528:Array[Object]>*/;
6876 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var531) /* add on <var_v:AbstractCompilerVisitor>*/;
6877 CONTINUE_label532: (void)0;
6878 ((void (*)(val*))(var429->class->vft[COLOR_abstract_collection__Iterator__next]))(var429) /* next on <var429:Iterator[nullable Object]>*/;
6879 }
6880 BREAK_label532: (void)0;
6881 if (varonce533) {
6882 var534 = varonce533;
6883 } else {
6884 var535 = "printf(\"# dynamic count_type_test: total %l\\n\");";
6885 var536 = 48;
6886 var537 = string__NativeString__to_s_with_length(var535, var536);
6887 var534 = var537;
6888 varonce533 = var534;
6889 }
6890 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var534) /* add on <var_v:AbstractCompilerVisitor>*/;
6891 if (varonce538) {
6892 var539 = varonce538;
6893 } else {
6894 var540 = "printf(\"\\tresolved\\tunresolved\\tskipped\\ttotal\\n\");";
6895 var541 = 51;
6896 var542 = string__NativeString__to_s_with_length(var540, var541);
6897 var539 = var542;
6898 varonce538 = var539;
6899 }
6900 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var539) /* add on <var_v:AbstractCompilerVisitor>*/;
6901 var543 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_tags]))(self) /* count_type_test_tags on <self:AbstractCompiler>*/;
6902 var544 = ((val* (*)(val*))(var543->class->vft[COLOR_array__Collection__to_a]))(var543) /* to_a on <var543:Array[String]>*/;
6903 var_tags = var544;
6904 if (varonce545) {
6905 var546 = varonce545;
6906 } else {
6907 var547 = "total";
6908 var548 = 5;
6909 var549 = string__NativeString__to_s_with_length(var547, var548);
6910 var546 = var549;
6911 varonce545 = var546;
6912 }
6913 ((void (*)(val*, val*))(var_tags->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_tags, var546) /* add on <var_tags:Array[String]>*/;
6914 var550 = ((val* (*)(val*))(var_tags->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_tags) /* iterator on <var_tags:Array[String]>*/;
6915 for(;;) {
6916 var551 = ((short int (*)(val*))(var550->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var550) /* is_ok on <var550:Iterator[nullable Object]>*/;
6917 if(!var551) break;
6918 var552 = ((val* (*)(val*))(var550->class->vft[COLOR_abstract_collection__Iterator__item]))(var550) /* item on <var550:Iterator[nullable Object]>*/;
6919 var_tag553 = var552;
6920 if (varonce554) {
6921 var555 = varonce554;
6922 } else {
6923 var556 = "printf(\"";
6924 var557 = 8;
6925 var558 = string__NativeString__to_s_with_length(var556, var557);
6926 var555 = var558;
6927 varonce554 = var555;
6928 }
6929 if (varonce559) {
6930 var560 = varonce559;
6931 } else {
6932 var561 = "\");";
6933 var562 = 3;
6934 var563 = string__NativeString__to_s_with_length(var561, var562);
6935 var560 = var563;
6936 varonce559 = var560;
6937 }
6938 var564 = NEW_array__Array(&type_array__Arraykernel__Object);
6939 { /* var564 = array_instance Array[Object] */
6940 var565 = 3;
6941 var566 = NEW_array__NativeArray(var565, &type_array__NativeArraykernel__Object);
6942 ((struct instance_array__NativeArray*)var566)->values[0] = (val*) var555;
6943 ((struct instance_array__NativeArray*)var566)->values[1] = (val*) var_tag553;
6944 ((struct instance_array__NativeArray*)var566)->values[2] = (val*) var560;
6945 ((void (*)(val*, val*, long))(var564->class->vft[COLOR_array__Array__with_native]))(var564, var566, var565) /* with_native on <var564:Array[Object]>*/;
6946 }
6947 var567 = ((val* (*)(val*))(var564->class->vft[COLOR_string__Object__to_s]))(var564) /* to_s on <var564:Array[Object]>*/;
6948 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var567) /* add on <var_v:AbstractCompilerVisitor>*/;
6949 if (varonce568) {
6950 var569 = varonce568;
6951 } else {
6952 var570 = "printf(\"\\t%ld (%.2f%%)\", count_type_test_resolved_";
6953 var571 = 50;
6954 var572 = string__NativeString__to_s_with_length(var570, var571);
6955 var569 = var572;
6956 varonce568 = var569;
6957 }
6958 if (varonce573) {
6959 var574 = varonce573;
6960 } else {
6961 var575 = ", 100.0*count_type_test_resolved_";
6962 var576 = 33;
6963 var577 = string__NativeString__to_s_with_length(var575, var576);
6964 var574 = var577;
6965 varonce573 = var574;
6966 }
6967 if (varonce578) {
6968 var579 = varonce578;
6969 } else {
6970 var580 = "/count_type_test_total_total);";
6971 var581 = 30;
6972 var582 = string__NativeString__to_s_with_length(var580, var581);
6973 var579 = var582;
6974 varonce578 = var579;
6975 }
6976 var583 = NEW_array__Array(&type_array__Arraykernel__Object);
6977 { /* var583 = array_instance Array[Object] */
6978 var584 = 5;
6979 var585 = NEW_array__NativeArray(var584, &type_array__NativeArraykernel__Object);
6980 ((struct instance_array__NativeArray*)var585)->values[0] = (val*) var569;
6981 ((struct instance_array__NativeArray*)var585)->values[1] = (val*) var_tag553;
6982 ((struct instance_array__NativeArray*)var585)->values[2] = (val*) var574;
6983 ((struct instance_array__NativeArray*)var585)->values[3] = (val*) var_tag553;
6984 ((struct instance_array__NativeArray*)var585)->values[4] = (val*) var579;
6985 ((void (*)(val*, val*, long))(var583->class->vft[COLOR_array__Array__with_native]))(var583, var585, var584) /* with_native on <var583:Array[Object]>*/;
6986 }
6987 var586 = ((val* (*)(val*))(var583->class->vft[COLOR_string__Object__to_s]))(var583) /* to_s on <var583:Array[Object]>*/;
6988 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var586) /* add on <var_v:AbstractCompilerVisitor>*/;
6989 if (varonce587) {
6990 var588 = varonce587;
6991 } else {
6992 var589 = "printf(\"\\t%ld (%.2f%%)\", count_type_test_unresolved_";
6993 var590 = 52;
6994 var591 = string__NativeString__to_s_with_length(var589, var590);
6995 var588 = var591;
6996 varonce587 = var588;
6997 }
6998 if (varonce592) {
6999 var593 = varonce592;
7000 } else {
7001 var594 = ", 100.0*count_type_test_unresolved_";
7002 var595 = 35;
7003 var596 = string__NativeString__to_s_with_length(var594, var595);
7004 var593 = var596;
7005 varonce592 = var593;
7006 }
7007 if (varonce597) {
7008 var598 = varonce597;
7009 } else {
7010 var599 = "/count_type_test_total_total);";
7011 var600 = 30;
7012 var601 = string__NativeString__to_s_with_length(var599, var600);
7013 var598 = var601;
7014 varonce597 = var598;
7015 }
7016 var602 = NEW_array__Array(&type_array__Arraykernel__Object);
7017 { /* var602 = array_instance Array[Object] */
7018 var603 = 5;
7019 var604 = NEW_array__NativeArray(var603, &type_array__NativeArraykernel__Object);
7020 ((struct instance_array__NativeArray*)var604)->values[0] = (val*) var588;
7021 ((struct instance_array__NativeArray*)var604)->values[1] = (val*) var_tag553;
7022 ((struct instance_array__NativeArray*)var604)->values[2] = (val*) var593;
7023 ((struct instance_array__NativeArray*)var604)->values[3] = (val*) var_tag553;
7024 ((struct instance_array__NativeArray*)var604)->values[4] = (val*) var598;
7025 ((void (*)(val*, val*, long))(var602->class->vft[COLOR_array__Array__with_native]))(var602, var604, var603) /* with_native on <var602:Array[Object]>*/;
7026 }
7027 var605 = ((val* (*)(val*))(var602->class->vft[COLOR_string__Object__to_s]))(var602) /* to_s on <var602:Array[Object]>*/;
7028 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var605) /* add on <var_v:AbstractCompilerVisitor>*/;
7029 if (varonce606) {
7030 var607 = varonce606;
7031 } else {
7032 var608 = "printf(\"\\t%ld (%.2f%%)\", count_type_test_skipped_";
7033 var609 = 49;
7034 var610 = string__NativeString__to_s_with_length(var608, var609);
7035 var607 = var610;
7036 varonce606 = var607;
7037 }
7038 if (varonce611) {
7039 var612 = varonce611;
7040 } else {
7041 var613 = ", 100.0*count_type_test_skipped_";
7042 var614 = 32;
7043 var615 = string__NativeString__to_s_with_length(var613, var614);
7044 var612 = var615;
7045 varonce611 = var612;
7046 }
7047 if (varonce616) {
7048 var617 = varonce616;
7049 } else {
7050 var618 = "/count_type_test_total_total);";
7051 var619 = 30;
7052 var620 = string__NativeString__to_s_with_length(var618, var619);
7053 var617 = var620;
7054 varonce616 = var617;
7055 }
7056 var621 = NEW_array__Array(&type_array__Arraykernel__Object);
7057 { /* var621 = array_instance Array[Object] */
7058 var622 = 5;
7059 var623 = NEW_array__NativeArray(var622, &type_array__NativeArraykernel__Object);
7060 ((struct instance_array__NativeArray*)var623)->values[0] = (val*) var607;
7061 ((struct instance_array__NativeArray*)var623)->values[1] = (val*) var_tag553;
7062 ((struct instance_array__NativeArray*)var623)->values[2] = (val*) var612;
7063 ((struct instance_array__NativeArray*)var623)->values[3] = (val*) var_tag553;
7064 ((struct instance_array__NativeArray*)var623)->values[4] = (val*) var617;
7065 ((void (*)(val*, val*, long))(var621->class->vft[COLOR_array__Array__with_native]))(var621, var623, var622) /* with_native on <var621:Array[Object]>*/;
7066 }
7067 var624 = ((val* (*)(val*))(var621->class->vft[COLOR_string__Object__to_s]))(var621) /* to_s on <var621:Array[Object]>*/;
7068 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var624) /* add on <var_v:AbstractCompilerVisitor>*/;
7069 if (varonce625) {
7070 var626 = varonce625;
7071 } else {
7072 var627 = "printf(\"\\t%ld (%.2f%%)\\n\", count_type_test_total_";
7073 var628 = 49;
7074 var629 = string__NativeString__to_s_with_length(var627, var628);
7075 var626 = var629;
7076 varonce625 = var626;
7077 }
7078 if (varonce630) {
7079 var631 = varonce630;
7080 } else {
7081 var632 = ", 100.0*count_type_test_total_";
7082 var633 = 30;
7083 var634 = string__NativeString__to_s_with_length(var632, var633);
7084 var631 = var634;
7085 varonce630 = var631;
7086 }
7087 if (varonce635) {
7088 var636 = varonce635;
7089 } else {
7090 var637 = "/count_type_test_total_total);";
7091 var638 = 30;
7092 var639 = string__NativeString__to_s_with_length(var637, var638);
7093 var636 = var639;
7094 varonce635 = var636;
7095 }
7096 var640 = NEW_array__Array(&type_array__Arraykernel__Object);
7097 { /* var640 = array_instance Array[Object] */
7098 var641 = 5;
7099 var642 = NEW_array__NativeArray(var641, &type_array__NativeArraykernel__Object);
7100 ((struct instance_array__NativeArray*)var642)->values[0] = (val*) var626;
7101 ((struct instance_array__NativeArray*)var642)->values[1] = (val*) var_tag553;
7102 ((struct instance_array__NativeArray*)var642)->values[2] = (val*) var631;
7103 ((struct instance_array__NativeArray*)var642)->values[3] = (val*) var_tag553;
7104 ((struct instance_array__NativeArray*)var642)->values[4] = (val*) var636;
7105 ((void (*)(val*, val*, long))(var640->class->vft[COLOR_array__Array__with_native]))(var640, var642, var641) /* with_native on <var640:Array[Object]>*/;
7106 }
7107 var643 = ((val* (*)(val*))(var640->class->vft[COLOR_string__Object__to_s]))(var640) /* to_s on <var640:Array[Object]>*/;
7108 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var643) /* add on <var_v:AbstractCompilerVisitor>*/;
7109 CONTINUE_label644: (void)0;
7110 ((void (*)(val*))(var550->class->vft[COLOR_abstract_collection__Iterator__next]))(var550) /* next on <var550:Iterator[nullable Object]>*/;
7111 }
7112 BREAK_label644: (void)0;
7113 } else {
7114 }
7115 if (varonce645) {
7116 var646 = varonce645;
7117 } else {
7118 var647 = "return 0;";
7119 var648 = 9;
7120 var649 = string__NativeString__to_s_with_length(var647, var648);
7121 var646 = var649;
7122 varonce645 = var646;
7123 }
7124 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var646) /* add on <var_v:AbstractCompilerVisitor>*/;
7125 if (varonce650) {
7126 var651 = varonce650;
7127 } else {
7128 var652 = "}";
7129 var653 = 1;
7130 var654 = string__NativeString__to_s_with_length(var652, var653);
7131 var651 = var654;
7132 varonce650 = var651;
7133 }
7134 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var651) /* add on <var_v:AbstractCompilerVisitor>*/;
7135 RET_LABEL:;
7136 }
7137 /* method abstract_compiler#AbstractCompiler#compile_main_function for (self: Object) */
7138 void VIRTUAL_abstract_compiler__AbstractCompiler__compile_main_function(val* self) {
7139 abstract_compiler__AbstractCompiler__compile_main_function(self);
7140 RET_LABEL:;
7141 }
7142 /* method abstract_compiler#AbstractCompiler#extern_bodies for (self: AbstractCompiler): Array[ExternFile] */
7143 val* abstract_compiler__AbstractCompiler__extern_bodies(val* self) {
7144 val* var /* : Array[ExternFile] */;
7145 val* var1 /* : Array[ExternFile] */;
7146 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dextern_bodies].val; /* @extern_bodies on <self:AbstractCompiler> */
7147 if (var1 == NULL) {
7148 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @extern_bodies");
7149 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 618);
7150 show_backtrace(1);
7151 }
7152 var = var1;
7153 RET_LABEL:;
7154 return var;
7155 }
7156 /* method abstract_compiler#AbstractCompiler#extern_bodies for (self: Object): Array[ExternFile] */
7157 val* VIRTUAL_abstract_compiler__AbstractCompiler__extern_bodies(val* self) {
7158 val* var /* : Array[ExternFile] */;
7159 val* var1 /* : Array[ExternFile] */;
7160 var1 = abstract_compiler__AbstractCompiler__extern_bodies(self);
7161 var = var1;
7162 RET_LABEL:;
7163 return var;
7164 }
7165 /* method abstract_compiler#AbstractCompiler#extern_bodies= for (self: AbstractCompiler, Array[ExternFile]) */
7166 void abstract_compiler__AbstractCompiler__extern_bodies_61d(val* self, val* p0) {
7167 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dextern_bodies].val = p0; /* @extern_bodies on <self:AbstractCompiler> */
7168 RET_LABEL:;
7169 }
7170 /* method abstract_compiler#AbstractCompiler#extern_bodies= for (self: Object, Array[ExternFile]) */
7171 void VIRTUAL_abstract_compiler__AbstractCompiler__extern_bodies_61d(val* self, val* p0) {
7172 abstract_compiler__AbstractCompiler__extern_bodies_61d(self, p0);
7173 RET_LABEL:;
7174 }
7175 /* method abstract_compiler#AbstractCompiler#files_to_copy for (self: AbstractCompiler): Array[String] */
7176 val* abstract_compiler__AbstractCompiler__files_to_copy(val* self) {
7177 val* var /* : Array[String] */;
7178 val* var1 /* : Array[String] */;
7179 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dfiles_to_copy].val; /* @files_to_copy on <self:AbstractCompiler> */
7180 if (var1 == NULL) {
7181 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @files_to_copy");
7182 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 621);
7183 show_backtrace(1);
7184 }
7185 var = var1;
7186 RET_LABEL:;
7187 return var;
7188 }
7189 /* method abstract_compiler#AbstractCompiler#files_to_copy for (self: Object): Array[String] */
7190 val* VIRTUAL_abstract_compiler__AbstractCompiler__files_to_copy(val* self) {
7191 val* var /* : Array[String] */;
7192 val* var1 /* : Array[String] */;
7193 var1 = abstract_compiler__AbstractCompiler__files_to_copy(self);
7194 var = var1;
7195 RET_LABEL:;
7196 return var;
7197 }
7198 /* method abstract_compiler#AbstractCompiler#files_to_copy= for (self: AbstractCompiler, Array[String]) */
7199 void abstract_compiler__AbstractCompiler__files_to_copy_61d(val* self, val* p0) {
7200 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dfiles_to_copy].val = p0; /* @files_to_copy on <self:AbstractCompiler> */
7201 RET_LABEL:;
7202 }
7203 /* method abstract_compiler#AbstractCompiler#files_to_copy= for (self: Object, Array[String]) */
7204 void VIRTUAL_abstract_compiler__AbstractCompiler__files_to_copy_61d(val* self, val* p0) {
7205 abstract_compiler__AbstractCompiler__files_to_copy_61d(self, p0);
7206 RET_LABEL:;
7207 }
7208 /* method abstract_compiler#AbstractCompiler#seen_extern for (self: AbstractCompiler): ArraySet[String] */
7209 val* abstract_compiler__AbstractCompiler__seen_extern(val* self) {
7210 val* var /* : ArraySet[String] */;
7211 val* var1 /* : ArraySet[String] */;
7212 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dseen_extern].val; /* @seen_extern on <self:AbstractCompiler> */
7213 if (var1 == NULL) {
7214 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @seen_extern");
7215 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 624);
7216 show_backtrace(1);
7217 }
7218 var = var1;
7219 RET_LABEL:;
7220 return var;
7221 }
7222 /* method abstract_compiler#AbstractCompiler#seen_extern for (self: Object): ArraySet[String] */
7223 val* VIRTUAL_abstract_compiler__AbstractCompiler__seen_extern(val* self) {
7224 val* var /* : ArraySet[String] */;
7225 val* var1 /* : ArraySet[String] */;
7226 var1 = abstract_compiler__AbstractCompiler__seen_extern(self);
7227 var = var1;
7228 RET_LABEL:;
7229 return var;
7230 }
7231 /* method abstract_compiler#AbstractCompiler#seen_extern= for (self: AbstractCompiler, ArraySet[String]) */
7232 void abstract_compiler__AbstractCompiler__seen_extern_61d(val* self, val* p0) {
7233 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dseen_extern].val = p0; /* @seen_extern on <self:AbstractCompiler> */
7234 RET_LABEL:;
7235 }
7236 /* method abstract_compiler#AbstractCompiler#seen_extern= for (self: Object, ArraySet[String]) */
7237 void VIRTUAL_abstract_compiler__AbstractCompiler__seen_extern_61d(val* self, val* p0) {
7238 abstract_compiler__AbstractCompiler__seen_extern_61d(self, p0);
7239 RET_LABEL:;
7240 }
7241 /* method abstract_compiler#AbstractCompiler#generate_init_attr for (self: AbstractCompiler, AbstractCompilerVisitor, RuntimeVariable, MClassType) */
7242 void abstract_compiler__AbstractCompiler__generate_init_attr(val* self, val* p0, val* p1, val* p2) {
7243 short int var /* : Bool */;
7244 int cltype;
7245 int idtype;
7246 const struct type* type_struct;
7247 const char* var_class_name;
7248 val* var_v /* var v: AbstractCompilerVisitor */;
7249 val* var_recv /* var recv: RuntimeVariable */;
7250 val* var_mtype /* var mtype: MClassType */;
7251 val* var1 /* : MModule */;
7252 val* var2 /* : Set[MClassDef] */;
7253 val* var3 /* : Array[nullable Object] */;
7254 val* var_cds /* var cds: Array[MClassDef] */;
7255 val* var4 /* : MModule */;
7256 val* var5 /* : Iterator[nullable Object] */;
7257 short int var6 /* : Bool */;
7258 val* var7 /* : nullable Object */;
7259 val* var_cd /* var cd: MClassDef */;
7260 val* var8 /* : ModelBuilder */;
7261 val* var9 /* : HashMap[MClassDef, AClassdef] */;
7262 val* var10 /* : nullable Object */;
7263 val* var_n /* var n: AClassdef */;
7264 val* var11 /* : ANodes[APropdef] */;
7265 val* var12 /* : Iterator[nullable Object] */;
7266 short int var13 /* : Bool */;
7267 val* var14 /* : nullable Object */;
7268 val* var_npropdef /* var npropdef: APropdef */;
7269 short int var15 /* : Bool */;
7270 int cltype16;
7271 int idtype17;
7272 /* Covariant cast for argument 0 (v) <p0:AbstractCompilerVisitor> isa VISITOR */
7273 /* <p0:AbstractCompilerVisitor> isa VISITOR */
7274 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractCompiler_VTVISITOR];
7275 cltype = type_struct->color;
7276 idtype = type_struct->id;
7277 if(cltype >= p0->type->table_size) {
7278 var = 0;
7279 } else {
7280 var = p0->type->type_table[cltype] == idtype;
7281 }
7282 if (!var) {
7283 var_class_name = p0 == NULL ? "null" : p0->type->name;
7284 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
7285 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 627);
7286 show_backtrace(1);
7287 }
7288 var_v = p0;
7289 var_recv = p1;
7290 var_mtype = p2;
7291 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:AbstractCompiler>*/;
7292 var2 = ((val* (*)(val*, val*))(var_mtype->class->vft[COLOR_model__MType__collect_mclassdefs]))(var_mtype, var1) /* collect_mclassdefs on <var_mtype:MClassType>*/;
7293 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_array__Collection__to_a]))(var2) /* to_a on <var2:Set[MClassDef]>*/;
7294 var_cds = var3;
7295 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:AbstractCompiler>*/;
7296 ((void (*)(val*, val*))(var4->class->vft[COLOR_model__MModule__linearize_mclassdefs]))(var4, var_cds) /* linearize_mclassdefs on <var4:MModule>*/;
7297 var5 = ((val* (*)(val*))(var_cds->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_cds) /* iterator on <var_cds:Array[MClassDef]>*/;
7298 for(;;) {
7299 var6 = ((short int (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var5) /* is_ok on <var5:Iterator[nullable Object]>*/;
7300 if(!var6) break;
7301 var7 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__item]))(var5) /* item on <var5:Iterator[nullable Object]>*/;
7302 var_cd = var7;
7303 var8 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
7304 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_modelize_class__ModelBuilder__mclassdef2nclassdef]))(var8) /* mclassdef2nclassdef on <var8:ModelBuilder>*/;
7305 var10 = ((val* (*)(val*, val*))(var9->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var9, var_cd) /* [] on <var9:HashMap[MClassDef, AClassdef]>*/;
7306 var_n = var10;
7307 var11 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__AClassdef__n_propdefs]))(var_n) /* n_propdefs on <var_n:AClassdef>*/;
7308 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__Collection__iterator]))(var11) /* iterator on <var11:ANodes[APropdef]>*/;
7309 for(;;) {
7310 var13 = ((short int (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var12) /* is_ok on <var12:Iterator[nullable Object]>*/;
7311 if(!var13) break;
7312 var14 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__item]))(var12) /* item on <var12:Iterator[nullable Object]>*/;
7313 var_npropdef = var14;
7314 /* <var_npropdef:APropdef> isa AAttrPropdef */
7315 cltype16 = type_parser_nodes__AAttrPropdef.color;
7316 idtype17 = type_parser_nodes__AAttrPropdef.id;
7317 if(cltype16 >= var_npropdef->type->table_size) {
7318 var15 = 0;
7319 } else {
7320 var15 = var_npropdef->type->type_table[cltype16] == idtype17;
7321 }
7322 if (var15){
7323 ((void (*)(val*, val*, val*))(var_npropdef->class->vft[COLOR_abstract_compiler__AAttrPropdef__init_expr]))(var_npropdef, var_v, var_recv) /* init_expr on <var_npropdef:APropdef(AAttrPropdef)>*/;
7324 } else {
7325 }
7326 CONTINUE_label: (void)0;
7327 ((void (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__next]))(var12) /* next on <var12:Iterator[nullable Object]>*/;
7328 }
7329 BREAK_label: (void)0;
7330 CONTINUE_label18: (void)0;
7331 ((void (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__next]))(var5) /* next on <var5:Iterator[nullable Object]>*/;
7332 }
7333 BREAK_label18: (void)0;
7334 RET_LABEL:;
7335 }
7336 /* method abstract_compiler#AbstractCompiler#generate_init_attr for (self: Object, AbstractCompilerVisitor, RuntimeVariable, MClassType) */
7337 void VIRTUAL_abstract_compiler__AbstractCompiler__generate_init_attr(val* self, val* p0, val* p1, val* p2) {
7338 abstract_compiler__AbstractCompiler__generate_init_attr(self, p0, p1, p2);
7339 RET_LABEL:;
7340 }
7341 /* method abstract_compiler#AbstractCompiler#generate_check_attr for (self: AbstractCompiler, AbstractCompilerVisitor, RuntimeVariable, MClassType) */
7342 void abstract_compiler__AbstractCompiler__generate_check_attr(val* self, val* p0, val* p1, val* p2) {
7343 short int var /* : Bool */;
7344 int cltype;
7345 int idtype;
7346 const struct type* type_struct;
7347 const char* var_class_name;
7348 val* var_v /* var v: AbstractCompilerVisitor */;
7349 val* var_recv /* var recv: RuntimeVariable */;
7350 val* var_mtype /* var mtype: MClassType */;
7351 val* var1 /* : MModule */;
7352 val* var2 /* : Set[MClassDef] */;
7353 val* var3 /* : Array[nullable Object] */;
7354 val* var_cds /* var cds: Array[MClassDef] */;
7355 val* var4 /* : MModule */;
7356 val* var5 /* : Iterator[nullable Object] */;
7357 short int var6 /* : Bool */;
7358 val* var7 /* : nullable Object */;
7359 val* var_cd /* var cd: MClassDef */;
7360 val* var8 /* : ModelBuilder */;
7361 val* var9 /* : HashMap[MClassDef, AClassdef] */;
7362 val* var10 /* : nullable Object */;
7363 val* var_n /* var n: AClassdef */;
7364 val* var11 /* : ANodes[APropdef] */;
7365 val* var12 /* : Iterator[nullable Object] */;
7366 short int var13 /* : Bool */;
7367 val* var14 /* : nullable Object */;
7368 val* var_npropdef /* var npropdef: APropdef */;
7369 short int var15 /* : Bool */;
7370 int cltype16;
7371 int idtype17;
7372 /* Covariant cast for argument 0 (v) <p0:AbstractCompilerVisitor> isa VISITOR */
7373 /* <p0:AbstractCompilerVisitor> isa VISITOR */
7374 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractCompiler_VTVISITOR];
7375 cltype = type_struct->color;
7376 idtype = type_struct->id;
7377 if(cltype >= p0->type->table_size) {
7378 var = 0;
7379 } else {
7380 var = p0->type->type_table[cltype] == idtype;
7381 }
7382 if (!var) {
7383 var_class_name = p0 == NULL ? "null" : p0->type->name;
7384 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
7385 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 642);
7386 show_backtrace(1);
7387 }
7388 var_v = p0;
7389 var_recv = p1;
7390 var_mtype = p2;
7391 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:AbstractCompiler>*/;
7392 var2 = ((val* (*)(val*, val*))(var_mtype->class->vft[COLOR_model__MType__collect_mclassdefs]))(var_mtype, var1) /* collect_mclassdefs on <var_mtype:MClassType>*/;
7393 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_array__Collection__to_a]))(var2) /* to_a on <var2:Set[MClassDef]>*/;
7394 var_cds = var3;
7395 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:AbstractCompiler>*/;
7396 ((void (*)(val*, val*))(var4->class->vft[COLOR_model__MModule__linearize_mclassdefs]))(var4, var_cds) /* linearize_mclassdefs on <var4:MModule>*/;
7397 var5 = ((val* (*)(val*))(var_cds->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_cds) /* iterator on <var_cds:Array[MClassDef]>*/;
7398 for(;;) {
7399 var6 = ((short int (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var5) /* is_ok on <var5:Iterator[nullable Object]>*/;
7400 if(!var6) break;
7401 var7 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__item]))(var5) /* item on <var5:Iterator[nullable Object]>*/;
7402 var_cd = var7;
7403 var8 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
7404 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_modelize_class__ModelBuilder__mclassdef2nclassdef]))(var8) /* mclassdef2nclassdef on <var8:ModelBuilder>*/;
7405 var10 = ((val* (*)(val*, val*))(var9->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var9, var_cd) /* [] on <var9:HashMap[MClassDef, AClassdef]>*/;
7406 var_n = var10;
7407 var11 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__AClassdef__n_propdefs]))(var_n) /* n_propdefs on <var_n:AClassdef>*/;
7408 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__Collection__iterator]))(var11) /* iterator on <var11:ANodes[APropdef]>*/;
7409 for(;;) {
7410 var13 = ((short int (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var12) /* is_ok on <var12:Iterator[nullable Object]>*/;
7411 if(!var13) break;
7412 var14 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__item]))(var12) /* item on <var12:Iterator[nullable Object]>*/;
7413 var_npropdef = var14;
7414 /* <var_npropdef:APropdef> isa AAttrPropdef */
7415 cltype16 = type_parser_nodes__AAttrPropdef.color;
7416 idtype17 = type_parser_nodes__AAttrPropdef.id;
7417 if(cltype16 >= var_npropdef->type->table_size) {
7418 var15 = 0;
7419 } else {
7420 var15 = var_npropdef->type->type_table[cltype16] == idtype17;
7421 }
7422 if (var15){
7423 ((void (*)(val*, val*, val*))(var_npropdef->class->vft[COLOR_abstract_compiler__AAttrPropdef__check_expr]))(var_npropdef, var_v, var_recv) /* check_expr on <var_npropdef:APropdef(AAttrPropdef)>*/;
7424 } else {
7425 }
7426 CONTINUE_label: (void)0;
7427 ((void (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__next]))(var12) /* next on <var12:Iterator[nullable Object]>*/;
7428 }
7429 BREAK_label: (void)0;
7430 CONTINUE_label18: (void)0;
7431 ((void (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__next]))(var5) /* next on <var5:Iterator[nullable Object]>*/;
7432 }
7433 BREAK_label18: (void)0;
7434 RET_LABEL:;
7435 }
7436 /* method abstract_compiler#AbstractCompiler#generate_check_attr for (self: Object, AbstractCompilerVisitor, RuntimeVariable, MClassType) */
7437 void VIRTUAL_abstract_compiler__AbstractCompiler__generate_check_attr(val* self, val* p0, val* p1, val* p2) {
7438 abstract_compiler__AbstractCompiler__generate_check_attr(self, p0, p1, p2);
7439 RET_LABEL:;
7440 }
7441 /* method abstract_compiler#AbstractCompiler#count_type_test_tags for (self: AbstractCompiler): Array[String] */
7442 val* abstract_compiler__AbstractCompiler__count_type_test_tags(val* self) {
7443 val* var /* : Array[String] */;
7444 val* var1 /* : Array[String] */;
7445 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_tags].val; /* @count_type_test_tags on <self:AbstractCompiler> */
7446 if (var1 == NULL) {
7447 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @count_type_test_tags");
7448 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 659);
7449 show_backtrace(1);
7450 }
7451 var = var1;
7452 RET_LABEL:;
7453 return var;
7454 }
7455 /* method abstract_compiler#AbstractCompiler#count_type_test_tags for (self: Object): Array[String] */
7456 val* VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_tags(val* self) {
7457 val* var /* : Array[String] */;
7458 val* var1 /* : Array[String] */;
7459 var1 = abstract_compiler__AbstractCompiler__count_type_test_tags(self);
7460 var = var1;
7461 RET_LABEL:;
7462 return var;
7463 }
7464 /* method abstract_compiler#AbstractCompiler#count_type_test_tags= for (self: AbstractCompiler, Array[String]) */
7465 void abstract_compiler__AbstractCompiler__count_type_test_tags_61d(val* self, val* p0) {
7466 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_tags].val = p0; /* @count_type_test_tags on <self:AbstractCompiler> */
7467 RET_LABEL:;
7468 }
7469 /* method abstract_compiler#AbstractCompiler#count_type_test_tags= for (self: Object, Array[String]) */
7470 void VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_tags_61d(val* self, val* p0) {
7471 abstract_compiler__AbstractCompiler__count_type_test_tags_61d(self, p0);
7472 RET_LABEL:;
7473 }
7474 /* method abstract_compiler#AbstractCompiler#count_type_test_resolved for (self: AbstractCompiler): HashMap[String, Int] */
7475 val* abstract_compiler__AbstractCompiler__count_type_test_resolved(val* self) {
7476 val* var /* : HashMap[String, Int] */;
7477 val* var1 /* : HashMap[String, Int] */;
7478 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_resolved].val; /* @count_type_test_resolved on <self:AbstractCompiler> */
7479 if (var1 == NULL) {
7480 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @count_type_test_resolved");
7481 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 660);
7482 show_backtrace(1);
7483 }
7484 var = var1;
7485 RET_LABEL:;
7486 return var;
7487 }
7488 /* method abstract_compiler#AbstractCompiler#count_type_test_resolved for (self: Object): HashMap[String, Int] */
7489 val* VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_resolved(val* self) {
7490 val* var /* : HashMap[String, Int] */;
7491 val* var1 /* : HashMap[String, Int] */;
7492 var1 = abstract_compiler__AbstractCompiler__count_type_test_resolved(self);
7493 var = var1;
7494 RET_LABEL:;
7495 return var;
7496 }
7497 /* method abstract_compiler#AbstractCompiler#count_type_test_resolved= for (self: AbstractCompiler, HashMap[String, Int]) */
7498 void abstract_compiler__AbstractCompiler__count_type_test_resolved_61d(val* self, val* p0) {
7499 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_resolved].val = p0; /* @count_type_test_resolved on <self:AbstractCompiler> */
7500 RET_LABEL:;
7501 }
7502 /* method abstract_compiler#AbstractCompiler#count_type_test_resolved= for (self: Object, HashMap[String, Int]) */
7503 void VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_resolved_61d(val* self, val* p0) {
7504 abstract_compiler__AbstractCompiler__count_type_test_resolved_61d(self, p0);
7505 RET_LABEL:;
7506 }
7507 /* method abstract_compiler#AbstractCompiler#count_type_test_unresolved for (self: AbstractCompiler): HashMap[String, Int] */
7508 val* abstract_compiler__AbstractCompiler__count_type_test_unresolved(val* self) {
7509 val* var /* : HashMap[String, Int] */;
7510 val* var1 /* : HashMap[String, Int] */;
7511 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_unresolved].val; /* @count_type_test_unresolved on <self:AbstractCompiler> */
7512 if (var1 == NULL) {
7513 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @count_type_test_unresolved");
7514 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 661);
7515 show_backtrace(1);
7516 }
7517 var = var1;
7518 RET_LABEL:;
7519 return var;
7520 }
7521 /* method abstract_compiler#AbstractCompiler#count_type_test_unresolved for (self: Object): HashMap[String, Int] */
7522 val* VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_unresolved(val* self) {
7523 val* var /* : HashMap[String, Int] */;
7524 val* var1 /* : HashMap[String, Int] */;
7525 var1 = abstract_compiler__AbstractCompiler__count_type_test_unresolved(self);
7526 var = var1;
7527 RET_LABEL:;
7528 return var;
7529 }
7530 /* method abstract_compiler#AbstractCompiler#count_type_test_unresolved= for (self: AbstractCompiler, HashMap[String, Int]) */
7531 void abstract_compiler__AbstractCompiler__count_type_test_unresolved_61d(val* self, val* p0) {
7532 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_unresolved].val = p0; /* @count_type_test_unresolved on <self:AbstractCompiler> */
7533 RET_LABEL:;
7534 }
7535 /* method abstract_compiler#AbstractCompiler#count_type_test_unresolved= for (self: Object, HashMap[String, Int]) */
7536 void VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_unresolved_61d(val* self, val* p0) {
7537 abstract_compiler__AbstractCompiler__count_type_test_unresolved_61d(self, p0);
7538 RET_LABEL:;
7539 }
7540 /* method abstract_compiler#AbstractCompiler#count_type_test_skipped for (self: AbstractCompiler): HashMap[String, Int] */
7541 val* abstract_compiler__AbstractCompiler__count_type_test_skipped(val* self) {
7542 val* var /* : HashMap[String, Int] */;
7543 val* var1 /* : HashMap[String, Int] */;
7544 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_skipped].val; /* @count_type_test_skipped on <self:AbstractCompiler> */
7545 if (var1 == NULL) {
7546 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @count_type_test_skipped");
7547 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 662);
7548 show_backtrace(1);
7549 }
7550 var = var1;
7551 RET_LABEL:;
7552 return var;
7553 }
7554 /* method abstract_compiler#AbstractCompiler#count_type_test_skipped for (self: Object): HashMap[String, Int] */
7555 val* VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_skipped(val* self) {
7556 val* var /* : HashMap[String, Int] */;
7557 val* var1 /* : HashMap[String, Int] */;
7558 var1 = abstract_compiler__AbstractCompiler__count_type_test_skipped(self);
7559 var = var1;
7560 RET_LABEL:;
7561 return var;
7562 }
7563 /* method abstract_compiler#AbstractCompiler#count_type_test_skipped= for (self: AbstractCompiler, HashMap[String, Int]) */
7564 void abstract_compiler__AbstractCompiler__count_type_test_skipped_61d(val* self, val* p0) {
7565 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_skipped].val = p0; /* @count_type_test_skipped on <self:AbstractCompiler> */
7566 RET_LABEL:;
7567 }
7568 /* method abstract_compiler#AbstractCompiler#count_type_test_skipped= for (self: Object, HashMap[String, Int]) */
7569 void VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_skipped_61d(val* self, val* p0) {
7570 abstract_compiler__AbstractCompiler__count_type_test_skipped_61d(self, p0);
7571 RET_LABEL:;
7572 }
7573 /* method abstract_compiler#AbstractCompiler#init_count_type_test_tags for (self: AbstractCompiler): HashMap[String, Int] */
7574 val* abstract_compiler__AbstractCompiler__init_count_type_test_tags(val* self) {
7575 val* var /* : HashMap[String, Int] */;
7576 val* var1 /* : HashMap[String, Int] */;
7577 val* var_res /* var res: HashMap[String, Int] */;
7578 val* var2 /* : Array[String] */;
7579 val* var3 /* : Iterator[nullable Object] */;
7580 short int var4 /* : Bool */;
7581 val* var5 /* : nullable Object */;
7582 val* var_tag /* var tag: String */;
7583 long var6 /* : Int */;
7584 val* var7 /* : nullable Object */;
7585 var1 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapstring__Stringkernel__Int);
7586 ((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashMap__init]))(var1) /* init on <var1:HashMap[String, Int]>*/;
7587 var_res = var1;
7588 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_tags]))(self) /* count_type_test_tags on <self:AbstractCompiler>*/;
7589 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:Array[String]>*/;
7590 for(;;) {
7591 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
7592 if(!var4) break;
7593 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
7594 var_tag = var5;
7595 var6 = 0;
7596 var7 = BOX_kernel__Int(var6); /* autobox from Int to nullable Object */
7597 ((void (*)(val*, val*, val*))(var_res->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_res, var_tag, var7) /* []= on <var_res:HashMap[String, Int]>*/;
7598 CONTINUE_label: (void)0;
7599 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
7600 }
7601 BREAK_label: (void)0;
7602 var = var_res;
7603 goto RET_LABEL;
7604 RET_LABEL:;
7605 return var;
7606 }
7607 /* method abstract_compiler#AbstractCompiler#init_count_type_test_tags for (self: Object): HashMap[String, Int] */
7608 val* VIRTUAL_abstract_compiler__AbstractCompiler__init_count_type_test_tags(val* self) {
7609 val* var /* : HashMap[String, Int] */;
7610 val* var1 /* : HashMap[String, Int] */;
7611 var1 = abstract_compiler__AbstractCompiler__init_count_type_test_tags(self);
7612 var = var1;
7613 RET_LABEL:;
7614 return var;
7615 }
7616 /* method abstract_compiler#AbstractCompiler#display_stats for (self: AbstractCompiler) */
7617 void abstract_compiler__AbstractCompiler__display_stats(val* self) {
7618 val* var /* : ModelBuilder */;
7619 val* var1 /* : ToolContext */;
7620 val* var2 /* : OptionBool */;
7621 val* var3 /* : nullable Object */;
7622 short int var4 /* : Bool */;
7623 static val* varonce;
7624 val* var5 /* : String */;
7625 char* var6 /* : NativeString */;
7626 long var7 /* : Int */;
7627 val* var8 /* : String */;
7628 static val* varonce9;
7629 val* var10 /* : String */;
7630 char* var11 /* : NativeString */;
7631 long var12 /* : Int */;
7632 val* var13 /* : String */;
7633 val* var14 /* : HashMap[String, Int] */;
7634 val* var_count_type_test_total /* var count_type_test_total: HashMap[String, Int] */;
7635 val* var15 /* : HashMap[String, Int] */;
7636 static val* varonce16;
7637 val* var17 /* : String */;
7638 char* var18 /* : NativeString */;
7639 long var19 /* : Int */;
7640 val* var20 /* : String */;
7641 long var21 /* : Int */;
7642 val* var22 /* : nullable Object */;
7643 val* var23 /* : HashMap[String, Int] */;
7644 static val* varonce24;
7645 val* var25 /* : String */;
7646 char* var26 /* : NativeString */;
7647 long var27 /* : Int */;
7648 val* var28 /* : String */;
7649 long var29 /* : Int */;
7650 val* var30 /* : nullable Object */;
7651 val* var31 /* : HashMap[String, Int] */;
7652 static val* varonce32;
7653 val* var33 /* : String */;
7654 char* var34 /* : NativeString */;
7655 long var35 /* : Int */;
7656 val* var36 /* : String */;
7657 long var37 /* : Int */;
7658 val* var38 /* : nullable Object */;
7659 static val* varonce39;
7660 val* var40 /* : String */;
7661 char* var41 /* : NativeString */;
7662 long var42 /* : Int */;
7663 val* var43 /* : String */;
7664 long var44 /* : Int */;
7665 val* var45 /* : nullable Object */;
7666 val* var46 /* : Array[String] */;
7667 val* var47 /* : Iterator[nullable Object] */;
7668 short int var48 /* : Bool */;
7669 val* var49 /* : nullable Object */;
7670 val* var_tag /* var tag: String */;
7671 val* var50 /* : HashMap[String, Int] */;
7672 val* var51 /* : nullable Object */;
7673 val* var52 /* : HashMap[String, Int] */;
7674 val* var53 /* : nullable Object */;
7675 long var54 /* : Int */;
7676 long var56 /* : Int */;
7677 long var57 /* : Int */;
7678 long var58 /* : Int */;
7679 val* var59 /* : HashMap[String, Int] */;
7680 val* var60 /* : nullable Object */;
7681 long var61 /* : Int */;
7682 long var63 /* : Int */;
7683 long var64 /* : Int */;
7684 val* var65 /* : nullable Object */;
7685 val* var66 /* : HashMap[String, Int] */;
7686 val* var_ /* var : HashMap[String, Int] */;
7687 static val* varonce67;
7688 val* var68 /* : String */;
7689 char* var69 /* : NativeString */;
7690 long var70 /* : Int */;
7691 val* var71 /* : String */;
7692 val* var_72 /* var : String */;
7693 val* var73 /* : nullable Object */;
7694 val* var74 /* : HashMap[String, Int] */;
7695 val* var75 /* : nullable Object */;
7696 long var76 /* : Int */;
7697 long var78 /* : Int */;
7698 long var79 /* : Int */;
7699 long var80 /* : Int */;
7700 val* var81 /* : nullable Object */;
7701 val* var82 /* : HashMap[String, Int] */;
7702 val* var_83 /* var : HashMap[String, Int] */;
7703 static val* varonce84;
7704 val* var85 /* : String */;
7705 char* var86 /* : NativeString */;
7706 long var87 /* : Int */;
7707 val* var88 /* : String */;
7708 val* var_89 /* var : String */;
7709 val* var90 /* : nullable Object */;
7710 val* var91 /* : HashMap[String, Int] */;
7711 val* var92 /* : nullable Object */;
7712 long var93 /* : Int */;
7713 long var95 /* : Int */;
7714 long var96 /* : Int */;
7715 long var97 /* : Int */;
7716 val* var98 /* : nullable Object */;
7717 val* var99 /* : HashMap[String, Int] */;
7718 val* var_100 /* var : HashMap[String, Int] */;
7719 static val* varonce101;
7720 val* var102 /* : String */;
7721 char* var103 /* : NativeString */;
7722 long var104 /* : Int */;
7723 val* var105 /* : String */;
7724 val* var_106 /* var : String */;
7725 val* var107 /* : nullable Object */;
7726 val* var108 /* : HashMap[String, Int] */;
7727 val* var109 /* : nullable Object */;
7728 long var110 /* : Int */;
7729 long var112 /* : Int */;
7730 long var113 /* : Int */;
7731 long var114 /* : Int */;
7732 val* var115 /* : nullable Object */;
7733 val* var_116 /* var : HashMap[String, Int] */;
7734 static val* varonce117;
7735 val* var118 /* : String */;
7736 char* var119 /* : NativeString */;
7737 long var120 /* : Int */;
7738 val* var121 /* : String */;
7739 val* var_122 /* var : String */;
7740 val* var123 /* : nullable Object */;
7741 val* var124 /* : nullable Object */;
7742 long var125 /* : Int */;
7743 long var127 /* : Int */;
7744 long var128 /* : Int */;
7745 long var129 /* : Int */;
7746 val* var130 /* : nullable Object */;
7747 static val* varonce131;
7748 val* var132 /* : String */;
7749 char* var133 /* : NativeString */;
7750 long var134 /* : Int */;
7751 val* var135 /* : String */;
7752 val* var136 /* : nullable Object */;
7753 long var137 /* : Int */;
7754 long var_count_type_test /* var count_type_test: Int */;
7755 val* var138 /* : Array[String] */;
7756 val* var139 /* : Array[nullable Object] */;
7757 val* var_tags /* var tags: Array[String] */;
7758 static val* varonce140;
7759 val* var141 /* : String */;
7760 char* var142 /* : NativeString */;
7761 long var143 /* : Int */;
7762 val* var144 /* : String */;
7763 val* var145 /* : Iterator[nullable Object] */;
7764 short int var146 /* : Bool */;
7765 val* var147 /* : nullable Object */;
7766 val* var_tag148 /* var tag: String */;
7767 val* var149 /* : Array[Object] */;
7768 long var150 /* : Int */;
7769 val* var151 /* : NativeArray[Object] */;
7770 static val* varonce152;
7771 val* var153 /* : String */;
7772 char* var154 /* : NativeString */;
7773 long var155 /* : Int */;
7774 val* var156 /* : String */;
7775 val* var157 /* : HashMap[String, Int] */;
7776 val* var158 /* : nullable Object */;
7777 static val* varonce159;
7778 val* var160 /* : String */;
7779 char* var161 /* : NativeString */;
7780 long var162 /* : Int */;
7781 val* var163 /* : String */;
7782 val* var164 /* : HashMap[String, Int] */;
7783 val* var165 /* : nullable Object */;
7784 val* var166 /* : String */;
7785 long var167 /* : Int */;
7786 static val* varonce168;
7787 val* var169 /* : String */;
7788 char* var170 /* : NativeString */;
7789 long var171 /* : Int */;
7790 val* var172 /* : String */;
7791 val* var173 /* : Array[Object] */;
7792 long var174 /* : Int */;
7793 val* var175 /* : NativeArray[Object] */;
7794 val* var176 /* : String */;
7795 val* var177 /* : Array[Object] */;
7796 long var178 /* : Int */;
7797 val* var179 /* : NativeArray[Object] */;
7798 static val* varonce180;
7799 val* var181 /* : String */;
7800 char* var182 /* : NativeString */;
7801 long var183 /* : Int */;
7802 val* var184 /* : String */;
7803 val* var185 /* : HashMap[String, Int] */;
7804 val* var186 /* : nullable Object */;
7805 static val* varonce187;
7806 val* var188 /* : String */;
7807 char* var189 /* : NativeString */;
7808 long var190 /* : Int */;
7809 val* var191 /* : String */;
7810 val* var192 /* : HashMap[String, Int] */;
7811 val* var193 /* : nullable Object */;
7812 val* var194 /* : String */;
7813 long var195 /* : Int */;
7814 static val* varonce196;
7815 val* var197 /* : String */;
7816 char* var198 /* : NativeString */;
7817 long var199 /* : Int */;
7818 val* var200 /* : String */;
7819 val* var201 /* : Array[Object] */;
7820 long var202 /* : Int */;
7821 val* var203 /* : NativeArray[Object] */;
7822 val* var204 /* : String */;
7823 val* var205 /* : Array[Object] */;
7824 long var206 /* : Int */;
7825 val* var207 /* : NativeArray[Object] */;
7826 static val* varonce208;
7827 val* var209 /* : String */;
7828 char* var210 /* : NativeString */;
7829 long var211 /* : Int */;
7830 val* var212 /* : String */;
7831 val* var213 /* : HashMap[String, Int] */;
7832 val* var214 /* : nullable Object */;
7833 static val* varonce215;
7834 val* var216 /* : String */;
7835 char* var217 /* : NativeString */;
7836 long var218 /* : Int */;
7837 val* var219 /* : String */;
7838 val* var220 /* : HashMap[String, Int] */;
7839 val* var221 /* : nullable Object */;
7840 val* var222 /* : String */;
7841 long var223 /* : Int */;
7842 static val* varonce224;
7843 val* var225 /* : String */;
7844 char* var226 /* : NativeString */;
7845 long var227 /* : Int */;
7846 val* var228 /* : String */;
7847 val* var229 /* : Array[Object] */;
7848 long var230 /* : Int */;
7849 val* var231 /* : NativeArray[Object] */;
7850 val* var232 /* : String */;
7851 val* var233 /* : Array[Object] */;
7852 long var234 /* : Int */;
7853 val* var235 /* : NativeArray[Object] */;
7854 static val* varonce236;
7855 val* var237 /* : String */;
7856 char* var238 /* : NativeString */;
7857 long var239 /* : Int */;
7858 val* var240 /* : String */;
7859 val* var241 /* : nullable Object */;
7860 static val* varonce242;
7861 val* var243 /* : String */;
7862 char* var244 /* : NativeString */;
7863 long var245 /* : Int */;
7864 val* var246 /* : String */;
7865 val* var247 /* : nullable Object */;
7866 val* var248 /* : String */;
7867 long var249 /* : Int */;
7868 static val* varonce250;
7869 val* var251 /* : String */;
7870 char* var252 /* : NativeString */;
7871 long var253 /* : Int */;
7872 val* var254 /* : String */;
7873 val* var255 /* : Array[Object] */;
7874 long var256 /* : Int */;
7875 val* var257 /* : NativeArray[Object] */;
7876 val* var258 /* : String */;
7877 val* var259 /* : Array[Object] */;
7878 long var260 /* : Int */;
7879 val* var261 /* : NativeArray[Object] */;
7880 static val* varonce262;
7881 val* var263 /* : String */;
7882 char* var264 /* : NativeString */;
7883 long var265 /* : Int */;
7884 val* var266 /* : String */;
7885 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
7886 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var) /* toolcontext on <var:ModelBuilder>*/;
7887 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__ToolContext__opt_typing_test_metrics]))(var1) /* opt_typing_test_metrics on <var1:ToolContext>*/;
7888 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_opts__Option__value]))(var2) /* value on <var2:OptionBool>*/;
7889 var4 = ((struct instance_kernel__Bool*)var3)->value; /* autounbox from nullable Object to Bool */;
7890 if (var4){
7891 if (varonce) {
7892 var5 = varonce;
7893 } else {
7894 var6 = "# static count_type_test";
7895 var7 = 24;
7896 var8 = string__NativeString__to_s_with_length(var6, var7);
7897 var5 = var8;
7898 varonce = var5;
7899 }
7900 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var5) /* print on <self:AbstractCompiler>*/;
7901 if (varonce9) {
7902 var10 = varonce9;
7903 } else {
7904 var11 = "\11resolved:\11unresolved\11skipped\11total";
7905 var12 = 35;
7906 var13 = string__NativeString__to_s_with_length(var11, var12);
7907 var10 = var13;
7908 varonce9 = var10;
7909 }
7910 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var10) /* print on <self:AbstractCompiler>*/;
7911 var14 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__init_count_type_test_tags]))(self) /* init_count_type_test_tags on <self:AbstractCompiler>*/;
7912 var_count_type_test_total = var14;
7913 var15 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_resolved]))(self) /* count_type_test_resolved on <self:AbstractCompiler>*/;
7914 if (varonce16) {
7915 var17 = varonce16;
7916 } else {
7917 var18 = "total";
7918 var19 = 5;
7919 var20 = string__NativeString__to_s_with_length(var18, var19);
7920 var17 = var20;
7921 varonce16 = var17;
7922 }
7923 var21 = 0;
7924 var22 = BOX_kernel__Int(var21); /* autobox from Int to nullable Object */
7925 ((void (*)(val*, val*, val*))(var15->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var15, var17, var22) /* []= on <var15:HashMap[String, Int]>*/;
7926 var23 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_unresolved]))(self) /* count_type_test_unresolved on <self:AbstractCompiler>*/;
7927 if (varonce24) {
7928 var25 = varonce24;
7929 } else {
7930 var26 = "total";
7931 var27 = 5;
7932 var28 = string__NativeString__to_s_with_length(var26, var27);
7933 var25 = var28;
7934 varonce24 = var25;
7935 }
7936 var29 = 0;
7937 var30 = BOX_kernel__Int(var29); /* autobox from Int to nullable Object */
7938 ((void (*)(val*, val*, val*))(var23->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var23, var25, var30) /* []= on <var23:HashMap[String, Int]>*/;
7939 var31 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_skipped]))(self) /* count_type_test_skipped on <self:AbstractCompiler>*/;
7940 if (varonce32) {
7941 var33 = varonce32;
7942 } else {
7943 var34 = "total";
7944 var35 = 5;
7945 var36 = string__NativeString__to_s_with_length(var34, var35);
7946 var33 = var36;
7947 varonce32 = var33;
7948 }
7949 var37 = 0;
7950 var38 = BOX_kernel__Int(var37); /* autobox from Int to nullable Object */
7951 ((void (*)(val*, val*, val*))(var31->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var31, var33, var38) /* []= on <var31:HashMap[String, Int]>*/;
7952 if (varonce39) {
7953 var40 = varonce39;
7954 } else {
7955 var41 = "total";
7956 var42 = 5;
7957 var43 = string__NativeString__to_s_with_length(var41, var42);
7958 var40 = var43;
7959 varonce39 = var40;
7960 }
7961 var44 = 0;
7962 var45 = BOX_kernel__Int(var44); /* autobox from Int to nullable Object */
7963 ((void (*)(val*, val*, val*))(var_count_type_test_total->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_count_type_test_total, var40, var45) /* []= on <var_count_type_test_total:HashMap[String, Int]>*/;
7964 var46 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_tags]))(self) /* count_type_test_tags on <self:AbstractCompiler>*/;
7965 var47 = ((val* (*)(val*))(var46->class->vft[COLOR_abstract_collection__Collection__iterator]))(var46) /* iterator on <var46:Array[String]>*/;
7966 for(;;) {
7967 var48 = ((short int (*)(val*))(var47->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var47) /* is_ok on <var47:Iterator[nullable Object]>*/;
7968 if(!var48) break;
7969 var49 = ((val* (*)(val*))(var47->class->vft[COLOR_abstract_collection__Iterator__item]))(var47) /* item on <var47:Iterator[nullable Object]>*/;
7970 var_tag = var49;
7971 var50 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_resolved]))(self) /* count_type_test_resolved on <self:AbstractCompiler>*/;
7972 var51 = ((val* (*)(val*, val*))(var50->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var50, var_tag) /* [] on <var50:HashMap[String, Int]>*/;
7973 var52 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_unresolved]))(self) /* count_type_test_unresolved on <self:AbstractCompiler>*/;
7974 var53 = ((val* (*)(val*, val*))(var52->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var52, var_tag) /* [] on <var52:HashMap[String, Int]>*/;
7975 { /* Inline kernel#Int#+ (var51,var53) */
7976 var56 = ((struct instance_kernel__Int*)var51)->value; /* autounbox from nullable Object to Int */;
7977 var57 = ((struct instance_kernel__Int*)var53)->value; /* autounbox from nullable Object to Int */;
7978 var58 = var56 + var57;
7979 var54 = var58;
7980 goto RET_LABEL55;
7981 RET_LABEL55:(void)0;
7982 }
7983 var59 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_skipped]))(self) /* count_type_test_skipped on <self:AbstractCompiler>*/;
7984 var60 = ((val* (*)(val*, val*))(var59->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var59, var_tag) /* [] on <var59:HashMap[String, Int]>*/;
7985 { /* Inline kernel#Int#+ (var54,var60) */
7986 var63 = ((struct instance_kernel__Int*)var60)->value; /* autounbox from nullable Object to Int */;
7987 var64 = var54 + var63;
7988 var61 = var64;
7989 goto RET_LABEL62;
7990 RET_LABEL62:(void)0;
7991 }
7992 var65 = BOX_kernel__Int(var61); /* autobox from Int to nullable Object */
7993 ((void (*)(val*, val*, val*))(var_count_type_test_total->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_count_type_test_total, var_tag, var65) /* []= on <var_count_type_test_total:HashMap[String, Int]>*/;
7994 var66 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_resolved]))(self) /* count_type_test_resolved on <self:AbstractCompiler>*/;
7995 var_ = var66;
7996 if (varonce67) {
7997 var68 = varonce67;
7998 } else {
7999 var69 = "total";
8000 var70 = 5;
8001 var71 = string__NativeString__to_s_with_length(var69, var70);
8002 var68 = var71;
8003 varonce67 = var68;
8004 }
8005 var_72 = var68;
8006 var73 = ((val* (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_, var_72) /* [] on <var_:HashMap[String, Int]>*/;
8007 var74 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_resolved]))(self) /* count_type_test_resolved on <self:AbstractCompiler>*/;
8008 var75 = ((val* (*)(val*, val*))(var74->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var74, var_tag) /* [] on <var74:HashMap[String, Int]>*/;
8009 { /* Inline kernel#Int#+ (var73,var75) */
8010 var78 = ((struct instance_kernel__Int*)var73)->value; /* autounbox from nullable Object to Int */;
8011 var79 = ((struct instance_kernel__Int*)var75)->value; /* autounbox from nullable Object to Int */;
8012 var80 = var78 + var79;
8013 var76 = var80;
8014 goto RET_LABEL77;
8015 RET_LABEL77:(void)0;
8016 }
8017 var81 = BOX_kernel__Int(var76); /* autobox from Int to nullable Object */
8018 ((void (*)(val*, val*, val*))(var_->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_, var_72, var81) /* []= on <var_:HashMap[String, Int]>*/;
8019 var82 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_unresolved]))(self) /* count_type_test_unresolved on <self:AbstractCompiler>*/;
8020 var_83 = var82;
8021 if (varonce84) {
8022 var85 = varonce84;
8023 } else {
8024 var86 = "total";
8025 var87 = 5;
8026 var88 = string__NativeString__to_s_with_length(var86, var87);
8027 var85 = var88;
8028 varonce84 = var85;
8029 }
8030 var_89 = var85;
8031 var90 = ((val* (*)(val*, val*))(var_83->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_83, var_89) /* [] on <var_83:HashMap[String, Int]>*/;
8032 var91 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_unresolved]))(self) /* count_type_test_unresolved on <self:AbstractCompiler>*/;
8033 var92 = ((val* (*)(val*, val*))(var91->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var91, var_tag) /* [] on <var91:HashMap[String, Int]>*/;
8034 { /* Inline kernel#Int#+ (var90,var92) */
8035 var95 = ((struct instance_kernel__Int*)var90)->value; /* autounbox from nullable Object to Int */;
8036 var96 = ((struct instance_kernel__Int*)var92)->value; /* autounbox from nullable Object to Int */;
8037 var97 = var95 + var96;
8038 var93 = var97;
8039 goto RET_LABEL94;
8040 RET_LABEL94:(void)0;
8041 }
8042 var98 = BOX_kernel__Int(var93); /* autobox from Int to nullable Object */
8043 ((void (*)(val*, val*, val*))(var_83->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_83, var_89, var98) /* []= on <var_83:HashMap[String, Int]>*/;
8044 var99 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_skipped]))(self) /* count_type_test_skipped on <self:AbstractCompiler>*/;
8045 var_100 = var99;
8046 if (varonce101) {
8047 var102 = varonce101;
8048 } else {
8049 var103 = "total";
8050 var104 = 5;
8051 var105 = string__NativeString__to_s_with_length(var103, var104);
8052 var102 = var105;
8053 varonce101 = var102;
8054 }
8055 var_106 = var102;
8056 var107 = ((val* (*)(val*, val*))(var_100->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_100, var_106) /* [] on <var_100:HashMap[String, Int]>*/;
8057 var108 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_skipped]))(self) /* count_type_test_skipped on <self:AbstractCompiler>*/;
8058 var109 = ((val* (*)(val*, val*))(var108->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var108, var_tag) /* [] on <var108:HashMap[String, Int]>*/;
8059 { /* Inline kernel#Int#+ (var107,var109) */
8060 var112 = ((struct instance_kernel__Int*)var107)->value; /* autounbox from nullable Object to Int */;
8061 var113 = ((struct instance_kernel__Int*)var109)->value; /* autounbox from nullable Object to Int */;
8062 var114 = var112 + var113;
8063 var110 = var114;
8064 goto RET_LABEL111;
8065 RET_LABEL111:(void)0;
8066 }
8067 var115 = BOX_kernel__Int(var110); /* autobox from Int to nullable Object */
8068 ((void (*)(val*, val*, val*))(var_100->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_100, var_106, var115) /* []= on <var_100:HashMap[String, Int]>*/;
8069 var_116 = var_count_type_test_total;
8070 if (varonce117) {
8071 var118 = varonce117;
8072 } else {
8073 var119 = "total";
8074 var120 = 5;
8075 var121 = string__NativeString__to_s_with_length(var119, var120);
8076 var118 = var121;
8077 varonce117 = var118;
8078 }
8079 var_122 = var118;
8080 var123 = ((val* (*)(val*, val*))(var_116->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_116, var_122) /* [] on <var_116:HashMap[String, Int]>*/;
8081 var124 = ((val* (*)(val*, val*))(var_count_type_test_total->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_count_type_test_total, var_tag) /* [] on <var_count_type_test_total:HashMap[String, Int]>*/;
8082 { /* Inline kernel#Int#+ (var123,var124) */
8083 var127 = ((struct instance_kernel__Int*)var123)->value; /* autounbox from nullable Object to Int */;
8084 var128 = ((struct instance_kernel__Int*)var124)->value; /* autounbox from nullable Object to Int */;
8085 var129 = var127 + var128;
8086 var125 = var129;
8087 goto RET_LABEL126;
8088 RET_LABEL126:(void)0;
8089 }
8090 var130 = BOX_kernel__Int(var125); /* autobox from Int to nullable Object */
8091 ((void (*)(val*, val*, val*))(var_116->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_116, var_122, var130) /* []= on <var_116:HashMap[String, Int]>*/;
8092 CONTINUE_label: (void)0;
8093 ((void (*)(val*))(var47->class->vft[COLOR_abstract_collection__Iterator__next]))(var47) /* next on <var47:Iterator[nullable Object]>*/;
8094 }
8095 BREAK_label: (void)0;
8096 if (varonce131) {
8097 var132 = varonce131;
8098 } else {
8099 var133 = "total";
8100 var134 = 5;
8101 var135 = string__NativeString__to_s_with_length(var133, var134);
8102 var132 = var135;
8103 varonce131 = var132;
8104 }
8105 var136 = ((val* (*)(val*, val*))(var_count_type_test_total->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_count_type_test_total, var132) /* [] on <var_count_type_test_total:HashMap[String, Int]>*/;
8106 var137 = ((struct instance_kernel__Int*)var136)->value; /* autounbox from nullable Object to Int */;
8107 var_count_type_test = var137;
8108 var138 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_tags]))(self) /* count_type_test_tags on <self:AbstractCompiler>*/;
8109 var139 = ((val* (*)(val*))(var138->class->vft[COLOR_array__Collection__to_a]))(var138) /* to_a on <var138:Array[String]>*/;
8110 var_tags = var139;
8111 if (varonce140) {
8112 var141 = varonce140;
8113 } else {
8114 var142 = "total";
8115 var143 = 5;
8116 var144 = string__NativeString__to_s_with_length(var142, var143);
8117 var141 = var144;
8118 varonce140 = var141;
8119 }
8120 ((void (*)(val*, val*))(var_tags->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_tags, var141) /* add on <var_tags:Array[String]>*/;
8121 var145 = ((val* (*)(val*))(var_tags->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_tags) /* iterator on <var_tags:Array[String]>*/;
8122 for(;;) {
8123 var146 = ((short int (*)(val*))(var145->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var145) /* is_ok on <var145:Iterator[nullable Object]>*/;
8124 if(!var146) break;
8125 var147 = ((val* (*)(val*))(var145->class->vft[COLOR_abstract_collection__Iterator__item]))(var145) /* item on <var145:Iterator[nullable Object]>*/;
8126 var_tag148 = var147;
8127 var149 = NEW_array__Array(&type_array__Arraykernel__Object);
8128 { /* var149 = array_instance Array[Object] */
8129 var150 = 1;
8130 var151 = NEW_array__NativeArray(var150, &type_array__NativeArraykernel__Object);
8131 ((struct instance_array__NativeArray*)var151)->values[0] = (val*) var_tag148;
8132 ((void (*)(val*, val*, long))(var149->class->vft[COLOR_array__Array__with_native]))(var149, var151, var150) /* with_native on <var149:Array[Object]>*/;
8133 }
8134 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__printn]))(self, var149) /* printn on <self:AbstractCompiler>*/;
8135 if (varonce152) {
8136 var153 = varonce152;
8137 } else {
8138 var154 = "\11";
8139 var155 = 1;
8140 var156 = string__NativeString__to_s_with_length(var154, var155);
8141 var153 = var156;
8142 varonce152 = var153;
8143 }
8144 var157 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_resolved]))(self) /* count_type_test_resolved on <self:AbstractCompiler>*/;
8145 var158 = ((val* (*)(val*, val*))(var157->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var157, var_tag148) /* [] on <var157:HashMap[String, Int]>*/;
8146 if (varonce159) {
8147 var160 = varonce159;
8148 } else {
8149 var161 = " (";
8150 var162 = 2;
8151 var163 = string__NativeString__to_s_with_length(var161, var162);
8152 var160 = var163;
8153 varonce159 = var160;
8154 }
8155 var164 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_resolved]))(self) /* count_type_test_resolved on <self:AbstractCompiler>*/;
8156 var165 = ((val* (*)(val*, val*))(var164->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var164, var_tag148) /* [] on <var164:HashMap[String, Int]>*/;
8157 var167 = ((struct instance_kernel__Int*)var165)->value; /* autounbox from nullable Object to Int */;
8158 var166 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__div]))(self, var167, var_count_type_test) /* div on <self:AbstractCompiler>*/;
8159 if (varonce168) {
8160 var169 = varonce168;
8161 } else {
8162 var170 = "%)";
8163 var171 = 2;
8164 var172 = string__NativeString__to_s_with_length(var170, var171);
8165 var169 = var172;
8166 varonce168 = var169;
8167 }
8168 var173 = NEW_array__Array(&type_array__Arraykernel__Object);
8169 { /* var173 = array_instance Array[Object] */
8170 var174 = 5;
8171 var175 = NEW_array__NativeArray(var174, &type_array__NativeArraykernel__Object);
8172 ((struct instance_array__NativeArray*)var175)->values[0] = (val*) var153;
8173 ((struct instance_array__NativeArray*)var175)->values[1] = (val*) var158;
8174 ((struct instance_array__NativeArray*)var175)->values[2] = (val*) var160;
8175 ((struct instance_array__NativeArray*)var175)->values[3] = (val*) var166;
8176 ((struct instance_array__NativeArray*)var175)->values[4] = (val*) var169;
8177 ((void (*)(val*, val*, long))(var173->class->vft[COLOR_array__Array__with_native]))(var173, var175, var174) /* with_native on <var173:Array[Object]>*/;
8178 }
8179 var176 = ((val* (*)(val*))(var173->class->vft[COLOR_string__Object__to_s]))(var173) /* to_s on <var173:Array[Object]>*/;
8180 var177 = NEW_array__Array(&type_array__Arraykernel__Object);
8181 { /* var177 = array_instance Array[Object] */
8182 var178 = 1;
8183 var179 = NEW_array__NativeArray(var178, &type_array__NativeArraykernel__Object);
8184 ((struct instance_array__NativeArray*)var179)->values[0] = (val*) var176;
8185 ((void (*)(val*, val*, long))(var177->class->vft[COLOR_array__Array__with_native]))(var177, var179, var178) /* with_native on <var177:Array[Object]>*/;
8186 }
8187 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__printn]))(self, var177) /* printn on <self:AbstractCompiler>*/;
8188 if (varonce180) {
8189 var181 = varonce180;
8190 } else {
8191 var182 = "\11";
8192 var183 = 1;
8193 var184 = string__NativeString__to_s_with_length(var182, var183);
8194 var181 = var184;
8195 varonce180 = var181;
8196 }
8197 var185 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_unresolved]))(self) /* count_type_test_unresolved on <self:AbstractCompiler>*/;
8198 var186 = ((val* (*)(val*, val*))(var185->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var185, var_tag148) /* [] on <var185:HashMap[String, Int]>*/;
8199 if (varonce187) {
8200 var188 = varonce187;
8201 } else {
8202 var189 = " (";
8203 var190 = 2;
8204 var191 = string__NativeString__to_s_with_length(var189, var190);
8205 var188 = var191;
8206 varonce187 = var188;
8207 }
8208 var192 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_unresolved]))(self) /* count_type_test_unresolved on <self:AbstractCompiler>*/;
8209 var193 = ((val* (*)(val*, val*))(var192->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var192, var_tag148) /* [] on <var192:HashMap[String, Int]>*/;
8210 var195 = ((struct instance_kernel__Int*)var193)->value; /* autounbox from nullable Object to Int */;
8211 var194 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__div]))(self, var195, var_count_type_test) /* div on <self:AbstractCompiler>*/;
8212 if (varonce196) {
8213 var197 = varonce196;
8214 } else {
8215 var198 = "%)";
8216 var199 = 2;
8217 var200 = string__NativeString__to_s_with_length(var198, var199);
8218 var197 = var200;
8219 varonce196 = var197;
8220 }
8221 var201 = NEW_array__Array(&type_array__Arraykernel__Object);
8222 { /* var201 = array_instance Array[Object] */
8223 var202 = 5;
8224 var203 = NEW_array__NativeArray(var202, &type_array__NativeArraykernel__Object);
8225 ((struct instance_array__NativeArray*)var203)->values[0] = (val*) var181;
8226 ((struct instance_array__NativeArray*)var203)->values[1] = (val*) var186;
8227 ((struct instance_array__NativeArray*)var203)->values[2] = (val*) var188;
8228 ((struct instance_array__NativeArray*)var203)->values[3] = (val*) var194;
8229 ((struct instance_array__NativeArray*)var203)->values[4] = (val*) var197;
8230 ((void (*)(val*, val*, long))(var201->class->vft[COLOR_array__Array__with_native]))(var201, var203, var202) /* with_native on <var201:Array[Object]>*/;
8231 }
8232 var204 = ((val* (*)(val*))(var201->class->vft[COLOR_string__Object__to_s]))(var201) /* to_s on <var201:Array[Object]>*/;
8233 var205 = NEW_array__Array(&type_array__Arraykernel__Object);
8234 { /* var205 = array_instance Array[Object] */
8235 var206 = 1;
8236 var207 = NEW_array__NativeArray(var206, &type_array__NativeArraykernel__Object);
8237 ((struct instance_array__NativeArray*)var207)->values[0] = (val*) var204;
8238 ((void (*)(val*, val*, long))(var205->class->vft[COLOR_array__Array__with_native]))(var205, var207, var206) /* with_native on <var205:Array[Object]>*/;
8239 }
8240 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__printn]))(self, var205) /* printn on <self:AbstractCompiler>*/;
8241 if (varonce208) {
8242 var209 = varonce208;
8243 } else {
8244 var210 = "\11";
8245 var211 = 1;
8246 var212 = string__NativeString__to_s_with_length(var210, var211);
8247 var209 = var212;
8248 varonce208 = var209;
8249 }
8250 var213 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_skipped]))(self) /* count_type_test_skipped on <self:AbstractCompiler>*/;
8251 var214 = ((val* (*)(val*, val*))(var213->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var213, var_tag148) /* [] on <var213:HashMap[String, Int]>*/;
8252 if (varonce215) {
8253 var216 = varonce215;
8254 } else {
8255 var217 = " (";
8256 var218 = 2;
8257 var219 = string__NativeString__to_s_with_length(var217, var218);
8258 var216 = var219;
8259 varonce215 = var216;
8260 }
8261 var220 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_skipped]))(self) /* count_type_test_skipped on <self:AbstractCompiler>*/;
8262 var221 = ((val* (*)(val*, val*))(var220->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var220, var_tag148) /* [] on <var220:HashMap[String, Int]>*/;
8263 var223 = ((struct instance_kernel__Int*)var221)->value; /* autounbox from nullable Object to Int */;
8264 var222 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__div]))(self, var223, var_count_type_test) /* div on <self:AbstractCompiler>*/;
8265 if (varonce224) {
8266 var225 = varonce224;
8267 } else {
8268 var226 = "%)";
8269 var227 = 2;
8270 var228 = string__NativeString__to_s_with_length(var226, var227);
8271 var225 = var228;
8272 varonce224 = var225;
8273 }
8274 var229 = NEW_array__Array(&type_array__Arraykernel__Object);
8275 { /* var229 = array_instance Array[Object] */
8276 var230 = 5;
8277 var231 = NEW_array__NativeArray(var230, &type_array__NativeArraykernel__Object);
8278 ((struct instance_array__NativeArray*)var231)->values[0] = (val*) var209;
8279 ((struct instance_array__NativeArray*)var231)->values[1] = (val*) var214;
8280 ((struct instance_array__NativeArray*)var231)->values[2] = (val*) var216;
8281 ((struct instance_array__NativeArray*)var231)->values[3] = (val*) var222;
8282 ((struct instance_array__NativeArray*)var231)->values[4] = (val*) var225;
8283 ((void (*)(val*, val*, long))(var229->class->vft[COLOR_array__Array__with_native]))(var229, var231, var230) /* with_native on <var229:Array[Object]>*/;
8284 }
8285 var232 = ((val* (*)(val*))(var229->class->vft[COLOR_string__Object__to_s]))(var229) /* to_s on <var229:Array[Object]>*/;
8286 var233 = NEW_array__Array(&type_array__Arraykernel__Object);
8287 { /* var233 = array_instance Array[Object] */
8288 var234 = 1;
8289 var235 = NEW_array__NativeArray(var234, &type_array__NativeArraykernel__Object);
8290 ((struct instance_array__NativeArray*)var235)->values[0] = (val*) var232;
8291 ((void (*)(val*, val*, long))(var233->class->vft[COLOR_array__Array__with_native]))(var233, var235, var234) /* with_native on <var233:Array[Object]>*/;
8292 }
8293 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__printn]))(self, var233) /* printn on <self:AbstractCompiler>*/;
8294 if (varonce236) {
8295 var237 = varonce236;
8296 } else {
8297 var238 = "\11";
8298 var239 = 1;
8299 var240 = string__NativeString__to_s_with_length(var238, var239);
8300 var237 = var240;
8301 varonce236 = var237;
8302 }
8303 var241 = ((val* (*)(val*, val*))(var_count_type_test_total->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_count_type_test_total, var_tag148) /* [] on <var_count_type_test_total:HashMap[String, Int]>*/;
8304 if (varonce242) {
8305 var243 = varonce242;
8306 } else {
8307 var244 = " (";
8308 var245 = 2;
8309 var246 = string__NativeString__to_s_with_length(var244, var245);
8310 var243 = var246;
8311 varonce242 = var243;
8312 }
8313 var247 = ((val* (*)(val*, val*))(var_count_type_test_total->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_count_type_test_total, var_tag148) /* [] on <var_count_type_test_total:HashMap[String, Int]>*/;
8314 var249 = ((struct instance_kernel__Int*)var247)->value; /* autounbox from nullable Object to Int */;
8315 var248 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__div]))(self, var249, var_count_type_test) /* div on <self:AbstractCompiler>*/;
8316 if (varonce250) {
8317 var251 = varonce250;
8318 } else {
8319 var252 = "%)";
8320 var253 = 2;
8321 var254 = string__NativeString__to_s_with_length(var252, var253);
8322 var251 = var254;
8323 varonce250 = var251;
8324 }
8325 var255 = NEW_array__Array(&type_array__Arraykernel__Object);
8326 { /* var255 = array_instance Array[Object] */
8327 var256 = 5;
8328 var257 = NEW_array__NativeArray(var256, &type_array__NativeArraykernel__Object);
8329 ((struct instance_array__NativeArray*)var257)->values[0] = (val*) var237;
8330 ((struct instance_array__NativeArray*)var257)->values[1] = (val*) var241;
8331 ((struct instance_array__NativeArray*)var257)->values[2] = (val*) var243;
8332 ((struct instance_array__NativeArray*)var257)->values[3] = (val*) var248;
8333 ((struct instance_array__NativeArray*)var257)->values[4] = (val*) var251;
8334 ((void (*)(val*, val*, long))(var255->class->vft[COLOR_array__Array__with_native]))(var255, var257, var256) /* with_native on <var255:Array[Object]>*/;
8335 }
8336 var258 = ((val* (*)(val*))(var255->class->vft[COLOR_string__Object__to_s]))(var255) /* to_s on <var255:Array[Object]>*/;
8337 var259 = NEW_array__Array(&type_array__Arraykernel__Object);
8338 { /* var259 = array_instance Array[Object] */
8339 var260 = 1;
8340 var261 = NEW_array__NativeArray(var260, &type_array__NativeArraykernel__Object);
8341 ((struct instance_array__NativeArray*)var261)->values[0] = (val*) var258;
8342 ((void (*)(val*, val*, long))(var259->class->vft[COLOR_array__Array__with_native]))(var259, var261, var260) /* with_native on <var259:Array[Object]>*/;
8343 }
8344 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__printn]))(self, var259) /* printn on <self:AbstractCompiler>*/;
8345 if (varonce262) {
8346 var263 = varonce262;
8347 } else {
8348 var264 = "";
8349 var265 = 0;
8350 var266 = string__NativeString__to_s_with_length(var264, var265);
8351 var263 = var266;
8352 varonce262 = var263;
8353 }
8354 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var263) /* print on <self:AbstractCompiler>*/;
8355 CONTINUE_label267: (void)0;
8356 ((void (*)(val*))(var145->class->vft[COLOR_abstract_collection__Iterator__next]))(var145) /* next on <var145:Iterator[nullable Object]>*/;
8357 }
8358 BREAK_label267: (void)0;
8359 } else {
8360 }
8361 RET_LABEL:;
8362 }
8363 /* method abstract_compiler#AbstractCompiler#display_stats for (self: Object) */
8364 void VIRTUAL_abstract_compiler__AbstractCompiler__display_stats(val* self) {
8365 abstract_compiler__AbstractCompiler__display_stats(self);
8366 RET_LABEL:;
8367 }
8368 /* method abstract_compiler#AbstractCompiler#div for (self: AbstractCompiler, Int, Int): String */
8369 val* abstract_compiler__AbstractCompiler__div(val* self, long p0, long p1) {
8370 val* var /* : String */;
8371 long var_a /* var a: Int */;
8372 long var_b /* var b: Int */;
8373 long var1 /* : Int */;
8374 short int var2 /* : Bool */;
8375 short int var4 /* : Bool */;
8376 static val* varonce;
8377 val* var5 /* : String */;
8378 char* var6 /* : NativeString */;
8379 long var7 /* : Int */;
8380 val* var8 /* : String */;
8381 long var9 /* : Int */;
8382 long var10 /* : Int */;
8383 long var12 /* : Int */;
8384 long var13 /* : Int */;
8385 long var15 /* : Int */;
8386 double var16 /* : Float */;
8387 double var18 /* : Float */;
8388 double var19 /* : Float */;
8389 double var20 /* : Float */;
8390 double var22 /* : Float */;
8391 long var23 /* : Int */;
8392 val* var24 /* : String */;
8393 var_a = p0;
8394 var_b = p1;
8395 var1 = 0;
8396 { /* Inline kernel#Int#== (var_b,var1) */
8397 var4 = var_b == var1;
8398 var2 = var4;
8399 goto RET_LABEL3;
8400 RET_LABEL3:(void)0;
8401 }
8402 if (var2){
8403 if (varonce) {
8404 var5 = varonce;
8405 } else {
8406 var6 = "n/a";
8407 var7 = 3;
8408 var8 = string__NativeString__to_s_with_length(var6, var7);
8409 var5 = var8;
8410 varonce = var5;
8411 }
8412 var = var5;
8413 goto RET_LABEL;
8414 } else {
8415 }
8416 var9 = 10000;
8417 { /* Inline kernel#Int#* (var_a,var9) */
8418 var12 = var_a * var9;
8419 var10 = var12;
8420 goto RET_LABEL11;
8421 RET_LABEL11:(void)0;
8422 }
8423 { /* Inline kernel#Int#/ (var10,var_b) */
8424 var15 = var10 / var_b;
8425 var13 = var15;
8426 goto RET_LABEL14;
8427 RET_LABEL14:(void)0;
8428 }
8429 { /* Inline kernel#Int#to_f (var13) */
8430 var18 = (double)var13;
8431 var16 = var18;
8432 goto RET_LABEL17;
8433 RET_LABEL17:(void)0;
8434 }
8435 var19 = 100.0;
8436 { /* Inline kernel#Float#/ (var16,var19) */
8437 var22 = var16 / var19;
8438 var20 = var22;
8439 goto RET_LABEL21;
8440 RET_LABEL21:(void)0;
8441 }
8442 var23 = 2;
8443 var24 = string__Float__to_precision(var20, var23);
8444 var = var24;
8445 goto RET_LABEL;
8446 RET_LABEL:;
8447 return var;
8448 }
8449 /* method abstract_compiler#AbstractCompiler#div for (self: Object, Int, Int): String */
8450 val* VIRTUAL_abstract_compiler__AbstractCompiler__div(val* self, long p0, long p1) {
8451 val* var /* : String */;
8452 val* var1 /* : String */;
8453 var1 = abstract_compiler__AbstractCompiler__div(self, p0, p1);
8454 var = var1;
8455 RET_LABEL:;
8456 return var;
8457 }
8458 /* method abstract_compiler#AbstractCompiler#finalize_ffi_for_module for (self: AbstractCompiler, AModule) */
8459 void abstract_compiler__AbstractCompiler__finalize_ffi_for_module(val* self, val* p0) {
8460 val* var_nmodule /* var nmodule: AModule */;
8461 val* var /* : AbstractCompilerVisitor */;
8462 val* var_visitor /* var visitor: AbstractCompilerVisitor */;
8463 val* var1 /* : ModelBuilder */;
8464 var_nmodule = p0;
8465 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_visitor]))(self) /* new_visitor on <self:AbstractCompiler>*/;
8466 var_visitor = var;
8467 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
8468 ((void (*)(val*, val*, val*))(var_nmodule->class->vft[COLOR_abstract_compiler__AModule__finalize_ffi]))(var_nmodule, var_visitor, var1) /* finalize_ffi on <var_nmodule:AModule>*/;
8469 ((void (*)(val*, val*))(var_nmodule->class->vft[COLOR_abstract_compiler__AModule__finalize_nitni]))(var_nmodule, var_visitor) /* finalize_nitni on <var_nmodule:AModule>*/;
8470 RET_LABEL:;
8471 }
8472 /* method abstract_compiler#AbstractCompiler#finalize_ffi_for_module for (self: Object, AModule) */
8473 void VIRTUAL_abstract_compiler__AbstractCompiler__finalize_ffi_for_module(val* self, val* p0) {
8474 abstract_compiler__AbstractCompiler__finalize_ffi_for_module(self, p0);
8475 RET_LABEL:;
8476 }
8477 /* method abstract_compiler#CodeFile#name for (self: CodeFile): String */
8478 val* abstract_compiler__CodeFile__name(val* self) {
8479 val* var /* : String */;
8480 val* var1 /* : String */;
8481 var1 = self->attrs[COLOR_abstract_compiler__CodeFile___64dname].val; /* @name on <self:CodeFile> */
8482 if (var1 == NULL) {
8483 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @name");
8484 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 730);
8485 show_backtrace(1);
8486 }
8487 var = var1;
8488 RET_LABEL:;
8489 return var;
8490 }
8491 /* method abstract_compiler#CodeFile#name for (self: Object): String */
8492 val* VIRTUAL_abstract_compiler__CodeFile__name(val* self) {
8493 val* var /* : String */;
8494 val* var1 /* : String */;
8495 var1 = abstract_compiler__CodeFile__name(self);
8496 var = var1;
8497 RET_LABEL:;
8498 return var;
8499 }
8500 /* method abstract_compiler#CodeFile#name= for (self: CodeFile, String) */
8501 void abstract_compiler__CodeFile__name_61d(val* self, val* p0) {
8502 self->attrs[COLOR_abstract_compiler__CodeFile___64dname].val = p0; /* @name on <self:CodeFile> */
8503 RET_LABEL:;
8504 }
8505 /* method abstract_compiler#CodeFile#name= for (self: Object, String) */
8506 void VIRTUAL_abstract_compiler__CodeFile__name_61d(val* self, val* p0) {
8507 abstract_compiler__CodeFile__name_61d(self, p0);
8508 RET_LABEL:;
8509 }
8510 /* method abstract_compiler#CodeFile#writers for (self: CodeFile): Array[CodeWriter] */
8511 val* abstract_compiler__CodeFile__writers(val* self) {
8512 val* var /* : Array[CodeWriter] */;
8513 val* var1 /* : Array[CodeWriter] */;
8514 var1 = self->attrs[COLOR_abstract_compiler__CodeFile___64dwriters].val; /* @writers on <self:CodeFile> */
8515 if (var1 == NULL) {
8516 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @writers");
8517 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 731);
8518 show_backtrace(1);
8519 }
8520 var = var1;
8521 RET_LABEL:;
8522 return var;
8523 }
8524 /* method abstract_compiler#CodeFile#writers for (self: Object): Array[CodeWriter] */
8525 val* VIRTUAL_abstract_compiler__CodeFile__writers(val* self) {
8526 val* var /* : Array[CodeWriter] */;
8527 val* var1 /* : Array[CodeWriter] */;
8528 var1 = abstract_compiler__CodeFile__writers(self);
8529 var = var1;
8530 RET_LABEL:;
8531 return var;
8532 }
8533 /* method abstract_compiler#CodeFile#writers= for (self: CodeFile, Array[CodeWriter]) */
8534 void abstract_compiler__CodeFile__writers_61d(val* self, val* p0) {
8535 self->attrs[COLOR_abstract_compiler__CodeFile___64dwriters].val = p0; /* @writers on <self:CodeFile> */
8536 RET_LABEL:;
8537 }
8538 /* method abstract_compiler#CodeFile#writers= for (self: Object, Array[CodeWriter]) */
8539 void VIRTUAL_abstract_compiler__CodeFile__writers_61d(val* self, val* p0) {
8540 abstract_compiler__CodeFile__writers_61d(self, p0);
8541 RET_LABEL:;
8542 }
8543 /* method abstract_compiler#CodeFile#required_declarations for (self: CodeFile): HashSet[String] */
8544 val* abstract_compiler__CodeFile__required_declarations(val* self) {
8545 val* var /* : HashSet[String] */;
8546 val* var1 /* : HashSet[String] */;
8547 var1 = self->attrs[COLOR_abstract_compiler__CodeFile___64drequired_declarations].val; /* @required_declarations on <self:CodeFile> */
8548 if (var1 == NULL) {
8549 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @required_declarations");
8550 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 732);
8551 show_backtrace(1);
8552 }
8553 var = var1;
8554 RET_LABEL:;
8555 return var;
8556 }
8557 /* method abstract_compiler#CodeFile#required_declarations for (self: Object): HashSet[String] */
8558 val* VIRTUAL_abstract_compiler__CodeFile__required_declarations(val* self) {
8559 val* var /* : HashSet[String] */;
8560 val* var1 /* : HashSet[String] */;
8561 var1 = abstract_compiler__CodeFile__required_declarations(self);
8562 var = var1;
8563 RET_LABEL:;
8564 return var;
8565 }
8566 /* method abstract_compiler#CodeFile#required_declarations= for (self: CodeFile, HashSet[String]) */
8567 void abstract_compiler__CodeFile__required_declarations_61d(val* self, val* p0) {
8568 self->attrs[COLOR_abstract_compiler__CodeFile___64drequired_declarations].val = p0; /* @required_declarations on <self:CodeFile> */
8569 RET_LABEL:;
8570 }
8571 /* method abstract_compiler#CodeFile#required_declarations= for (self: Object, HashSet[String]) */
8572 void VIRTUAL_abstract_compiler__CodeFile__required_declarations_61d(val* self, val* p0) {
8573 abstract_compiler__CodeFile__required_declarations_61d(self, p0);
8574 RET_LABEL:;
8575 }
8576 /* method abstract_compiler#CodeFile#init for (self: CodeFile, String) */
8577 void abstract_compiler__CodeFile__init(val* self, val* p0) {
8578 self->attrs[COLOR_abstract_compiler__CodeFile___64dname].val = p0; /* @name on <self:CodeFile> */
8579 RET_LABEL:;
8580 }
8581 /* method abstract_compiler#CodeFile#init for (self: Object, String) */
8582 void VIRTUAL_abstract_compiler__CodeFile__init(val* self, val* p0) {
8583 abstract_compiler__CodeFile__init(self, p0);
8584 RET_LABEL:;
8585 }
8586 /* method abstract_compiler#CodeWriter#file for (self: CodeWriter): CodeFile */
8587 val* abstract_compiler__CodeWriter__file(val* self) {
8588 val* var /* : CodeFile */;
8589 val* var1 /* : CodeFile */;
8590 var1 = self->attrs[COLOR_abstract_compiler__CodeWriter___64dfile].val; /* @file on <self:CodeWriter> */
8591 if (var1 == NULL) {
8592 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @file");
8593 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 737);
8594 show_backtrace(1);
8595 }
8596 var = var1;
8597 RET_LABEL:;
8598 return var;
8599 }
8600 /* method abstract_compiler#CodeWriter#file for (self: Object): CodeFile */
8601 val* VIRTUAL_abstract_compiler__CodeWriter__file(val* self) {
8602 val* var /* : CodeFile */;
8603 val* var1 /* : CodeFile */;
8604 var1 = abstract_compiler__CodeWriter__file(self);
8605 var = var1;
8606 RET_LABEL:;
8607 return var;
8608 }
8609 /* method abstract_compiler#CodeWriter#file= for (self: CodeWriter, CodeFile) */
8610 void abstract_compiler__CodeWriter__file_61d(val* self, val* p0) {
8611 self->attrs[COLOR_abstract_compiler__CodeWriter___64dfile].val = p0; /* @file on <self:CodeWriter> */
8612 RET_LABEL:;
8613 }
8614 /* method abstract_compiler#CodeWriter#file= for (self: Object, CodeFile) */
8615 void VIRTUAL_abstract_compiler__CodeWriter__file_61d(val* self, val* p0) {
8616 abstract_compiler__CodeWriter__file_61d(self, p0);
8617 RET_LABEL:;
8618 }
8619 /* method abstract_compiler#CodeWriter#lines for (self: CodeWriter): List[String] */
8620 val* abstract_compiler__CodeWriter__lines(val* self) {
8621 val* var /* : List[String] */;
8622 val* var1 /* : List[String] */;
8623 var1 = self->attrs[COLOR_abstract_compiler__CodeWriter___64dlines].val; /* @lines on <self:CodeWriter> */
8624 if (var1 == NULL) {
8625 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @lines");
8626 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 738);
8627 show_backtrace(1);
8628 }
8629 var = var1;
8630 RET_LABEL:;
8631 return var;
8632 }
8633 /* method abstract_compiler#CodeWriter#lines for (self: Object): List[String] */
8634 val* VIRTUAL_abstract_compiler__CodeWriter__lines(val* self) {
8635 val* var /* : List[String] */;
8636 val* var1 /* : List[String] */;
8637 var1 = abstract_compiler__CodeWriter__lines(self);
8638 var = var1;
8639 RET_LABEL:;
8640 return var;
8641 }
8642 /* method abstract_compiler#CodeWriter#lines= for (self: CodeWriter, List[String]) */
8643 void abstract_compiler__CodeWriter__lines_61d(val* self, val* p0) {
8644 self->attrs[COLOR_abstract_compiler__CodeWriter___64dlines].val = p0; /* @lines on <self:CodeWriter> */
8645 RET_LABEL:;
8646 }
8647 /* method abstract_compiler#CodeWriter#lines= for (self: Object, List[String]) */
8648 void VIRTUAL_abstract_compiler__CodeWriter__lines_61d(val* self, val* p0) {
8649 abstract_compiler__CodeWriter__lines_61d(self, p0);
8650 RET_LABEL:;
8651 }
8652 /* method abstract_compiler#CodeWriter#decl_lines for (self: CodeWriter): List[String] */
8653 val* abstract_compiler__CodeWriter__decl_lines(val* self) {
8654 val* var /* : List[String] */;
8655 val* var1 /* : List[String] */;
8656 var1 = self->attrs[COLOR_abstract_compiler__CodeWriter___64ddecl_lines].val; /* @decl_lines on <self:CodeWriter> */
8657 if (var1 == NULL) {
8658 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @decl_lines");
8659 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 739);
8660 show_backtrace(1);
8661 }
8662 var = var1;
8663 RET_LABEL:;
8664 return var;
8665 }
8666 /* method abstract_compiler#CodeWriter#decl_lines for (self: Object): List[String] */
8667 val* VIRTUAL_abstract_compiler__CodeWriter__decl_lines(val* self) {
8668 val* var /* : List[String] */;
8669 val* var1 /* : List[String] */;
8670 var1 = abstract_compiler__CodeWriter__decl_lines(self);
8671 var = var1;
8672 RET_LABEL:;
8673 return var;
8674 }
8675 /* method abstract_compiler#CodeWriter#decl_lines= for (self: CodeWriter, List[String]) */
8676 void abstract_compiler__CodeWriter__decl_lines_61d(val* self, val* p0) {
8677 self->attrs[COLOR_abstract_compiler__CodeWriter___64ddecl_lines].val = p0; /* @decl_lines on <self:CodeWriter> */
8678 RET_LABEL:;
8679 }
8680 /* method abstract_compiler#CodeWriter#decl_lines= for (self: Object, List[String]) */
8681 void VIRTUAL_abstract_compiler__CodeWriter__decl_lines_61d(val* self, val* p0) {
8682 abstract_compiler__CodeWriter__decl_lines_61d(self, p0);
8683 RET_LABEL:;
8684 }
8685 /* method abstract_compiler#CodeWriter#add for (self: CodeWriter, String) */
8686 void abstract_compiler__CodeWriter__add(val* self, val* p0) {
8687 val* var_s /* var s: String */;
8688 val* var /* : List[String] */;
8689 var_s = p0;
8690 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__CodeWriter__lines]))(self) /* lines on <self:CodeWriter>*/;
8691 ((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var, var_s) /* add on <var:List[String]>*/;
8692 RET_LABEL:;
8693 }
8694 /* method abstract_compiler#CodeWriter#add for (self: Object, String) */
8695 void VIRTUAL_abstract_compiler__CodeWriter__add(val* self, val* p0) {
8696 abstract_compiler__CodeWriter__add(self, p0);
8697 RET_LABEL:;
8698 }
8699 /* method abstract_compiler#CodeWriter#add_decl for (self: CodeWriter, String) */
8700 void abstract_compiler__CodeWriter__add_decl(val* self, val* p0) {
8701 val* var_s /* var s: String */;
8702 val* var /* : List[String] */;
8703 var_s = p0;
8704 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__CodeWriter__decl_lines]))(self) /* decl_lines on <self:CodeWriter>*/;
8705 ((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var, var_s) /* add on <var:List[String]>*/;
8706 RET_LABEL:;
8707 }
8708 /* method abstract_compiler#CodeWriter#add_decl for (self: Object, String) */
8709 void VIRTUAL_abstract_compiler__CodeWriter__add_decl(val* self, val* p0) {
8710 abstract_compiler__CodeWriter__add_decl(self, p0);
8711 RET_LABEL:;
8712 }
8713 /* method abstract_compiler#CodeWriter#init for (self: CodeWriter, CodeFile) */
8714 void abstract_compiler__CodeWriter__init(val* self, val* p0) {
8715 val* var_file /* var file: CodeFile */;
8716 val* var /* : Array[CodeWriter] */;
8717 var_file = p0;
8718 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__CodeWriter__file_61d]))(self, var_file) /* file= on <self:CodeWriter>*/;
8719 var = ((val* (*)(val*))(var_file->class->vft[COLOR_abstract_compiler__CodeFile__writers]))(var_file) /* writers on <var_file:CodeFile>*/;
8720 ((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var, self) /* add on <var:Array[CodeWriter]>*/;
8721 RET_LABEL:;
8722 }
8723 /* method abstract_compiler#CodeWriter#init for (self: Object, CodeFile) */
8724 void VIRTUAL_abstract_compiler__CodeWriter__init(val* self, val* p0) {
8725 abstract_compiler__CodeWriter__init(self, p0);
8726 RET_LABEL:;
8727 }
8728 /* method abstract_compiler#AbstractCompilerVisitor#compiler for (self: AbstractCompilerVisitor): AbstractCompiler */
8729 val* abstract_compiler__AbstractCompilerVisitor__compiler(val* self) {
8730 val* var /* : AbstractCompiler */;
8731 val* var1 /* : AbstractCompiler */;
8732 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dcompiler].val; /* @compiler on <self:AbstractCompilerVisitor> */
8733 if (var1 == NULL) {
8734 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @compiler");
8735 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 760);
8736 show_backtrace(1);
8737 }
8738 var = var1;
8739 RET_LABEL:;
8740 return var;
8741 }
8742 /* method abstract_compiler#AbstractCompilerVisitor#compiler for (self: Object): AbstractCompiler */
8743 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__compiler(val* self) {
8744 val* var /* : AbstractCompiler */;
8745 val* var1 /* : AbstractCompiler */;
8746 var1 = abstract_compiler__AbstractCompilerVisitor__compiler(self);
8747 var = var1;
8748 RET_LABEL:;
8749 return var;
8750 }
8751 /* method abstract_compiler#AbstractCompilerVisitor#compiler= for (self: AbstractCompilerVisitor, AbstractCompiler) */
8752 void abstract_compiler__AbstractCompilerVisitor__compiler_61d(val* self, val* p0) {
8753 short int var /* : Bool */;
8754 int cltype;
8755 int idtype;
8756 const struct type* type_struct;
8757 const char* var_class_name;
8758 /* Covariant cast for argument 0 (compiler) <p0:AbstractCompiler> isa COMPILER */
8759 /* <p0:AbstractCompiler> isa COMPILER */
8760 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractCompilerVisitor_VTCOMPILER];
8761 cltype = type_struct->color;
8762 idtype = type_struct->id;
8763 if(cltype >= p0->type->table_size) {
8764 var = 0;
8765 } else {
8766 var = p0->type->type_table[cltype] == idtype;
8767 }
8768 if (!var) {
8769 var_class_name = p0 == NULL ? "null" : p0->type->name;
8770 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPILER", var_class_name);
8771 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 760);
8772 show_backtrace(1);
8773 }
8774 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dcompiler].val = p0; /* @compiler on <self:AbstractCompilerVisitor> */
8775 RET_LABEL:;
8776 }
8777 /* method abstract_compiler#AbstractCompilerVisitor#compiler= for (self: Object, AbstractCompiler) */
8778 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__compiler_61d(val* self, val* p0) {
8779 abstract_compiler__AbstractCompilerVisitor__compiler_61d(self, p0);
8780 RET_LABEL:;
8781 }
8782 /* method abstract_compiler#AbstractCompilerVisitor#current_node for (self: AbstractCompilerVisitor): nullable ANode */
8783 val* abstract_compiler__AbstractCompilerVisitor__current_node(val* self) {
8784 val* var /* : nullable ANode */;
8785 val* var1 /* : nullable ANode */;
8786 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dcurrent_node].val; /* @current_node on <self:AbstractCompilerVisitor> */
8787 var = var1;
8788 RET_LABEL:;
8789 return var;
8790 }
8791 /* method abstract_compiler#AbstractCompilerVisitor#current_node for (self: Object): nullable ANode */
8792 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__current_node(val* self) {
8793 val* var /* : nullable ANode */;
8794 val* var1 /* : nullable ANode */;
8795 var1 = abstract_compiler__AbstractCompilerVisitor__current_node(self);
8796 var = var1;
8797 RET_LABEL:;
8798 return var;
8799 }
8800 /* method abstract_compiler#AbstractCompilerVisitor#current_node= for (self: AbstractCompilerVisitor, nullable ANode) */
8801 void abstract_compiler__AbstractCompilerVisitor__current_node_61d(val* self, val* p0) {
8802 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dcurrent_node].val = p0; /* @current_node on <self:AbstractCompilerVisitor> */
8803 RET_LABEL:;
8804 }
8805 /* method abstract_compiler#AbstractCompilerVisitor#current_node= for (self: Object, nullable ANode) */
8806 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__current_node_61d(val* self, val* p0) {
8807 abstract_compiler__AbstractCompilerVisitor__current_node_61d(self, p0);
8808 RET_LABEL:;
8809 }
8810 /* method abstract_compiler#AbstractCompilerVisitor#frame for (self: AbstractCompilerVisitor): nullable Frame */
8811 val* abstract_compiler__AbstractCompilerVisitor__frame(val* self) {
8812 val* var /* : nullable Frame */;
8813 val* var1 /* : nullable Frame */;
8814 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dframe].val; /* @frame on <self:AbstractCompilerVisitor> */
8815 var = var1;
8816 RET_LABEL:;
8817 return var;
8818 }
8819 /* method abstract_compiler#AbstractCompilerVisitor#frame for (self: Object): nullable Frame */
8820 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__frame(val* self) {
8821 val* var /* : nullable Frame */;
8822 val* var1 /* : nullable Frame */;
8823 var1 = abstract_compiler__AbstractCompilerVisitor__frame(self);
8824 var = var1;
8825 RET_LABEL:;
8826 return var;
8827 }
8828 /* method abstract_compiler#AbstractCompilerVisitor#frame= for (self: AbstractCompilerVisitor, nullable Frame) */
8829 void abstract_compiler__AbstractCompilerVisitor__frame_61d(val* self, val* p0) {
8830 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dframe].val = p0; /* @frame on <self:AbstractCompilerVisitor> */
8831 RET_LABEL:;
8832 }
8833 /* method abstract_compiler#AbstractCompilerVisitor#frame= for (self: Object, nullable Frame) */
8834 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__frame_61d(val* self, val* p0) {
8835 abstract_compiler__AbstractCompilerVisitor__frame_61d(self, p0);
8836 RET_LABEL:;
8837 }
8838 /* method abstract_compiler#AbstractCompilerVisitor#object_type for (self: AbstractCompilerVisitor): MClassType */
8839 val* abstract_compiler__AbstractCompilerVisitor__object_type(val* self) {
8840 val* var /* : MClassType */;
8841 val* var1 /* : AbstractCompiler */;
8842 val* var2 /* : MModule */;
8843 val* var3 /* : MClassType */;
8844 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
8845 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var1) /* mainmodule on <var1:AbstractCompiler>*/;
8846 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MModule__object_type]))(var2) /* object_type on <var2:MModule>*/;
8847 var = var3;
8848 goto RET_LABEL;
8849 RET_LABEL:;
8850 return var;
8851 }
8852 /* method abstract_compiler#AbstractCompilerVisitor#object_type for (self: Object): MClassType */
8853 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__object_type(val* self) {
8854 val* var /* : MClassType */;
8855 val* var1 /* : MClassType */;
8856 var1 = abstract_compiler__AbstractCompilerVisitor__object_type(self);
8857 var = var1;
8858 RET_LABEL:;
8859 return var;
8860 }
8861 /* method abstract_compiler#AbstractCompilerVisitor#bool_type for (self: AbstractCompilerVisitor): MClassType */
8862 val* abstract_compiler__AbstractCompilerVisitor__bool_type(val* self) {
8863 val* var /* : MClassType */;
8864 val* var1 /* : AbstractCompiler */;
8865 val* var2 /* : MModule */;
8866 val* var3 /* : MClassType */;
8867 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
8868 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var1) /* mainmodule on <var1:AbstractCompiler>*/;
8869 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MModule__bool_type]))(var2) /* bool_type on <var2:MModule>*/;
8870 var = var3;
8871 goto RET_LABEL;
8872 RET_LABEL:;
8873 return var;
8874 }
8875 /* method abstract_compiler#AbstractCompilerVisitor#bool_type for (self: Object): MClassType */
8876 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__bool_type(val* self) {
8877 val* var /* : MClassType */;
8878 val* var1 /* : MClassType */;
8879 var1 = abstract_compiler__AbstractCompilerVisitor__bool_type(self);
8880 var = var1;
8881 RET_LABEL:;
8882 return var;
8883 }
8884 /* method abstract_compiler#AbstractCompilerVisitor#writer for (self: AbstractCompilerVisitor): CodeWriter */
8885 val* abstract_compiler__AbstractCompilerVisitor__writer(val* self) {
8886 val* var /* : CodeWriter */;
8887 val* var1 /* : CodeWriter */;
8888 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dwriter].val; /* @writer on <self:AbstractCompilerVisitor> */
8889 if (var1 == NULL) {
8890 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @writer");
8891 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 775);
8892 show_backtrace(1);
8893 }
8894 var = var1;
8895 RET_LABEL:;
8896 return var;
8897 }
8898 /* method abstract_compiler#AbstractCompilerVisitor#writer for (self: Object): CodeWriter */
8899 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__writer(val* self) {
8900 val* var /* : CodeWriter */;
8901 val* var1 /* : CodeWriter */;
8902 var1 = abstract_compiler__AbstractCompilerVisitor__writer(self);
8903 var = var1;
8904 RET_LABEL:;
8905 return var;
8906 }
8907 /* method abstract_compiler#AbstractCompilerVisitor#writer= for (self: AbstractCompilerVisitor, CodeWriter) */
8908 void abstract_compiler__AbstractCompilerVisitor__writer_61d(val* self, val* p0) {
8909 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dwriter].val = p0; /* @writer on <self:AbstractCompilerVisitor> */
8910 RET_LABEL:;
8911 }
8912 /* method abstract_compiler#AbstractCompilerVisitor#writer= for (self: Object, CodeWriter) */
8913 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__writer_61d(val* self, val* p0) {
8914 abstract_compiler__AbstractCompilerVisitor__writer_61d(self, p0);
8915 RET_LABEL:;
8916 }
8917 /* method abstract_compiler#AbstractCompilerVisitor#init for (self: AbstractCompilerVisitor, AbstractCompiler) */
8918 void abstract_compiler__AbstractCompilerVisitor__init(val* self, val* p0) {
8919 short int var /* : Bool */;
8920 int cltype;
8921 int idtype;
8922 const struct type* type_struct;
8923 const char* var_class_name;
8924 val* var_compiler /* var compiler: AbstractCompiler */;
8925 val* var1 /* : CodeWriter */;
8926 val* var2 /* : List[CodeFile] */;
8927 val* var3 /* : nullable Object */;
8928 /* Covariant cast for argument 0 (compiler) <p0:AbstractCompiler> isa COMPILER */
8929 /* <p0:AbstractCompiler> isa COMPILER */
8930 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractCompilerVisitor_VTCOMPILER];
8931 cltype = type_struct->color;
8932 idtype = type_struct->id;
8933 if(cltype >= p0->type->table_size) {
8934 var = 0;
8935 } else {
8936 var = p0->type->type_table[cltype] == idtype;
8937 }
8938 if (!var) {
8939 var_class_name = p0 == NULL ? "null" : p0->type->name;
8940 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPILER", var_class_name);
8941 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 777);
8942 show_backtrace(1);
8943 }
8944 var_compiler = p0;
8945 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler_61d]))(self, var_compiler) /* compiler= on <self:AbstractCompilerVisitor>*/;
8946 var1 = NEW_abstract_compiler__CodeWriter(&type_abstract_compiler__CodeWriter);
8947 var2 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__files]))(var_compiler) /* files on <var_compiler:AbstractCompiler>*/;
8948 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__SequenceRead__last]))(var2) /* last on <var2:List[CodeFile]>*/;
8949 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_compiler__CodeWriter__init]))(var1, var3) /* init on <var1:CodeWriter>*/;
8950 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__writer_61d]))(self, var1) /* writer= on <self:AbstractCompilerVisitor>*/;
8951 RET_LABEL:;
8952 }
8953 /* method abstract_compiler#AbstractCompilerVisitor#init for (self: Object, AbstractCompiler) */
8954 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__init(val* self, val* p0) {
8955 abstract_compiler__AbstractCompilerVisitor__init(self, p0);
8956 RET_LABEL:;
8957 }
8958 /* method abstract_compiler#AbstractCompilerVisitor#get_class for (self: AbstractCompilerVisitor, String): MClass */
8959 val* abstract_compiler__AbstractCompilerVisitor__get_class(val* self, val* p0) {
8960 val* var /* : MClass */;
8961 val* var_name /* var name: String */;
8962 val* var1 /* : AbstractCompiler */;
8963 val* var2 /* : MModule */;
8964 val* var3 /* : MClass */;
8965 var_name = p0;
8966 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
8967 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var1) /* mainmodule on <var1:AbstractCompiler>*/;
8968 var3 = ((val* (*)(val*, val*))(var2->class->vft[COLOR_model__MModule__get_primitive_class]))(var2, var_name) /* get_primitive_class on <var2:MModule>*/;
8969 var = var3;
8970 goto RET_LABEL;
8971 RET_LABEL:;
8972 return var;
8973 }
8974 /* method abstract_compiler#AbstractCompilerVisitor#get_class for (self: Object, String): MClass */
8975 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__get_class(val* self, val* p0) {
8976 val* var /* : MClass */;
8977 val* var1 /* : MClass */;
8978 var1 = abstract_compiler__AbstractCompilerVisitor__get_class(self, p0);
8979 var = var1;
8980 RET_LABEL:;
8981 return var;
8982 }
8983 /* method abstract_compiler#AbstractCompilerVisitor#get_property for (self: AbstractCompilerVisitor, String, MType): MMethod */
8984 val* abstract_compiler__AbstractCompilerVisitor__get_property(val* self, val* p0, val* p1) {
8985 val* var /* : MMethod */;
8986 val* var_name /* var name: String */;
8987 val* var_recv /* var recv: MType */;
8988 short int var1 /* : Bool */;
8989 int cltype;
8990 int idtype;
8991 val* var2 /* : AbstractCompiler */;
8992 val* var3 /* : ModelBuilder */;
8993 val* var4 /* : nullable ANode */;
8994 val* var5 /* : MClass */;
8995 val* var6 /* : AbstractCompiler */;
8996 val* var7 /* : MModule */;
8997 val* var8 /* : MMethod */;
8998 var_name = p0;
8999 var_recv = p1;
9000 /* <var_recv:MType> isa MClassType */
9001 cltype = type_model__MClassType.color;
9002 idtype = type_model__MClassType.id;
9003 if(cltype >= var_recv->type->table_size) {
9004 var1 = 0;
9005 } else {
9006 var1 = var_recv->type->type_table[cltype] == idtype;
9007 }
9008 if (!var1) {
9009 fprintf(stderr, "Runtime error: %s", "Assert failed");
9010 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 789);
9011 show_backtrace(1);
9012 }
9013 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
9014 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var2) /* modelbuilder on <var2:AbstractCompiler>*/;
9015 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node]))(self) /* current_node on <self:AbstractCompilerVisitor>*/;
9016 if (var4 == NULL) {
9017 fprintf(stderr, "Runtime error: %s", "Cast failed");
9018 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 790);
9019 show_backtrace(1);
9020 }
9021 var5 = ((val* (*)(val*))(var_recv->class->vft[COLOR_model__MClassType__mclass]))(var_recv) /* mclass on <var_recv:MType(MClassType)>*/;
9022 var6 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
9023 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var6) /* mainmodule on <var6:AbstractCompiler>*/;
9024 var8 = ((val* (*)(val*, val*, val*, val*, val*))(var3->class->vft[COLOR_modelbuilder__ModelBuilder__force_get_primitive_method]))(var3, var4, var_name, var5, var7) /* force_get_primitive_method on <var3:ModelBuilder>*/;
9025 var = var8;
9026 goto RET_LABEL;
9027 RET_LABEL:;
9028 return var;
9029 }
9030 /* method abstract_compiler#AbstractCompilerVisitor#get_property for (self: Object, String, MType): MMethod */
9031 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__get_property(val* self, val* p0, val* p1) {
9032 val* var /* : MMethod */;
9033 val* var1 /* : MMethod */;
9034 var1 = abstract_compiler__AbstractCompilerVisitor__get_property(self, p0, p1);
9035 var = var1;
9036 RET_LABEL:;
9037 return var;
9038 }
9039 /* method abstract_compiler#AbstractCompilerVisitor#compile_callsite for (self: AbstractCompilerVisitor, CallSite, Array[RuntimeVariable]): nullable RuntimeVariable */
9040 val* abstract_compiler__AbstractCompilerVisitor__compile_callsite(val* self, val* p0, val* p1) {
9041 val* var /* : nullable RuntimeVariable */;
9042 val* var_callsite /* var callsite: CallSite */;
9043 val* var_args /* var args: Array[RuntimeVariable] */;
9044 val* var1 /* : MMethod */;
9045 val* var2 /* : nullable RuntimeVariable */;
9046 var_callsite = p0;
9047 var_args = p1;
9048 var1 = ((val* (*)(val*))(var_callsite->class->vft[COLOR_typing__CallSite__mproperty]))(var_callsite) /* mproperty on <var_callsite:CallSite>*/;
9049 var2 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(self, var1, var_args) /* send on <self:AbstractCompilerVisitor>*/;
9050 var = var2;
9051 goto RET_LABEL;
9052 RET_LABEL:;
9053 return var;
9054 }
9055 /* method abstract_compiler#AbstractCompilerVisitor#compile_callsite for (self: Object, CallSite, Array[RuntimeVariable]): nullable RuntimeVariable */
9056 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__compile_callsite(val* self, val* p0, val* p1) {
9057 val* var /* : nullable RuntimeVariable */;
9058 val* var1 /* : nullable RuntimeVariable */;
9059 var1 = abstract_compiler__AbstractCompilerVisitor__compile_callsite(self, p0, p1);
9060 var = var1;
9061 RET_LABEL:;
9062 return var;
9063 }
9064 /* method abstract_compiler#AbstractCompilerVisitor#calloc_array for (self: AbstractCompilerVisitor, MType, Array[RuntimeVariable]) */
9065 void abstract_compiler__AbstractCompilerVisitor__calloc_array(val* self, val* p0, val* p1) {
9066 const char* var_class_name;
9067 var_class_name = self == NULL ? "null" : self->type->name;
9068 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "calloc_array", var_class_name);
9069 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 798);
9070 show_backtrace(1);
9071 RET_LABEL:;
9072 }
9073 /* method abstract_compiler#AbstractCompilerVisitor#calloc_array for (self: Object, MType, Array[RuntimeVariable]) */
9074 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__calloc_array(val* self, val* p0, val* p1) {
9075 abstract_compiler__AbstractCompilerVisitor__calloc_array(self, p0, p1);
9076 RET_LABEL:;
9077 }
9078 /* method abstract_compiler#AbstractCompilerVisitor#native_array_def for (self: AbstractCompilerVisitor, String, nullable MType, Array[RuntimeVariable]) */
9079 void abstract_compiler__AbstractCompilerVisitor__native_array_def(val* self, val* p0, val* p1, val* p2) {
9080 const char* var_class_name;
9081 var_class_name = self == NULL ? "null" : self->type->name;
9082 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "native_array_def", var_class_name);
9083 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 800);
9084 show_backtrace(1);
9085 RET_LABEL:;
9086 }
9087 /* method abstract_compiler#AbstractCompilerVisitor#native_array_def for (self: Object, String, nullable MType, Array[RuntimeVariable]) */
9088 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__native_array_def(val* self, val* p0, val* p1, val* p2) {
9089 abstract_compiler__AbstractCompilerVisitor__native_array_def(self, p0, p1, p2);
9090 RET_LABEL:;
9091 }
9092 /* method abstract_compiler#AbstractCompilerVisitor#varargize for (self: AbstractCompilerVisitor, MPropDef, MSignature, Array[RuntimeVariable]) */
9093 void abstract_compiler__AbstractCompilerVisitor__varargize(val* self, val* p0, val* p1, val* p2) {
9094 val* var_mpropdef /* var mpropdef: MPropDef */;
9095 val* var_msignature /* var msignature: MSignature */;
9096 val* var_args /* var args: Array[RuntimeVariable] */;
9097 val* var /* : nullable Object */;
9098 val* var_recv /* var recv: RuntimeVariable */;
9099 long var1 /* : Int */;
9100 long var_vararg_rank /* var vararg_rank: Int */;
9101 long var2 /* : Int */;
9102 short int var3 /* : Bool */;
9103 short int var5 /* : Bool */;
9104 int cltype;
9105 int idtype;
9106 const char* var_class_name;
9107 short int var6 /* : Bool */;
9108 long var7 /* : Int */;
9109 long var8 /* : Int */;
9110 long var9 /* : Int */;
9111 long var10 /* : Int */;
9112 long var12 /* : Int */;
9113 short int var13 /* : Bool */;
9114 short int var15 /* : Bool */;
9115 int cltype16;
9116 int idtype17;
9117 const char* var_class_name18;
9118 short int var19 /* : Bool */;
9119 val* var_rawargs /* var rawargs: Array[RuntimeVariable] */;
9120 val* var20 /* : Array[RuntimeVariable] */;
9121 val* var21 /* : nullable Object */;
9122 val* var22 /* : Range[Int] */;
9123 long var23 /* : Int */;
9124 val* var24 /* : Discrete */;
9125 val* var25 /* : Discrete */;
9126 val* var26 /* : Iterator[nullable Object] */;
9127 short int var27 /* : Bool */;
9128 val* var28 /* : nullable Object */;
9129 long var_i /* var i: Int */;
9130 long var29 /* : Int */;
9131 long var30 /* : Int */;
9132 long var31 /* : Int */;
9133 long var33 /* : Int */;
9134 val* var34 /* : nullable Object */;
9135 long var35 /* : Int */;
9136 long var36 /* : Int */;
9137 long var38 /* : Int */;
9138 long var39 /* : Int */;
9139 long var40 /* : Int */;
9140 long var42 /* : Int */;
9141 long var43 /* : Int */;
9142 long var44 /* : Int */;
9143 long var46 /* : Int */;
9144 long var_vararg_lastrank /* var vararg_lastrank: Int */;
9145 val* var47 /* : Array[RuntimeVariable] */;
9146 val* var_vararg /* var vararg: Array[RuntimeVariable] */;
9147 val* var48 /* : Range[Int] */;
9148 val* var49 /* : Discrete */;
9149 val* var50 /* : Discrete */;
9150 val* var51 /* : Iterator[nullable Object] */;
9151 short int var52 /* : Bool */;
9152 val* var53 /* : nullable Object */;
9153 long var_i54 /* var i: Int */;
9154 long var55 /* : Int */;
9155 long var56 /* : Int */;
9156 long var57 /* : Int */;
9157 long var59 /* : Int */;
9158 val* var60 /* : nullable Object */;
9159 val* var62 /* : Array[MParameter] */;
9160 val* var63 /* : nullable Object */;
9161 val* var64 /* : MType */;
9162 val* var_elttype /* var elttype: MType */;
9163 val* var65 /* : RuntimeVariable */;
9164 val* var66 /* : Range[Int] */;
9165 long var67 /* : Int */;
9166 long var68 /* : Int */;
9167 long var70 /* : Int */;
9168 long var71 /* : Int */;
9169 long var72 /* : Int */;
9170 long var73 /* : Int */;
9171 long var75 /* : Int */;
9172 val* var76 /* : Discrete */;
9173 val* var77 /* : Discrete */;
9174 val* var78 /* : Iterator[nullable Object] */;
9175 short int var79 /* : Bool */;
9176 val* var80 /* : nullable Object */;
9177 long var_i81 /* var i: Int */;
9178 long var82 /* : Int */;
9179 long var83 /* : Int */;
9180 long var84 /* : Int */;
9181 long var86 /* : Int */;
9182 val* var87 /* : nullable Object */;
9183 var_mpropdef = p0;
9184 var_msignature = p1;
9185 var_args = p2;
9186 var = ((val* (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__first]))(var_args) /* first on <var_args:Array[RuntimeVariable]>*/;
9187 var_recv = var;
9188 var1 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__vararg_rank]))(var_msignature) /* vararg_rank on <var_msignature:MSignature>*/;
9189 var_vararg_rank = var1;
9190 var2 = 0;
9191 { /* Inline kernel#Int#>= (var_vararg_rank,var2) */
9192 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
9193 /* <var2:Int> isa OTHER */
9194 var5 = 1; /* easy <var2:Int> isa OTHER*/
9195 if (!var5) {
9196 var_class_name = type_kernel__Int.name;
9197 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
9198 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
9199 show_backtrace(1);
9200 }
9201 var6 = var_vararg_rank >= var2;
9202 var3 = var6;
9203 goto RET_LABEL4;
9204 RET_LABEL4:(void)0;
9205 }
9206 if (var3){
9207 var7 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[RuntimeVariable]>*/;
9208 var8 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
9209 var9 = 1;
9210 { /* Inline kernel#Int#+ (var8,var9) */
9211 var12 = var8 + var9;
9212 var10 = var12;
9213 goto RET_LABEL11;
9214 RET_LABEL11:(void)0;
9215 }
9216 { /* Inline kernel#Int#>= (var7,var10) */
9217 /* Covariant cast for argument 0 (i) <var10:Int> isa OTHER */
9218 /* <var10:Int> isa OTHER */
9219 var15 = 1; /* easy <var10:Int> isa OTHER*/
9220 if (!var15) {
9221 var_class_name18 = type_kernel__Int.name;
9222 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name18);
9223 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
9224 show_backtrace(1);
9225 }
9226 var19 = var7 >= var10;
9227 var13 = var19;
9228 goto RET_LABEL14;
9229 RET_LABEL14:(void)0;
9230 }
9231 if (!var13) {
9232 fprintf(stderr, "Runtime error: %s", "Assert failed");
9233 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 810);
9234 show_backtrace(1);
9235 }
9236 var_rawargs = var_args;
9237 var20 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
9238 ((void (*)(val*))(var20->class->vft[COLOR_array__Array__init]))(var20) /* init on <var20:Array[RuntimeVariable]>*/;
9239 var_args = var20;
9240 var21 = ((val* (*)(val*))(var_rawargs->class->vft[COLOR_abstract_collection__Collection__first]))(var_rawargs) /* first on <var_rawargs:Array[RuntimeVariable]>*/;
9241 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_args, var21) /* add on <var_args:Array[RuntimeVariable]>*/;
9242 var22 = NEW_range__Range(&type_range__Rangekernel__Int);
9243 var23 = 0;
9244 var24 = BOX_kernel__Int(var23); /* autobox from Int to Discrete */
9245 var25 = BOX_kernel__Int(var_vararg_rank); /* autobox from Int to Discrete */
9246 ((void (*)(val*, val*, val*))(var22->class->vft[COLOR_range__Range__without_last]))(var22, var24, var25) /* without_last on <var22:Range[Int]>*/;
9247 var26 = ((val* (*)(val*))(var22->class->vft[COLOR_abstract_collection__Collection__iterator]))(var22) /* iterator on <var22:Range[Int]>*/;
9248 for(;;) {
9249 var27 = ((short int (*)(val*))(var26->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var26) /* is_ok on <var26:Iterator[nullable Object]>*/;
9250 if(!var27) break;
9251 var28 = ((val* (*)(val*))(var26->class->vft[COLOR_abstract_collection__Iterator__item]))(var26) /* item on <var26:Iterator[nullable Object]>*/;
9252 var29 = ((struct instance_kernel__Int*)var28)->value; /* autounbox from nullable Object to Int */;
9253 var_i = var29;
9254 var30 = 1;
9255 { /* Inline kernel#Int#+ (var_i,var30) */
9256 var33 = var_i + var30;
9257 var31 = var33;
9258 goto RET_LABEL32;
9259 RET_LABEL32:(void)0;
9260 }
9261 var34 = ((val* (*)(val*, long))(var_rawargs->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_rawargs, var31) /* [] on <var_rawargs:Array[RuntimeVariable]>*/;
9262 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_args, var34) /* add on <var_args:Array[RuntimeVariable]>*/;
9263 CONTINUE_label: (void)0;
9264 ((void (*)(val*))(var26->class->vft[COLOR_abstract_collection__Iterator__next]))(var26) /* next on <var26:Iterator[nullable Object]>*/;
9265 }
9266 BREAK_label: (void)0;
9267 var35 = ((long (*)(val*))(var_rawargs->class->vft[COLOR_abstract_collection__Collection__length]))(var_rawargs) /* length on <var_rawargs:Array[RuntimeVariable]>*/;
9268 { /* Inline kernel#Int#+ (var_vararg_rank,var35) */
9269 var38 = var_vararg_rank + var35;
9270 var36 = var38;
9271 goto RET_LABEL37;
9272 RET_LABEL37:(void)0;
9273 }
9274 var39 = 1;
9275 { /* Inline kernel#Int#- (var36,var39) */
9276 var42 = var36 - var39;
9277 var40 = var42;
9278 goto RET_LABEL41;
9279 RET_LABEL41:(void)0;
9280 }
9281 var43 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
9282 { /* Inline kernel#Int#- (var40,var43) */
9283 var46 = var40 - var43;
9284 var44 = var46;
9285 goto RET_LABEL45;
9286 RET_LABEL45:(void)0;
9287 }
9288 var_vararg_lastrank = var44;
9289 var47 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
9290 ((void (*)(val*))(var47->class->vft[COLOR_array__Array__init]))(var47) /* init on <var47:Array[RuntimeVariable]>*/;
9291 var_vararg = var47;
9292 var48 = NEW_range__Range(&type_range__Rangekernel__Int);
9293 var49 = BOX_kernel__Int(var_vararg_rank); /* autobox from Int to Discrete */
9294 var50 = BOX_kernel__Int(var_vararg_lastrank); /* autobox from Int to Discrete */
9295 ((void (*)(val*, val*, val*))(var48->class->vft[COLOR_range__Range__init]))(var48, var49, var50) /* init on <var48:Range[Int]>*/;
9296 var51 = ((val* (*)(val*))(var48->class->vft[COLOR_abstract_collection__Collection__iterator]))(var48) /* iterator on <var48:Range[Int]>*/;
9297 for(;;) {
9298 var52 = ((short int (*)(val*))(var51->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var51) /* is_ok on <var51:Iterator[nullable Object]>*/;
9299 if(!var52) break;
9300 var53 = ((val* (*)(val*))(var51->class->vft[COLOR_abstract_collection__Iterator__item]))(var51) /* item on <var51:Iterator[nullable Object]>*/;
9301 var55 = ((struct instance_kernel__Int*)var53)->value; /* autounbox from nullable Object to Int */;
9302 var_i54 = var55;
9303 var56 = 1;
9304 { /* Inline kernel#Int#+ (var_i54,var56) */
9305 var59 = var_i54 + var56;
9306 var57 = var59;
9307 goto RET_LABEL58;
9308 RET_LABEL58:(void)0;
9309 }
9310 var60 = ((val* (*)(val*, long))(var_rawargs->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_rawargs, var57) /* [] on <var_rawargs:Array[RuntimeVariable]>*/;
9311 ((void (*)(val*, val*))(var_vararg->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_vararg, var60) /* add on <var_vararg:Array[RuntimeVariable]>*/;
9312 CONTINUE_label61: (void)0;
9313 ((void (*)(val*))(var51->class->vft[COLOR_abstract_collection__Iterator__next]))(var51) /* next on <var51:Iterator[nullable Object]>*/;
9314 }
9315 BREAK_label61: (void)0;
9316 var62 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
9317 var63 = ((val* (*)(val*, long))(var62->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var62, var_vararg_rank) /* [] on <var62:Array[MParameter]>*/;
9318 var64 = ((val* (*)(val*))(var63->class->vft[COLOR_model__MParameter__mtype]))(var63) /* mtype on <var63:nullable Object(MParameter)>*/;
9319 var_elttype = var64;
9320 var65 = ((val* (*)(val*, val*, val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__vararg_instance]))(self, var_mpropdef, var_recv, var_vararg, var_elttype) /* vararg_instance on <self:AbstractCompilerVisitor>*/;
9321 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_args, var65) /* add on <var_args:Array[RuntimeVariable]>*/;
9322 var66 = NEW_range__Range(&type_range__Rangekernel__Int);
9323 var67 = 1;
9324 { /* Inline kernel#Int#+ (var_vararg_lastrank,var67) */
9325 var70 = var_vararg_lastrank + var67;
9326 var68 = var70;
9327 goto RET_LABEL69;
9328 RET_LABEL69:(void)0;
9329 }
9330 var71 = ((long (*)(val*))(var_rawargs->class->vft[COLOR_abstract_collection__Collection__length]))(var_rawargs) /* length on <var_rawargs:Array[RuntimeVariable]>*/;
9331 var72 = 1;
9332 { /* Inline kernel#Int#- (var71,var72) */
9333 var75 = var71 - var72;
9334 var73 = var75;
9335 goto RET_LABEL74;
9336 RET_LABEL74:(void)0;
9337 }
9338 var76 = BOX_kernel__Int(var68); /* autobox from Int to Discrete */
9339 var77 = BOX_kernel__Int(var73); /* autobox from Int to Discrete */
9340 ((void (*)(val*, val*, val*))(var66->class->vft[COLOR_range__Range__without_last]))(var66, var76, var77) /* without_last on <var66:Range[Int]>*/;
9341 var78 = ((val* (*)(val*))(var66->class->vft[COLOR_abstract_collection__Collection__iterator]))(var66) /* iterator on <var66:Range[Int]>*/;
9342 for(;;) {
9343 var79 = ((short int (*)(val*))(var78->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var78) /* is_ok on <var78:Iterator[nullable Object]>*/;
9344 if(!var79) break;
9345 var80 = ((val* (*)(val*))(var78->class->vft[COLOR_abstract_collection__Iterator__item]))(var78) /* item on <var78:Iterator[nullable Object]>*/;
9346 var82 = ((struct instance_kernel__Int*)var80)->value; /* autounbox from nullable Object to Int */;
9347 var_i81 = var82;
9348 var83 = 1;
9349 { /* Inline kernel#Int#+ (var_i81,var83) */
9350 var86 = var_i81 + var83;
9351 var84 = var86;
9352 goto RET_LABEL85;
9353 RET_LABEL85:(void)0;
9354 }
9355 var87 = ((val* (*)(val*, long))(var_rawargs->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_rawargs, var84) /* [] on <var_rawargs:Array[RuntimeVariable]>*/;
9356 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_args, var87) /* add on <var_args:Array[RuntimeVariable]>*/;
9357 CONTINUE_label88: (void)0;
9358 ((void (*)(val*))(var78->class->vft[COLOR_abstract_collection__Iterator__next]))(var78) /* next on <var78:Iterator[nullable Object]>*/;
9359 }
9360 BREAK_label88: (void)0;
9361 ((void (*)(val*))(var_rawargs->class->vft[COLOR_abstract_collection__RemovableCollection__clear]))(var_rawargs) /* clear on <var_rawargs:Array[RuntimeVariable]>*/;
9362 ((void (*)(val*, val*))(var_rawargs->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_rawargs, var_args) /* add_all on <var_rawargs:Array[RuntimeVariable]>*/;
9363 } else {
9364 }
9365 RET_LABEL:;
9366 }
9367 /* method abstract_compiler#AbstractCompilerVisitor#varargize for (self: Object, MPropDef, MSignature, Array[RuntimeVariable]) */
9368 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__varargize(val* self, val* p0, val* p1, val* p2) {
9369 abstract_compiler__AbstractCompilerVisitor__varargize(self, p0, p1, p2);
9370 RET_LABEL:;
9371 }
9372 /* method abstract_compiler#AbstractCompilerVisitor#anchor for (self: AbstractCompilerVisitor, MType): MType */
9373 val* abstract_compiler__AbstractCompilerVisitor__anchor(val* self, val* p0) {
9374 val* var /* : MType */;
9375 val* var_mtype /* var mtype: MType */;
9376 short int var1 /* : Bool */;
9377 short int var2 /* : Bool */;
9378 val* var3 /* : AbstractCompiler */;
9379 val* var4 /* : MModule */;
9380 val* var5 /* : nullable Frame */;
9381 val* var6 /* : MClassType */;
9382 val* var7 /* : MType */;
9383 var_mtype = p0;
9384 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
9385 var2 = !var1;
9386 if (var2){
9387 var = var_mtype;
9388 goto RET_LABEL;
9389 } else {
9390 }
9391 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
9392 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var3) /* mainmodule on <var3:AbstractCompiler>*/;
9393 var5 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:AbstractCompilerVisitor>*/;
9394 if (var5 == NULL) {
9395 fprintf(stderr, "Runtime error: %s", "Receiver is null");
9396 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 843);
9397 show_backtrace(1);
9398 } else {
9399 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_compiler__Frame__receiver]))(var5) /* receiver on <var5:nullable Frame>*/;
9400 }
9401 var7 = ((val* (*)(val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__anchor_to]))(var_mtype, var4, var6) /* anchor_to on <var_mtype:MType>*/;
9402 var = var7;
9403 goto RET_LABEL;
9404 RET_LABEL:;
9405 return var;
9406 }
9407 /* method abstract_compiler#AbstractCompilerVisitor#anchor for (self: Object, MType): MType */
9408 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__anchor(val* self, val* p0) {
9409 val* var /* : MType */;
9410 val* var1 /* : MType */;
9411 var1 = abstract_compiler__AbstractCompilerVisitor__anchor(self, p0);
9412 var = var1;
9413 RET_LABEL:;
9414 return var;
9415 }
9416 /* method abstract_compiler#AbstractCompilerVisitor#resolve_for for (self: AbstractCompilerVisitor, MType, RuntimeVariable): MType */
9417 val* abstract_compiler__AbstractCompilerVisitor__resolve_for(val* self, val* p0, val* p1) {
9418 val* var /* : MType */;
9419 val* var_mtype /* var mtype: MType */;
9420 val* var_recv /* var recv: RuntimeVariable */;
9421 short int var1 /* : Bool */;
9422 short int var2 /* : Bool */;
9423 val* var3 /* : MType */;
9424 val* var4 /* : nullable Frame */;
9425 val* var5 /* : MClassType */;
9426 val* var6 /* : AbstractCompiler */;
9427 val* var7 /* : MModule */;
9428 short int var8 /* : Bool */;
9429 val* var9 /* : MType */;
9430 var_mtype = p0;
9431 var_recv = p1;
9432 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
9433 var2 = !var1;
9434 if (var2){
9435 var = var_mtype;
9436 goto RET_LABEL;
9437 } else {
9438 }
9439 var3 = ((val* (*)(val*))(var_recv->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_recv) /* mcasttype on <var_recv:RuntimeVariable>*/;
9440 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:AbstractCompilerVisitor>*/;
9441 if (var4 == NULL) {
9442 fprintf(stderr, "Runtime error: %s", "Receiver is null");
9443 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 849);
9444 show_backtrace(1);
9445 } else {
9446 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_compiler__Frame__receiver]))(var4) /* receiver on <var4:nullable Frame>*/;
9447 }
9448 var6 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
9449 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var6) /* mainmodule on <var6:AbstractCompiler>*/;
9450 var8 = 1;
9451 var9 = ((val* (*)(val*, val*, val*, val*, short int))(var_mtype->class->vft[COLOR_model__MType__resolve_for]))(var_mtype, var3, var5, var7, var8) /* resolve_for on <var_mtype:MType>*/;
9452 var = var9;
9453 goto RET_LABEL;
9454 RET_LABEL:;
9455 return var;
9456 }
9457 /* method abstract_compiler#AbstractCompilerVisitor#resolve_for for (self: Object, MType, RuntimeVariable): MType */
9458 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__resolve_for(val* self, val* p0, val* p1) {
9459 val* var /* : MType */;
9460 val* var1 /* : MType */;
9461 var1 = abstract_compiler__AbstractCompilerVisitor__resolve_for(self, p0, p1);
9462 var = var1;
9463 RET_LABEL:;
9464 return var;
9465 }
9466 /* method abstract_compiler#AbstractCompilerVisitor#autoadapt for (self: AbstractCompilerVisitor, RuntimeVariable, MType): RuntimeVariable */
9467 val* abstract_compiler__AbstractCompilerVisitor__autoadapt(val* self, val* p0, val* p1) {
9468 val* var /* : RuntimeVariable */;
9469 val* var_value /* var value: RuntimeVariable */;
9470 val* var_mtype /* var mtype: MType */;
9471 val* var1 /* : MType */;
9472 val* var2 /* : MType */;
9473 val* var_valmtype /* var valmtype: MType */;
9474 val* var3 /* : AbstractCompiler */;
9475 val* var4 /* : MModule */;
9476 val* var5 /* : null */;
9477 short int var6 /* : Bool */;
9478 short int var7 /* : Bool */;
9479 short int var8 /* : Bool */;
9480 int cltype;
9481 int idtype;
9482 short int var_ /* var : Bool */;
9483 val* var9 /* : MType */;
9484 val* var10 /* : AbstractCompiler */;
9485 val* var11 /* : MModule */;
9486 val* var12 /* : null */;
9487 short int var13 /* : Bool */;
9488 val* var14 /* : RuntimeVariable */;
9489 val* var15 /* : String */;
9490 val* var16 /* : MType */;
9491 val* var_res /* var res: RuntimeVariable */;
9492 val* var17 /* : RuntimeVariable */;
9493 val* var18 /* : String */;
9494 val* var_res19 /* var res: RuntimeVariable */;
9495 var_value = p0;
9496 var_mtype = p1;
9497 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__anchor]))(self, var_mtype) /* anchor on <self:AbstractCompilerVisitor>*/;
9498 var_mtype = var1;
9499 var2 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_value) /* mcasttype on <var_value:RuntimeVariable>*/;
9500 var_valmtype = var2;
9501 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
9502 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var3) /* mainmodule on <var3:AbstractCompiler>*/;
9503 var5 = NULL;
9504 var6 = ((short int (*)(val*, val*, val*, val*))(var_valmtype->class->vft[COLOR_model__MType__is_subtype]))(var_valmtype, var4, var5, var_mtype) /* is_subtype on <var_valmtype:MType>*/;
9505 if (var6){
9506 var = var_value;
9507 goto RET_LABEL;
9508 } else {
9509 }
9510 /* <var_valmtype:MType> isa MNullableType */
9511 cltype = type_model__MNullableType.color;
9512 idtype = type_model__MNullableType.id;
9513 if(cltype >= var_valmtype->type->table_size) {
9514 var8 = 0;
9515 } else {
9516 var8 = var_valmtype->type->type_table[cltype] == idtype;
9517 }
9518 var_ = var8;
9519 if (var8){
9520 var9 = ((val* (*)(val*))(var_valmtype->class->vft[COLOR_model__MNullableType__mtype]))(var_valmtype) /* mtype on <var_valmtype:MType(MNullableType)>*/;
9521 var10 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
9522 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var10) /* mainmodule on <var10:AbstractCompiler>*/;
9523 var12 = NULL;
9524 var13 = ((short int (*)(val*, val*, val*, val*))(var9->class->vft[COLOR_model__MType__is_subtype]))(var9, var11, var12, var_mtype) /* is_subtype on <var9:MType>*/;
9525 var7 = var13;
9526 } else {
9527 var7 = var_;
9528 }
9529 if (var7){
9530 var14 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
9531 var15 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__name]))(var_value) /* name on <var_value:RuntimeVariable>*/;
9532 var16 = ((val* (*)(val*))(var_valmtype->class->vft[COLOR_model__MNullableType__mtype]))(var_valmtype) /* mtype on <var_valmtype:MType(MNullableType)>*/;
9533 ((void (*)(val*, val*, val*, val*))(var14->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var14, var15, var_valmtype, var16) /* init on <var14:RuntimeVariable>*/;
9534 var_res = var14;
9535 var = var_res;
9536 goto RET_LABEL;
9537 } else {
9538 var17 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
9539 var18 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__name]))(var_value) /* name on <var_value:RuntimeVariable>*/;
9540 ((void (*)(val*, val*, val*, val*))(var17->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var17, var18, var_valmtype, var_mtype) /* init on <var17:RuntimeVariable>*/;
9541 var_res19 = var17;
9542 var = var_res19;
9543 goto RET_LABEL;
9544 }
9545 RET_LABEL:;
9546 return var;
9547 }
9548 /* method abstract_compiler#AbstractCompilerVisitor#autoadapt for (self: Object, RuntimeVariable, MType): RuntimeVariable */
9549 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__autoadapt(val* self, val* p0, val* p1) {
9550 val* var /* : RuntimeVariable */;
9551 val* var1 /* : RuntimeVariable */;
9552 var1 = abstract_compiler__AbstractCompilerVisitor__autoadapt(self, p0, p1);
9553 var = var1;
9554 RET_LABEL:;
9555 return var;
9556 }
9557 /* method abstract_compiler#AbstractCompilerVisitor#supercall for (self: AbstractCompilerVisitor, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
9558 val* abstract_compiler__AbstractCompilerVisitor__supercall(val* self, val* p0, val* p1, val* p2) {
9559 val* var /* : nullable RuntimeVariable */;
9560 const char* var_class_name;
9561 var_class_name = self == NULL ? "null" : self->type->name;
9562 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "supercall", var_class_name);
9563 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 873);
9564 show_backtrace(1);
9565 RET_LABEL:;
9566 return var;
9567 }
9568 /* method abstract_compiler#AbstractCompilerVisitor#supercall for (self: Object, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
9569 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__supercall(val* self, val* p0, val* p1, val* p2) {
9570 val* var /* : nullable RuntimeVariable */;
9571 val* var1 /* : nullable RuntimeVariable */;
9572 var1 = abstract_compiler__AbstractCompilerVisitor__supercall(self, p0, p1, p2);
9573 var = var1;
9574 RET_LABEL:;
9575 return var;
9576 }
9577 /* method abstract_compiler#AbstractCompilerVisitor#adapt_signature for (self: AbstractCompilerVisitor, MMethodDef, Array[RuntimeVariable]) */
9578 void abstract_compiler__AbstractCompilerVisitor__adapt_signature(val* self, val* p0, val* p1) {
9579 const char* var_class_name;
9580 var_class_name = self == NULL ? "null" : self->type->name;
9581 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "adapt_signature", var_class_name);
9582 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 876);
9583 show_backtrace(1);
9584 RET_LABEL:;
9585 }
9586 /* method abstract_compiler#AbstractCompilerVisitor#adapt_signature for (self: Object, MMethodDef, Array[RuntimeVariable]) */
9587 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__adapt_signature(val* self, val* p0, val* p1) {
9588 abstract_compiler__AbstractCompilerVisitor__adapt_signature(self, p0, p1);
9589 RET_LABEL:;
9590 }
9591 /* method abstract_compiler#AbstractCompilerVisitor#autobox for (self: AbstractCompilerVisitor, RuntimeVariable, MType): RuntimeVariable */
9592 val* abstract_compiler__AbstractCompilerVisitor__autobox(val* self, val* p0, val* p1) {
9593 val* var /* : RuntimeVariable */;
9594 const char* var_class_name;
9595 var_class_name = self == NULL ? "null" : self->type->name;
9596 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "autobox", var_class_name);
9597 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 878);
9598 show_backtrace(1);
9599 RET_LABEL:;
9600 return var;
9601 }
9602 /* method abstract_compiler#AbstractCompilerVisitor#autobox for (self: Object, RuntimeVariable, MType): RuntimeVariable */
9603 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__autobox(val* self, val* p0, val* p1) {
9604 val* var /* : RuntimeVariable */;
9605 val* var1 /* : RuntimeVariable */;
9606 var1 = abstract_compiler__AbstractCompilerVisitor__autobox(self, p0, p1);
9607 var = var1;
9608 RET_LABEL:;
9609 return var;
9610 }
9611 /* method abstract_compiler#AbstractCompilerVisitor#type_test for (self: AbstractCompilerVisitor, RuntimeVariable, MType, String): RuntimeVariable */
9612 val* abstract_compiler__AbstractCompilerVisitor__type_test(val* self, val* p0, val* p1, val* p2) {
9613 val* var /* : RuntimeVariable */;
9614 const char* var_class_name;
9615 var_class_name = self == NULL ? "null" : self->type->name;
9616 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "type_test", var_class_name);
9617 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 882);
9618 show_backtrace(1);
9619 RET_LABEL:;
9620 return var;
9621 }
9622 /* method abstract_compiler#AbstractCompilerVisitor#type_test for (self: Object, RuntimeVariable, MType, String): RuntimeVariable */
9623 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__type_test(val* self, val* p0, val* p1, val* p2) {
9624 val* var /* : RuntimeVariable */;
9625 val* var1 /* : RuntimeVariable */;
9626 var1 = abstract_compiler__AbstractCompilerVisitor__type_test(self, p0, p1, p2);
9627 var = var1;
9628 RET_LABEL:;
9629 return var;
9630 }
9631 /* method abstract_compiler#AbstractCompilerVisitor#is_same_type_test for (self: AbstractCompilerVisitor, RuntimeVariable, RuntimeVariable): RuntimeVariable */
9632 val* abstract_compiler__AbstractCompilerVisitor__is_same_type_test(val* self, val* p0, val* p1) {
9633 val* var /* : RuntimeVariable */;
9634 const char* var_class_name;
9635 var_class_name = self == NULL ? "null" : self->type->name;
9636 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "is_same_type_test", var_class_name);
9637 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 885);
9638 show_backtrace(1);
9639 RET_LABEL:;
9640 return var;
9641 }
9642 /* method abstract_compiler#AbstractCompilerVisitor#is_same_type_test for (self: Object, RuntimeVariable, RuntimeVariable): RuntimeVariable */
9643 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__is_same_type_test(val* self, val* p0, val* p1) {
9644 val* var /* : RuntimeVariable */;
9645 val* var1 /* : RuntimeVariable */;
9646 var1 = abstract_compiler__AbstractCompilerVisitor__is_same_type_test(self, p0, p1);
9647 var = var1;
9648 RET_LABEL:;
9649 return var;
9650 }
9651 /* method abstract_compiler#AbstractCompilerVisitor#equal_test for (self: AbstractCompilerVisitor, RuntimeVariable, RuntimeVariable): RuntimeVariable */
9652 val* abstract_compiler__AbstractCompilerVisitor__equal_test(val* self, val* p0, val* p1) {
9653 val* var /* : RuntimeVariable */;
9654 const char* var_class_name;
9655 var_class_name = self == NULL ? "null" : self->type->name;
9656 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "equal_test", var_class_name);
9657 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 888);
9658 show_backtrace(1);
9659 RET_LABEL:;
9660 return var;
9661 }
9662 /* method abstract_compiler#AbstractCompilerVisitor#equal_test for (self: Object, RuntimeVariable, RuntimeVariable): RuntimeVariable */
9663 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__equal_test(val* self, val* p0, val* p1) {
9664 val* var /* : RuntimeVariable */;
9665 val* var1 /* : RuntimeVariable */;
9666 var1 = abstract_compiler__AbstractCompilerVisitor__equal_test(self, p0, p1);
9667 var = var1;
9668 RET_LABEL:;
9669 return var;
9670 }
9671 /* method abstract_compiler#AbstractCompilerVisitor#call for (self: AbstractCompilerVisitor, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
9672 val* abstract_compiler__AbstractCompilerVisitor__call(val* self, val* p0, val* p1, val* p2) {
9673 val* var /* : nullable RuntimeVariable */;
9674 const char* var_class_name;
9675 var_class_name = self == NULL ? "null" : self->type->name;
9676 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "call", var_class_name);
9677 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 893);
9678 show_backtrace(1);
9679 RET_LABEL:;
9680 return var;
9681 }
9682 /* method abstract_compiler#AbstractCompilerVisitor#call for (self: Object, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
9683 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__call(val* self, val* p0, val* p1, val* p2) {
9684 val* var /* : nullable RuntimeVariable */;
9685 val* var1 /* : nullable RuntimeVariable */;
9686 var1 = abstract_compiler__AbstractCompilerVisitor__call(self, p0, p1, p2);
9687 var = var1;
9688 RET_LABEL:;
9689 return var;
9690 }
9691 /* method abstract_compiler#AbstractCompilerVisitor#send for (self: AbstractCompilerVisitor, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */
9692 val* abstract_compiler__AbstractCompilerVisitor__send(val* self, val* p0, val* p1) {
9693 val* var /* : nullable RuntimeVariable */;
9694 const char* var_class_name;
9695 var_class_name = self == NULL ? "null" : self->type->name;
9696 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "send", var_class_name);
9697 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 896);
9698 show_backtrace(1);
9699 RET_LABEL:;
9700 return var;
9701 }
9702 /* method abstract_compiler#AbstractCompilerVisitor#send for (self: Object, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */
9703 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__send(val* self, val* p0, val* p1) {
9704 val* var /* : nullable RuntimeVariable */;
9705 val* var1 /* : nullable RuntimeVariable */;
9706 var1 = abstract_compiler__AbstractCompilerVisitor__send(self, p0, p1);
9707 var = var1;
9708 RET_LABEL:;
9709 return var;
9710 }
9711 /* method abstract_compiler#AbstractCompilerVisitor#monomorphic_send for (self: AbstractCompilerVisitor, MMethod, MType, Array[RuntimeVariable]): nullable RuntimeVariable */
9712 val* abstract_compiler__AbstractCompilerVisitor__monomorphic_send(val* self, val* p0, val* p1, val* p2) {
9713 val* var /* : nullable RuntimeVariable */;
9714 val* var_m /* var m: MMethod */;
9715 val* var_t /* var t: MType */;
9716 val* var_args /* var args: Array[RuntimeVariable] */;
9717 short int var1 /* : Bool */;
9718 int cltype;
9719 int idtype;
9720 val* var2 /* : AbstractCompiler */;
9721 val* var3 /* : MModule */;
9722 val* var4 /* : MPropDef */;
9723 val* var_propdef /* var propdef: MMethodDef */;
9724 val* var5 /* : nullable RuntimeVariable */;
9725 var_m = p0;
9726 var_t = p1;
9727 var_args = p2;
9728 /* <var_t:MType> isa MClassType */
9729 cltype = type_model__MClassType.color;
9730 idtype = type_model__MClassType.id;
9731 if(cltype >= var_t->type->table_size) {
9732 var1 = 0;
9733 } else {
9734 var1 = var_t->type->type_table[cltype] == idtype;
9735 }
9736 if (!var1) {
9737 fprintf(stderr, "Runtime error: %s", "Assert failed");
9738 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 902);
9739 show_backtrace(1);
9740 }
9741 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
9742 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var2) /* mainmodule on <var2:AbstractCompiler>*/;
9743 var4 = ((val* (*)(val*, val*, val*))(var_m->class->vft[COLOR_model__MProperty__lookup_first_definition]))(var_m, var3, var_t) /* lookup_first_definition on <var_m:MMethod>*/;
9744 var_propdef = var4;
9745 var5 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__call]))(self, var_propdef, var_t, var_args) /* call on <self:AbstractCompilerVisitor>*/;
9746 var = var5;
9747 goto RET_LABEL;
9748 RET_LABEL:;
9749 return var;
9750 }
9751 /* method abstract_compiler#AbstractCompilerVisitor#monomorphic_send for (self: Object, MMethod, MType, Array[RuntimeVariable]): nullable RuntimeVariable */
9752 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__monomorphic_send(val* self, val* p0, val* p1, val* p2) {
9753 val* var /* : nullable RuntimeVariable */;
9754 val* var1 /* : nullable RuntimeVariable */;
9755 var1 = abstract_compiler__AbstractCompilerVisitor__monomorphic_send(self, p0, p1, p2);
9756 var = var1;
9757 RET_LABEL:;
9758 return var;
9759 }
9760 /* method abstract_compiler#AbstractCompilerVisitor#monomorphic_super_send for (self: AbstractCompilerVisitor, MMethodDef, MType, Array[RuntimeVariable]): nullable RuntimeVariable */
9761 val* abstract_compiler__AbstractCompilerVisitor__monomorphic_super_send(val* self, val* p0, val* p1, val* p2) {
9762 val* var /* : nullable RuntimeVariable */;
9763 val* var_m /* var m: MMethodDef */;
9764 val* var_t /* var t: MType */;
9765 val* var_args /* var args: Array[RuntimeVariable] */;
9766 short int var1 /* : Bool */;
9767 int cltype;
9768 int idtype;
9769 val* var2 /* : AbstractCompiler */;
9770 val* var3 /* : MModule */;
9771 val* var4 /* : MPropDef */;
9772 val* var5 /* : nullable RuntimeVariable */;
9773 var_m = p0;
9774 var_t = p1;
9775 var_args = p2;
9776 /* <var_t:MType> isa MClassType */
9777 cltype = type_model__MClassType.color;
9778 idtype = type_model__MClassType.id;
9779 if(cltype >= var_t->type->table_size) {
9780 var1 = 0;
9781 } else {
9782 var1 = var_t->type->type_table[cltype] == idtype;
9783 }
9784 if (!var1) {
9785 fprintf(stderr, "Runtime error: %s", "Assert failed");
9786 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 910);
9787 show_backtrace(1);
9788 }
9789 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
9790 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var2) /* mainmodule on <var2:AbstractCompiler>*/;
9791 var4 = ((val* (*)(val*, val*, val*))(var_m->class->vft[COLOR_model__MPropDef__lookup_next_definition]))(var_m, var3, var_t) /* lookup_next_definition on <var_m:MMethodDef>*/;
9792 var_m = var4;
9793 var5 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__call]))(self, var_m, var_t, var_args) /* call on <self:AbstractCompilerVisitor>*/;
9794 var = var5;
9795 goto RET_LABEL;
9796 RET_LABEL:;
9797 return var;
9798 }
9799 /* method abstract_compiler#AbstractCompilerVisitor#monomorphic_super_send for (self: Object, MMethodDef, MType, Array[RuntimeVariable]): nullable RuntimeVariable */
9800 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__monomorphic_super_send(val* self, val* p0, val* p1, val* p2) {
9801 val* var /* : nullable RuntimeVariable */;
9802 val* var1 /* : nullable RuntimeVariable */;
9803 var1 = abstract_compiler__AbstractCompilerVisitor__monomorphic_super_send(self, p0, p1, p2);
9804 var = var1;
9805 RET_LABEL:;
9806 return var;
9807 }
9808 /* method abstract_compiler#AbstractCompilerVisitor#isset_attribute for (self: AbstractCompilerVisitor, MAttribute, RuntimeVariable): RuntimeVariable */
9809 val* abstract_compiler__AbstractCompilerVisitor__isset_attribute(val* self, val* p0, val* p1) {
9810 val* var /* : RuntimeVariable */;
9811 const char* var_class_name;
9812 var_class_name = self == NULL ? "null" : self->type->name;
9813 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "isset_attribute", var_class_name);
9814 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 917);
9815 show_backtrace(1);
9816 RET_LABEL:;
9817 return var;
9818 }
9819 /* method abstract_compiler#AbstractCompilerVisitor#isset_attribute for (self: Object, MAttribute, RuntimeVariable): RuntimeVariable */
9820 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__isset_attribute(val* self, val* p0, val* p1) {
9821 val* var /* : RuntimeVariable */;
9822 val* var1 /* : RuntimeVariable */;
9823 var1 = abstract_compiler__AbstractCompilerVisitor__isset_attribute(self, p0, p1);
9824 var = var1;
9825 RET_LABEL:;
9826 return var;
9827 }
9828 /* method abstract_compiler#AbstractCompilerVisitor#read_attribute for (self: AbstractCompilerVisitor, MAttribute, RuntimeVariable): RuntimeVariable */
9829 val* abstract_compiler__AbstractCompilerVisitor__read_attribute(val* self, val* p0, val* p1) {
9830 val* var /* : RuntimeVariable */;
9831 const char* var_class_name;
9832 var_class_name = self == NULL ? "null" : self->type->name;
9833 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "read_attribute", var_class_name);
9834 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 920);
9835 show_backtrace(1);
9836 RET_LABEL:;
9837 return var;
9838 }
9839 /* method abstract_compiler#AbstractCompilerVisitor#read_attribute for (self: Object, MAttribute, RuntimeVariable): RuntimeVariable */
9840 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__read_attribute(val* self, val* p0, val* p1) {
9841 val* var /* : RuntimeVariable */;
9842 val* var1 /* : RuntimeVariable */;
9843 var1 = abstract_compiler__AbstractCompilerVisitor__read_attribute(self, p0, p1);
9844 var = var1;
9845 RET_LABEL:;
9846 return var;
9847 }
9848 /* method abstract_compiler#AbstractCompilerVisitor#write_attribute for (self: AbstractCompilerVisitor, MAttribute, RuntimeVariable, RuntimeVariable) */
9849 void abstract_compiler__AbstractCompilerVisitor__write_attribute(val* self, val* p0, val* p1, val* p2) {
9850 const char* var_class_name;
9851 var_class_name = self == NULL ? "null" : self->type->name;
9852 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "write_attribute", var_class_name);
9853 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 923);
9854 show_backtrace(1);
9855 RET_LABEL:;
9856 }
9857 /* method abstract_compiler#AbstractCompilerVisitor#write_attribute for (self: Object, MAttribute, RuntimeVariable, RuntimeVariable) */
9858 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__write_attribute(val* self, val* p0, val* p1, val* p2) {
9859 abstract_compiler__AbstractCompilerVisitor__write_attribute(self, p0, p1, p2);
9860 RET_LABEL:;
9861 }
9862 /* method abstract_compiler#AbstractCompilerVisitor#check_recv_notnull for (self: AbstractCompilerVisitor, RuntimeVariable) */
9863 void abstract_compiler__AbstractCompilerVisitor__check_recv_notnull(val* self, val* p0) {
9864 val* var_recv /* var recv: RuntimeVariable */;
9865 val* var /* : AbstractCompiler */;
9866 val* var1 /* : ModelBuilder */;
9867 val* var2 /* : ToolContext */;
9868 val* var3 /* : OptionBool */;
9869 val* var4 /* : nullable Object */;
9870 short int var5 /* : Bool */;
9871 short int var6 /* : Bool */;
9872 val* var7 /* : MType */;
9873 short int var8 /* : Bool */;
9874 int cltype;
9875 int idtype;
9876 short int var_ /* var : Bool */;
9877 val* var9 /* : MType */;
9878 short int var10 /* : Bool */;
9879 int cltype11;
9880 int idtype12;
9881 short int var_maybenull /* var maybenull: Bool */;
9882 static val* varonce;
9883 val* var13 /* : String */;
9884 char* var14 /* : NativeString */;
9885 long var15 /* : Int */;
9886 val* var16 /* : String */;
9887 static val* varonce17;
9888 val* var18 /* : String */;
9889 char* var19 /* : NativeString */;
9890 long var20 /* : Int */;
9891 val* var21 /* : String */;
9892 val* var22 /* : Array[Object] */;
9893 long var23 /* : Int */;
9894 val* var24 /* : NativeArray[Object] */;
9895 val* var25 /* : String */;
9896 static val* varonce26;
9897 val* var27 /* : String */;
9898 char* var28 /* : NativeString */;
9899 long var29 /* : Int */;
9900 val* var30 /* : String */;
9901 static val* varonce31;
9902 val* var32 /* : String */;
9903 char* var33 /* : NativeString */;
9904 long var34 /* : Int */;
9905 val* var35 /* : String */;
9906 var_recv = p0;
9907 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
9908 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var) /* modelbuilder on <var:AbstractCompiler>*/;
9909 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var1) /* toolcontext on <var1:ModelBuilder>*/;
9910 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_other]))(var2) /* opt_no_check_other on <var2:ToolContext>*/;
9911 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_opts__Option__value]))(var3) /* value on <var3:OptionBool>*/;
9912 var5 = ((struct instance_kernel__Bool*)var4)->value; /* autounbox from nullable Object to Bool */;
9913 if (var5){
9914 goto RET_LABEL;
9915 } else {
9916 }
9917 var7 = ((val* (*)(val*))(var_recv->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_recv) /* mcasttype on <var_recv:RuntimeVariable>*/;
9918 /* <var7:MType> isa MNullableType */
9919 cltype = type_model__MNullableType.color;
9920 idtype = type_model__MNullableType.id;
9921 if(cltype >= var7->type->table_size) {
9922 var8 = 0;
9923 } else {
9924 var8 = var7->type->type_table[cltype] == idtype;
9925 }
9926 var_ = var8;
9927 if (var8){
9928 var6 = var_;
9929 } else {
9930 var9 = ((val* (*)(val*))(var_recv->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_recv) /* mcasttype on <var_recv:RuntimeVariable>*/;
9931 /* <var9:MType> isa MNullType */
9932 cltype11 = type_model__MNullType.color;
9933 idtype12 = type_model__MNullType.id;
9934 if(cltype11 >= var9->type->table_size) {
9935 var10 = 0;
9936 } else {
9937 var10 = var9->type->type_table[cltype11] == idtype12;
9938 }
9939 var6 = var10;
9940 }
9941 var_maybenull = var6;
9942 if (var_maybenull){
9943 if (varonce) {
9944 var13 = varonce;
9945 } else {
9946 var14 = "if (";
9947 var15 = 4;
9948 var16 = string__NativeString__to_s_with_length(var14, var15);
9949 var13 = var16;
9950 varonce = var13;
9951 }
9952 if (varonce17) {
9953 var18 = varonce17;
9954 } else {
9955 var19 = " == NULL) {";
9956 var20 = 11;
9957 var21 = string__NativeString__to_s_with_length(var19, var20);
9958 var18 = var21;
9959 varonce17 = var18;
9960 }
9961 var22 = NEW_array__Array(&type_array__Arraykernel__Object);
9962 { /* var22 = array_instance Array[Object] */
9963 var23 = 3;
9964 var24 = NEW_array__NativeArray(var23, &type_array__NativeArraykernel__Object);
9965 ((struct instance_array__NativeArray*)var24)->values[0] = (val*) var13;
9966 ((struct instance_array__NativeArray*)var24)->values[1] = (val*) var_recv;
9967 ((struct instance_array__NativeArray*)var24)->values[2] = (val*) var18;
9968 ((void (*)(val*, val*, long))(var22->class->vft[COLOR_array__Array__with_native]))(var22, var24, var23) /* with_native on <var22:Array[Object]>*/;
9969 }
9970 var25 = ((val* (*)(val*))(var22->class->vft[COLOR_string__Object__to_s]))(var22) /* to_s on <var22:Array[Object]>*/;
9971 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var25) /* add on <self:AbstractCompilerVisitor>*/;
9972 if (varonce26) {
9973 var27 = varonce26;
9974 } else {
9975 var28 = "Receiver is null";
9976 var29 = 16;
9977 var30 = string__NativeString__to_s_with_length(var28, var29);
9978 var27 = var30;
9979 varonce26 = var27;
9980 }
9981 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(self, var27) /* add_abort on <self:AbstractCompilerVisitor>*/;
9982 if (varonce31) {
9983 var32 = varonce31;
9984 } else {
9985 var33 = "}";
9986 var34 = 1;
9987 var35 = string__NativeString__to_s_with_length(var33, var34);
9988 var32 = var35;
9989 varonce31 = var32;
9990 }
9991 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var32) /* add on <self:AbstractCompilerVisitor>*/;
9992 } else {
9993 }
9994 RET_LABEL:;
9995 }
9996 /* method abstract_compiler#AbstractCompilerVisitor#check_recv_notnull for (self: Object, RuntimeVariable) */
9997 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__check_recv_notnull(val* self, val* p0) {
9998 abstract_compiler__AbstractCompilerVisitor__check_recv_notnull(self, p0);
9999 RET_LABEL:;
10000 }