lib/mnit_linux: use annotations to link with libraries
[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", 27);
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", 29);
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", 31);
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", 33);
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", 35);
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", 37);
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", 39);
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", 41);
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", 43);
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", 45);
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", 47);
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", 49);
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", 51);
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", 53);
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", 55);
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#cc_paths for (self: ModelBuilder): Array[String] */
610 val* abstract_compiler__ModelBuilder__cc_paths(val* self) {
611 val* var /* : Array[String] */;
612 val* var1 /* : Array[String] */;
613 var1 = self->attrs[COLOR_abstract_compiler__ModelBuilder___64dcc_paths].val; /* @cc_paths on <self:ModelBuilder> */
614 if (var1 == NULL) {
615 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @cc_paths");
616 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 70);
617 show_backtrace(1);
618 }
619 var = var1;
620 RET_LABEL:;
621 return var;
622 }
623 /* method abstract_compiler#ModelBuilder#cc_paths for (self: Object): Array[String] */
624 val* VIRTUAL_abstract_compiler__ModelBuilder__cc_paths(val* self) {
625 val* var /* : Array[String] */;
626 val* var1 /* : Array[String] */;
627 var1 = abstract_compiler__ModelBuilder__cc_paths(self);
628 var = var1;
629 RET_LABEL:;
630 return var;
631 }
632 /* method abstract_compiler#ModelBuilder#cc_paths= for (self: ModelBuilder, Array[String]) */
633 void abstract_compiler__ModelBuilder__cc_paths_61d(val* self, val* p0) {
634 self->attrs[COLOR_abstract_compiler__ModelBuilder___64dcc_paths].val = p0; /* @cc_paths on <self:ModelBuilder> */
635 RET_LABEL:;
636 }
637 /* method abstract_compiler#ModelBuilder#cc_paths= for (self: Object, Array[String]) */
638 void VIRTUAL_abstract_compiler__ModelBuilder__cc_paths_61d(val* self, val* p0) {
639 abstract_compiler__ModelBuilder__cc_paths_61d(self, p0);
640 RET_LABEL:;
641 }
642 /* method abstract_compiler#ModelBuilder#init for (self: ModelBuilder, Model, ToolContext) */
643 void abstract_compiler__ModelBuilder__init(val* self, val* p0, val* p1) {
644 val* var_model /* var model: Model */;
645 val* var_toolcontext /* var toolcontext: ToolContext */;
646 static val* varonce;
647 val* var /* : String */;
648 char* var1 /* : NativeString */;
649 long var2 /* : Int */;
650 val* var3 /* : String */;
651 val* var4 /* : String */;
652 val* var_path_env /* var path_env: String */;
653 short int var5 /* : Bool */;
654 short int var6 /* : Bool */;
655 val* var7 /* : Array[Object] */;
656 long var8 /* : Int */;
657 val* var_ /* var : Array[Object] */;
658 static val* varonce9;
659 val* var10 /* : String */;
660 char* var11 /* : NativeString */;
661 long var12 /* : Int */;
662 val* var13 /* : String */;
663 static val* varonce14;
664 val* var15 /* : String */;
665 char* var16 /* : NativeString */;
666 long var17 /* : Int */;
667 val* var18 /* : String */;
668 val* var19 /* : String */;
669 val* var_libname /* var libname: String */;
670 short int var20 /* : Bool */;
671 val* var21 /* : Array[String] */;
672 val* var22 /* : Array[Object] */;
673 long var23 /* : Int */;
674 val* var_24 /* var : Array[Object] */;
675 static val* varonce25;
676 val* var26 /* : String */;
677 char* var27 /* : NativeString */;
678 long var28 /* : Int */;
679 val* var29 /* : String */;
680 val* var30 /* : Sys */;
681 val* var31 /* : String */;
682 val* var32 /* : String */;
683 static val* varonce33;
684 val* var34 /* : String */;
685 char* var35 /* : NativeString */;
686 long var36 /* : Int */;
687 val* var37 /* : String */;
688 val* var38 /* : String */;
689 val* var_libname39 /* var libname: String */;
690 short int var40 /* : Bool */;
691 val* var41 /* : Array[String] */;
692 val* var42 /* : String */;
693 val* var43 /* : Array[String] */;
694 short int var44 /* : Bool */;
695 val* var45 /* : null */;
696 static val* varonce46;
697 val* var47 /* : String */;
698 char* var48 /* : NativeString */;
699 long var49 /* : Int */;
700 val* var50 /* : String */;
701 short int var51 /* : Bool */;
702 val* var52 /* : OptionBool */;
703 val* var53 /* : nullable Object */;
704 short int var54 /* : Bool */;
705 short int var_55 /* var : Bool */;
706 val* var56 /* : OptionBool */;
707 val* var57 /* : nullable Object */;
708 short int var58 /* : Bool */;
709 static val* varonce59;
710 val* var60 /* : String */;
711 char* var61 /* : NativeString */;
712 long var62 /* : Int */;
713 val* var63 /* : String */;
714 long var64 /* : Int */;
715 val* var65 /* : Array[String] */;
716 val* var66 /* : OptionArray */;
717 val* var67 /* : nullable Object */;
718 static val* varonce68;
719 val* var69 /* : String */;
720 char* var70 /* : NativeString */;
721 long var71 /* : Int */;
722 val* var72 /* : String */;
723 val* var73 /* : String */;
724 short int var74 /* : Bool */;
725 short int var75 /* : Bool */;
726 val* var76 /* : Array[String] */;
727 char var77 /* : Char */;
728 val* var78 /* : Array[String] */;
729 val* var79 /* : Pattern */;
730 var_model = p0;
731 var_toolcontext = p1;
732 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__ModelBuilder__init]))(self, p0, p1) /* init on <self:ModelBuilder>*/;
733 if (varonce) {
734 var = varonce;
735 } else {
736 var1 = "NIT_DIR";
737 var2 = 7;
738 var3 = string__NativeString__to_s_with_length(var1, var2);
739 var = var3;
740 varonce = var;
741 }
742 var4 = ((val* (*)(val*))(var->class->vft[COLOR_environ__String__environ]))(var) /* environ on <var:String>*/;
743 var_path_env = var4;
744 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>*/;
745 var6 = !var5;
746 if (var6){
747 var7 = NEW_array__Array(&type_array__Arraykernel__Object);
748 var8 = 3;
749 ((void (*)(val*, long))(var7->class->vft[COLOR_array__Array__with_capacity]))(var7, var8) /* with_capacity on <var7:Array[Object]>*/;
750 var_ = var7;
751 if (varonce9) {
752 var10 = varonce9;
753 } else {
754 var11 = "";
755 var12 = 0;
756 var13 = string__NativeString__to_s_with_length(var11, var12);
757 var10 = var13;
758 varonce9 = var10;
759 }
760 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var10) /* add on <var_:Array[Object]>*/;
761 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_path_env) /* add on <var_:Array[Object]>*/;
762 if (varonce14) {
763 var15 = varonce14;
764 } else {
765 var16 = "/clib";
766 var17 = 5;
767 var18 = string__NativeString__to_s_with_length(var16, var17);
768 var15 = var18;
769 varonce14 = var15;
770 }
771 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var15) /* add on <var_:Array[Object]>*/;
772 var19 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
773 var_libname = var19;
774 var20 = ((short int (*)(val*))(var_libname->class->vft[COLOR_file__String__file_exists]))(var_libname) /* file_exists on <var_libname:String>*/;
775 if (var20){
776 var21 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ModelBuilder__cc_paths]))(self) /* cc_paths on <self:ModelBuilder>*/;
777 ((void (*)(val*, val*))(var21->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var21, var_libname) /* add on <var21:Array[String]>*/;
778 } else {
779 }
780 } else {
781 }
782 var22 = NEW_array__Array(&type_array__Arraykernel__Object);
783 var23 = 3;
784 ((void (*)(val*, long))(var22->class->vft[COLOR_array__Array__with_capacity]))(var22, var23) /* with_capacity on <var22:Array[Object]>*/;
785 var_24 = var22;
786 if (varonce25) {
787 var26 = varonce25;
788 } else {
789 var27 = "";
790 var28 = 0;
791 var29 = string__NativeString__to_s_with_length(var27, var28);
792 var26 = var29;
793 varonce25 = var26;
794 }
795 ((void (*)(val*, val*))(var_24->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_24, var26) /* add on <var_24:Array[Object]>*/;
796 var30 = ((val* (*)(val*))(self->class->vft[COLOR_kernel__Object__sys]))(self) /* sys on <self:ModelBuilder>*/;
797 var31 = ((val* (*)(val*))(var30->class->vft[COLOR_string__Sys__program_name]))(var30) /* program_name on <var30:Sys>*/;
798 var32 = ((val* (*)(val*))(var31->class->vft[COLOR_file__String__dirname]))(var31) /* dirname on <var31:String>*/;
799 ((void (*)(val*, val*))(var_24->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_24, var32) /* add on <var_24:Array[Object]>*/;
800 if (varonce33) {
801 var34 = varonce33;
802 } else {
803 var35 = "/../clib";
804 var36 = 8;
805 var37 = string__NativeString__to_s_with_length(var35, var36);
806 var34 = var37;
807 varonce33 = var34;
808 }
809 ((void (*)(val*, val*))(var_24->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_24, var34) /* add on <var_24:Array[Object]>*/;
810 var38 = ((val* (*)(val*))(var_24->class->vft[COLOR_string__Object__to_s]))(var_24) /* to_s on <var_24:Array[Object]>*/;
811 var_libname39 = var38;
812 var40 = ((short int (*)(val*))(var_libname39->class->vft[COLOR_file__String__file_exists]))(var_libname39) /* file_exists on <var_libname39:String>*/;
813 if (var40){
814 var41 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ModelBuilder__cc_paths]))(self) /* cc_paths on <self:ModelBuilder>*/;
815 var42 = ((val* (*)(val*))(var_libname39->class->vft[COLOR_file__String__simplify_path]))(var_libname39) /* simplify_path on <var_libname39:String>*/;
816 ((void (*)(val*, val*))(var41->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var41, var42) /* add on <var41:Array[String]>*/;
817 } else {
818 }
819 var43 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ModelBuilder__cc_paths]))(self) /* cc_paths on <self:ModelBuilder>*/;
820 var44 = ((short int (*)(val*))(var43->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var43) /* is_empty on <var43:Array[String]>*/;
821 if (var44){
822 var45 = NULL;
823 if (varonce46) {
824 var47 = varonce46;
825 } else {
826 var48 = "Cannot determine the nit clib path. define envvar NIT_DIR.";
827 var49 = 58;
828 var50 = string__NativeString__to_s_with_length(var48, var49);
829 var47 = var50;
830 varonce46 = var47;
831 }
832 ((void (*)(val*, val*, val*))(var_toolcontext->class->vft[COLOR_toolcontext__ToolContext__error]))(var_toolcontext, var45, var47) /* error on <var_toolcontext:ToolContext>*/;
833 } else {
834 }
835 var52 = ((val* (*)(val*))(var_toolcontext->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_stacktrace]))(var_toolcontext) /* opt_no_stacktrace on <var_toolcontext:ToolContext>*/;
836 var53 = ((val* (*)(val*))(var52->class->vft[COLOR_opts__Option__value]))(var52) /* value on <var52:OptionBool>*/;
837 var54 = ((struct instance_kernel__Bool*)var53)->value; /* autounbox from nullable Object to Bool */;
838 var_55 = var54;
839 if (var54){
840 var56 = ((val* (*)(val*))(var_toolcontext->class->vft[COLOR_abstract_compiler__ToolContext__opt_stacktrace]))(var_toolcontext) /* opt_stacktrace on <var_toolcontext:ToolContext>*/;
841 var57 = ((val* (*)(val*))(var56->class->vft[COLOR_opts__Option__value]))(var56) /* value on <var56:OptionBool>*/;
842 var58 = ((struct instance_kernel__Bool*)var57)->value; /* autounbox from nullable Object to Bool */;
843 var51 = var58;
844 } else {
845 var51 = var_55;
846 }
847 if (var51){
848 if (varonce59) {
849 var60 = varonce59;
850 } else {
851 var61 = "Cannot use --nit-stacktrace when --no-stacktrace is activated";
852 var62 = 61;
853 var63 = string__NativeString__to_s_with_length(var61, var62);
854 var60 = var63;
855 varonce59 = var60;
856 }
857 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var60) /* print on <self:ModelBuilder>*/;
858 var64 = 1;
859 ((void (*)(val*, long))(self->class->vft[COLOR_kernel__Object__exit]))(self, var64) /* exit on <self:ModelBuilder>*/;
860 } else {
861 }
862 var65 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ModelBuilder__cc_paths]))(self) /* cc_paths on <self:ModelBuilder>*/;
863 var66 = ((val* (*)(val*))(var_toolcontext->class->vft[COLOR_abstract_compiler__ToolContext__opt_cc_path]))(var_toolcontext) /* opt_cc_path on <var_toolcontext:ToolContext>*/;
864 var67 = ((val* (*)(val*))(var66->class->vft[COLOR_opts__Option__value]))(var66) /* value on <var66:OptionArray>*/;
865 ((void (*)(val*, val*))(var65->class->vft[COLOR_abstract_collection__Sequence__append]))(var65, var67) /* append on <var65:Array[String]>*/;
866 if (varonce68) {
867 var69 = varonce68;
868 } else {
869 var70 = "NIT_CC_PATH";
870 var71 = 11;
871 var72 = string__NativeString__to_s_with_length(var70, var71);
872 var69 = var72;
873 varonce68 = var69;
874 }
875 var73 = ((val* (*)(val*))(var69->class->vft[COLOR_environ__String__environ]))(var69) /* environ on <var69:String>*/;
876 var_path_env = var73;
877 var74 = ((short int (*)(val*))(var_path_env->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_path_env) /* is_empty on <var_path_env:String>*/;
878 var75 = !var74;
879 if (var75){
880 var76 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ModelBuilder__cc_paths]))(self) /* cc_paths on <self:ModelBuilder>*/;
881 var77 = ':';
882 var79 = BOX_kernel__Char(var77); /* autobox from Char to Pattern */
883 var78 = ((val* (*)(val*, val*))(var_path_env->class->vft[COLOR_string_search__String__split_with]))(var_path_env, var79) /* split_with on <var_path_env:String>*/;
884 ((void (*)(val*, val*))(var76->class->vft[COLOR_abstract_collection__Sequence__append]))(var76, var78) /* append on <var76:Array[String]>*/;
885 } else {
886 }
887 RET_LABEL:;
888 }
889 /* method abstract_compiler#ModelBuilder#init for (self: Object, Model, ToolContext) */
890 void VIRTUAL_abstract_compiler__ModelBuilder__init(val* self, val* p0, val* p1) {
891 abstract_compiler__ModelBuilder__init(self, p0, p1);
892 RET_LABEL:;
893 }
894 /* method abstract_compiler#ModelBuilder#write_and_make for (self: ModelBuilder, AbstractCompiler) */
895 void abstract_compiler__ModelBuilder__write_and_make(val* self, val* p0) {
896 val* var_compiler /* var compiler: AbstractCompiler */;
897 val* var /* : MModule */;
898 val* var_mainmodule /* var mainmodule: MModule */;
899 long var1 /* : Int */;
900 long var_time0 /* var time0: Int */;
901 val* var2 /* : ToolContext */;
902 static val* varonce;
903 val* var3 /* : String */;
904 char* var4 /* : NativeString */;
905 long var5 /* : Int */;
906 val* var6 /* : String */;
907 long var7 /* : Int */;
908 val* var8 /* : ToolContext */;
909 val* var9 /* : OptionString */;
910 val* var10 /* : nullable Object */;
911 val* var_compile_dir /* var compile_dir: nullable String */;
912 val* var11 /* : null */;
913 short int var12 /* : Bool */;
914 static val* varonce13;
915 val* var14 /* : String */;
916 char* var15 /* : NativeString */;
917 long var16 /* : Int */;
918 val* var17 /* : String */;
919 val* var18 /* : ToolContext */;
920 val* var19 /* : OptionBool */;
921 val* var20 /* : nullable Object */;
922 short int var21 /* : Bool */;
923 static val* varonce22;
924 val* var23 /* : String */;
925 char* var24 /* : NativeString */;
926 long var25 /* : Int */;
927 val* var26 /* : String */;
928 val* var_orig_dir /* var orig_dir: String */;
929 val* var27 /* : ToolContext */;
930 val* var28 /* : OptionString */;
931 val* var29 /* : nullable Object */;
932 val* var_outname /* var outname: nullable String */;
933 val* var30 /* : null */;
934 short int var31 /* : Bool */;
935 val* var32 /* : Array[Object] */;
936 long var33 /* : Int */;
937 val* var_ /* var : Array[Object] */;
938 static val* varonce34;
939 val* var35 /* : String */;
940 char* var36 /* : NativeString */;
941 long var37 /* : Int */;
942 val* var38 /* : String */;
943 val* var39 /* : String */;
944 static val* varonce40;
945 val* var41 /* : String */;
946 char* var42 /* : NativeString */;
947 long var43 /* : Int */;
948 val* var44 /* : String */;
949 val* var45 /* : String */;
950 val* var46 /* : String */;
951 val* var47 /* : String */;
952 val* var_outpath /* var outpath: String */;
953 val* var48 /* : CodeWriter */;
954 val* var49 /* : CodeFile */;
955 val* var50 /* : String */;
956 static val* varonce51;
957 val* var52 /* : String */;
958 char* var53 /* : NativeString */;
959 long var54 /* : Int */;
960 val* var55 /* : String */;
961 val* var56 /* : String */;
962 val* var_hfilename /* var hfilename: String */;
963 val* var57 /* : Array[Object] */;
964 long var58 /* : Int */;
965 val* var_59 /* var : Array[Object] */;
966 static val* varonce60;
967 val* var61 /* : String */;
968 char* var62 /* : NativeString */;
969 long var63 /* : Int */;
970 val* var64 /* : String */;
971 static val* varonce65;
972 val* var66 /* : String */;
973 char* var67 /* : NativeString */;
974 long var68 /* : Int */;
975 val* var69 /* : String */;
976 static val* varonce70;
977 val* var71 /* : String */;
978 char* var72 /* : NativeString */;
979 long var73 /* : Int */;
980 val* var74 /* : String */;
981 val* var75 /* : String */;
982 val* var_hfilepath /* var hfilepath: String */;
983 val* var76 /* : OFStream */;
984 val* var_h /* var h: OFStream */;
985 val* var77 /* : CodeWriter */;
986 val* var78 /* : List[String] */;
987 val* var79 /* : Iterator[nullable Object] */;
988 short int var80 /* : Bool */;
989 val* var81 /* : nullable Object */;
990 val* var_l /* var l: String */;
991 static val* varonce82;
992 val* var83 /* : String */;
993 char* var84 /* : NativeString */;
994 long var85 /* : Int */;
995 val* var86 /* : String */;
996 val* var87 /* : CodeWriter */;
997 val* var88 /* : List[String] */;
998 val* var89 /* : Iterator[nullable Object] */;
999 short int var90 /* : Bool */;
1000 val* var91 /* : nullable Object */;
1001 val* var_l92 /* var l: String */;
1002 static val* varonce93;
1003 val* var94 /* : String */;
1004 char* var95 /* : NativeString */;
1005 long var96 /* : Int */;
1006 val* var97 /* : String */;
1007 val* var99 /* : Array[String] */;
1008 val* var_cfiles /* var cfiles: Array[String] */;
1009 val* var100 /* : List[CodeFile] */;
1010 val* var101 /* : Iterator[nullable Object] */;
1011 short int var102 /* : Bool */;
1012 val* var103 /* : nullable Object */;
1013 val* var_f /* var f: CodeFile */;
1014 long var104 /* : Int */;
1015 long var_i /* var i: Int */;
1016 val* var105 /* : null */;
1017 val* var_hfile /* var hfile: nullable OFStream */;
1018 long var106 /* : Int */;
1019 long var_count /* var count: Int */;
1020 val* var107 /* : Array[Object] */;
1021 long var108 /* : Int */;
1022 val* var_109 /* var : Array[Object] */;
1023 static val* varonce110;
1024 val* var111 /* : String */;
1025 char* var112 /* : NativeString */;
1026 long var113 /* : Int */;
1027 val* var114 /* : String */;
1028 val* var115 /* : String */;
1029 static val* varonce116;
1030 val* var117 /* : String */;
1031 char* var118 /* : NativeString */;
1032 long var119 /* : Int */;
1033 val* var120 /* : String */;
1034 val* var121 /* : String */;
1035 val* var_cfilename /* var cfilename: String */;
1036 val* var122 /* : Array[Object] */;
1037 long var123 /* : Int */;
1038 val* var_124 /* var : Array[Object] */;
1039 static val* varonce125;
1040 val* var126 /* : String */;
1041 char* var127 /* : NativeString */;
1042 long var128 /* : Int */;
1043 val* var129 /* : String */;
1044 static val* varonce130;
1045 val* var131 /* : String */;
1046 char* var132 /* : NativeString */;
1047 long var133 /* : Int */;
1048 val* var134 /* : String */;
1049 static val* varonce135;
1050 val* var136 /* : String */;
1051 char* var137 /* : NativeString */;
1052 long var138 /* : Int */;
1053 val* var139 /* : String */;
1054 val* var140 /* : String */;
1055 val* var_cfilepath /* var cfilepath: String */;
1056 val* var141 /* : OFStream */;
1057 static val* varonce142;
1058 val* var143 /* : String */;
1059 char* var144 /* : NativeString */;
1060 long var145 /* : Int */;
1061 val* var146 /* : String */;
1062 static val* varonce147;
1063 val* var148 /* : String */;
1064 char* var149 /* : NativeString */;
1065 long var150 /* : Int */;
1066 val* var151 /* : String */;
1067 val* var152 /* : Array[Object] */;
1068 long var153 /* : Int */;
1069 val* var154 /* : NativeArray[Object] */;
1070 val* var155 /* : String */;
1071 val* var156 /* : HashSet[String] */;
1072 val* var157 /* : Iterator[nullable Object] */;
1073 short int var158 /* : Bool */;
1074 val* var159 /* : nullable Object */;
1075 val* var_key /* var key: String */;
1076 val* var160 /* : HashMap[String, String] */;
1077 short int var161 /* : Bool */;
1078 short int var162 /* : Bool */;
1079 static val* varonce163;
1080 val* var164 /* : String */;
1081 char* var165 /* : NativeString */;
1082 long var166 /* : Int */;
1083 val* var167 /* : String */;
1084 val* var168 /* : Array[Object] */;
1085 long var169 /* : Int */;
1086 val* var170 /* : NativeArray[Object] */;
1087 val* var171 /* : String */;
1088 val* var172 /* : HashMap[String, String] */;
1089 val* var173 /* : nullable Object */;
1090 static val* varonce174;
1091 val* var175 /* : String */;
1092 char* var176 /* : NativeString */;
1093 long var177 /* : Int */;
1094 val* var178 /* : String */;
1095 val* var180 /* : null */;
1096 val* var_file /* var file: nullable OFStream */;
1097 val* var181 /* : Array[CodeWriter] */;
1098 val* var182 /* : Iterator[nullable Object] */;
1099 short int var183 /* : Bool */;
1100 val* var184 /* : nullable Object */;
1101 val* var_vis /* var vis: CodeWriter */;
1102 val* var185 /* : CodeWriter */;
1103 short int var186 /* : Bool */;
1104 val* var188 /* : List[String] */;
1105 long var189 /* : Int */;
1106 val* var190 /* : List[String] */;
1107 long var191 /* : Int */;
1108 long var192 /* : Int */;
1109 long var194 /* : Int */;
1110 long var_total_lines /* var total_lines: Int */;
1111 long var195 /* : Int */;
1112 short int var196 /* : Bool */;
1113 short int var198 /* : Bool */;
1114 long var199 /* : Int */;
1115 long var201 /* : Int */;
1116 short int var202 /* : Bool */;
1117 val* var203 /* : null */;
1118 short int var204 /* : Bool */;
1119 short int var_205 /* var : Bool */;
1120 long var206 /* : Int */;
1121 short int var207 /* : Bool */;
1122 short int var209 /* : Bool */;
1123 int cltype;
1124 int idtype;
1125 const char* var_class_name;
1126 short int var210 /* : Bool */;
1127 long var211 /* : Int */;
1128 long var212 /* : Int */;
1129 long var214 /* : Int */;
1130 val* var215 /* : null */;
1131 short int var216 /* : Bool */;
1132 val* var217 /* : Array[Object] */;
1133 long var218 /* : Int */;
1134 val* var_219 /* var : Array[Object] */;
1135 static val* varonce220;
1136 val* var221 /* : String */;
1137 char* var222 /* : NativeString */;
1138 long var223 /* : Int */;
1139 val* var224 /* : String */;
1140 val* var225 /* : String */;
1141 static val* varonce226;
1142 val* var227 /* : String */;
1143 char* var228 /* : NativeString */;
1144 long var229 /* : Int */;
1145 val* var230 /* : String */;
1146 val* var231 /* : nullable Object */;
1147 static val* varonce232;
1148 val* var233 /* : String */;
1149 char* var234 /* : NativeString */;
1150 long var235 /* : Int */;
1151 val* var236 /* : String */;
1152 val* var237 /* : String */;
1153 val* var238 /* : Array[Object] */;
1154 long var239 /* : Int */;
1155 val* var_240 /* var : Array[Object] */;
1156 static val* varonce241;
1157 val* var242 /* : String */;
1158 char* var243 /* : NativeString */;
1159 long var244 /* : Int */;
1160 val* var245 /* : String */;
1161 static val* varonce246;
1162 val* var247 /* : String */;
1163 char* var248 /* : NativeString */;
1164 long var249 /* : Int */;
1165 val* var250 /* : String */;
1166 static val* varonce251;
1167 val* var252 /* : String */;
1168 char* var253 /* : NativeString */;
1169 long var254 /* : Int */;
1170 val* var255 /* : String */;
1171 val* var256 /* : String */;
1172 val* var257 /* : ToolContext */;
1173 static val* varonce258;
1174 val* var259 /* : String */;
1175 char* var260 /* : NativeString */;
1176 long var261 /* : Int */;
1177 val* var262 /* : String */;
1178 val* var263 /* : Array[Object] */;
1179 long var264 /* : Int */;
1180 val* var265 /* : NativeArray[Object] */;
1181 val* var266 /* : String */;
1182 long var267 /* : Int */;
1183 val* var268 /* : OFStream */;
1184 static val* varonce269;
1185 val* var270 /* : String */;
1186 char* var271 /* : NativeString */;
1187 long var272 /* : Int */;
1188 val* var273 /* : String */;
1189 val* var274 /* : String */;
1190 static val* varonce275;
1191 val* var276 /* : String */;
1192 char* var277 /* : NativeString */;
1193 long var278 /* : Int */;
1194 val* var279 /* : String */;
1195 val* var280 /* : Array[Object] */;
1196 long var281 /* : Int */;
1197 val* var282 /* : NativeArray[Object] */;
1198 val* var283 /* : String */;
1199 val* var284 /* : List[String] */;
1200 val* var285 /* : Iterator[nullable Object] */;
1201 short int var286 /* : Bool */;
1202 val* var287 /* : nullable Object */;
1203 val* var_l288 /* var l: String */;
1204 static val* varonce289;
1205 val* var290 /* : String */;
1206 char* var291 /* : NativeString */;
1207 long var292 /* : Int */;
1208 val* var293 /* : String */;
1209 val* var295 /* : List[String] */;
1210 val* var296 /* : Iterator[nullable Object] */;
1211 short int var297 /* : Bool */;
1212 val* var298 /* : nullable Object */;
1213 val* var_l299 /* var l: String */;
1214 static val* varonce300;
1215 val* var301 /* : String */;
1216 char* var302 /* : NativeString */;
1217 long var303 /* : Int */;
1218 val* var304 /* : String */;
1219 val* var306 /* : null */;
1220 short int var307 /* : Bool */;
1221 val* var309 /* : ToolContext */;
1222 static val* varonce310;
1223 val* var311 /* : String */;
1224 char* var312 /* : NativeString */;
1225 long var313 /* : Int */;
1226 val* var314 /* : String */;
1227 long var315 /* : Int */;
1228 val* var316 /* : Array[Object] */;
1229 long var317 /* : Int */;
1230 val* var318 /* : NativeArray[Object] */;
1231 val* var319 /* : Object */;
1232 val* var320 /* : String */;
1233 long var321 /* : Int */;
1234 val* var322 /* : Array[Object] */;
1235 long var323 /* : Int */;
1236 val* var_324 /* var : Array[Object] */;
1237 static val* varonce325;
1238 val* var326 /* : String */;
1239 char* var327 /* : NativeString */;
1240 long var328 /* : Int */;
1241 val* var329 /* : String */;
1242 val* var330 /* : String */;
1243 static val* varonce331;
1244 val* var332 /* : String */;
1245 char* var333 /* : NativeString */;
1246 long var334 /* : Int */;
1247 val* var335 /* : String */;
1248 val* var336 /* : String */;
1249 val* var_makename /* var makename: String */;
1250 val* var337 /* : Array[Object] */;
1251 long var338 /* : Int */;
1252 val* var_339 /* var : Array[Object] */;
1253 static val* varonce340;
1254 val* var341 /* : String */;
1255 char* var342 /* : NativeString */;
1256 long var343 /* : Int */;
1257 val* var344 /* : String */;
1258 static val* varonce345;
1259 val* var346 /* : String */;
1260 char* var347 /* : NativeString */;
1261 long var348 /* : Int */;
1262 val* var349 /* : String */;
1263 static val* varonce350;
1264 val* var351 /* : String */;
1265 char* var352 /* : NativeString */;
1266 long var353 /* : Int */;
1267 val* var354 /* : String */;
1268 val* var355 /* : String */;
1269 val* var_makepath /* var makepath: String */;
1270 val* var356 /* : OFStream */;
1271 val* var_makefile /* var makefile: OFStream */;
1272 static val* varonce357;
1273 val* var358 /* : String */;
1274 char* var359 /* : NativeString */;
1275 long var360 /* : Int */;
1276 val* var361 /* : String */;
1277 val* var_cc_includes /* var cc_includes: String */;
1278 val* var362 /* : Array[String] */;
1279 val* var363 /* : Iterator[nullable Object] */;
1280 short int var364 /* : Bool */;
1281 val* var365 /* : nullable Object */;
1282 val* var_p /* var p: String */;
1283 val* var366 /* : String */;
1284 val* var367 /* : String */;
1285 static val* varonce368;
1286 val* var369 /* : String */;
1287 char* var370 /* : NativeString */;
1288 long var371 /* : Int */;
1289 val* var372 /* : String */;
1290 val* var373 /* : String */;
1291 static val* varonce374;
1292 val* var375 /* : String */;
1293 char* var376 /* : NativeString */;
1294 long var377 /* : Int */;
1295 val* var378 /* : String */;
1296 val* var379 /* : String */;
1297 val* var380 /* : String */;
1298 val* var382 /* : ToolContext */;
1299 val* var383 /* : OptionBool */;
1300 val* var384 /* : nullable Object */;
1301 short int var385 /* : Bool */;
1302 static val* varonce386;
1303 val* var387 /* : String */;
1304 char* var388 /* : NativeString */;
1305 long var389 /* : Int */;
1306 val* var390 /* : String */;
1307 static val* varonce391;
1308 val* var392 /* : String */;
1309 char* var393 /* : NativeString */;
1310 long var394 /* : Int */;
1311 val* var395 /* : String */;
1312 val* var396 /* : Array[Object] */;
1313 long var397 /* : Int */;
1314 val* var398 /* : NativeArray[Object] */;
1315 val* var399 /* : String */;
1316 static val* varonce400;
1317 val* var401 /* : String */;
1318 char* var402 /* : NativeString */;
1319 long var403 /* : Int */;
1320 val* var404 /* : String */;
1321 static val* varonce405;
1322 val* var406 /* : String */;
1323 char* var407 /* : NativeString */;
1324 long var408 /* : Int */;
1325 val* var409 /* : String */;
1326 val* var410 /* : Array[Object] */;
1327 long var411 /* : Int */;
1328 val* var412 /* : NativeArray[Object] */;
1329 val* var413 /* : String */;
1330 static val* varonce414;
1331 val* var415 /* : String */;
1332 char* var416 /* : NativeString */;
1333 long var417 /* : Int */;
1334 val* var418 /* : String */;
1335 static val* varonce419;
1336 val* var420 /* : String */;
1337 char* var421 /* : NativeString */;
1338 long var422 /* : Int */;
1339 val* var423 /* : String */;
1340 val* var424 /* : Array[Object] */;
1341 long var425 /* : Int */;
1342 val* var426 /* : NativeArray[Object] */;
1343 val* var427 /* : String */;
1344 val* var428 /* : Array[String] */;
1345 val* var_ofiles /* var ofiles: Array[String] */;
1346 val* var429 /* : Iterator[nullable Object] */;
1347 short int var430 /* : Bool */;
1348 val* var431 /* : nullable Object */;
1349 val* var_f432 /* var f: String */;
1350 static val* varonce433;
1351 val* var434 /* : String */;
1352 char* var435 /* : NativeString */;
1353 long var436 /* : Int */;
1354 val* var437 /* : String */;
1355 val* var438 /* : String */;
1356 static val* varonce439;
1357 val* var440 /* : String */;
1358 char* var441 /* : NativeString */;
1359 long var442 /* : Int */;
1360 val* var443 /* : String */;
1361 val* var444 /* : String */;
1362 val* var_o /* var o: String */;
1363 static val* varonce445;
1364 val* var446 /* : String */;
1365 char* var447 /* : NativeString */;
1366 long var448 /* : Int */;
1367 val* var449 /* : String */;
1368 static val* varonce450;
1369 val* var451 /* : String */;
1370 char* var452 /* : NativeString */;
1371 long var453 /* : Int */;
1372 val* var454 /* : String */;
1373 static val* varonce455;
1374 val* var456 /* : String */;
1375 char* var457 /* : NativeString */;
1376 long var458 /* : Int */;
1377 val* var459 /* : String */;
1378 static val* varonce460;
1379 val* var461 /* : String */;
1380 char* var462 /* : NativeString */;
1381 long var463 /* : Int */;
1382 val* var464 /* : String */;
1383 val* var465 /* : Array[Object] */;
1384 long var466 /* : Int */;
1385 val* var467 /* : NativeArray[Object] */;
1386 val* var468 /* : String */;
1387 val* var470 /* : ExternCFile */;
1388 val* var471 /* : Array[Object] */;
1389 long var472 /* : Int */;
1390 val* var_473 /* var : Array[Object] */;
1391 static val* varonce474;
1392 val* var475 /* : String */;
1393 char* var476 /* : NativeString */;
1394 long var477 /* : Int */;
1395 val* var478 /* : String */;
1396 val* var479 /* : Array[String] */;
1397 val* var480 /* : nullable Object */;
1398 static val* varonce481;
1399 val* var482 /* : String */;
1400 char* var483 /* : NativeString */;
1401 long var484 /* : Int */;
1402 val* var485 /* : String */;
1403 val* var486 /* : String */;
1404 static val* varonce487;
1405 val* var488 /* : String */;
1406 char* var489 /* : NativeString */;
1407 long var490 /* : Int */;
1408 val* var491 /* : String */;
1409 val* var_gc_chooser /* var gc_chooser: ExternCFile */;
1410 val* var492 /* : Array[ExternCFile] */;
1411 val* var493 /* : Array[ExternCFile] */;
1412 val* var494 /* : Iterator[nullable Object] */;
1413 short int var495 /* : Bool */;
1414 val* var496 /* : nullable Object */;
1415 val* var_f497 /* var f: ExternCFile */;
1416 val* var498 /* : String */;
1417 static val* varonce499;
1418 val* var500 /* : String */;
1419 char* var501 /* : NativeString */;
1420 long var502 /* : Int */;
1421 val* var503 /* : String */;
1422 val* var504 /* : String */;
1423 val* var_basename /* var basename: String */;
1424 val* var505 /* : Array[Object] */;
1425 long var506 /* : Int */;
1426 val* var_507 /* var : Array[Object] */;
1427 static val* varonce508;
1428 val* var509 /* : String */;
1429 char* var510 /* : NativeString */;
1430 long var511 /* : Int */;
1431 val* var512 /* : String */;
1432 static val* varonce513;
1433 val* var514 /* : String */;
1434 char* var515 /* : NativeString */;
1435 long var516 /* : Int */;
1436 val* var517 /* : String */;
1437 val* var518 /* : String */;
1438 val* var_o519 /* var o: String */;
1439 val* var520 /* : String */;
1440 val* var521 /* : String */;
1441 val* var522 /* : String */;
1442 val* var_ff /* var ff: String */;
1443 static val* varonce523;
1444 val* var524 /* : String */;
1445 char* var525 /* : NativeString */;
1446 long var526 /* : Int */;
1447 val* var527 /* : String */;
1448 static val* varonce528;
1449 val* var529 /* : String */;
1450 char* var530 /* : NativeString */;
1451 long var531 /* : Int */;
1452 val* var532 /* : String */;
1453 val* var533 /* : String */;
1454 static val* varonce534;
1455 val* var535 /* : String */;
1456 char* var536 /* : NativeString */;
1457 long var537 /* : Int */;
1458 val* var538 /* : String */;
1459 static val* varonce539;
1460 val* var540 /* : String */;
1461 char* var541 /* : NativeString */;
1462 long var542 /* : Int */;
1463 val* var543 /* : String */;
1464 static val* varonce544;
1465 val* var545 /* : String */;
1466 char* var546 /* : NativeString */;
1467 long var547 /* : Int */;
1468 val* var548 /* : String */;
1469 val* var549 /* : Array[Object] */;
1470 long var550 /* : Int */;
1471 val* var551 /* : NativeArray[Object] */;
1472 val* var552 /* : String */;
1473 static val* varonce554;
1474 val* var555 /* : String */;
1475 char* var556 /* : NativeString */;
1476 long var557 /* : Int */;
1477 val* var558 /* : String */;
1478 static val* varonce559;
1479 val* var560 /* : String */;
1480 char* var561 /* : NativeString */;
1481 long var562 /* : Int */;
1482 val* var563 /* : String */;
1483 val* var564 /* : String */;
1484 static val* varonce565;
1485 val* var566 /* : String */;
1486 char* var567 /* : NativeString */;
1487 long var568 /* : Int */;
1488 val* var569 /* : String */;
1489 static val* varonce570;
1490 val* var571 /* : String */;
1491 char* var572 /* : NativeString */;
1492 long var573 /* : Int */;
1493 val* var574 /* : String */;
1494 static val* varonce575;
1495 val* var576 /* : String */;
1496 char* var577 /* : NativeString */;
1497 long var578 /* : Int */;
1498 val* var579 /* : String */;
1499 val* var580 /* : String */;
1500 static val* varonce581;
1501 val* var582 /* : String */;
1502 char* var583 /* : NativeString */;
1503 long var584 /* : Int */;
1504 val* var585 /* : String */;
1505 val* var586 /* : Array[Object] */;
1506 long var587 /* : Int */;
1507 val* var588 /* : NativeArray[Object] */;
1508 val* var589 /* : String */;
1509 static val* varonce590;
1510 val* var591 /* : String */;
1511 char* var592 /* : NativeString */;
1512 long var593 /* : Int */;
1513 val* var594 /* : String */;
1514 static val* varonce595;
1515 val* var596 /* : String */;
1516 char* var597 /* : NativeString */;
1517 long var598 /* : Int */;
1518 val* var599 /* : String */;
1519 val* var600 /* : String */;
1520 static val* varonce601;
1521 val* var602 /* : String */;
1522 char* var603 /* : NativeString */;
1523 long var604 /* : Int */;
1524 val* var605 /* : String */;
1525 val* var606 /* : Array[Object] */;
1526 long var607 /* : Int */;
1527 val* var608 /* : NativeArray[Object] */;
1528 val* var609 /* : String */;
1529 val* var610 /* : ToolContext */;
1530 static val* varonce611;
1531 val* var612 /* : String */;
1532 char* var613 /* : NativeString */;
1533 long var614 /* : Int */;
1534 val* var615 /* : String */;
1535 val* var616 /* : Array[Object] */;
1536 long var617 /* : Int */;
1537 val* var618 /* : NativeArray[Object] */;
1538 val* var619 /* : String */;
1539 long var620 /* : Int */;
1540 long var621 /* : Int */;
1541 long var_time1 /* var time1: Int */;
1542 val* var622 /* : ToolContext */;
1543 static val* varonce623;
1544 val* var624 /* : String */;
1545 char* var625 /* : NativeString */;
1546 long var626 /* : Int */;
1547 val* var627 /* : String */;
1548 long var628 /* : Int */;
1549 long var630 /* : Int */;
1550 static val* varonce631;
1551 val* var632 /* : String */;
1552 char* var633 /* : NativeString */;
1553 long var634 /* : Int */;
1554 val* var635 /* : String */;
1555 val* var636 /* : Array[Object] */;
1556 long var637 /* : Int */;
1557 val* var638 /* : NativeArray[Object] */;
1558 val* var639 /* : Object */;
1559 val* var640 /* : String */;
1560 long var641 /* : Int */;
1561 val* var642 /* : ToolContext */;
1562 val* var643 /* : OptionBool */;
1563 val* var644 /* : nullable Object */;
1564 short int var645 /* : Bool */;
1565 val* var646 /* : ToolContext */;
1566 static val* varonce647;
1567 val* var648 /* : String */;
1568 char* var649 /* : NativeString */;
1569 long var650 /* : Int */;
1570 val* var651 /* : String */;
1571 long var652 /* : Int */;
1572 val* var653 /* : ToolContext */;
1573 val* var654 /* : OptionString */;
1574 val* var655 /* : nullable Object */;
1575 val* var_makeflags /* var makeflags: nullable String */;
1576 val* var656 /* : null */;
1577 short int var657 /* : Bool */;
1578 static val* varonce658;
1579 val* var659 /* : String */;
1580 char* var660 /* : NativeString */;
1581 long var661 /* : Int */;
1582 val* var662 /* : String */;
1583 val* var663 /* : ToolContext */;
1584 static val* varonce664;
1585 val* var665 /* : String */;
1586 char* var666 /* : NativeString */;
1587 long var667 /* : Int */;
1588 val* var668 /* : String */;
1589 static val* varonce669;
1590 val* var670 /* : String */;
1591 char* var671 /* : NativeString */;
1592 long var672 /* : Int */;
1593 val* var673 /* : String */;
1594 static val* varonce674;
1595 val* var675 /* : String */;
1596 char* var676 /* : NativeString */;
1597 long var677 /* : Int */;
1598 val* var678 /* : String */;
1599 val* var679 /* : Array[Object] */;
1600 long var680 /* : Int */;
1601 val* var681 /* : NativeArray[Object] */;
1602 val* var682 /* : String */;
1603 long var683 /* : Int */;
1604 val* var684 /* : ToolContext */;
1605 long var685 /* : Int */;
1606 long var686 /* : Int */;
1607 short int var687 /* : Bool */;
1608 short int var689 /* : Bool */;
1609 int cltype690;
1610 int idtype691;
1611 const char* var_class_name692;
1612 short int var693 /* : Bool */;
1613 val* var694 /* : Sys */;
1614 static val* varonce695;
1615 val* var696 /* : String */;
1616 char* var697 /* : NativeString */;
1617 long var698 /* : Int */;
1618 val* var699 /* : String */;
1619 static val* varonce700;
1620 val* var701 /* : String */;
1621 char* var702 /* : NativeString */;
1622 long var703 /* : Int */;
1623 val* var704 /* : String */;
1624 static val* varonce705;
1625 val* var706 /* : String */;
1626 char* var707 /* : NativeString */;
1627 long var708 /* : Int */;
1628 val* var709 /* : String */;
1629 static val* varonce710;
1630 val* var711 /* : String */;
1631 char* var712 /* : NativeString */;
1632 long var713 /* : Int */;
1633 val* var714 /* : String */;
1634 val* var715 /* : Array[Object] */;
1635 long var716 /* : Int */;
1636 val* var717 /* : NativeArray[Object] */;
1637 val* var718 /* : String */;
1638 long var719 /* : Int */;
1639 val* var720 /* : nullable Object */;
1640 val* var_res /* var res: nullable Object */;
1641 val* var721 /* : Sys */;
1642 static val* varonce722;
1643 val* var723 /* : String */;
1644 char* var724 /* : NativeString */;
1645 long var725 /* : Int */;
1646 val* var726 /* : String */;
1647 static val* varonce727;
1648 val* var728 /* : String */;
1649 char* var729 /* : NativeString */;
1650 long var730 /* : Int */;
1651 val* var731 /* : String */;
1652 static val* varonce732;
1653 val* var733 /* : String */;
1654 char* var734 /* : NativeString */;
1655 long var735 /* : Int */;
1656 val* var736 /* : String */;
1657 static val* varonce737;
1658 val* var738 /* : String */;
1659 char* var739 /* : NativeString */;
1660 long var740 /* : Int */;
1661 val* var741 /* : String */;
1662 val* var742 /* : Array[Object] */;
1663 long var743 /* : Int */;
1664 val* var744 /* : NativeArray[Object] */;
1665 val* var745 /* : String */;
1666 long var746 /* : Int */;
1667 val* var747 /* : nullable Object */;
1668 long var748 /* : Int */;
1669 short int var749 /* : Bool */;
1670 short int var751 /* : Bool */;
1671 long var752 /* : Int */;
1672 short int var753 /* : Bool */;
1673 val* var754 /* : ToolContext */;
1674 val* var755 /* : null */;
1675 static val* varonce756;
1676 val* var757 /* : String */;
1677 char* var758 /* : NativeString */;
1678 long var759 /* : Int */;
1679 val* var760 /* : String */;
1680 static val* varonce761;
1681 val* var762 /* : String */;
1682 char* var763 /* : NativeString */;
1683 long var764 /* : Int */;
1684 val* var765 /* : String */;
1685 val* var766 /* : Array[Object] */;
1686 long var767 /* : Int */;
1687 val* var768 /* : NativeArray[Object] */;
1688 val* var769 /* : String */;
1689 long var770 /* : Int */;
1690 val* var771 /* : ToolContext */;
1691 static val* varonce772;
1692 val* var773 /* : String */;
1693 char* var774 /* : NativeString */;
1694 long var775 /* : Int */;
1695 val* var776 /* : String */;
1696 long var777 /* : Int */;
1697 long var779 /* : Int */;
1698 static val* varonce780;
1699 val* var781 /* : String */;
1700 char* var782 /* : NativeString */;
1701 long var783 /* : Int */;
1702 val* var784 /* : String */;
1703 val* var785 /* : Array[Object] */;
1704 long var786 /* : Int */;
1705 val* var787 /* : NativeArray[Object] */;
1706 val* var788 /* : Object */;
1707 val* var789 /* : String */;
1708 long var790 /* : Int */;
1709 var_compiler = p0;
1710 var = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var_compiler) /* mainmodule on <var_compiler:AbstractCompiler>*/;
1711 var_mainmodule = var;
1712 var1 = ((long (*)(val*))(self->class->vft[COLOR_time__Object__get_time]))(self) /* get_time on <self:ModelBuilder>*/;
1713 var_time0 = var1;
1714 var2 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
1715 if (varonce) {
1716 var3 = varonce;
1717 } else {
1718 var4 = "*** WRITING C ***";
1719 var5 = 17;
1720 var6 = string__NativeString__to_s_with_length(var4, var5);
1721 var3 = var6;
1722 varonce = var3;
1723 }
1724 var7 = 1;
1725 ((void (*)(val*, val*, long))(var2->class->vft[COLOR_toolcontext__ToolContext__info]))(var2, var3, var7) /* info on <var2:ToolContext>*/;
1726 var8 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
1727 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_compiler__ToolContext__opt_compile_dir]))(var8) /* opt_compile_dir on <var8:ToolContext>*/;
1728 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_opts__Option__value]))(var9) /* value on <var9:OptionString>*/;
1729 var_compile_dir = var10;
1730 var11 = NULL;
1731 if (var_compile_dir == NULL) {
1732 var12 = 1; /* is null */
1733 } else {
1734 var12 = 0; /* arg is null but recv is not */
1735 }
1736 if (var12){
1737 if (varonce13) {
1738 var14 = varonce13;
1739 } else {
1740 var15 = ".nit_compile";
1741 var16 = 12;
1742 var17 = string__NativeString__to_s_with_length(var15, var16);
1743 var14 = var17;
1744 varonce13 = var14;
1745 }
1746 var_compile_dir = var14;
1747 } else {
1748 }
1749 ((void (*)(val*))(var_compile_dir->class->vft[COLOR_file__String__mkdir]))(var_compile_dir) /* mkdir on <var_compile_dir:nullable String(String)>*/;
1750 var18 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
1751 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_compiler__ToolContext__opt_stacktrace]))(var18) /* opt_stacktrace on <var18:ToolContext>*/;
1752 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_opts__Option__value]))(var19) /* value on <var19:OptionBool>*/;
1753 var21 = ((struct instance_kernel__Bool*)var20)->value; /* autounbox from nullable Object to Bool */;
1754 if (var21){
1755 ((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>*/;
1756 } else {
1757 }
1758 if (varonce22) {
1759 var23 = varonce22;
1760 } else {
1761 var24 = "..";
1762 var25 = 2;
1763 var26 = string__NativeString__to_s_with_length(var24, var25);
1764 var23 = var26;
1765 varonce22 = var23;
1766 }
1767 var_orig_dir = var23;
1768 var27 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
1769 var28 = ((val* (*)(val*))(var27->class->vft[COLOR_abstract_compiler__ToolContext__opt_output]))(var27) /* opt_output on <var27:ToolContext>*/;
1770 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_opts__Option__value]))(var28) /* value on <var28:OptionString>*/;
1771 var_outname = var29;
1772 var30 = NULL;
1773 if (var_outname == NULL) {
1774 var31 = 1; /* is null */
1775 } else {
1776 var31 = 0; /* arg is null but recv is not */
1777 }
1778 if (var31){
1779 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
1780 var33 = 3;
1781 ((void (*)(val*, long))(var32->class->vft[COLOR_array__Array__with_capacity]))(var32, var33) /* with_capacity on <var32:Array[Object]>*/;
1782 var_ = var32;
1783 if (varonce34) {
1784 var35 = varonce34;
1785 } else {
1786 var36 = "";
1787 var37 = 0;
1788 var38 = string__NativeString__to_s_with_length(var36, var37);
1789 var35 = var38;
1790 varonce34 = var35;
1791 }
1792 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var35) /* add on <var_:Array[Object]>*/;
1793 var39 = ((val* (*)(val*))(var_mainmodule->class->vft[COLOR_mmodule__MModule__name]))(var_mainmodule) /* name on <var_mainmodule:MModule>*/;
1794 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var39) /* add on <var_:Array[Object]>*/;
1795 if (varonce40) {
1796 var41 = varonce40;
1797 } else {
1798 var42 = "";
1799 var43 = 0;
1800 var44 = string__NativeString__to_s_with_length(var42, var43);
1801 var41 = var44;
1802 varonce40 = var41;
1803 }
1804 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var41) /* add on <var_:Array[Object]>*/;
1805 var45 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
1806 var_outname = var45;
1807 } else {
1808 }
1809 var46 = ((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>*/;
1810 var47 = ((val* (*)(val*))(var46->class->vft[COLOR_file__String__simplify_path]))(var46) /* simplify_path on <var46:String>*/;
1811 var_outpath = var47;
1812 var48 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(var_compiler) /* header on <var_compiler:AbstractCompiler>*/;
1813 var49 = ((val* (*)(val*))(var48->class->vft[COLOR_abstract_compiler__CodeWriter__file]))(var48) /* file on <var48:CodeWriter>*/;
1814 var50 = ((val* (*)(val*))(var49->class->vft[COLOR_abstract_compiler__CodeFile__name]))(var49) /* name on <var49:CodeFile>*/;
1815 if (varonce51) {
1816 var52 = varonce51;
1817 } else {
1818 var53 = ".h";
1819 var54 = 2;
1820 var55 = string__NativeString__to_s_with_length(var53, var54);
1821 var52 = var55;
1822 varonce51 = var52;
1823 }
1824 var56 = ((val* (*)(val*, val*))(var50->class->vft[COLOR_string__String___43d]))(var50, var52) /* + on <var50:String>*/;
1825 var_hfilename = var56;
1826 var57 = NEW_array__Array(&type_array__Arraykernel__Object);
1827 var58 = 5;
1828 ((void (*)(val*, long))(var57->class->vft[COLOR_array__Array__with_capacity]))(var57, var58) /* with_capacity on <var57:Array[Object]>*/;
1829 var_59 = var57;
1830 if (varonce60) {
1831 var61 = varonce60;
1832 } else {
1833 var62 = "";
1834 var63 = 0;
1835 var64 = string__NativeString__to_s_with_length(var62, var63);
1836 var61 = var64;
1837 varonce60 = var61;
1838 }
1839 ((void (*)(val*, val*))(var_59->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_59, var61) /* add on <var_59:Array[Object]>*/;
1840 ((void (*)(val*, val*))(var_59->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_59, var_compile_dir) /* add on <var_59:Array[Object]>*/;
1841 if (varonce65) {
1842 var66 = varonce65;
1843 } else {
1844 var67 = "/";
1845 var68 = 1;
1846 var69 = string__NativeString__to_s_with_length(var67, var68);
1847 var66 = var69;
1848 varonce65 = var66;
1849 }
1850 ((void (*)(val*, val*))(var_59->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_59, var66) /* add on <var_59:Array[Object]>*/;
1851 ((void (*)(val*, val*))(var_59->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_59, var_hfilename) /* add on <var_59:Array[Object]>*/;
1852 if (varonce70) {
1853 var71 = varonce70;
1854 } else {
1855 var72 = "";
1856 var73 = 0;
1857 var74 = string__NativeString__to_s_with_length(var72, var73);
1858 var71 = var74;
1859 varonce70 = var71;
1860 }
1861 ((void (*)(val*, val*))(var_59->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_59, var71) /* add on <var_59:Array[Object]>*/;
1862 var75 = ((val* (*)(val*))(var_59->class->vft[COLOR_string__Object__to_s]))(var_59) /* to_s on <var_59:Array[Object]>*/;
1863 var_hfilepath = var75;
1864 var76 = NEW_file__OFStream(&type_file__OFStream);
1865 ((void (*)(val*, val*))(var76->class->vft[COLOR_file__OFStream__open]))(var76, var_hfilepath) /* open on <var76:OFStream>*/;
1866 var_h = var76;
1867 var77 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(var_compiler) /* header on <var_compiler:AbstractCompiler>*/;
1868 var78 = ((val* (*)(val*))(var77->class->vft[COLOR_abstract_compiler__CodeWriter__decl_lines]))(var77) /* decl_lines on <var77:CodeWriter>*/;
1869 var79 = ((val* (*)(val*))(var78->class->vft[COLOR_abstract_collection__Collection__iterator]))(var78) /* iterator on <var78:List[String]>*/;
1870 for(;;) {
1871 var80 = ((short int (*)(val*))(var79->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var79) /* is_ok on <var79:Iterator[nullable Object]>*/;
1872 if(!var80) break;
1873 var81 = ((val* (*)(val*))(var79->class->vft[COLOR_abstract_collection__Iterator__item]))(var79) /* item on <var79:Iterator[nullable Object]>*/;
1874 var_l = var81;
1875 ((void (*)(val*, val*))(var_h->class->vft[COLOR_stream__OStream__write]))(var_h, var_l) /* write on <var_h:OFStream>*/;
1876 if (varonce82) {
1877 var83 = varonce82;
1878 } else {
1879 var84 = "\n";
1880 var85 = 1;
1881 var86 = string__NativeString__to_s_with_length(var84, var85);
1882 var83 = var86;
1883 varonce82 = var83;
1884 }
1885 ((void (*)(val*, val*))(var_h->class->vft[COLOR_stream__OStream__write]))(var_h, var83) /* write on <var_h:OFStream>*/;
1886 CONTINUE_label: (void)0;
1887 ((void (*)(val*))(var79->class->vft[COLOR_abstract_collection__Iterator__next]))(var79) /* next on <var79:Iterator[nullable Object]>*/;
1888 }
1889 BREAK_label: (void)0;
1890 var87 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(var_compiler) /* header on <var_compiler:AbstractCompiler>*/;
1891 var88 = ((val* (*)(val*))(var87->class->vft[COLOR_abstract_compiler__CodeWriter__lines]))(var87) /* lines on <var87:CodeWriter>*/;
1892 var89 = ((val* (*)(val*))(var88->class->vft[COLOR_abstract_collection__Collection__iterator]))(var88) /* iterator on <var88:List[String]>*/;
1893 for(;;) {
1894 var90 = ((short int (*)(val*))(var89->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var89) /* is_ok on <var89:Iterator[nullable Object]>*/;
1895 if(!var90) break;
1896 var91 = ((val* (*)(val*))(var89->class->vft[COLOR_abstract_collection__Iterator__item]))(var89) /* item on <var89:Iterator[nullable Object]>*/;
1897 var_l92 = var91;
1898 ((void (*)(val*, val*))(var_h->class->vft[COLOR_stream__OStream__write]))(var_h, var_l92) /* write on <var_h:OFStream>*/;
1899 if (varonce93) {
1900 var94 = varonce93;
1901 } else {
1902 var95 = "\n";
1903 var96 = 1;
1904 var97 = string__NativeString__to_s_with_length(var95, var96);
1905 var94 = var97;
1906 varonce93 = var94;
1907 }
1908 ((void (*)(val*, val*))(var_h->class->vft[COLOR_stream__OStream__write]))(var_h, var94) /* write on <var_h:OFStream>*/;
1909 CONTINUE_label98: (void)0;
1910 ((void (*)(val*))(var89->class->vft[COLOR_abstract_collection__Iterator__next]))(var89) /* next on <var89:Iterator[nullable Object]>*/;
1911 }
1912 BREAK_label98: (void)0;
1913 ((void (*)(val*))(var_h->class->vft[COLOR_stream__IOS__close]))(var_h) /* close on <var_h:OFStream>*/;
1914 var99 = NEW_array__Array(&type_array__Arraystring__String);
1915 ((void (*)(val*))(var99->class->vft[COLOR_array__Array__init]))(var99) /* init on <var99:Array[String]>*/;
1916 var_cfiles = var99;
1917 var100 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__files]))(var_compiler) /* files on <var_compiler:AbstractCompiler>*/;
1918 var101 = ((val* (*)(val*))(var100->class->vft[COLOR_abstract_collection__Collection__iterator]))(var100) /* iterator on <var100:List[CodeFile]>*/;
1919 for(;;) {
1920 var102 = ((short int (*)(val*))(var101->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var101) /* is_ok on <var101:Iterator[nullable Object]>*/;
1921 if(!var102) break;
1922 var103 = ((val* (*)(val*))(var101->class->vft[COLOR_abstract_collection__Iterator__item]))(var101) /* item on <var101:Iterator[nullable Object]>*/;
1923 var_f = var103;
1924 var104 = 0;
1925 var_i = var104;
1926 var105 = NULL;
1927 var_hfile = var105;
1928 var106 = 0;
1929 var_count = var106;
1930 var107 = NEW_array__Array(&type_array__Arraykernel__Object);
1931 var108 = 3;
1932 ((void (*)(val*, long))(var107->class->vft[COLOR_array__Array__with_capacity]))(var107, var108) /* with_capacity on <var107:Array[Object]>*/;
1933 var_109 = var107;
1934 if (varonce110) {
1935 var111 = varonce110;
1936 } else {
1937 var112 = "";
1938 var113 = 0;
1939 var114 = string__NativeString__to_s_with_length(var112, var113);
1940 var111 = var114;
1941 varonce110 = var111;
1942 }
1943 ((void (*)(val*, val*))(var_109->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_109, var111) /* add on <var_109:Array[Object]>*/;
1944 var115 = ((val* (*)(val*))(var_f->class->vft[COLOR_abstract_compiler__CodeFile__name]))(var_f) /* name on <var_f:CodeFile>*/;
1945 ((void (*)(val*, val*))(var_109->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_109, var115) /* add on <var_109:Array[Object]>*/;
1946 if (varonce116) {
1947 var117 = varonce116;
1948 } else {
1949 var118 = ".0.h";
1950 var119 = 4;
1951 var120 = string__NativeString__to_s_with_length(var118, var119);
1952 var117 = var120;
1953 varonce116 = var117;
1954 }
1955 ((void (*)(val*, val*))(var_109->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_109, var117) /* add on <var_109:Array[Object]>*/;
1956 var121 = ((val* (*)(val*))(var_109->class->vft[COLOR_string__Object__to_s]))(var_109) /* to_s on <var_109:Array[Object]>*/;
1957 var_cfilename = var121;
1958 var122 = NEW_array__Array(&type_array__Arraykernel__Object);
1959 var123 = 5;
1960 ((void (*)(val*, long))(var122->class->vft[COLOR_array__Array__with_capacity]))(var122, var123) /* with_capacity on <var122:Array[Object]>*/;
1961 var_124 = var122;
1962 if (varonce125) {
1963 var126 = varonce125;
1964 } else {
1965 var127 = "";
1966 var128 = 0;
1967 var129 = string__NativeString__to_s_with_length(var127, var128);
1968 var126 = var129;
1969 varonce125 = var126;
1970 }
1971 ((void (*)(val*, val*))(var_124->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_124, var126) /* add on <var_124:Array[Object]>*/;
1972 ((void (*)(val*, val*))(var_124->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_124, var_compile_dir) /* add on <var_124:Array[Object]>*/;
1973 if (varonce130) {
1974 var131 = varonce130;
1975 } else {
1976 var132 = "/";
1977 var133 = 1;
1978 var134 = string__NativeString__to_s_with_length(var132, var133);
1979 var131 = var134;
1980 varonce130 = var131;
1981 }
1982 ((void (*)(val*, val*))(var_124->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_124, var131) /* add on <var_124:Array[Object]>*/;
1983 ((void (*)(val*, val*))(var_124->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_124, var_cfilename) /* add on <var_124:Array[Object]>*/;
1984 if (varonce135) {
1985 var136 = varonce135;
1986 } else {
1987 var137 = "";
1988 var138 = 0;
1989 var139 = string__NativeString__to_s_with_length(var137, var138);
1990 var136 = var139;
1991 varonce135 = var136;
1992 }
1993 ((void (*)(val*, val*))(var_124->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_124, var136) /* add on <var_124:Array[Object]>*/;
1994 var140 = ((val* (*)(val*))(var_124->class->vft[COLOR_string__Object__to_s]))(var_124) /* to_s on <var_124:Array[Object]>*/;
1995 var_cfilepath = var140;
1996 var141 = NEW_file__OFStream(&type_file__OFStream);
1997 ((void (*)(val*, val*))(var141->class->vft[COLOR_file__OFStream__open]))(var141, var_cfilepath) /* open on <var141:OFStream>*/;
1998 var_hfile = var141;
1999 if (varonce142) {
2000 var143 = varonce142;
2001 } else {
2002 var144 = "#include \"";
2003 var145 = 10;
2004 var146 = string__NativeString__to_s_with_length(var144, var145);
2005 var143 = var146;
2006 varonce142 = var143;
2007 }
2008 if (varonce147) {
2009 var148 = varonce147;
2010 } else {
2011 var149 = "\"\n";
2012 var150 = 2;
2013 var151 = string__NativeString__to_s_with_length(var149, var150);
2014 var148 = var151;
2015 varonce147 = var148;
2016 }
2017 var152 = NEW_array__Array(&type_array__Arraykernel__Object);
2018 { /* var152 = array_instance Array[Object] */
2019 var153 = 3;
2020 var154 = NEW_array__NativeArray(var153, &type_array__NativeArraykernel__Object);
2021 ((struct instance_array__NativeArray*)var154)->values[0] = (val*) var143;
2022 ((struct instance_array__NativeArray*)var154)->values[1] = (val*) var_hfilename;
2023 ((struct instance_array__NativeArray*)var154)->values[2] = (val*) var148;
2024 ((void (*)(val*, val*, long))(var152->class->vft[COLOR_array__Array__with_native]))(var152, var154, var153) /* with_native on <var152:Array[Object]>*/;
2025 }
2026 var155 = ((val* (*)(val*))(var152->class->vft[COLOR_string__Object__to_s]))(var152) /* to_s on <var152:Array[Object]>*/;
2027 ((void (*)(val*, val*))(var_hfile->class->vft[COLOR_stream__OStream__write]))(var_hfile, var155) /* write on <var_hfile:nullable OFStream(OFStream)>*/;
2028 var156 = ((val* (*)(val*))(var_f->class->vft[COLOR_abstract_compiler__CodeFile__required_declarations]))(var_f) /* required_declarations on <var_f:CodeFile>*/;
2029 var157 = ((val* (*)(val*))(var156->class->vft[COLOR_abstract_collection__Collection__iterator]))(var156) /* iterator on <var156:HashSet[String]>*/;
2030 for(;;) {
2031 var158 = ((short int (*)(val*))(var157->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var157) /* is_ok on <var157:Iterator[nullable Object]>*/;
2032 if(!var158) break;
2033 var159 = ((val* (*)(val*))(var157->class->vft[COLOR_abstract_collection__Iterator__item]))(var157) /* item on <var157:Iterator[nullable Object]>*/;
2034 var_key = var159;
2035 var160 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__provided_declarations]))(var_compiler) /* provided_declarations on <var_compiler:AbstractCompiler>*/;
2036 var161 = ((short int (*)(val*, val*))(var160->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var160, var_key) /* has_key on <var160:HashMap[String, String]>*/;
2037 var162 = !var161;
2038 if (var162){
2039 if (varonce163) {
2040 var164 = varonce163;
2041 } else {
2042 var165 = "No provided declaration for ";
2043 var166 = 28;
2044 var167 = string__NativeString__to_s_with_length(var165, var166);
2045 var164 = var167;
2046 varonce163 = var164;
2047 }
2048 var168 = NEW_array__Array(&type_array__Arraykernel__Object);
2049 { /* var168 = array_instance Array[Object] */
2050 var169 = 2;
2051 var170 = NEW_array__NativeArray(var169, &type_array__NativeArraykernel__Object);
2052 ((struct instance_array__NativeArray*)var170)->values[0] = (val*) var164;
2053 ((struct instance_array__NativeArray*)var170)->values[1] = (val*) var_key;
2054 ((void (*)(val*, val*, long))(var168->class->vft[COLOR_array__Array__with_native]))(var168, var170, var169) /* with_native on <var168:Array[Object]>*/;
2055 }
2056 var171 = ((val* (*)(val*))(var168->class->vft[COLOR_string__Object__to_s]))(var168) /* to_s on <var168:Array[Object]>*/;
2057 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var171) /* print on <self:ModelBuilder>*/;
2058 fprintf(stderr, "Runtime error: %s", "Aborted");
2059 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 162);
2060 show_backtrace(1);
2061 } else {
2062 }
2063 var172 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__provided_declarations]))(var_compiler) /* provided_declarations on <var_compiler:AbstractCompiler>*/;
2064 var173 = ((val* (*)(val*, val*))(var172->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var172, var_key) /* [] on <var172:HashMap[String, String]>*/;
2065 ((void (*)(val*, val*))(var_hfile->class->vft[COLOR_stream__OStream__write]))(var_hfile, var173) /* write on <var_hfile:nullable OFStream(OFStream)>*/;
2066 if (varonce174) {
2067 var175 = varonce174;
2068 } else {
2069 var176 = "\n";
2070 var177 = 1;
2071 var178 = string__NativeString__to_s_with_length(var176, var177);
2072 var175 = var178;
2073 varonce174 = var175;
2074 }
2075 ((void (*)(val*, val*))(var_hfile->class->vft[COLOR_stream__OStream__write]))(var_hfile, var175) /* write on <var_hfile:nullable OFStream(OFStream)>*/;
2076 CONTINUE_label179: (void)0;
2077 ((void (*)(val*))(var157->class->vft[COLOR_abstract_collection__Iterator__next]))(var157) /* next on <var157:Iterator[nullable Object]>*/;
2078 }
2079 BREAK_label179: (void)0;
2080 ((void (*)(val*))(var_hfile->class->vft[COLOR_stream__IOS__close]))(var_hfile) /* close on <var_hfile:nullable OFStream(OFStream)>*/;
2081 var180 = NULL;
2082 var_file = var180;
2083 var181 = ((val* (*)(val*))(var_f->class->vft[COLOR_abstract_compiler__CodeFile__writers]))(var_f) /* writers on <var_f:CodeFile>*/;
2084 var182 = ((val* (*)(val*))(var181->class->vft[COLOR_abstract_collection__Collection__iterator]))(var181) /* iterator on <var181:Array[CodeWriter]>*/;
2085 for(;;) {
2086 var183 = ((short int (*)(val*))(var182->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var182) /* is_ok on <var182:Iterator[nullable Object]>*/;
2087 if(!var183) break;
2088 var184 = ((val* (*)(val*))(var182->class->vft[COLOR_abstract_collection__Iterator__item]))(var182) /* item on <var182:Iterator[nullable Object]>*/;
2089 var_vis = var184;
2090 var185 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(var_compiler) /* header on <var_compiler:AbstractCompiler>*/;
2091 var186 = ((short int (*)(val*, val*))(var_vis->class->vft[COLOR_kernel__Object___61d_61d]))(var_vis, var185) /* == on <var_vis:CodeWriter>*/;
2092 if (var186){
2093 goto CONTINUE_label187;
2094 } else {
2095 }
2096 var188 = ((val* (*)(val*))(var_vis->class->vft[COLOR_abstract_compiler__CodeWriter__lines]))(var_vis) /* lines on <var_vis:CodeWriter>*/;
2097 var189 = ((long (*)(val*))(var188->class->vft[COLOR_abstract_collection__Collection__length]))(var188) /* length on <var188:List[String]>*/;
2098 var190 = ((val* (*)(val*))(var_vis->class->vft[COLOR_abstract_compiler__CodeWriter__decl_lines]))(var_vis) /* decl_lines on <var_vis:CodeWriter>*/;
2099 var191 = ((long (*)(val*))(var190->class->vft[COLOR_abstract_collection__Collection__length]))(var190) /* length on <var190:List[String]>*/;
2100 { /* Inline kernel#Int#+ (var189,var191) */
2101 var194 = var189 + var191;
2102 var192 = var194;
2103 goto RET_LABEL193;
2104 RET_LABEL193:(void)0;
2105 }
2106 var_total_lines = var192;
2107 var195 = 0;
2108 { /* Inline kernel#Int#== (var_total_lines,var195) */
2109 var198 = var_total_lines == var195;
2110 var196 = var198;
2111 goto RET_LABEL197;
2112 RET_LABEL197:(void)0;
2113 }
2114 if (var196){
2115 goto CONTINUE_label187;
2116 } else {
2117 }
2118 { /* Inline kernel#Int#+ (var_count,var_total_lines) */
2119 var201 = var_count + var_total_lines;
2120 var199 = var201;
2121 goto RET_LABEL200;
2122 RET_LABEL200:(void)0;
2123 }
2124 var_count = var199;
2125 var203 = NULL;
2126 if (var_file == NULL) {
2127 var204 = 1; /* is null */
2128 } else {
2129 var204 = 0; /* arg is null but recv is not */
2130 }
2131 var_205 = var204;
2132 if (var204){
2133 var202 = var_205;
2134 } else {
2135 var206 = 10000;
2136 { /* Inline kernel#Int#> (var_count,var206) */
2137 /* Covariant cast for argument 0 (i) <var206:Int> isa OTHER */
2138 /* <var206:Int> isa OTHER */
2139 var209 = 1; /* easy <var206:Int> isa OTHER*/
2140 if (!var209) {
2141 var_class_name = type_kernel__Int.name;
2142 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2143 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
2144 show_backtrace(1);
2145 }
2146 var210 = var_count > var206;
2147 var207 = var210;
2148 goto RET_LABEL208;
2149 RET_LABEL208:(void)0;
2150 }
2151 var202 = var207;
2152 }
2153 if (var202){
2154 var211 = 1;
2155 { /* Inline kernel#Int#+ (var_i,var211) */
2156 var214 = var_i + var211;
2157 var212 = var214;
2158 goto RET_LABEL213;
2159 RET_LABEL213:(void)0;
2160 }
2161 var_i = var212;
2162 var215 = NULL;
2163 if (var_file == NULL) {
2164 var216 = 0; /* is null */
2165 } else {
2166 var216 = 1; /* arg is null and recv is not */
2167 }
2168 if (var216){
2169 ((void (*)(val*))(var_file->class->vft[COLOR_stream__IOS__close]))(var_file) /* close on <var_file:nullable OFStream(OFStream)>*/;
2170 } else {
2171 }
2172 var217 = NEW_array__Array(&type_array__Arraykernel__Object);
2173 var218 = 5;
2174 ((void (*)(val*, long))(var217->class->vft[COLOR_array__Array__with_capacity]))(var217, var218) /* with_capacity on <var217:Array[Object]>*/;
2175 var_219 = var217;
2176 if (varonce220) {
2177 var221 = varonce220;
2178 } else {
2179 var222 = "";
2180 var223 = 0;
2181 var224 = string__NativeString__to_s_with_length(var222, var223);
2182 var221 = var224;
2183 varonce220 = var221;
2184 }
2185 ((void (*)(val*, val*))(var_219->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_219, var221) /* add on <var_219:Array[Object]>*/;
2186 var225 = ((val* (*)(val*))(var_f->class->vft[COLOR_abstract_compiler__CodeFile__name]))(var_f) /* name on <var_f:CodeFile>*/;
2187 ((void (*)(val*, val*))(var_219->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_219, var225) /* add on <var_219:Array[Object]>*/;
2188 if (varonce226) {
2189 var227 = varonce226;
2190 } else {
2191 var228 = ".";
2192 var229 = 1;
2193 var230 = string__NativeString__to_s_with_length(var228, var229);
2194 var227 = var230;
2195 varonce226 = var227;
2196 }
2197 ((void (*)(val*, val*))(var_219->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_219, var227) /* add on <var_219:Array[Object]>*/;
2198 var231 = BOX_kernel__Int(var_i); /* autobox from Int to nullable Object */
2199 ((void (*)(val*, val*))(var_219->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_219, var231) /* add on <var_219:Array[Object]>*/;
2200 if (varonce232) {
2201 var233 = varonce232;
2202 } else {
2203 var234 = ".c";
2204 var235 = 2;
2205 var236 = string__NativeString__to_s_with_length(var234, var235);
2206 var233 = var236;
2207 varonce232 = var233;
2208 }
2209 ((void (*)(val*, val*))(var_219->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_219, var233) /* add on <var_219:Array[Object]>*/;
2210 var237 = ((val* (*)(val*))(var_219->class->vft[COLOR_string__Object__to_s]))(var_219) /* to_s on <var_219:Array[Object]>*/;
2211 var_cfilename = var237;
2212 var238 = NEW_array__Array(&type_array__Arraykernel__Object);
2213 var239 = 5;
2214 ((void (*)(val*, long))(var238->class->vft[COLOR_array__Array__with_capacity]))(var238, var239) /* with_capacity on <var238:Array[Object]>*/;
2215 var_240 = var238;
2216 if (varonce241) {
2217 var242 = varonce241;
2218 } else {
2219 var243 = "";
2220 var244 = 0;
2221 var245 = string__NativeString__to_s_with_length(var243, var244);
2222 var242 = var245;
2223 varonce241 = var242;
2224 }
2225 ((void (*)(val*, val*))(var_240->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_240, var242) /* add on <var_240:Array[Object]>*/;
2226 ((void (*)(val*, val*))(var_240->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_240, var_compile_dir) /* add on <var_240:Array[Object]>*/;
2227 if (varonce246) {
2228 var247 = varonce246;
2229 } else {
2230 var248 = "/";
2231 var249 = 1;
2232 var250 = string__NativeString__to_s_with_length(var248, var249);
2233 var247 = var250;
2234 varonce246 = var247;
2235 }
2236 ((void (*)(val*, val*))(var_240->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_240, var247) /* add on <var_240:Array[Object]>*/;
2237 ((void (*)(val*, val*))(var_240->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_240, var_cfilename) /* add on <var_240:Array[Object]>*/;
2238 if (varonce251) {
2239 var252 = varonce251;
2240 } else {
2241 var253 = "";
2242 var254 = 0;
2243 var255 = string__NativeString__to_s_with_length(var253, var254);
2244 var252 = var255;
2245 varonce251 = var252;
2246 }
2247 ((void (*)(val*, val*))(var_240->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_240, var252) /* add on <var_240:Array[Object]>*/;
2248 var256 = ((val* (*)(val*))(var_240->class->vft[COLOR_string__Object__to_s]))(var_240) /* to_s on <var_240:Array[Object]>*/;
2249 var_cfilepath = var256;
2250 var257 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2251 if (varonce258) {
2252 var259 = varonce258;
2253 } else {
2254 var260 = "new C source files to compile: ";
2255 var261 = 31;
2256 var262 = string__NativeString__to_s_with_length(var260, var261);
2257 var259 = var262;
2258 varonce258 = var259;
2259 }
2260 var263 = NEW_array__Array(&type_array__Arraykernel__Object);
2261 { /* var263 = array_instance Array[Object] */
2262 var264 = 2;
2263 var265 = NEW_array__NativeArray(var264, &type_array__NativeArraykernel__Object);
2264 ((struct instance_array__NativeArray*)var265)->values[0] = (val*) var259;
2265 ((struct instance_array__NativeArray*)var265)->values[1] = (val*) var_cfilepath;
2266 ((void (*)(val*, val*, long))(var263->class->vft[COLOR_array__Array__with_native]))(var263, var265, var264) /* with_native on <var263:Array[Object]>*/;
2267 }
2268 var266 = ((val* (*)(val*))(var263->class->vft[COLOR_string__Object__to_s]))(var263) /* to_s on <var263:Array[Object]>*/;
2269 var267 = 3;
2270 ((void (*)(val*, val*, long))(var257->class->vft[COLOR_toolcontext__ToolContext__info]))(var257, var266, var267) /* info on <var257:ToolContext>*/;
2271 ((void (*)(val*, val*))(var_cfiles->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_cfiles, var_cfilename) /* add on <var_cfiles:Array[String]>*/;
2272 var268 = NEW_file__OFStream(&type_file__OFStream);
2273 ((void (*)(val*, val*))(var268->class->vft[COLOR_file__OFStream__open]))(var268, var_cfilepath) /* open on <var268:OFStream>*/;
2274 var_file = var268;
2275 if (varonce269) {
2276 var270 = varonce269;
2277 } else {
2278 var271 = "#include \"";
2279 var272 = 10;
2280 var273 = string__NativeString__to_s_with_length(var271, var272);
2281 var270 = var273;
2282 varonce269 = var270;
2283 }
2284 var274 = ((val* (*)(val*))(var_f->class->vft[COLOR_abstract_compiler__CodeFile__name]))(var_f) /* name on <var_f:CodeFile>*/;
2285 if (varonce275) {
2286 var276 = varonce275;
2287 } else {
2288 var277 = ".0.h\"\n";
2289 var278 = 6;
2290 var279 = string__NativeString__to_s_with_length(var277, var278);
2291 var276 = var279;
2292 varonce275 = var276;
2293 }
2294 var280 = NEW_array__Array(&type_array__Arraykernel__Object);
2295 { /* var280 = array_instance Array[Object] */
2296 var281 = 3;
2297 var282 = NEW_array__NativeArray(var281, &type_array__NativeArraykernel__Object);
2298 ((struct instance_array__NativeArray*)var282)->values[0] = (val*) var270;
2299 ((struct instance_array__NativeArray*)var282)->values[1] = (val*) var274;
2300 ((struct instance_array__NativeArray*)var282)->values[2] = (val*) var276;
2301 ((void (*)(val*, val*, long))(var280->class->vft[COLOR_array__Array__with_native]))(var280, var282, var281) /* with_native on <var280:Array[Object]>*/;
2302 }
2303 var283 = ((val* (*)(val*))(var280->class->vft[COLOR_string__Object__to_s]))(var280) /* to_s on <var280:Array[Object]>*/;
2304 ((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var283) /* write on <var_file:nullable OFStream(OFStream)>*/;
2305 var_count = var_total_lines;
2306 } else {
2307 }
2308 var284 = ((val* (*)(val*))(var_vis->class->vft[COLOR_abstract_compiler__CodeWriter__decl_lines]))(var_vis) /* decl_lines on <var_vis:CodeWriter>*/;
2309 var285 = ((val* (*)(val*))(var284->class->vft[COLOR_abstract_collection__Collection__iterator]))(var284) /* iterator on <var284:List[String]>*/;
2310 for(;;) {
2311 var286 = ((short int (*)(val*))(var285->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var285) /* is_ok on <var285:Iterator[nullable Object]>*/;
2312 if(!var286) break;
2313 var287 = ((val* (*)(val*))(var285->class->vft[COLOR_abstract_collection__Iterator__item]))(var285) /* item on <var285:Iterator[nullable Object]>*/;
2314 var_l288 = var287;
2315 ((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var_l288) /* write on <var_file:nullable OFStream(OFStream)>*/;
2316 if (varonce289) {
2317 var290 = varonce289;
2318 } else {
2319 var291 = "\n";
2320 var292 = 1;
2321 var293 = string__NativeString__to_s_with_length(var291, var292);
2322 var290 = var293;
2323 varonce289 = var290;
2324 }
2325 ((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var290) /* write on <var_file:nullable OFStream(OFStream)>*/;
2326 CONTINUE_label294: (void)0;
2327 ((void (*)(val*))(var285->class->vft[COLOR_abstract_collection__Iterator__next]))(var285) /* next on <var285:Iterator[nullable Object]>*/;
2328 }
2329 BREAK_label294: (void)0;
2330 var295 = ((val* (*)(val*))(var_vis->class->vft[COLOR_abstract_compiler__CodeWriter__lines]))(var_vis) /* lines on <var_vis:CodeWriter>*/;
2331 var296 = ((val* (*)(val*))(var295->class->vft[COLOR_abstract_collection__Collection__iterator]))(var295) /* iterator on <var295:List[String]>*/;
2332 for(;;) {
2333 var297 = ((short int (*)(val*))(var296->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var296) /* is_ok on <var296:Iterator[nullable Object]>*/;
2334 if(!var297) break;
2335 var298 = ((val* (*)(val*))(var296->class->vft[COLOR_abstract_collection__Iterator__item]))(var296) /* item on <var296:Iterator[nullable Object]>*/;
2336 var_l299 = var298;
2337 ((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var_l299) /* write on <var_file:nullable OFStream(OFStream)>*/;
2338 if (varonce300) {
2339 var301 = varonce300;
2340 } else {
2341 var302 = "\n";
2342 var303 = 1;
2343 var304 = string__NativeString__to_s_with_length(var302, var303);
2344 var301 = var304;
2345 varonce300 = var301;
2346 }
2347 ((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var301) /* write on <var_file:nullable OFStream(OFStream)>*/;
2348 CONTINUE_label305: (void)0;
2349 ((void (*)(val*))(var296->class->vft[COLOR_abstract_collection__Iterator__next]))(var296) /* next on <var296:Iterator[nullable Object]>*/;
2350 }
2351 BREAK_label305: (void)0;
2352 CONTINUE_label187: (void)0;
2353 ((void (*)(val*))(var182->class->vft[COLOR_abstract_collection__Iterator__next]))(var182) /* next on <var182:Iterator[nullable Object]>*/;
2354 }
2355 BREAK_label187: (void)0;
2356 var306 = NULL;
2357 if (var_file == NULL) {
2358 var307 = 0; /* is null */
2359 } else {
2360 var307 = 1; /* arg is null and recv is not */
2361 }
2362 if (var307){
2363 ((void (*)(val*))(var_file->class->vft[COLOR_stream__IOS__close]))(var_file) /* close on <var_file:nullable OFStream(OFStream)>*/;
2364 } else {
2365 }
2366 CONTINUE_label308: (void)0;
2367 ((void (*)(val*))(var101->class->vft[COLOR_abstract_collection__Iterator__next]))(var101) /* next on <var101:Iterator[nullable Object]>*/;
2368 }
2369 BREAK_label308: (void)0;
2370 var309 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2371 if (varonce310) {
2372 var311 = varonce310;
2373 } else {
2374 var312 = "Total C source files to compile: ";
2375 var313 = 33;
2376 var314 = string__NativeString__to_s_with_length(var312, var313);
2377 var311 = var314;
2378 varonce310 = var311;
2379 }
2380 var315 = ((long (*)(val*))(var_cfiles->class->vft[COLOR_abstract_collection__Collection__length]))(var_cfiles) /* length on <var_cfiles:Array[String]>*/;
2381 var316 = NEW_array__Array(&type_array__Arraykernel__Object);
2382 { /* var316 = array_instance Array[Object] */
2383 var317 = 2;
2384 var318 = NEW_array__NativeArray(var317, &type_array__NativeArraykernel__Object);
2385 ((struct instance_array__NativeArray*)var318)->values[0] = (val*) var311;
2386 var319 = BOX_kernel__Int(var315); /* autobox from Int to Object */
2387 ((struct instance_array__NativeArray*)var318)->values[1] = (val*) var319;
2388 ((void (*)(val*, val*, long))(var316->class->vft[COLOR_array__Array__with_native]))(var316, var318, var317) /* with_native on <var316:Array[Object]>*/;
2389 }
2390 var320 = ((val* (*)(val*))(var316->class->vft[COLOR_string__Object__to_s]))(var316) /* to_s on <var316:Array[Object]>*/;
2391 var321 = 2;
2392 ((void (*)(val*, val*, long))(var309->class->vft[COLOR_toolcontext__ToolContext__info]))(var309, var320, var321) /* info on <var309:ToolContext>*/;
2393 var322 = NEW_array__Array(&type_array__Arraykernel__Object);
2394 var323 = 3;
2395 ((void (*)(val*, long))(var322->class->vft[COLOR_array__Array__with_capacity]))(var322, var323) /* with_capacity on <var322:Array[Object]>*/;
2396 var_324 = var322;
2397 if (varonce325) {
2398 var326 = varonce325;
2399 } else {
2400 var327 = "";
2401 var328 = 0;
2402 var329 = string__NativeString__to_s_with_length(var327, var328);
2403 var326 = var329;
2404 varonce325 = var326;
2405 }
2406 ((void (*)(val*, val*))(var_324->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_324, var326) /* add on <var_324:Array[Object]>*/;
2407 var330 = ((val* (*)(val*))(var_mainmodule->class->vft[COLOR_mmodule__MModule__name]))(var_mainmodule) /* name on <var_mainmodule:MModule>*/;
2408 ((void (*)(val*, val*))(var_324->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_324, var330) /* add on <var_324:Array[Object]>*/;
2409 if (varonce331) {
2410 var332 = varonce331;
2411 } else {
2412 var333 = ".mk";
2413 var334 = 3;
2414 var335 = string__NativeString__to_s_with_length(var333, var334);
2415 var332 = var335;
2416 varonce331 = var332;
2417 }
2418 ((void (*)(val*, val*))(var_324->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_324, var332) /* add on <var_324:Array[Object]>*/;
2419 var336 = ((val* (*)(val*))(var_324->class->vft[COLOR_string__Object__to_s]))(var_324) /* to_s on <var_324:Array[Object]>*/;
2420 var_makename = var336;
2421 var337 = NEW_array__Array(&type_array__Arraykernel__Object);
2422 var338 = 5;
2423 ((void (*)(val*, long))(var337->class->vft[COLOR_array__Array__with_capacity]))(var337, var338) /* with_capacity on <var337:Array[Object]>*/;
2424 var_339 = var337;
2425 if (varonce340) {
2426 var341 = varonce340;
2427 } else {
2428 var342 = "";
2429 var343 = 0;
2430 var344 = string__NativeString__to_s_with_length(var342, var343);
2431 var341 = var344;
2432 varonce340 = var341;
2433 }
2434 ((void (*)(val*, val*))(var_339->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_339, var341) /* add on <var_339:Array[Object]>*/;
2435 ((void (*)(val*, val*))(var_339->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_339, var_compile_dir) /* add on <var_339:Array[Object]>*/;
2436 if (varonce345) {
2437 var346 = varonce345;
2438 } else {
2439 var347 = "/";
2440 var348 = 1;
2441 var349 = string__NativeString__to_s_with_length(var347, var348);
2442 var346 = var349;
2443 varonce345 = var346;
2444 }
2445 ((void (*)(val*, val*))(var_339->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_339, var346) /* add on <var_339:Array[Object]>*/;
2446 ((void (*)(val*, val*))(var_339->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_339, var_makename) /* add on <var_339:Array[Object]>*/;
2447 if (varonce350) {
2448 var351 = varonce350;
2449 } else {
2450 var352 = "";
2451 var353 = 0;
2452 var354 = string__NativeString__to_s_with_length(var352, var353);
2453 var351 = var354;
2454 varonce350 = var351;
2455 }
2456 ((void (*)(val*, val*))(var_339->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_339, var351) /* add on <var_339:Array[Object]>*/;
2457 var355 = ((val* (*)(val*))(var_339->class->vft[COLOR_string__Object__to_s]))(var_339) /* to_s on <var_339:Array[Object]>*/;
2458 var_makepath = var355;
2459 var356 = NEW_file__OFStream(&type_file__OFStream);
2460 ((void (*)(val*, val*))(var356->class->vft[COLOR_file__OFStream__open]))(var356, var_makepath) /* open on <var356:OFStream>*/;
2461 var_makefile = var356;
2462 if (varonce357) {
2463 var358 = varonce357;
2464 } else {
2465 var359 = "";
2466 var360 = 0;
2467 var361 = string__NativeString__to_s_with_length(var359, var360);
2468 var358 = var361;
2469 varonce357 = var358;
2470 }
2471 var_cc_includes = var358;
2472 var362 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ModelBuilder__cc_paths]))(self) /* cc_paths on <self:ModelBuilder>*/;
2473 var363 = ((val* (*)(val*))(var362->class->vft[COLOR_abstract_collection__Collection__iterator]))(var362) /* iterator on <var362:Array[String]>*/;
2474 for(;;) {
2475 var364 = ((short int (*)(val*))(var363->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var363) /* is_ok on <var363:Iterator[nullable Object]>*/;
2476 if(!var364) break;
2477 var365 = ((val* (*)(val*))(var363->class->vft[COLOR_abstract_collection__Iterator__item]))(var363) /* item on <var363:Iterator[nullable Object]>*/;
2478 var_p = var365;
2479 var366 = ((val* (*)(val*, val*))(var_orig_dir->class->vft[COLOR_file__String__join_path]))(var_orig_dir, var_p) /* join_path on <var_orig_dir:String>*/;
2480 var367 = ((val* (*)(val*))(var366->class->vft[COLOR_file__String__simplify_path]))(var366) /* simplify_path on <var366:String>*/;
2481 var_p = var367;
2482 if (varonce368) {
2483 var369 = varonce368;
2484 } else {
2485 var370 = " -I \"";
2486 var371 = 5;
2487 var372 = string__NativeString__to_s_with_length(var370, var371);
2488 var369 = var372;
2489 varonce368 = var369;
2490 }
2491 var373 = ((val* (*)(val*, val*))(var369->class->vft[COLOR_string__String___43d]))(var369, var_p) /* + on <var369:String>*/;
2492 if (varonce374) {
2493 var375 = varonce374;
2494 } else {
2495 var376 = "\"";
2496 var377 = 1;
2497 var378 = string__NativeString__to_s_with_length(var376, var377);
2498 var375 = var378;
2499 varonce374 = var375;
2500 }
2501 var379 = ((val* (*)(val*, val*))(var373->class->vft[COLOR_string__String___43d]))(var373, var375) /* + on <var373:String>*/;
2502 var380 = ((val* (*)(val*, val*))(var_cc_includes->class->vft[COLOR_string__String___43d]))(var_cc_includes, var379) /* + on <var_cc_includes:String>*/;
2503 var_cc_includes = var380;
2504 CONTINUE_label381: (void)0;
2505 ((void (*)(val*))(var363->class->vft[COLOR_abstract_collection__Iterator__next]))(var363) /* next on <var363:Iterator[nullable Object]>*/;
2506 }
2507 BREAK_label381: (void)0;
2508 var382 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2509 var383 = ((val* (*)(val*))(var382->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_stacktrace]))(var382) /* opt_no_stacktrace on <var382:ToolContext>*/;
2510 var384 = ((val* (*)(val*))(var383->class->vft[COLOR_opts__Option__value]))(var383) /* value on <var383:OptionBool>*/;
2511 var385 = ((struct instance_kernel__Bool*)var384)->value; /* autounbox from nullable Object to Bool */;
2512 if (var385){
2513 if (varonce386) {
2514 var387 = varonce386;
2515 } else {
2516 var388 = "CC = ccache cc\nCFLAGS = -g -O2\nCINCL = ";
2517 var389 = 39;
2518 var390 = string__NativeString__to_s_with_length(var388, var389);
2519 var387 = var390;
2520 varonce386 = var387;
2521 }
2522 if (varonce391) {
2523 var392 = varonce391;
2524 } else {
2525 var393 = "\nLDFLAGS ?= \nLDLIBS ?= -lm -lgc\n\n";
2526 var394 = 34;
2527 var395 = string__NativeString__to_s_with_length(var393, var394);
2528 var392 = var395;
2529 varonce391 = var392;
2530 }
2531 var396 = NEW_array__Array(&type_array__Arraykernel__Object);
2532 { /* var396 = array_instance Array[Object] */
2533 var397 = 3;
2534 var398 = NEW_array__NativeArray(var397, &type_array__NativeArraykernel__Object);
2535 ((struct instance_array__NativeArray*)var398)->values[0] = (val*) var387;
2536 ((struct instance_array__NativeArray*)var398)->values[1] = (val*) var_cc_includes;
2537 ((struct instance_array__NativeArray*)var398)->values[2] = (val*) var392;
2538 ((void (*)(val*, val*, long))(var396->class->vft[COLOR_array__Array__with_native]))(var396, var398, var397) /* with_native on <var396:Array[Object]>*/;
2539 }
2540 var399 = ((val* (*)(val*))(var396->class->vft[COLOR_string__Object__to_s]))(var396) /* to_s on <var396:Array[Object]>*/;
2541 ((void (*)(val*, val*))(var_makefile->class->vft[COLOR_stream__OStream__write]))(var_makefile, var399) /* write on <var_makefile:OFStream>*/;
2542 } else {
2543 if (varonce400) {
2544 var401 = varonce400;
2545 } else {
2546 var402 = "CC = ccache cc\nCFLAGS = -g -O2\nCINCL = ";
2547 var403 = 39;
2548 var404 = string__NativeString__to_s_with_length(var402, var403);
2549 var401 = var404;
2550 varonce400 = var401;
2551 }
2552 if (varonce405) {
2553 var406 = varonce405;
2554 } else {
2555 var407 = "\nLDFLAGS ?= \nLDLIBS ?= -lunwind -lm -lgc\n\n";
2556 var408 = 43;
2557 var409 = string__NativeString__to_s_with_length(var407, var408);
2558 var406 = var409;
2559 varonce405 = var406;
2560 }
2561 var410 = NEW_array__Array(&type_array__Arraykernel__Object);
2562 { /* var410 = array_instance Array[Object] */
2563 var411 = 3;
2564 var412 = NEW_array__NativeArray(var411, &type_array__NativeArraykernel__Object);
2565 ((struct instance_array__NativeArray*)var412)->values[0] = (val*) var401;
2566 ((struct instance_array__NativeArray*)var412)->values[1] = (val*) var_cc_includes;
2567 ((struct instance_array__NativeArray*)var412)->values[2] = (val*) var406;
2568 ((void (*)(val*, val*, long))(var410->class->vft[COLOR_array__Array__with_native]))(var410, var412, var411) /* with_native on <var410:Array[Object]>*/;
2569 }
2570 var413 = ((val* (*)(val*))(var410->class->vft[COLOR_string__Object__to_s]))(var410) /* to_s on <var410:Array[Object]>*/;
2571 ((void (*)(val*, val*))(var_makefile->class->vft[COLOR_stream__OStream__write]))(var_makefile, var413) /* write on <var_makefile:OFStream>*/;
2572 }
2573 if (varonce414) {
2574 var415 = varonce414;
2575 } else {
2576 var416 = "all: ";
2577 var417 = 5;
2578 var418 = string__NativeString__to_s_with_length(var416, var417);
2579 var415 = var418;
2580 varonce414 = var415;
2581 }
2582 if (varonce419) {
2583 var420 = varonce419;
2584 } else {
2585 var421 = "\n\n";
2586 var422 = 2;
2587 var423 = string__NativeString__to_s_with_length(var421, var422);
2588 var420 = var423;
2589 varonce419 = var420;
2590 }
2591 var424 = NEW_array__Array(&type_array__Arraykernel__Object);
2592 { /* var424 = array_instance Array[Object] */
2593 var425 = 3;
2594 var426 = NEW_array__NativeArray(var425, &type_array__NativeArraykernel__Object);
2595 ((struct instance_array__NativeArray*)var426)->values[0] = (val*) var415;
2596 ((struct instance_array__NativeArray*)var426)->values[1] = (val*) var_outpath;
2597 ((struct instance_array__NativeArray*)var426)->values[2] = (val*) var420;
2598 ((void (*)(val*, val*, long))(var424->class->vft[COLOR_array__Array__with_native]))(var424, var426, var425) /* with_native on <var424:Array[Object]>*/;
2599 }
2600 var427 = ((val* (*)(val*))(var424->class->vft[COLOR_string__Object__to_s]))(var424) /* to_s on <var424:Array[Object]>*/;
2601 ((void (*)(val*, val*))(var_makefile->class->vft[COLOR_stream__OStream__write]))(var_makefile, var427) /* write on <var_makefile:OFStream>*/;
2602 var428 = NEW_array__Array(&type_array__Arraystring__String);
2603 ((void (*)(val*))(var428->class->vft[COLOR_array__Array__init]))(var428) /* init on <var428:Array[String]>*/;
2604 var_ofiles = var428;
2605 var429 = ((val* (*)(val*))(var_cfiles->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_cfiles) /* iterator on <var_cfiles:Array[String]>*/;
2606 for(;;) {
2607 var430 = ((short int (*)(val*))(var429->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var429) /* is_ok on <var429:Iterator[nullable Object]>*/;
2608 if(!var430) break;
2609 var431 = ((val* (*)(val*))(var429->class->vft[COLOR_abstract_collection__Iterator__item]))(var429) /* item on <var429:Iterator[nullable Object]>*/;
2610 var_f432 = var431;
2611 if (varonce433) {
2612 var434 = varonce433;
2613 } else {
2614 var435 = ".c";
2615 var436 = 2;
2616 var437 = string__NativeString__to_s_with_length(var435, var436);
2617 var434 = var437;
2618 varonce433 = var434;
2619 }
2620 var438 = ((val* (*)(val*, val*))(var_f432->class->vft[COLOR_file__String__strip_extension]))(var_f432, var434) /* strip_extension on <var_f432:String>*/;
2621 if (varonce439) {
2622 var440 = varonce439;
2623 } else {
2624 var441 = ".o";
2625 var442 = 2;
2626 var443 = string__NativeString__to_s_with_length(var441, var442);
2627 var440 = var443;
2628 varonce439 = var440;
2629 }
2630 var444 = ((val* (*)(val*, val*))(var438->class->vft[COLOR_string__String___43d]))(var438, var440) /* + on <var438:String>*/;
2631 var_o = var444;
2632 if (varonce445) {
2633 var446 = varonce445;
2634 } else {
2635 var447 = ": ";
2636 var448 = 2;
2637 var449 = string__NativeString__to_s_with_length(var447, var448);
2638 var446 = var449;
2639 varonce445 = var446;
2640 }
2641 if (varonce450) {
2642 var451 = varonce450;
2643 } else {
2644 var452 = "\n\11$(CC) $(CFLAGS) $(CINCL) -D NONITCNI -c -o ";
2645 var453 = 45;
2646 var454 = string__NativeString__to_s_with_length(var452, var453);
2647 var451 = var454;
2648 varonce450 = var451;
2649 }
2650 if (varonce455) {
2651 var456 = varonce455;
2652 } else {
2653 var457 = " ";
2654 var458 = 1;
2655 var459 = string__NativeString__to_s_with_length(var457, var458);
2656 var456 = var459;
2657 varonce455 = var456;
2658 }
2659 if (varonce460) {
2660 var461 = varonce460;
2661 } else {
2662 var462 = "\n\n";
2663 var463 = 2;
2664 var464 = string__NativeString__to_s_with_length(var462, var463);
2665 var461 = var464;
2666 varonce460 = var461;
2667 }
2668 var465 = NEW_array__Array(&type_array__Arraykernel__Object);
2669 { /* var465 = array_instance Array[Object] */
2670 var466 = 8;
2671 var467 = NEW_array__NativeArray(var466, &type_array__NativeArraykernel__Object);
2672 ((struct instance_array__NativeArray*)var467)->values[0] = (val*) var_o;
2673 ((struct instance_array__NativeArray*)var467)->values[1] = (val*) var446;
2674 ((struct instance_array__NativeArray*)var467)->values[2] = (val*) var_f432;
2675 ((struct instance_array__NativeArray*)var467)->values[3] = (val*) var451;
2676 ((struct instance_array__NativeArray*)var467)->values[4] = (val*) var_o;
2677 ((struct instance_array__NativeArray*)var467)->values[5] = (val*) var456;
2678 ((struct instance_array__NativeArray*)var467)->values[6] = (val*) var_f432;
2679 ((struct instance_array__NativeArray*)var467)->values[7] = (val*) var461;
2680 ((void (*)(val*, val*, long))(var465->class->vft[COLOR_array__Array__with_native]))(var465, var467, var466) /* with_native on <var465:Array[Object]>*/;
2681 }
2682 var468 = ((val* (*)(val*))(var465->class->vft[COLOR_string__Object__to_s]))(var465) /* to_s on <var465:Array[Object]>*/;
2683 ((void (*)(val*, val*))(var_makefile->class->vft[COLOR_stream__OStream__write]))(var_makefile, var468) /* write on <var_makefile:OFStream>*/;
2684 ((void (*)(val*, val*))(var_ofiles->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_ofiles, var_o) /* add on <var_ofiles:Array[String]>*/;
2685 CONTINUE_label469: (void)0;
2686 ((void (*)(val*))(var429->class->vft[COLOR_abstract_collection__Iterator__next]))(var429) /* next on <var429:Iterator[nullable Object]>*/;
2687 }
2688 BREAK_label469: (void)0;
2689 var470 = NEW_abstract_compiler__ExternCFile(&type_abstract_compiler__ExternCFile);
2690 var471 = NEW_array__Array(&type_array__Arraykernel__Object);
2691 var472 = 3;
2692 ((void (*)(val*, long))(var471->class->vft[COLOR_array__Array__with_capacity]))(var471, var472) /* with_capacity on <var471:Array[Object]>*/;
2693 var_473 = var471;
2694 if (varonce474) {
2695 var475 = varonce474;
2696 } else {
2697 var476 = "";
2698 var477 = 0;
2699 var478 = string__NativeString__to_s_with_length(var476, var477);
2700 var475 = var478;
2701 varonce474 = var475;
2702 }
2703 ((void (*)(val*, val*))(var_473->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_473, var475) /* add on <var_473:Array[Object]>*/;
2704 var479 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ModelBuilder__cc_paths]))(self) /* cc_paths on <self:ModelBuilder>*/;
2705 var480 = ((val* (*)(val*))(var479->class->vft[COLOR_abstract_collection__Collection__first]))(var479) /* first on <var479:Array[String]>*/;
2706 ((void (*)(val*, val*))(var_473->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_473, var480) /* add on <var_473:Array[Object]>*/;
2707 if (varonce481) {
2708 var482 = varonce481;
2709 } else {
2710 var483 = "/gc_chooser.c";
2711 var484 = 13;
2712 var485 = string__NativeString__to_s_with_length(var483, var484);
2713 var482 = var485;
2714 varonce481 = var482;
2715 }
2716 ((void (*)(val*, val*))(var_473->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_473, var482) /* add on <var_473:Array[Object]>*/;
2717 var486 = ((val* (*)(val*))(var_473->class->vft[COLOR_string__Object__to_s]))(var_473) /* to_s on <var_473:Array[Object]>*/;
2718 if (varonce487) {
2719 var488 = varonce487;
2720 } else {
2721 var489 = "-DWITH_LIBGC";
2722 var490 = 12;
2723 var491 = string__NativeString__to_s_with_length(var489, var490);
2724 var488 = var491;
2725 varonce487 = var488;
2726 }
2727 ((void (*)(val*, val*, val*))(var470->class->vft[COLOR_abstract_compiler__ExternCFile__init]))(var470, var486, var488) /* init on <var470:ExternCFile>*/;
2728 var_gc_chooser = var470;
2729 var492 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__extern_bodies]))(var_compiler) /* extern_bodies on <var_compiler:AbstractCompiler>*/;
2730 ((void (*)(val*, val*))(var492->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var492, var_gc_chooser) /* add on <var492:Array[ExternCFile]>*/;
2731 var493 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__extern_bodies]))(var_compiler) /* extern_bodies on <var_compiler:AbstractCompiler>*/;
2732 var494 = ((val* (*)(val*))(var493->class->vft[COLOR_abstract_collection__Collection__iterator]))(var493) /* iterator on <var493:Array[ExternCFile]>*/;
2733 for(;;) {
2734 var495 = ((short int (*)(val*))(var494->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var494) /* is_ok on <var494:Iterator[nullable Object]>*/;
2735 if(!var495) break;
2736 var496 = ((val* (*)(val*))(var494->class->vft[COLOR_abstract_collection__Iterator__item]))(var494) /* item on <var494:Iterator[nullable Object]>*/;
2737 var_f497 = var496;
2738 var498 = ((val* (*)(val*))(var_f497->class->vft[COLOR_abstract_compiler__ExternCFile__filename]))(var_f497) /* filename on <var_f497:ExternCFile>*/;
2739 if (varonce499) {
2740 var500 = varonce499;
2741 } else {
2742 var501 = ".c";
2743 var502 = 2;
2744 var503 = string__NativeString__to_s_with_length(var501, var502);
2745 var500 = var503;
2746 varonce499 = var500;
2747 }
2748 var504 = ((val* (*)(val*, val*))(var498->class->vft[COLOR_file__String__basename]))(var498, var500) /* basename on <var498:String>*/;
2749 var_basename = var504;
2750 var505 = NEW_array__Array(&type_array__Arraykernel__Object);
2751 var506 = 3;
2752 ((void (*)(val*, long))(var505->class->vft[COLOR_array__Array__with_capacity]))(var505, var506) /* with_capacity on <var505:Array[Object]>*/;
2753 var_507 = var505;
2754 if (varonce508) {
2755 var509 = varonce508;
2756 } else {
2757 var510 = "";
2758 var511 = 0;
2759 var512 = string__NativeString__to_s_with_length(var510, var511);
2760 var509 = var512;
2761 varonce508 = var509;
2762 }
2763 ((void (*)(val*, val*))(var_507->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_507, var509) /* add on <var_507:Array[Object]>*/;
2764 ((void (*)(val*, val*))(var_507->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_507, var_basename) /* add on <var_507:Array[Object]>*/;
2765 if (varonce513) {
2766 var514 = varonce513;
2767 } else {
2768 var515 = ".extern.o";
2769 var516 = 9;
2770 var517 = string__NativeString__to_s_with_length(var515, var516);
2771 var514 = var517;
2772 varonce513 = var514;
2773 }
2774 ((void (*)(val*, val*))(var_507->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_507, var514) /* add on <var_507:Array[Object]>*/;
2775 var518 = ((val* (*)(val*))(var_507->class->vft[COLOR_string__Object__to_s]))(var_507) /* to_s on <var_507:Array[Object]>*/;
2776 var_o519 = var518;
2777 var520 = ((val* (*)(val*))(var_f497->class->vft[COLOR_abstract_compiler__ExternCFile__filename]))(var_f497) /* filename on <var_f497:ExternCFile>*/;
2778 var521 = ((val* (*)(val*, val*))(var_orig_dir->class->vft[COLOR_file__String__join_path]))(var_orig_dir, var520) /* join_path on <var_orig_dir:String>*/;
2779 var522 = ((val* (*)(val*))(var521->class->vft[COLOR_file__String__simplify_path]))(var521) /* simplify_path on <var521:String>*/;
2780 var_ff = var522;
2781 if (varonce523) {
2782 var524 = varonce523;
2783 } else {
2784 var525 = ": ";
2785 var526 = 2;
2786 var527 = string__NativeString__to_s_with_length(var525, var526);
2787 var524 = var527;
2788 varonce523 = var524;
2789 }
2790 if (varonce528) {
2791 var529 = varonce528;
2792 } else {
2793 var530 = "\n\11$(CC) $(CFLAGS) -D NONITCNI ";
2794 var531 = 30;
2795 var532 = string__NativeString__to_s_with_length(var530, var531);
2796 var529 = var532;
2797 varonce528 = var529;
2798 }
2799 var533 = ((val* (*)(val*))(var_f497->class->vft[COLOR_abstract_compiler__ExternCFile__cflags]))(var_f497) /* cflags on <var_f497:ExternCFile>*/;
2800 if (varonce534) {
2801 var535 = varonce534;
2802 } else {
2803 var536 = " -c -o ";
2804 var537 = 7;
2805 var538 = string__NativeString__to_s_with_length(var536, var537);
2806 var535 = var538;
2807 varonce534 = var535;
2808 }
2809 if (varonce539) {
2810 var540 = varonce539;
2811 } else {
2812 var541 = " ";
2813 var542 = 1;
2814 var543 = string__NativeString__to_s_with_length(var541, var542);
2815 var540 = var543;
2816 varonce539 = var540;
2817 }
2818 if (varonce544) {
2819 var545 = varonce544;
2820 } else {
2821 var546 = "\n\n";
2822 var547 = 2;
2823 var548 = string__NativeString__to_s_with_length(var546, var547);
2824 var545 = var548;
2825 varonce544 = var545;
2826 }
2827 var549 = NEW_array__Array(&type_array__Arraykernel__Object);
2828 { /* var549 = array_instance Array[Object] */
2829 var550 = 10;
2830 var551 = NEW_array__NativeArray(var550, &type_array__NativeArraykernel__Object);
2831 ((struct instance_array__NativeArray*)var551)->values[0] = (val*) var_o519;
2832 ((struct instance_array__NativeArray*)var551)->values[1] = (val*) var524;
2833 ((struct instance_array__NativeArray*)var551)->values[2] = (val*) var_ff;
2834 ((struct instance_array__NativeArray*)var551)->values[3] = (val*) var529;
2835 ((struct instance_array__NativeArray*)var551)->values[4] = (val*) var533;
2836 ((struct instance_array__NativeArray*)var551)->values[5] = (val*) var535;
2837 ((struct instance_array__NativeArray*)var551)->values[6] = (val*) var_o519;
2838 ((struct instance_array__NativeArray*)var551)->values[7] = (val*) var540;
2839 ((struct instance_array__NativeArray*)var551)->values[8] = (val*) var_ff;
2840 ((struct instance_array__NativeArray*)var551)->values[9] = (val*) var545;
2841 ((void (*)(val*, val*, long))(var549->class->vft[COLOR_array__Array__with_native]))(var549, var551, var550) /* with_native on <var549:Array[Object]>*/;
2842 }
2843 var552 = ((val* (*)(val*))(var549->class->vft[COLOR_string__Object__to_s]))(var549) /* to_s on <var549:Array[Object]>*/;
2844 ((void (*)(val*, val*))(var_makefile->class->vft[COLOR_stream__OStream__write]))(var_makefile, var552) /* write on <var_makefile:OFStream>*/;
2845 ((void (*)(val*, val*))(var_ofiles->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_ofiles, var_o519) /* add on <var_ofiles:Array[String]>*/;
2846 CONTINUE_label553: (void)0;
2847 ((void (*)(val*))(var494->class->vft[COLOR_abstract_collection__Iterator__next]))(var494) /* next on <var494:Iterator[nullable Object]>*/;
2848 }
2849 BREAK_label553: (void)0;
2850 if (varonce554) {
2851 var555 = varonce554;
2852 } else {
2853 var556 = ": ";
2854 var557 = 2;
2855 var558 = string__NativeString__to_s_with_length(var556, var557);
2856 var555 = var558;
2857 varonce554 = var555;
2858 }
2859 if (varonce559) {
2860 var560 = varonce559;
2861 } else {
2862 var561 = " ";
2863 var562 = 1;
2864 var563 = string__NativeString__to_s_with_length(var561, var562);
2865 var560 = var563;
2866 varonce559 = var560;
2867 }
2868 var564 = ((val* (*)(val*, val*))(var_ofiles->class->vft[COLOR_string__Collection__join]))(var_ofiles, var560) /* join on <var_ofiles:Array[String]>*/;
2869 if (varonce565) {
2870 var566 = varonce565;
2871 } else {
2872 var567 = "\n\11$(CC) $(LDFLAGS) -o ";
2873 var568 = 22;
2874 var569 = string__NativeString__to_s_with_length(var567, var568);
2875 var566 = var569;
2876 varonce565 = var566;
2877 }
2878 if (varonce570) {
2879 var571 = varonce570;
2880 } else {
2881 var572 = " ";
2882 var573 = 1;
2883 var574 = string__NativeString__to_s_with_length(var572, var573);
2884 var571 = var574;
2885 varonce570 = var571;
2886 }
2887 if (varonce575) {
2888 var576 = varonce575;
2889 } else {
2890 var577 = " ";
2891 var578 = 1;
2892 var579 = string__NativeString__to_s_with_length(var577, var578);
2893 var576 = var579;
2894 varonce575 = var576;
2895 }
2896 var580 = ((val* (*)(val*, val*))(var_ofiles->class->vft[COLOR_string__Collection__join]))(var_ofiles, var576) /* join on <var_ofiles:Array[String]>*/;
2897 if (varonce581) {
2898 var582 = varonce581;
2899 } else {
2900 var583 = " $(LDLIBS)\n\n";
2901 var584 = 12;
2902 var585 = string__NativeString__to_s_with_length(var583, var584);
2903 var582 = var585;
2904 varonce581 = var582;
2905 }
2906 var586 = NEW_array__Array(&type_array__Arraykernel__Object);
2907 { /* var586 = array_instance Array[Object] */
2908 var587 = 8;
2909 var588 = NEW_array__NativeArray(var587, &type_array__NativeArraykernel__Object);
2910 ((struct instance_array__NativeArray*)var588)->values[0] = (val*) var_outpath;
2911 ((struct instance_array__NativeArray*)var588)->values[1] = (val*) var555;
2912 ((struct instance_array__NativeArray*)var588)->values[2] = (val*) var564;
2913 ((struct instance_array__NativeArray*)var588)->values[3] = (val*) var566;
2914 ((struct instance_array__NativeArray*)var588)->values[4] = (val*) var_outpath;
2915 ((struct instance_array__NativeArray*)var588)->values[5] = (val*) var571;
2916 ((struct instance_array__NativeArray*)var588)->values[6] = (val*) var580;
2917 ((struct instance_array__NativeArray*)var588)->values[7] = (val*) var582;
2918 ((void (*)(val*, val*, long))(var586->class->vft[COLOR_array__Array__with_native]))(var586, var588, var587) /* with_native on <var586:Array[Object]>*/;
2919 }
2920 var589 = ((val* (*)(val*))(var586->class->vft[COLOR_string__Object__to_s]))(var586) /* to_s on <var586:Array[Object]>*/;
2921 ((void (*)(val*, val*))(var_makefile->class->vft[COLOR_stream__OStream__write]))(var_makefile, var589) /* write on <var_makefile:OFStream>*/;
2922 if (varonce590) {
2923 var591 = varonce590;
2924 } else {
2925 var592 = "clean:\n\11rm ";
2926 var593 = 11;
2927 var594 = string__NativeString__to_s_with_length(var592, var593);
2928 var591 = var594;
2929 varonce590 = var591;
2930 }
2931 if (varonce595) {
2932 var596 = varonce595;
2933 } else {
2934 var597 = " ";
2935 var598 = 1;
2936 var599 = string__NativeString__to_s_with_length(var597, var598);
2937 var596 = var599;
2938 varonce595 = var596;
2939 }
2940 var600 = ((val* (*)(val*, val*))(var_ofiles->class->vft[COLOR_string__Collection__join]))(var_ofiles, var596) /* join on <var_ofiles:Array[String]>*/;
2941 if (varonce601) {
2942 var602 = varonce601;
2943 } else {
2944 var603 = " 2>/dev/null\n\n";
2945 var604 = 14;
2946 var605 = string__NativeString__to_s_with_length(var603, var604);
2947 var602 = var605;
2948 varonce601 = var602;
2949 }
2950 var606 = NEW_array__Array(&type_array__Arraykernel__Object);
2951 { /* var606 = array_instance Array[Object] */
2952 var607 = 3;
2953 var608 = NEW_array__NativeArray(var607, &type_array__NativeArraykernel__Object);
2954 ((struct instance_array__NativeArray*)var608)->values[0] = (val*) var591;
2955 ((struct instance_array__NativeArray*)var608)->values[1] = (val*) var600;
2956 ((struct instance_array__NativeArray*)var608)->values[2] = (val*) var602;
2957 ((void (*)(val*, val*, long))(var606->class->vft[COLOR_array__Array__with_native]))(var606, var608, var607) /* with_native on <var606:Array[Object]>*/;
2958 }
2959 var609 = ((val* (*)(val*))(var606->class->vft[COLOR_string__Object__to_s]))(var606) /* to_s on <var606:Array[Object]>*/;
2960 ((void (*)(val*, val*))(var_makefile->class->vft[COLOR_stream__OStream__write]))(var_makefile, var609) /* write on <var_makefile:OFStream>*/;
2961 ((void (*)(val*))(var_makefile->class->vft[COLOR_stream__IOS__close]))(var_makefile) /* close on <var_makefile:OFStream>*/;
2962 var610 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2963 if (varonce611) {
2964 var612 = varonce611;
2965 } else {
2966 var613 = "Generated makefile: ";
2967 var614 = 20;
2968 var615 = string__NativeString__to_s_with_length(var613, var614);
2969 var612 = var615;
2970 varonce611 = var612;
2971 }
2972 var616 = NEW_array__Array(&type_array__Arraykernel__Object);
2973 { /* var616 = array_instance Array[Object] */
2974 var617 = 2;
2975 var618 = NEW_array__NativeArray(var617, &type_array__NativeArraykernel__Object);
2976 ((struct instance_array__NativeArray*)var618)->values[0] = (val*) var612;
2977 ((struct instance_array__NativeArray*)var618)->values[1] = (val*) var_makepath;
2978 ((void (*)(val*, val*, long))(var616->class->vft[COLOR_array__Array__with_native]))(var616, var618, var617) /* with_native on <var616:Array[Object]>*/;
2979 }
2980 var619 = ((val* (*)(val*))(var616->class->vft[COLOR_string__Object__to_s]))(var616) /* to_s on <var616:Array[Object]>*/;
2981 var620 = 2;
2982 ((void (*)(val*, val*, long))(var610->class->vft[COLOR_toolcontext__ToolContext__info]))(var610, var619, var620) /* info on <var610:ToolContext>*/;
2983 var621 = ((long (*)(val*))(self->class->vft[COLOR_time__Object__get_time]))(self) /* get_time on <self:ModelBuilder>*/;
2984 var_time1 = var621;
2985 var622 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2986 if (varonce623) {
2987 var624 = varonce623;
2988 } else {
2989 var625 = "*** END WRITING C: ";
2990 var626 = 19;
2991 var627 = string__NativeString__to_s_with_length(var625, var626);
2992 var624 = var627;
2993 varonce623 = var624;
2994 }
2995 { /* Inline kernel#Int#- (var_time1,var_time0) */
2996 var630 = var_time1 - var_time0;
2997 var628 = var630;
2998 goto RET_LABEL629;
2999 RET_LABEL629:(void)0;
3000 }
3001 if (varonce631) {
3002 var632 = varonce631;
3003 } else {
3004 var633 = " ***";
3005 var634 = 4;
3006 var635 = string__NativeString__to_s_with_length(var633, var634);
3007 var632 = var635;
3008 varonce631 = var632;
3009 }
3010 var636 = NEW_array__Array(&type_array__Arraykernel__Object);
3011 { /* var636 = array_instance Array[Object] */
3012 var637 = 3;
3013 var638 = NEW_array__NativeArray(var637, &type_array__NativeArraykernel__Object);
3014 ((struct instance_array__NativeArray*)var638)->values[0] = (val*) var624;
3015 var639 = BOX_kernel__Int(var628); /* autobox from Int to Object */
3016 ((struct instance_array__NativeArray*)var638)->values[1] = (val*) var639;
3017 ((struct instance_array__NativeArray*)var638)->values[2] = (val*) var632;
3018 ((void (*)(val*, val*, long))(var636->class->vft[COLOR_array__Array__with_native]))(var636, var638, var637) /* with_native on <var636:Array[Object]>*/;
3019 }
3020 var640 = ((val* (*)(val*))(var636->class->vft[COLOR_string__Object__to_s]))(var636) /* to_s on <var636:Array[Object]>*/;
3021 var641 = 2;
3022 ((void (*)(val*, val*, long))(var622->class->vft[COLOR_toolcontext__ToolContext__info]))(var622, var640, var641) /* info on <var622:ToolContext>*/;
3023 var642 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
3024 var643 = ((val* (*)(val*))(var642->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_cc]))(var642) /* opt_no_cc on <var642:ToolContext>*/;
3025 var644 = ((val* (*)(val*))(var643->class->vft[COLOR_opts__Option__value]))(var643) /* value on <var643:OptionBool>*/;
3026 var645 = ((struct instance_kernel__Bool*)var644)->value; /* autounbox from nullable Object to Bool */;
3027 if (var645){
3028 goto RET_LABEL;
3029 } else {
3030 }
3031 var_time0 = var_time1;
3032 var646 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
3033 if (varonce647) {
3034 var648 = varonce647;
3035 } else {
3036 var649 = "*** COMPILING C ***";
3037 var650 = 19;
3038 var651 = string__NativeString__to_s_with_length(var649, var650);
3039 var648 = var651;
3040 varonce647 = var648;
3041 }
3042 var652 = 1;
3043 ((void (*)(val*, val*, long))(var646->class->vft[COLOR_toolcontext__ToolContext__info]))(var646, var648, var652) /* info on <var646:ToolContext>*/;
3044 var653 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
3045 var654 = ((val* (*)(val*))(var653->class->vft[COLOR_abstract_compiler__ToolContext__opt_make_flags]))(var653) /* opt_make_flags on <var653:ToolContext>*/;
3046 var655 = ((val* (*)(val*))(var654->class->vft[COLOR_opts__Option__value]))(var654) /* value on <var654:OptionString>*/;
3047 var_makeflags = var655;
3048 var656 = NULL;
3049 if (var_makeflags == NULL) {
3050 var657 = 1; /* is null */
3051 } else {
3052 var657 = 0; /* arg is null but recv is not */
3053 }
3054 if (var657){
3055 if (varonce658) {
3056 var659 = varonce658;
3057 } else {
3058 var660 = "";
3059 var661 = 0;
3060 var662 = string__NativeString__to_s_with_length(var660, var661);
3061 var659 = var662;
3062 varonce658 = var659;
3063 }
3064 var_makeflags = var659;
3065 } else {
3066 }
3067 var663 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
3068 if (varonce664) {
3069 var665 = varonce664;
3070 } else {
3071 var666 = "make -B -C ";
3072 var667 = 11;
3073 var668 = string__NativeString__to_s_with_length(var666, var667);
3074 var665 = var668;
3075 varonce664 = var665;
3076 }
3077 if (varonce669) {
3078 var670 = varonce669;
3079 } else {
3080 var671 = " -f ";
3081 var672 = 4;
3082 var673 = string__NativeString__to_s_with_length(var671, var672);
3083 var670 = var673;
3084 varonce669 = var670;
3085 }
3086 if (varonce674) {
3087 var675 = varonce674;
3088 } else {
3089 var676 = " -j 4 ";
3090 var677 = 6;
3091 var678 = string__NativeString__to_s_with_length(var676, var677);
3092 var675 = var678;
3093 varonce674 = var675;
3094 }
3095 var679 = NEW_array__Array(&type_array__Arraykernel__Object);
3096 { /* var679 = array_instance Array[Object] */
3097 var680 = 6;
3098 var681 = NEW_array__NativeArray(var680, &type_array__NativeArraykernel__Object);
3099 ((struct instance_array__NativeArray*)var681)->values[0] = (val*) var665;
3100 ((struct instance_array__NativeArray*)var681)->values[1] = (val*) var_compile_dir;
3101 ((struct instance_array__NativeArray*)var681)->values[2] = (val*) var670;
3102 ((struct instance_array__NativeArray*)var681)->values[3] = (val*) var_makename;
3103 ((struct instance_array__NativeArray*)var681)->values[4] = (val*) var675;
3104 ((struct instance_array__NativeArray*)var681)->values[5] = (val*) var_makeflags;
3105 ((void (*)(val*, val*, long))(var679->class->vft[COLOR_array__Array__with_native]))(var679, var681, var680) /* with_native on <var679:Array[Object]>*/;
3106 }
3107 var682 = ((val* (*)(val*))(var679->class->vft[COLOR_string__Object__to_s]))(var679) /* to_s on <var679:Array[Object]>*/;
3108 var683 = 2;
3109 ((void (*)(val*, val*, long))(var663->class->vft[COLOR_toolcontext__ToolContext__info]))(var663, var682, var683) /* info on <var663:ToolContext>*/;
3110 var684 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
3111 var685 = ((long (*)(val*))(var684->class->vft[COLOR_toolcontext__ToolContext__verbose_level]))(var684) /* verbose_level on <var684:ToolContext>*/;
3112 var686 = 3;
3113 { /* Inline kernel#Int#>= (var685,var686) */
3114 /* Covariant cast for argument 0 (i) <var686:Int> isa OTHER */
3115 /* <var686:Int> isa OTHER */
3116 var689 = 1; /* easy <var686:Int> isa OTHER*/
3117 if (!var689) {
3118 var_class_name692 = type_kernel__Int.name;
3119 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name692);
3120 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
3121 show_backtrace(1);
3122 }
3123 var693 = var685 >= var686;
3124 var687 = var693;
3125 goto RET_LABEL688;
3126 RET_LABEL688:(void)0;
3127 }
3128 if (var687){
3129 var694 = ((val* (*)(val*))(self->class->vft[COLOR_kernel__Object__sys]))(self) /* sys on <self:ModelBuilder>*/;
3130 if (varonce695) {
3131 var696 = varonce695;
3132 } else {
3133 var697 = "make -B -C ";
3134 var698 = 11;
3135 var699 = string__NativeString__to_s_with_length(var697, var698);
3136 var696 = var699;
3137 varonce695 = var696;
3138 }
3139 if (varonce700) {
3140 var701 = varonce700;
3141 } else {
3142 var702 = " -f ";
3143 var703 = 4;
3144 var704 = string__NativeString__to_s_with_length(var702, var703);
3145 var701 = var704;
3146 varonce700 = var701;
3147 }
3148 if (varonce705) {
3149 var706 = varonce705;
3150 } else {
3151 var707 = " -j 4 ";
3152 var708 = 6;
3153 var709 = string__NativeString__to_s_with_length(var707, var708);
3154 var706 = var709;
3155 varonce705 = var706;
3156 }
3157 if (varonce710) {
3158 var711 = varonce710;
3159 } else {
3160 var712 = " 2>&1";
3161 var713 = 5;
3162 var714 = string__NativeString__to_s_with_length(var712, var713);
3163 var711 = var714;
3164 varonce710 = var711;
3165 }
3166 var715 = NEW_array__Array(&type_array__Arraykernel__Object);
3167 { /* var715 = array_instance Array[Object] */
3168 var716 = 7;
3169 var717 = NEW_array__NativeArray(var716, &type_array__NativeArraykernel__Object);
3170 ((struct instance_array__NativeArray*)var717)->values[0] = (val*) var696;
3171 ((struct instance_array__NativeArray*)var717)->values[1] = (val*) var_compile_dir;
3172 ((struct instance_array__NativeArray*)var717)->values[2] = (val*) var701;
3173 ((struct instance_array__NativeArray*)var717)->values[3] = (val*) var_makename;
3174 ((struct instance_array__NativeArray*)var717)->values[4] = (val*) var706;
3175 ((struct instance_array__NativeArray*)var717)->values[5] = (val*) var_makeflags;
3176 ((struct instance_array__NativeArray*)var717)->values[6] = (val*) var711;
3177 ((void (*)(val*, val*, long))(var715->class->vft[COLOR_array__Array__with_native]))(var715, var717, var716) /* with_native on <var715:Array[Object]>*/;
3178 }
3179 var718 = ((val* (*)(val*))(var715->class->vft[COLOR_string__Object__to_s]))(var715) /* to_s on <var715:Array[Object]>*/;
3180 var719 = ((long (*)(val*, val*))(var694->class->vft[COLOR_exec__Sys__system]))(var694, var718) /* system on <var694:Sys>*/;
3181 var720 = BOX_kernel__Int(var719); /* autobox from Int to nullable Object */
3182 var_res = var720;
3183 } else {
3184 var721 = ((val* (*)(val*))(self->class->vft[COLOR_kernel__Object__sys]))(self) /* sys on <self:ModelBuilder>*/;
3185 if (varonce722) {
3186 var723 = varonce722;
3187 } else {
3188 var724 = "make -B -C ";
3189 var725 = 11;
3190 var726 = string__NativeString__to_s_with_length(var724, var725);
3191 var723 = var726;
3192 varonce722 = var723;
3193 }
3194 if (varonce727) {
3195 var728 = varonce727;
3196 } else {
3197 var729 = " -f ";
3198 var730 = 4;
3199 var731 = string__NativeString__to_s_with_length(var729, var730);
3200 var728 = var731;
3201 varonce727 = var728;
3202 }
3203 if (varonce732) {
3204 var733 = varonce732;
3205 } else {
3206 var734 = " -j 4 ";
3207 var735 = 6;
3208 var736 = string__NativeString__to_s_with_length(var734, var735);
3209 var733 = var736;
3210 varonce732 = var733;
3211 }
3212 if (varonce737) {
3213 var738 = varonce737;
3214 } else {
3215 var739 = " 2>&1 >/dev/null";
3216 var740 = 16;
3217 var741 = string__NativeString__to_s_with_length(var739, var740);
3218 var738 = var741;
3219 varonce737 = var738;
3220 }
3221 var742 = NEW_array__Array(&type_array__Arraykernel__Object);
3222 { /* var742 = array_instance Array[Object] */
3223 var743 = 7;
3224 var744 = NEW_array__NativeArray(var743, &type_array__NativeArraykernel__Object);
3225 ((struct instance_array__NativeArray*)var744)->values[0] = (val*) var723;
3226 ((struct instance_array__NativeArray*)var744)->values[1] = (val*) var_compile_dir;
3227 ((struct instance_array__NativeArray*)var744)->values[2] = (val*) var728;
3228 ((struct instance_array__NativeArray*)var744)->values[3] = (val*) var_makename;
3229 ((struct instance_array__NativeArray*)var744)->values[4] = (val*) var733;
3230 ((struct instance_array__NativeArray*)var744)->values[5] = (val*) var_makeflags;
3231 ((struct instance_array__NativeArray*)var744)->values[6] = (val*) var738;
3232 ((void (*)(val*, val*, long))(var742->class->vft[COLOR_array__Array__with_native]))(var742, var744, var743) /* with_native on <var742:Array[Object]>*/;
3233 }
3234 var745 = ((val* (*)(val*))(var742->class->vft[COLOR_string__Object__to_s]))(var742) /* to_s on <var742:Array[Object]>*/;
3235 var746 = ((long (*)(val*, val*))(var721->class->vft[COLOR_exec__Sys__system]))(var721, var745) /* system on <var721:Sys>*/;
3236 var747 = BOX_kernel__Int(var746); /* autobox from Int to nullable Object */
3237 var_res = var747;
3238 }
3239 var748 = 0;
3240 { /* Inline kernel#Int#!= (var_res,var748) */
3241 var751 = (var_res != NULL) && (var_res->class == &class_kernel__Int);
3242 if (var751) {
3243 var752 = ((struct instance_kernel__Int*)var_res)->value; /* autounbox from nullable Object to Int */;
3244 var751 = (var752 == var748);
3245 }
3246 var753 = !var751;
3247 var749 = var753;
3248 goto RET_LABEL750;
3249 RET_LABEL750:(void)0;
3250 }
3251 if (var749){
3252 var754 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
3253 var755 = NULL;
3254 if (varonce756) {
3255 var757 = varonce756;
3256 } else {
3257 var758 = "make failed! Error code: ";
3258 var759 = 25;
3259 var760 = string__NativeString__to_s_with_length(var758, var759);
3260 var757 = var760;
3261 varonce756 = var757;
3262 }
3263 if (varonce761) {
3264 var762 = varonce761;
3265 } else {
3266 var763 = ".";
3267 var764 = 1;
3268 var765 = string__NativeString__to_s_with_length(var763, var764);
3269 var762 = var765;
3270 varonce761 = var762;
3271 }
3272 var766 = NEW_array__Array(&type_array__Arraykernel__Object);
3273 { /* var766 = array_instance Array[Object] */
3274 var767 = 3;
3275 var768 = NEW_array__NativeArray(var767, &type_array__NativeArraykernel__Object);
3276 ((struct instance_array__NativeArray*)var768)->values[0] = (val*) var757;
3277 ((struct instance_array__NativeArray*)var768)->values[1] = (val*) var_res;
3278 ((struct instance_array__NativeArray*)var768)->values[2] = (val*) var762;
3279 ((void (*)(val*, val*, long))(var766->class->vft[COLOR_array__Array__with_native]))(var766, var768, var767) /* with_native on <var766:Array[Object]>*/;
3280 }
3281 var769 = ((val* (*)(val*))(var766->class->vft[COLOR_string__Object__to_s]))(var766) /* to_s on <var766:Array[Object]>*/;
3282 ((void (*)(val*, val*, val*))(var754->class->vft[COLOR_toolcontext__ToolContext__error]))(var754, var755, var769) /* error on <var754:ToolContext>*/;
3283 } else {
3284 }
3285 var770 = ((long (*)(val*))(self->class->vft[COLOR_time__Object__get_time]))(self) /* get_time on <self:ModelBuilder>*/;
3286 var_time1 = var770;
3287 var771 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
3288 if (varonce772) {
3289 var773 = varonce772;
3290 } else {
3291 var774 = "*** END COMPILING C: ";
3292 var775 = 21;
3293 var776 = string__NativeString__to_s_with_length(var774, var775);
3294 var773 = var776;
3295 varonce772 = var773;
3296 }
3297 { /* Inline kernel#Int#- (var_time1,var_time0) */
3298 var779 = var_time1 - var_time0;
3299 var777 = var779;
3300 goto RET_LABEL778;
3301 RET_LABEL778:(void)0;
3302 }
3303 if (varonce780) {
3304 var781 = varonce780;
3305 } else {
3306 var782 = " ***";
3307 var783 = 4;
3308 var784 = string__NativeString__to_s_with_length(var782, var783);
3309 var781 = var784;
3310 varonce780 = var781;
3311 }
3312 var785 = NEW_array__Array(&type_array__Arraykernel__Object);
3313 { /* var785 = array_instance Array[Object] */
3314 var786 = 3;
3315 var787 = NEW_array__NativeArray(var786, &type_array__NativeArraykernel__Object);
3316 ((struct instance_array__NativeArray*)var787)->values[0] = (val*) var773;
3317 var788 = BOX_kernel__Int(var777); /* autobox from Int to Object */
3318 ((struct instance_array__NativeArray*)var787)->values[1] = (val*) var788;
3319 ((struct instance_array__NativeArray*)var787)->values[2] = (val*) var781;
3320 ((void (*)(val*, val*, long))(var785->class->vft[COLOR_array__Array__with_native]))(var785, var787, var786) /* with_native on <var785:Array[Object]>*/;
3321 }
3322 var789 = ((val* (*)(val*))(var785->class->vft[COLOR_string__Object__to_s]))(var785) /* to_s on <var785:Array[Object]>*/;
3323 var790 = 2;
3324 ((void (*)(val*, val*, long))(var771->class->vft[COLOR_toolcontext__ToolContext__info]))(var771, var789, var790) /* info on <var771:ToolContext>*/;
3325 RET_LABEL:;
3326 }
3327 /* method abstract_compiler#ModelBuilder#write_and_make for (self: Object, AbstractCompiler) */
3328 void VIRTUAL_abstract_compiler__ModelBuilder__write_and_make(val* self, val* p0) {
3329 abstract_compiler__ModelBuilder__write_and_make(self, p0);
3330 RET_LABEL:;
3331 }
3332 /* method abstract_compiler#AbstractCompiler#names for (self: AbstractCompiler): HashMap[String, String] */
3333 val* abstract_compiler__AbstractCompiler__names(val* self) {
3334 val* var /* : HashMap[String, String] */;
3335 val* var1 /* : HashMap[String, String] */;
3336 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dnames].val; /* @names on <self:AbstractCompiler> */
3337 if (var1 == NULL) {
3338 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @names");
3339 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 277);
3340 show_backtrace(1);
3341 }
3342 var = var1;
3343 RET_LABEL:;
3344 return var;
3345 }
3346 /* method abstract_compiler#AbstractCompiler#names for (self: Object): HashMap[String, String] */
3347 val* VIRTUAL_abstract_compiler__AbstractCompiler__names(val* self) {
3348 val* var /* : HashMap[String, String] */;
3349 val* var1 /* : HashMap[String, String] */;
3350 var1 = abstract_compiler__AbstractCompiler__names(self);
3351 var = var1;
3352 RET_LABEL:;
3353 return var;
3354 }
3355 /* method abstract_compiler#AbstractCompiler#names= for (self: AbstractCompiler, HashMap[String, String]) */
3356 void abstract_compiler__AbstractCompiler__names_61d(val* self, val* p0) {
3357 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dnames].val = p0; /* @names on <self:AbstractCompiler> */
3358 RET_LABEL:;
3359 }
3360 /* method abstract_compiler#AbstractCompiler#names= for (self: Object, HashMap[String, String]) */
3361 void VIRTUAL_abstract_compiler__AbstractCompiler__names_61d(val* self, val* p0) {
3362 abstract_compiler__AbstractCompiler__names_61d(self, p0);
3363 RET_LABEL:;
3364 }
3365 /* method abstract_compiler#AbstractCompiler#mainmodule for (self: AbstractCompiler): MModule */
3366 val* abstract_compiler__AbstractCompiler__mainmodule(val* self) {
3367 val* var /* : MModule */;
3368 val* var1 /* : MModule */;
3369 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dmainmodule].val; /* @mainmodule on <self:AbstractCompiler> */
3370 if (var1 == NULL) {
3371 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mainmodule");
3372 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 280);
3373 show_backtrace(1);
3374 }
3375 var = var1;
3376 RET_LABEL:;
3377 return var;
3378 }
3379 /* method abstract_compiler#AbstractCompiler#mainmodule for (self: Object): MModule */
3380 val* VIRTUAL_abstract_compiler__AbstractCompiler__mainmodule(val* self) {
3381 val* var /* : MModule */;
3382 val* var1 /* : MModule */;
3383 var1 = abstract_compiler__AbstractCompiler__mainmodule(self);
3384 var = var1;
3385 RET_LABEL:;
3386 return var;
3387 }
3388 /* method abstract_compiler#AbstractCompiler#mainmodule= for (self: AbstractCompiler, MModule) */
3389 void abstract_compiler__AbstractCompiler__mainmodule_61d(val* self, val* p0) {
3390 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dmainmodule].val = p0; /* @mainmodule on <self:AbstractCompiler> */
3391 RET_LABEL:;
3392 }
3393 /* method abstract_compiler#AbstractCompiler#mainmodule= for (self: Object, MModule) */
3394 void VIRTUAL_abstract_compiler__AbstractCompiler__mainmodule_61d(val* self, val* p0) {
3395 abstract_compiler__AbstractCompiler__mainmodule_61d(self, p0);
3396 RET_LABEL:;
3397 }
3398 /* method abstract_compiler#AbstractCompiler#realmainmodule for (self: AbstractCompiler): MModule */
3399 val* abstract_compiler__AbstractCompiler__realmainmodule(val* self) {
3400 val* var /* : MModule */;
3401 val* var1 /* : MModule */;
3402 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64drealmainmodule].val; /* @realmainmodule on <self:AbstractCompiler> */
3403 if (var1 == NULL) {
3404 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @realmainmodule");
3405 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 284);
3406 show_backtrace(1);
3407 }
3408 var = var1;
3409 RET_LABEL:;
3410 return var;
3411 }
3412 /* method abstract_compiler#AbstractCompiler#realmainmodule for (self: Object): MModule */
3413 val* VIRTUAL_abstract_compiler__AbstractCompiler__realmainmodule(val* self) {
3414 val* var /* : MModule */;
3415 val* var1 /* : MModule */;
3416 var1 = abstract_compiler__AbstractCompiler__realmainmodule(self);
3417 var = var1;
3418 RET_LABEL:;
3419 return var;
3420 }
3421 /* method abstract_compiler#AbstractCompiler#realmainmodule= for (self: AbstractCompiler, MModule) */
3422 void abstract_compiler__AbstractCompiler__realmainmodule_61d(val* self, val* p0) {
3423 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64drealmainmodule].val = p0; /* @realmainmodule on <self:AbstractCompiler> */
3424 RET_LABEL:;
3425 }
3426 /* method abstract_compiler#AbstractCompiler#realmainmodule= for (self: Object, MModule) */
3427 void VIRTUAL_abstract_compiler__AbstractCompiler__realmainmodule_61d(val* self, val* p0) {
3428 abstract_compiler__AbstractCompiler__realmainmodule_61d(self, p0);
3429 RET_LABEL:;
3430 }
3431 /* method abstract_compiler#AbstractCompiler#modelbuilder for (self: AbstractCompiler): ModelBuilder */
3432 val* abstract_compiler__AbstractCompiler__modelbuilder(val* self) {
3433 val* var /* : ModelBuilder */;
3434 val* var1 /* : ModelBuilder */;
3435 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dmodelbuilder].val; /* @modelbuilder on <self:AbstractCompiler> */
3436 if (var1 == NULL) {
3437 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @modelbuilder");
3438 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 287);
3439 show_backtrace(1);
3440 }
3441 var = var1;
3442 RET_LABEL:;
3443 return var;
3444 }
3445 /* method abstract_compiler#AbstractCompiler#modelbuilder for (self: Object): ModelBuilder */
3446 val* VIRTUAL_abstract_compiler__AbstractCompiler__modelbuilder(val* self) {
3447 val* var /* : ModelBuilder */;
3448 val* var1 /* : ModelBuilder */;
3449 var1 = abstract_compiler__AbstractCompiler__modelbuilder(self);
3450 var = var1;
3451 RET_LABEL:;
3452 return var;
3453 }
3454 /* method abstract_compiler#AbstractCompiler#modelbuilder= for (self: AbstractCompiler, ModelBuilder) */
3455 void abstract_compiler__AbstractCompiler__modelbuilder_61d(val* self, val* p0) {
3456 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dmodelbuilder].val = p0; /* @modelbuilder on <self:AbstractCompiler> */
3457 RET_LABEL:;
3458 }
3459 /* method abstract_compiler#AbstractCompiler#modelbuilder= for (self: Object, ModelBuilder) */
3460 void VIRTUAL_abstract_compiler__AbstractCompiler__modelbuilder_61d(val* self, val* p0) {
3461 abstract_compiler__AbstractCompiler__modelbuilder_61d(self, p0);
3462 RET_LABEL:;
3463 }
3464 /* method abstract_compiler#AbstractCompiler#hardening for (self: AbstractCompiler): Bool */
3465 short int abstract_compiler__AbstractCompiler__hardening(val* self) {
3466 short int var /* : Bool */;
3467 val* var1 /* : ModelBuilder */;
3468 val* var2 /* : ToolContext */;
3469 val* var3 /* : OptionBool */;
3470 val* var4 /* : nullable Object */;
3471 short int var5 /* : Bool */;
3472 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
3473 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var1) /* toolcontext on <var1:ModelBuilder>*/;
3474 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__ToolContext__opt_hardening]))(var2) /* opt_hardening on <var2:ToolContext>*/;
3475 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_opts__Option__value]))(var3) /* value on <var3:OptionBool>*/;
3476 var5 = ((struct instance_kernel__Bool*)var4)->value; /* autounbox from nullable Object to Bool */;
3477 var = var5;
3478 goto RET_LABEL;
3479 RET_LABEL:;
3480 return var;
3481 }
3482 /* method abstract_compiler#AbstractCompiler#hardening for (self: Object): Bool */
3483 short int VIRTUAL_abstract_compiler__AbstractCompiler__hardening(val* self) {
3484 short int var /* : Bool */;
3485 short int var1 /* : Bool */;
3486 var1 = abstract_compiler__AbstractCompiler__hardening(self);
3487 var = var1;
3488 RET_LABEL:;
3489 return var;
3490 }
3491 /* method abstract_compiler#AbstractCompiler#init for (self: AbstractCompiler, MModule, ModelBuilder) */
3492 void abstract_compiler__AbstractCompiler__init(val* self, val* p0, val* p1) {
3493 val* var_mainmodule /* var mainmodule: MModule */;
3494 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
3495 var_mainmodule = p0;
3496 var_modelbuilder = p1;
3497 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule_61d]))(self, var_mainmodule) /* mainmodule= on <self:AbstractCompiler>*/;
3498 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__realmainmodule_61d]))(self, var_mainmodule) /* realmainmodule= on <self:AbstractCompiler>*/;
3499 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder_61d]))(self, var_modelbuilder) /* modelbuilder= on <self:AbstractCompiler>*/;
3500 RET_LABEL:;
3501 }
3502 /* method abstract_compiler#AbstractCompiler#init for (self: Object, MModule, ModelBuilder) */
3503 void VIRTUAL_abstract_compiler__AbstractCompiler__init(val* self, val* p0, val* p1) {
3504 abstract_compiler__AbstractCompiler__init(self, p0, p1);
3505 RET_LABEL:;
3506 }
3507 /* method abstract_compiler#AbstractCompiler#new_file for (self: AbstractCompiler, String): CodeFile */
3508 val* abstract_compiler__AbstractCompiler__new_file(val* self, val* p0) {
3509 val* var /* : CodeFile */;
3510 val* var_name /* var name: String */;
3511 val* var1 /* : CodeFile */;
3512 val* var_f /* var f: CodeFile */;
3513 val* var2 /* : List[CodeFile] */;
3514 var_name = p0;
3515 var1 = NEW_abstract_compiler__CodeFile(&type_abstract_compiler__CodeFile);
3516 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_compiler__CodeFile__init]))(var1, var_name) /* init on <var1:CodeFile>*/;
3517 var_f = var1;
3518 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__files]))(self) /* files on <self:AbstractCompiler>*/;
3519 ((void (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var2, var_f) /* add on <var2:List[CodeFile]>*/;
3520 var = var_f;
3521 goto RET_LABEL;
3522 RET_LABEL:;
3523 return var;
3524 }
3525 /* method abstract_compiler#AbstractCompiler#new_file for (self: Object, String): CodeFile */
3526 val* VIRTUAL_abstract_compiler__AbstractCompiler__new_file(val* self, val* p0) {
3527 val* var /* : CodeFile */;
3528 val* var1 /* : CodeFile */;
3529 var1 = abstract_compiler__AbstractCompiler__new_file(self, p0);
3530 var = var1;
3531 RET_LABEL:;
3532 return var;
3533 }
3534 /* method abstract_compiler#AbstractCompiler#files for (self: AbstractCompiler): List[CodeFile] */
3535 val* abstract_compiler__AbstractCompiler__files(val* self) {
3536 val* var /* : List[CodeFile] */;
3537 val* var1 /* : List[CodeFile] */;
3538 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dfiles].val; /* @files on <self:AbstractCompiler> */
3539 if (var1 == NULL) {
3540 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @files");
3541 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 309);
3542 show_backtrace(1);
3543 }
3544 var = var1;
3545 RET_LABEL:;
3546 return var;
3547 }
3548 /* method abstract_compiler#AbstractCompiler#files for (self: Object): List[CodeFile] */
3549 val* VIRTUAL_abstract_compiler__AbstractCompiler__files(val* self) {
3550 val* var /* : List[CodeFile] */;
3551 val* var1 /* : List[CodeFile] */;
3552 var1 = abstract_compiler__AbstractCompiler__files(self);
3553 var = var1;
3554 RET_LABEL:;
3555 return var;
3556 }
3557 /* method abstract_compiler#AbstractCompiler#files= for (self: AbstractCompiler, List[CodeFile]) */
3558 void abstract_compiler__AbstractCompiler__files_61d(val* self, val* p0) {
3559 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dfiles].val = p0; /* @files on <self:AbstractCompiler> */
3560 RET_LABEL:;
3561 }
3562 /* method abstract_compiler#AbstractCompiler#files= for (self: Object, List[CodeFile]) */
3563 void VIRTUAL_abstract_compiler__AbstractCompiler__files_61d(val* self, val* p0) {
3564 abstract_compiler__AbstractCompiler__files_61d(self, p0);
3565 RET_LABEL:;
3566 }
3567 /* method abstract_compiler#AbstractCompiler#new_visitor for (self: AbstractCompiler): AbstractCompilerVisitor */
3568 val* abstract_compiler__AbstractCompiler__new_visitor(val* self) {
3569 val* var /* : AbstractCompilerVisitor */;
3570 const char* var_class_name;
3571 var_class_name = self == NULL ? "null" : self->type->name;
3572 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "new_visitor", var_class_name);
3573 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 313);
3574 show_backtrace(1);
3575 RET_LABEL:;
3576 return var;
3577 }
3578 /* method abstract_compiler#AbstractCompiler#new_visitor for (self: Object): AbstractCompilerVisitor */
3579 val* VIRTUAL_abstract_compiler__AbstractCompiler__new_visitor(val* self) {
3580 val* var /* : AbstractCompilerVisitor */;
3581 val* var1 /* : AbstractCompilerVisitor */;
3582 var1 = abstract_compiler__AbstractCompiler__new_visitor(self);
3583 var = var1;
3584 RET_LABEL:;
3585 return var;
3586 }
3587 /* method abstract_compiler#AbstractCompiler#header for (self: AbstractCompiler): CodeWriter */
3588 val* abstract_compiler__AbstractCompiler__header(val* self) {
3589 val* var /* : CodeWriter */;
3590 val* var1 /* : CodeWriter */;
3591 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dheader].val; /* @header on <self:AbstractCompiler> */
3592 if (var1 == NULL) {
3593 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @header");
3594 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 316);
3595 show_backtrace(1);
3596 }
3597 var = var1;
3598 RET_LABEL:;
3599 return var;
3600 }
3601 /* method abstract_compiler#AbstractCompiler#header for (self: Object): CodeWriter */
3602 val* VIRTUAL_abstract_compiler__AbstractCompiler__header(val* self) {
3603 val* var /* : CodeWriter */;
3604 val* var1 /* : CodeWriter */;
3605 var1 = abstract_compiler__AbstractCompiler__header(self);
3606 var = var1;
3607 RET_LABEL:;
3608 return var;
3609 }
3610 /* method abstract_compiler#AbstractCompiler#header= for (self: AbstractCompiler, CodeWriter) */
3611 void abstract_compiler__AbstractCompiler__header_61d(val* self, val* p0) {
3612 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dheader].val = p0; /* @header on <self:AbstractCompiler> */
3613 RET_LABEL:;
3614 }
3615 /* method abstract_compiler#AbstractCompiler#header= for (self: Object, CodeWriter) */
3616 void VIRTUAL_abstract_compiler__AbstractCompiler__header_61d(val* self, val* p0) {
3617 abstract_compiler__AbstractCompiler__header_61d(self, p0);
3618 RET_LABEL:;
3619 }
3620 /* method abstract_compiler#AbstractCompiler#provide_declaration for (self: AbstractCompiler, String, String) */
3621 void abstract_compiler__AbstractCompiler__provide_declaration(val* self, val* p0, val* p1) {
3622 val* var_key /* var key: String */;
3623 val* var_s /* var s: String */;
3624 val* var /* : HashMap[String, String] */;
3625 short int var1 /* : Bool */;
3626 val* var2 /* : HashMap[String, String] */;
3627 val* var3 /* : nullable Object */;
3628 short int var4 /* : Bool */;
3629 val* var5 /* : HashMap[String, String] */;
3630 var_key = p0;
3631 var_s = p1;
3632 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provided_declarations]))(self) /* provided_declarations on <self:AbstractCompiler>*/;
3633 var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var, var_key) /* has_key on <var:HashMap[String, String]>*/;
3634 if (var1){
3635 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provided_declarations]))(self) /* provided_declarations on <self:AbstractCompiler>*/;
3636 var3 = ((val* (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var2, var_key) /* [] on <var2:HashMap[String, String]>*/;
3637 var4 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_kernel__Object___61d_61d]))(var3, var_s) /* == on <var3:nullable Object(String)>*/;
3638 if (!var4) {
3639 fprintf(stderr, "Runtime error: %s", "Assert failed");
3640 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 323);
3641 show_backtrace(1);
3642 }
3643 } else {
3644 }
3645 var5 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provided_declarations]))(self) /* provided_declarations on <self:AbstractCompiler>*/;
3646 ((void (*)(val*, val*, val*))(var5->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var5, var_key, var_s) /* []= on <var5:HashMap[String, String]>*/;
3647 RET_LABEL:;
3648 }
3649 /* method abstract_compiler#AbstractCompiler#provide_declaration for (self: Object, String, String) */
3650 void VIRTUAL_abstract_compiler__AbstractCompiler__provide_declaration(val* self, val* p0, val* p1) {
3651 abstract_compiler__AbstractCompiler__provide_declaration(self, p0, p1);
3652 RET_LABEL:;
3653 }
3654 /* method abstract_compiler#AbstractCompiler#provided_declarations for (self: AbstractCompiler): HashMap[String, String] */
3655 val* abstract_compiler__AbstractCompiler__provided_declarations(val* self) {
3656 val* var /* : HashMap[String, String] */;
3657 val* var1 /* : HashMap[String, String] */;
3658 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dprovided_declarations].val; /* @provided_declarations on <self:AbstractCompiler> */
3659 if (var1 == NULL) {
3660 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @provided_declarations");
3661 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 328);
3662 show_backtrace(1);
3663 }
3664 var = var1;
3665 RET_LABEL:;
3666 return var;
3667 }
3668 /* method abstract_compiler#AbstractCompiler#provided_declarations for (self: Object): HashMap[String, String] */
3669 val* VIRTUAL_abstract_compiler__AbstractCompiler__provided_declarations(val* self) {
3670 val* var /* : HashMap[String, String] */;
3671 val* var1 /* : HashMap[String, String] */;
3672 var1 = abstract_compiler__AbstractCompiler__provided_declarations(self);
3673 var = var1;
3674 RET_LABEL:;
3675 return var;
3676 }
3677 /* method abstract_compiler#AbstractCompiler#provided_declarations= for (self: AbstractCompiler, HashMap[String, String]) */
3678 void abstract_compiler__AbstractCompiler__provided_declarations_61d(val* self, val* p0) {
3679 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dprovided_declarations].val = p0; /* @provided_declarations on <self:AbstractCompiler> */
3680 RET_LABEL:;
3681 }
3682 /* method abstract_compiler#AbstractCompiler#provided_declarations= for (self: Object, HashMap[String, String]) */
3683 void VIRTUAL_abstract_compiler__AbstractCompiler__provided_declarations_61d(val* self, val* p0) {
3684 abstract_compiler__AbstractCompiler__provided_declarations_61d(self, p0);
3685 RET_LABEL:;
3686 }
3687 /* method abstract_compiler#AbstractCompiler#build_c_to_nit_bindings for (self: AbstractCompiler) */
3688 void abstract_compiler__AbstractCompiler__build_c_to_nit_bindings(val* self) {
3689 val* var /* : ModelBuilder */;
3690 val* var1 /* : ToolContext */;
3691 val* var2 /* : OptionString */;
3692 val* var3 /* : nullable Object */;
3693 val* var_compile_dir /* var compile_dir: nullable String */;
3694 val* var4 /* : null */;
3695 short int var5 /* : Bool */;
3696 static val* varonce;
3697 val* var6 /* : String */;
3698 char* var7 /* : NativeString */;
3699 long var8 /* : Int */;
3700 val* var9 /* : String */;
3701 val* var10 /* : OFStream */;
3702 val* var11 /* : Array[Object] */;
3703 long var12 /* : Int */;
3704 val* var_ /* var : Array[Object] */;
3705 static val* varonce13;
3706 val* var14 /* : String */;
3707 char* var15 /* : NativeString */;
3708 long var16 /* : Int */;
3709 val* var17 /* : String */;
3710 static val* varonce18;
3711 val* var19 /* : String */;
3712 char* var20 /* : NativeString */;
3713 long var21 /* : Int */;
3714 val* var22 /* : String */;
3715 val* var23 /* : String */;
3716 val* var_stream /* var stream: OFStream */;
3717 static val* varonce24;
3718 val* var25 /* : String */;
3719 char* var26 /* : NativeString */;
3720 long var27 /* : Int */;
3721 val* var28 /* : String */;
3722 static val* varonce29;
3723 val* var30 /* : String */;
3724 char* var31 /* : NativeString */;
3725 long var32 /* : Int */;
3726 val* var33 /* : String */;
3727 static val* varonce34;
3728 val* var35 /* : String */;
3729 char* var36 /* : NativeString */;
3730 long var37 /* : Int */;
3731 val* var38 /* : String */;
3732 static val* varonce39;
3733 val* var40 /* : String */;
3734 char* var41 /* : NativeString */;
3735 long var42 /* : Int */;
3736 val* var43 /* : String */;
3737 static val* varonce44;
3738 val* var45 /* : String */;
3739 char* var46 /* : NativeString */;
3740 long var47 /* : Int */;
3741 val* var48 /* : String */;
3742 val* var49 /* : HashMap[String, String] */;
3743 val* var50 /* : Collection[Object] */;
3744 val* var51 /* : Iterator[nullable Object] */;
3745 short int var52 /* : Bool */;
3746 val* var53 /* : nullable Object */;
3747 val* var_i /* var i: String */;
3748 static val* varonce54;
3749 val* var55 /* : String */;
3750 char* var56 /* : NativeString */;
3751 long var57 /* : Int */;
3752 val* var58 /* : String */;
3753 val* var59 /* : HashMap[String, String] */;
3754 val* var60 /* : nullable Object */;
3755 static val* varonce61;
3756 val* var62 /* : String */;
3757 char* var63 /* : NativeString */;
3758 long var64 /* : Int */;
3759 val* var65 /* : String */;
3760 static val* varonce66;
3761 val* var67 /* : String */;
3762 char* var68 /* : NativeString */;
3763 long var69 /* : Int */;
3764 val* var70 /* : String */;
3765 static val* varonce71;
3766 val* var72 /* : String */;
3767 char* var73 /* : NativeString */;
3768 long var74 /* : Int */;
3769 val* var75 /* : String */;
3770 val* var76 /* : OFStream */;
3771 val* var77 /* : Array[Object] */;
3772 long var78 /* : Int */;
3773 val* var_79 /* var : Array[Object] */;
3774 static val* varonce80;
3775 val* var81 /* : String */;
3776 char* var82 /* : NativeString */;
3777 long var83 /* : Int */;
3778 val* var84 /* : String */;
3779 static val* varonce85;
3780 val* var86 /* : String */;
3781 char* var87 /* : NativeString */;
3782 long var88 /* : Int */;
3783 val* var89 /* : String */;
3784 val* var90 /* : String */;
3785 static val* varonce91;
3786 val* var92 /* : String */;
3787 char* var93 /* : NativeString */;
3788 long var94 /* : Int */;
3789 val* var95 /* : String */;
3790 static val* varonce96;
3791 val* var97 /* : String */;
3792 char* var98 /* : NativeString */;
3793 long var99 /* : Int */;
3794 val* var100 /* : String */;
3795 val* var101 /* : Process */;
3796 static val* varonce102;
3797 val* var103 /* : String */;
3798 char* var104 /* : NativeString */;
3799 long var105 /* : Int */;
3800 val* var106 /* : String */;
3801 val* var107 /* : Array[Object] */;
3802 long var108 /* : Int */;
3803 val* var_109 /* var : Array[Object] */;
3804 static val* varonce110;
3805 val* var111 /* : String */;
3806 char* var112 /* : NativeString */;
3807 long var113 /* : Int */;
3808 val* var114 /* : String */;
3809 static val* varonce115;
3810 val* var116 /* : String */;
3811 char* var117 /* : NativeString */;
3812 long var118 /* : Int */;
3813 val* var119 /* : String */;
3814 val* var120 /* : String */;
3815 static val* varonce121;
3816 val* var122 /* : String */;
3817 char* var123 /* : NativeString */;
3818 long var124 /* : Int */;
3819 val* var125 /* : String */;
3820 static val* varonce126;
3821 val* var127 /* : String */;
3822 char* var128 /* : NativeString */;
3823 long var129 /* : Int */;
3824 val* var130 /* : String */;
3825 val* var131 /* : Array[Object] */;
3826 long var132 /* : Int */;
3827 val* var_133 /* var : Array[Object] */;
3828 static val* varonce134;
3829 val* var135 /* : String */;
3830 char* var136 /* : NativeString */;
3831 long var137 /* : Int */;
3832 val* var138 /* : String */;
3833 static val* varonce139;
3834 val* var140 /* : String */;
3835 char* var141 /* : NativeString */;
3836 long var142 /* : Int */;
3837 val* var143 /* : String */;
3838 val* var144 /* : String */;
3839 static val* varonce145;
3840 val* var146 /* : String */;
3841 char* var147 /* : NativeString */;
3842 long var148 /* : Int */;
3843 val* var149 /* : String */;
3844 val* var150 /* : Array[String] */;
3845 long var151 /* : Int */;
3846 val* var152 /* : NativeArray[String] */;
3847 val* var_x /* var x: Process */;
3848 val* var153 /* : Array[ExternCFile] */;
3849 val* var154 /* : ExternCFile */;
3850 val* var155 /* : Array[Object] */;
3851 long var156 /* : Int */;
3852 val* var_157 /* var : Array[Object] */;
3853 static val* varonce158;
3854 val* var159 /* : String */;
3855 char* var160 /* : NativeString */;
3856 long var161 /* : Int */;
3857 val* var162 /* : String */;
3858 static val* varonce163;
3859 val* var164 /* : String */;
3860 char* var165 /* : NativeString */;
3861 long var166 /* : Int */;
3862 val* var167 /* : String */;
3863 val* var168 /* : String */;
3864 static val* varonce169;
3865 val* var170 /* : String */;
3866 char* var171 /* : NativeString */;
3867 long var172 /* : Int */;
3868 val* var173 /* : String */;
3869 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
3870 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var) /* toolcontext on <var:ModelBuilder>*/;
3871 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__ToolContext__opt_compile_dir]))(var1) /* opt_compile_dir on <var1:ToolContext>*/;
3872 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_opts__Option__value]))(var2) /* value on <var2:OptionString>*/;
3873 var_compile_dir = var3;
3874 var4 = NULL;
3875 if (var_compile_dir == NULL) {
3876 var5 = 1; /* is null */
3877 } else {
3878 var5 = 0; /* arg is null but recv is not */
3879 }
3880 if (var5){
3881 if (varonce) {
3882 var6 = varonce;
3883 } else {
3884 var7 = ".nit_compile";
3885 var8 = 12;
3886 var9 = string__NativeString__to_s_with_length(var7, var8);
3887 var6 = var9;
3888 varonce = var6;
3889 }
3890 var_compile_dir = var6;
3891 } else {
3892 }
3893 var10 = NEW_file__OFStream(&type_file__OFStream);
3894 var11 = NEW_array__Array(&type_array__Arraykernel__Object);
3895 var12 = 3;
3896 ((void (*)(val*, long))(var11->class->vft[COLOR_array__Array__with_capacity]))(var11, var12) /* with_capacity on <var11:Array[Object]>*/;
3897 var_ = var11;
3898 if (varonce13) {
3899 var14 = varonce13;
3900 } else {
3901 var15 = "";
3902 var16 = 0;
3903 var17 = string__NativeString__to_s_with_length(var15, var16);
3904 var14 = var17;
3905 varonce13 = var14;
3906 }
3907 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var14) /* add on <var_:Array[Object]>*/;
3908 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_compile_dir) /* add on <var_:Array[Object]>*/;
3909 if (varonce18) {
3910 var19 = varonce18;
3911 } else {
3912 var20 = "/C_fun_names";
3913 var21 = 12;
3914 var22 = string__NativeString__to_s_with_length(var20, var21);
3915 var19 = var22;
3916 varonce18 = var19;
3917 }
3918 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var19) /* add on <var_:Array[Object]>*/;
3919 var23 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
3920 ((void (*)(val*, val*))(var10->class->vft[COLOR_file__OFStream__open]))(var10, var23) /* open on <var10:OFStream>*/;
3921 var_stream = var10;
3922 if (varonce24) {
3923 var25 = varonce24;
3924 } else {
3925 var26 = "%{\n#include \"c_functions_hash.h\"\n%}\n";
3926 var27 = 36;
3927 var28 = string__NativeString__to_s_with_length(var26, var27);
3928 var25 = var28;
3929 varonce24 = var25;
3930 }
3931 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var25) /* write on <var_stream:OFStream>*/;
3932 if (varonce29) {
3933 var30 = varonce29;
3934 } else {
3935 var31 = "%define lookup-function-name get_nit_name\n";
3936 var32 = 42;
3937 var33 = string__NativeString__to_s_with_length(var31, var32);
3938 var30 = var33;
3939 varonce29 = var30;
3940 }
3941 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var30) /* write on <var_stream:OFStream>*/;
3942 if (varonce34) {
3943 var35 = varonce34;
3944 } else {
3945 var36 = "struct C_Nit_Names;\n";
3946 var37 = 20;
3947 var38 = string__NativeString__to_s_with_length(var36, var37);
3948 var35 = var38;
3949 varonce34 = var35;
3950 }
3951 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var35) /* write on <var_stream:OFStream>*/;
3952 if (varonce39) {
3953 var40 = varonce39;
3954 } else {
3955 var41 = "%%\n";
3956 var42 = 3;
3957 var43 = string__NativeString__to_s_with_length(var41, var42);
3958 var40 = var43;
3959 varonce39 = var40;
3960 }
3961 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var40) /* write on <var_stream:OFStream>*/;
3962 if (varonce44) {
3963 var45 = varonce44;
3964 } else {
3965 var46 = "####\n";
3966 var47 = 5;
3967 var48 = string__NativeString__to_s_with_length(var46, var47);
3968 var45 = var48;
3969 varonce44 = var45;
3970 }
3971 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var45) /* write on <var_stream:OFStream>*/;
3972 var49 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__names]))(self) /* names on <self:AbstractCompiler>*/;
3973 var50 = ((val* (*)(val*))(var49->class->vft[COLOR_abstract_collection__MapRead__keys]))(var49) /* keys on <var49:HashMap[String, String]>*/;
3974 var51 = ((val* (*)(val*))(var50->class->vft[COLOR_abstract_collection__Collection__iterator]))(var50) /* iterator on <var50:Collection[Object](HashMapKeys[String, String])>*/;
3975 for(;;) {
3976 var52 = ((short int (*)(val*))(var51->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var51) /* is_ok on <var51:Iterator[nullable Object]>*/;
3977 if(!var52) break;
3978 var53 = ((val* (*)(val*))(var51->class->vft[COLOR_abstract_collection__Iterator__item]))(var51) /* item on <var51:Iterator[nullable Object]>*/;
3979 var_i = var53;
3980 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var_i) /* write on <var_stream:OFStream>*/;
3981 if (varonce54) {
3982 var55 = varonce54;
3983 } else {
3984 var56 = ",\11\"";
3985 var57 = 3;
3986 var58 = string__NativeString__to_s_with_length(var56, var57);
3987 var55 = var58;
3988 varonce54 = var55;
3989 }
3990 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var55) /* write on <var_stream:OFStream>*/;
3991 var59 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__names]))(self) /* names on <self:AbstractCompiler>*/;
3992 var60 = ((val* (*)(val*, val*))(var59->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var59, var_i) /* [] on <var59:HashMap[String, String]>*/;
3993 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var60) /* write on <var_stream:OFStream>*/;
3994 if (varonce61) {
3995 var62 = varonce61;
3996 } else {
3997 var63 = "\"\n";
3998 var64 = 2;
3999 var65 = string__NativeString__to_s_with_length(var63, var64);
4000 var62 = var65;
4001 varonce61 = var62;
4002 }
4003 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var62) /* write on <var_stream:OFStream>*/;
4004 CONTINUE_label: (void)0;
4005 ((void (*)(val*))(var51->class->vft[COLOR_abstract_collection__Iterator__next]))(var51) /* next on <var51:Iterator[nullable Object]>*/;
4006 }
4007 BREAK_label: (void)0;
4008 if (varonce66) {
4009 var67 = varonce66;
4010 } else {
4011 var68 = "####\n";
4012 var69 = 5;
4013 var70 = string__NativeString__to_s_with_length(var68, var69);
4014 var67 = var70;
4015 varonce66 = var67;
4016 }
4017 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var67) /* write on <var_stream:OFStream>*/;
4018 if (varonce71) {
4019 var72 = varonce71;
4020 } else {
4021 var73 = "%%\n";
4022 var74 = 3;
4023 var75 = string__NativeString__to_s_with_length(var73, var74);
4024 var72 = var75;
4025 varonce71 = var72;
4026 }
4027 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var72) /* write on <var_stream:OFStream>*/;
4028 ((void (*)(val*))(var_stream->class->vft[COLOR_stream__IOS__close]))(var_stream) /* close on <var_stream:OFStream>*/;
4029 var76 = NEW_file__OFStream(&type_file__OFStream);
4030 var77 = NEW_array__Array(&type_array__Arraykernel__Object);
4031 var78 = 3;
4032 ((void (*)(val*, long))(var77->class->vft[COLOR_array__Array__with_capacity]))(var77, var78) /* with_capacity on <var77:Array[Object]>*/;
4033 var_79 = var77;
4034 if (varonce80) {
4035 var81 = varonce80;
4036 } else {
4037 var82 = "";
4038 var83 = 0;
4039 var84 = string__NativeString__to_s_with_length(var82, var83);
4040 var81 = var84;
4041 varonce80 = var81;
4042 }
4043 ((void (*)(val*, val*))(var_79->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_79, var81) /* add on <var_79:Array[Object]>*/;
4044 ((void (*)(val*, val*))(var_79->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_79, var_compile_dir) /* add on <var_79:Array[Object]>*/;
4045 if (varonce85) {
4046 var86 = varonce85;
4047 } else {
4048 var87 = "/c_functions_hash.h";
4049 var88 = 19;
4050 var89 = string__NativeString__to_s_with_length(var87, var88);
4051 var86 = var89;
4052 varonce85 = var86;
4053 }
4054 ((void (*)(val*, val*))(var_79->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_79, var86) /* add on <var_79:Array[Object]>*/;
4055 var90 = ((val* (*)(val*))(var_79->class->vft[COLOR_string__Object__to_s]))(var_79) /* to_s on <var_79:Array[Object]>*/;
4056 ((void (*)(val*, val*))(var76->class->vft[COLOR_file__OFStream__open]))(var76, var90) /* open on <var76:OFStream>*/;
4057 var_stream = var76;
4058 if (varonce91) {
4059 var92 = varonce91;
4060 } else {
4061 var93 = "typedef struct C_Nit_Names{char* name; char* nit_name;}C_Nit_Names;\n";
4062 var94 = 68;
4063 var95 = string__NativeString__to_s_with_length(var93, var94);
4064 var92 = var95;
4065 varonce91 = var92;
4066 }
4067 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var92) /* write on <var_stream:OFStream>*/;
4068 if (varonce96) {
4069 var97 = varonce96;
4070 } else {
4071 var98 = "const struct C_Nit_Names* get_nit_name(register const char *str, register unsigned int len);\n";
4072 var99 = 93;
4073 var100 = string__NativeString__to_s_with_length(var98, var99);
4074 var97 = var100;
4075 varonce96 = var97;
4076 }
4077 ((void (*)(val*, val*))(var_stream->class->vft[COLOR_stream__OStream__write]))(var_stream, var97) /* write on <var_stream:OFStream>*/;
4078 ((void (*)(val*))(var_stream->class->vft[COLOR_stream__IOS__close]))(var_stream) /* close on <var_stream:OFStream>*/;
4079 var101 = NEW_exec__Process(&type_exec__Process);
4080 if (varonce102) {
4081 var103 = varonce102;
4082 } else {
4083 var104 = "gperf";
4084 var105 = 5;
4085 var106 = string__NativeString__to_s_with_length(var104, var105);
4086 var103 = var106;
4087 varonce102 = var103;
4088 }
4089 var107 = NEW_array__Array(&type_array__Arraykernel__Object);
4090 var108 = 3;
4091 ((void (*)(val*, long))(var107->class->vft[COLOR_array__Array__with_capacity]))(var107, var108) /* with_capacity on <var107:Array[Object]>*/;
4092 var_109 = var107;
4093 if (varonce110) {
4094 var111 = varonce110;
4095 } else {
4096 var112 = "";
4097 var113 = 0;
4098 var114 = string__NativeString__to_s_with_length(var112, var113);
4099 var111 = var114;
4100 varonce110 = var111;
4101 }
4102 ((void (*)(val*, val*))(var_109->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_109, var111) /* add on <var_109:Array[Object]>*/;
4103 ((void (*)(val*, val*))(var_109->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_109, var_compile_dir) /* add on <var_109:Array[Object]>*/;
4104 if (varonce115) {
4105 var116 = varonce115;
4106 } else {
4107 var117 = "/C_fun_names";
4108 var118 = 12;
4109 var119 = string__NativeString__to_s_with_length(var117, var118);
4110 var116 = var119;
4111 varonce115 = var116;
4112 }
4113 ((void (*)(val*, val*))(var_109->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_109, var116) /* add on <var_109:Array[Object]>*/;
4114 var120 = ((val* (*)(val*))(var_109->class->vft[COLOR_string__Object__to_s]))(var_109) /* to_s on <var_109:Array[Object]>*/;
4115 if (varonce121) {
4116 var122 = varonce121;
4117 } else {
4118 var123 = "-t";
4119 var124 = 2;
4120 var125 = string__NativeString__to_s_with_length(var123, var124);
4121 var122 = var125;
4122 varonce121 = var122;
4123 }
4124 if (varonce126) {
4125 var127 = varonce126;
4126 } else {
4127 var128 = "-7";
4128 var129 = 2;
4129 var130 = string__NativeString__to_s_with_length(var128, var129);
4130 var127 = var130;
4131 varonce126 = var127;
4132 }
4133 var131 = NEW_array__Array(&type_array__Arraykernel__Object);
4134 var132 = 3;
4135 ((void (*)(val*, long))(var131->class->vft[COLOR_array__Array__with_capacity]))(var131, var132) /* with_capacity on <var131:Array[Object]>*/;
4136 var_133 = var131;
4137 if (varonce134) {
4138 var135 = varonce134;
4139 } else {
4140 var136 = "--output-file=";
4141 var137 = 14;
4142 var138 = string__NativeString__to_s_with_length(var136, var137);
4143 var135 = var138;
4144 varonce134 = var135;
4145 }
4146 ((void (*)(val*, val*))(var_133->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_133, var135) /* add on <var_133:Array[Object]>*/;
4147 ((void (*)(val*, val*))(var_133->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_133, var_compile_dir) /* add on <var_133:Array[Object]>*/;
4148 if (varonce139) {
4149 var140 = varonce139;
4150 } else {
4151 var141 = "/c_functions_hash.c";
4152 var142 = 19;
4153 var143 = string__NativeString__to_s_with_length(var141, var142);
4154 var140 = var143;
4155 varonce139 = var140;
4156 }
4157 ((void (*)(val*, val*))(var_133->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_133, var140) /* add on <var_133:Array[Object]>*/;
4158 var144 = ((val* (*)(val*))(var_133->class->vft[COLOR_string__Object__to_s]))(var_133) /* to_s on <var_133:Array[Object]>*/;
4159 if (varonce145) {
4160 var146 = varonce145;
4161 } else {
4162 var147 = "-C";
4163 var148 = 2;
4164 var149 = string__NativeString__to_s_with_length(var147, var148);
4165 var146 = var149;
4166 varonce145 = var146;
4167 }
4168 var150 = NEW_array__Array(&type_array__Arraystring__String);
4169 { /* var150 = array_instance Array[String] */
4170 var151 = 5;
4171 var152 = NEW_array__NativeArray(var151, &type_array__NativeArraystring__String);
4172 ((struct instance_array__NativeArray*)var152)->values[0] = (val*) var120;
4173 ((struct instance_array__NativeArray*)var152)->values[1] = (val*) var122;
4174 ((struct instance_array__NativeArray*)var152)->values[2] = (val*) var127;
4175 ((struct instance_array__NativeArray*)var152)->values[3] = (val*) var144;
4176 ((struct instance_array__NativeArray*)var152)->values[4] = (val*) var146;
4177 ((void (*)(val*, val*, long))(var150->class->vft[COLOR_array__Array__with_native]))(var150, var152, var151) /* with_native on <var150:Array[String]>*/;
4178 }
4179 ((void (*)(val*, val*, val*))(var101->class->vft[COLOR_exec__Process__init]))(var101, var103, var150) /* init on <var101:Process>*/;
4180 var_x = var101;
4181 ((void (*)(val*))(var_x->class->vft[COLOR_exec__Process__wait]))(var_x) /* wait on <var_x:Process>*/;
4182 var153 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__extern_bodies]))(self) /* extern_bodies on <self:AbstractCompiler>*/;
4183 var154 = NEW_abstract_compiler__ExternCFile(&type_abstract_compiler__ExternCFile);
4184 var155 = NEW_array__Array(&type_array__Arraykernel__Object);
4185 var156 = 3;
4186 ((void (*)(val*, long))(var155->class->vft[COLOR_array__Array__with_capacity]))(var155, var156) /* with_capacity on <var155:Array[Object]>*/;
4187 var_157 = var155;
4188 if (varonce158) {
4189 var159 = varonce158;
4190 } else {
4191 var160 = "";
4192 var161 = 0;
4193 var162 = string__NativeString__to_s_with_length(var160, var161);
4194 var159 = var162;
4195 varonce158 = var159;
4196 }
4197 ((void (*)(val*, val*))(var_157->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_157, var159) /* add on <var_157:Array[Object]>*/;
4198 ((void (*)(val*, val*))(var_157->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_157, var_compile_dir) /* add on <var_157:Array[Object]>*/;
4199 if (varonce163) {
4200 var164 = varonce163;
4201 } else {
4202 var165 = "/c_functions_hash.c";
4203 var166 = 19;
4204 var167 = string__NativeString__to_s_with_length(var165, var166);
4205 var164 = var167;
4206 varonce163 = var164;
4207 }
4208 ((void (*)(val*, val*))(var_157->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_157, var164) /* add on <var_157:Array[Object]>*/;
4209 var168 = ((val* (*)(val*))(var_157->class->vft[COLOR_string__Object__to_s]))(var_157) /* to_s on <var_157:Array[Object]>*/;
4210 if (varonce169) {
4211 var170 = varonce169;
4212 } else {
4213 var171 = "";
4214 var172 = 0;
4215 var173 = string__NativeString__to_s_with_length(var171, var172);
4216 var170 = var173;
4217 varonce169 = var170;
4218 }
4219 ((void (*)(val*, val*, val*))(var154->class->vft[COLOR_abstract_compiler__ExternCFile__init]))(var154, var168, var170) /* init on <var154:ExternCFile>*/;
4220 ((void (*)(val*, val*))(var153->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var153, var154) /* add on <var153:Array[ExternCFile]>*/;
4221 RET_LABEL:;
4222 }
4223 /* method abstract_compiler#AbstractCompiler#build_c_to_nit_bindings for (self: Object) */
4224 void VIRTUAL_abstract_compiler__AbstractCompiler__build_c_to_nit_bindings(val* self) {
4225 abstract_compiler__AbstractCompiler__build_c_to_nit_bindings(self);
4226 RET_LABEL:;
4227 }
4228 /* method abstract_compiler#AbstractCompiler#compile_header for (self: AbstractCompiler) */
4229 void abstract_compiler__AbstractCompiler__compile_header(val* self) {
4230 val* var /* : CodeWriter */;
4231 val* var_v /* var v: CodeWriter */;
4232 val* var1 /* : ModelBuilder */;
4233 val* var2 /* : ToolContext */;
4234 val* var_toolctx /* var toolctx: ToolContext */;
4235 val* var3 /* : CodeWriter */;
4236 static val* varonce;
4237 val* var4 /* : String */;
4238 char* var5 /* : NativeString */;
4239 long var6 /* : Int */;
4240 val* var7 /* : String */;
4241 val* var8 /* : CodeWriter */;
4242 static val* varonce9;
4243 val* var10 /* : String */;
4244 char* var11 /* : NativeString */;
4245 long var12 /* : Int */;
4246 val* var13 /* : String */;
4247 val* var14 /* : CodeWriter */;
4248 static val* varonce15;
4249 val* var16 /* : String */;
4250 char* var17 /* : NativeString */;
4251 long var18 /* : Int */;
4252 val* var19 /* : String */;
4253 val* var20 /* : CodeWriter */;
4254 static val* varonce21;
4255 val* var22 /* : String */;
4256 char* var23 /* : NativeString */;
4257 long var24 /* : Int */;
4258 val* var25 /* : String */;
4259 val* var26 /* : CodeWriter */;
4260 static val* varonce27;
4261 val* var28 /* : String */;
4262 char* var29 /* : NativeString */;
4263 long var30 /* : Int */;
4264 val* var31 /* : String */;
4265 val* var32 /* : CodeWriter */;
4266 static val* varonce33;
4267 val* var34 /* : String */;
4268 char* var35 /* : NativeString */;
4269 long var36 /* : Int */;
4270 val* var37 /* : String */;
4271 val* var38 /* : CodeWriter */;
4272 static val* varonce39;
4273 val* var40 /* : String */;
4274 char* var41 /* : NativeString */;
4275 long var42 /* : Int */;
4276 val* var43 /* : String */;
4277 val* var44 /* : CodeWriter */;
4278 static val* varonce45;
4279 val* var46 /* : String */;
4280 char* var47 /* : NativeString */;
4281 long var48 /* : Int */;
4282 val* var49 /* : String */;
4283 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
4284 var_v = var;
4285 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
4286 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var1) /* toolcontext on <var1:ModelBuilder>*/;
4287 var_toolctx = var2;
4288 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
4289 if (varonce) {
4290 var4 = varonce;
4291 } else {
4292 var5 = "#include <stdlib.h>";
4293 var6 = 19;
4294 var7 = string__NativeString__to_s_with_length(var5, var6);
4295 var4 = var7;
4296 varonce = var4;
4297 }
4298 ((void (*)(val*, val*))(var3->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var3, var4) /* add_decl on <var3:CodeWriter>*/;
4299 var8 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
4300 if (varonce9) {
4301 var10 = varonce9;
4302 } else {
4303 var11 = "#include <stdio.h>";
4304 var12 = 18;
4305 var13 = string__NativeString__to_s_with_length(var11, var12);
4306 var10 = var13;
4307 varonce9 = var10;
4308 }
4309 ((void (*)(val*, val*))(var8->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var8, var10) /* add_decl on <var8:CodeWriter>*/;
4310 var14 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
4311 if (varonce15) {
4312 var16 = varonce15;
4313 } else {
4314 var17 = "#include <string.h>";
4315 var18 = 19;
4316 var19 = string__NativeString__to_s_with_length(var17, var18);
4317 var16 = var19;
4318 varonce15 = var16;
4319 }
4320 ((void (*)(val*, val*))(var14->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var14, var16) /* add_decl on <var14:CodeWriter>*/;
4321 var20 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
4322 if (varonce21) {
4323 var22 = varonce21;
4324 } else {
4325 var23 = "#include <gc_chooser.h>";
4326 var24 = 23;
4327 var25 = string__NativeString__to_s_with_length(var23, var24);
4328 var22 = var25;
4329 varonce21 = var22;
4330 }
4331 ((void (*)(val*, val*))(var20->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var20, var22) /* add_decl on <var20:CodeWriter>*/;
4332 ((void (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__compile_header_structs]))(self) /* compile_header_structs on <self:AbstractCompiler>*/;
4333 var26 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
4334 if (varonce27) {
4335 var28 = varonce27;
4336 } else {
4337 var29 = "void show_backtrace(int);";
4338 var30 = 25;
4339 var31 = string__NativeString__to_s_with_length(var29, var30);
4340 var28 = var31;
4341 varonce27 = var28;
4342 }
4343 ((void (*)(val*, val*))(var26->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var26, var28) /* add_decl on <var26:CodeWriter>*/;
4344 var32 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
4345 if (varonce33) {
4346 var34 = varonce33;
4347 } else {
4348 var35 = "extern int glob_argc;";
4349 var36 = 21;
4350 var37 = string__NativeString__to_s_with_length(var35, var36);
4351 var34 = var37;
4352 varonce33 = var34;
4353 }
4354 ((void (*)(val*, val*))(var32->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var32, var34) /* add_decl on <var32:CodeWriter>*/;
4355 var38 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
4356 if (varonce39) {
4357 var40 = varonce39;
4358 } else {
4359 var41 = "extern char **glob_argv;";
4360 var42 = 24;
4361 var43 = string__NativeString__to_s_with_length(var41, var42);
4362 var40 = var43;
4363 varonce39 = var40;
4364 }
4365 ((void (*)(val*, val*))(var38->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var38, var40) /* add_decl on <var38:CodeWriter>*/;
4366 var44 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
4367 if (varonce45) {
4368 var46 = varonce45;
4369 } else {
4370 var47 = "extern val *glob_sys;";
4371 var48 = 21;
4372 var49 = string__NativeString__to_s_with_length(var47, var48);
4373 var46 = var49;
4374 varonce45 = var46;
4375 }
4376 ((void (*)(val*, val*))(var44->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var44, var46) /* add_decl on <var44:CodeWriter>*/;
4377 RET_LABEL:;
4378 }
4379 /* method abstract_compiler#AbstractCompiler#compile_header for (self: Object) */
4380 void VIRTUAL_abstract_compiler__AbstractCompiler__compile_header(val* self) {
4381 abstract_compiler__AbstractCompiler__compile_header(self);
4382 RET_LABEL:;
4383 }
4384 /* method abstract_compiler#AbstractCompiler#compile_header_structs for (self: AbstractCompiler) */
4385 void abstract_compiler__AbstractCompiler__compile_header_structs(val* self) {
4386 const char* var_class_name;
4387 var_class_name = self == NULL ? "null" : self->type->name;
4388 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "compile_header_structs", var_class_name);
4389 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 385);
4390 show_backtrace(1);
4391 RET_LABEL:;
4392 }
4393 /* method abstract_compiler#AbstractCompiler#compile_header_structs for (self: Object) */
4394 void VIRTUAL_abstract_compiler__AbstractCompiler__compile_header_structs(val* self) {
4395 abstract_compiler__AbstractCompiler__compile_header_structs(self);
4396 RET_LABEL:;
4397 }
4398 /* method abstract_compiler#AbstractCompiler#compile_main_function for (self: AbstractCompiler) */
4399 void abstract_compiler__AbstractCompiler__compile_main_function(val* self) {
4400 val* var /* : AbstractCompilerVisitor */;
4401 val* var_v /* var v: AbstractCompilerVisitor */;
4402 val* var1 /* : ModelBuilder */;
4403 val* var2 /* : ToolContext */;
4404 val* var3 /* : OptionBool */;
4405 val* var4 /* : nullable Object */;
4406 short int var5 /* : Bool */;
4407 static val* varonce;
4408 val* var6 /* : String */;
4409 char* var7 /* : NativeString */;
4410 long var8 /* : Int */;
4411 val* var9 /* : String */;
4412 static val* varonce10;
4413 val* var11 /* : String */;
4414 char* var12 /* : NativeString */;
4415 long var13 /* : Int */;
4416 val* var14 /* : String */;
4417 val* var15 /* : ModelBuilder */;
4418 val* var16 /* : ToolContext */;
4419 val* var17 /* : OptionBool */;
4420 val* var18 /* : nullable Object */;
4421 short int var19 /* : Bool */;
4422 short int var20 /* : Bool */;
4423 static val* varonce21;
4424 val* var22 /* : String */;
4425 char* var23 /* : NativeString */;
4426 long var24 /* : Int */;
4427 val* var25 /* : String */;
4428 static val* varonce26;
4429 val* var27 /* : String */;
4430 char* var28 /* : NativeString */;
4431 long var29 /* : Int */;
4432 val* var30 /* : String */;
4433 static val* varonce31;
4434 val* var32 /* : String */;
4435 char* var33 /* : NativeString */;
4436 long var34 /* : Int */;
4437 val* var35 /* : String */;
4438 static val* varonce36;
4439 val* var37 /* : String */;
4440 char* var38 /* : NativeString */;
4441 long var39 /* : Int */;
4442 val* var40 /* : String */;
4443 static val* varonce41;
4444 val* var42 /* : String */;
4445 char* var43 /* : NativeString */;
4446 long var44 /* : Int */;
4447 val* var45 /* : String */;
4448 val* var46 /* : ModelBuilder */;
4449 val* var47 /* : ToolContext */;
4450 val* var48 /* : OptionBool */;
4451 val* var49 /* : nullable Object */;
4452 short int var50 /* : Bool */;
4453 val* var51 /* : Array[String] */;
4454 val* var52 /* : Iterator[nullable Object] */;
4455 short int var53 /* : Bool */;
4456 val* var54 /* : nullable Object */;
4457 val* var_tag /* var tag: String */;
4458 static val* varonce55;
4459 val* var56 /* : String */;
4460 char* var57 /* : NativeString */;
4461 long var58 /* : Int */;
4462 val* var59 /* : String */;
4463 static val* varonce60;
4464 val* var61 /* : String */;
4465 char* var62 /* : NativeString */;
4466 long var63 /* : Int */;
4467 val* var64 /* : String */;
4468 val* var65 /* : Array[Object] */;
4469 long var66 /* : Int */;
4470 val* var67 /* : NativeArray[Object] */;
4471 val* var68 /* : String */;
4472 static val* varonce69;
4473 val* var70 /* : String */;
4474 char* var71 /* : NativeString */;
4475 long var72 /* : Int */;
4476 val* var73 /* : String */;
4477 static val* varonce74;
4478 val* var75 /* : String */;
4479 char* var76 /* : NativeString */;
4480 long var77 /* : Int */;
4481 val* var78 /* : String */;
4482 val* var79 /* : Array[Object] */;
4483 long var80 /* : Int */;
4484 val* var81 /* : NativeArray[Object] */;
4485 val* var82 /* : String */;
4486 static val* varonce83;
4487 val* var84 /* : String */;
4488 char* var85 /* : NativeString */;
4489 long var86 /* : Int */;
4490 val* var87 /* : String */;
4491 static val* varonce88;
4492 val* var89 /* : String */;
4493 char* var90 /* : NativeString */;
4494 long var91 /* : Int */;
4495 val* var92 /* : String */;
4496 val* var93 /* : Array[Object] */;
4497 long var94 /* : Int */;
4498 val* var95 /* : NativeArray[Object] */;
4499 val* var96 /* : String */;
4500 val* var97 /* : AbstractCompiler */;
4501 val* var98 /* : CodeWriter */;
4502 static val* varonce99;
4503 val* var100 /* : String */;
4504 char* var101 /* : NativeString */;
4505 long var102 /* : Int */;
4506 val* var103 /* : String */;
4507 static val* varonce104;
4508 val* var105 /* : String */;
4509 char* var106 /* : NativeString */;
4510 long var107 /* : Int */;
4511 val* var108 /* : String */;
4512 val* var109 /* : Array[Object] */;
4513 long var110 /* : Int */;
4514 val* var111 /* : NativeArray[Object] */;
4515 val* var112 /* : String */;
4516 val* var113 /* : AbstractCompiler */;
4517 val* var114 /* : CodeWriter */;
4518 static val* varonce115;
4519 val* var116 /* : String */;
4520 char* var117 /* : NativeString */;
4521 long var118 /* : Int */;
4522 val* var119 /* : String */;
4523 static val* varonce120;
4524 val* var121 /* : String */;
4525 char* var122 /* : NativeString */;
4526 long var123 /* : Int */;
4527 val* var124 /* : String */;
4528 val* var125 /* : Array[Object] */;
4529 long var126 /* : Int */;
4530 val* var127 /* : NativeArray[Object] */;
4531 val* var128 /* : String */;
4532 val* var129 /* : AbstractCompiler */;
4533 val* var130 /* : CodeWriter */;
4534 static val* varonce131;
4535 val* var132 /* : String */;
4536 char* var133 /* : NativeString */;
4537 long var134 /* : Int */;
4538 val* var135 /* : String */;
4539 static val* varonce136;
4540 val* var137 /* : String */;
4541 char* var138 /* : NativeString */;
4542 long var139 /* : Int */;
4543 val* var140 /* : String */;
4544 val* var141 /* : Array[Object] */;
4545 long var142 /* : Int */;
4546 val* var143 /* : NativeArray[Object] */;
4547 val* var144 /* : String */;
4548 static val* varonce145;
4549 val* var146 /* : String */;
4550 char* var147 /* : NativeString */;
4551 long var148 /* : Int */;
4552 val* var149 /* : String */;
4553 val* var150 /* : ModelBuilder */;
4554 val* var151 /* : ToolContext */;
4555 val* var152 /* : OptionBool */;
4556 val* var153 /* : nullable Object */;
4557 short int var154 /* : Bool */;
4558 short int var155 /* : Bool */;
4559 static val* varonce156;
4560 val* var157 /* : String */;
4561 char* var158 /* : NativeString */;
4562 long var159 /* : Int */;
4563 val* var160 /* : String */;
4564 static val* varonce161;
4565 val* var162 /* : String */;
4566 char* var163 /* : NativeString */;
4567 long var164 /* : Int */;
4568 val* var165 /* : String */;
4569 static val* varonce166;
4570 val* var167 /* : String */;
4571 char* var168 /* : NativeString */;
4572 long var169 /* : Int */;
4573 val* var170 /* : String */;
4574 static val* varonce171;
4575 val* var172 /* : String */;
4576 char* var173 /* : NativeString */;
4577 long var174 /* : Int */;
4578 val* var175 /* : String */;
4579 static val* varonce176;
4580 val* var177 /* : String */;
4581 char* var178 /* : NativeString */;
4582 long var179 /* : Int */;
4583 val* var180 /* : String */;
4584 static val* varonce181;
4585 val* var182 /* : String */;
4586 char* var183 /* : NativeString */;
4587 long var184 /* : Int */;
4588 val* var185 /* : String */;
4589 static val* varonce186;
4590 val* var187 /* : String */;
4591 char* var188 /* : NativeString */;
4592 long var189 /* : Int */;
4593 val* var190 /* : String */;
4594 static val* varonce191;
4595 val* var192 /* : String */;
4596 char* var193 /* : NativeString */;
4597 long var194 /* : Int */;
4598 val* var195 /* : String */;
4599 static val* varonce196;
4600 val* var197 /* : String */;
4601 char* var198 /* : NativeString */;
4602 long var199 /* : Int */;
4603 val* var200 /* : String */;
4604 static val* varonce201;
4605 val* var202 /* : String */;
4606 char* var203 /* : NativeString */;
4607 long var204 /* : Int */;
4608 val* var205 /* : String */;
4609 static val* varonce206;
4610 val* var207 /* : String */;
4611 char* var208 /* : NativeString */;
4612 long var209 /* : Int */;
4613 val* var210 /* : String */;
4614 static val* varonce211;
4615 val* var212 /* : String */;
4616 char* var213 /* : NativeString */;
4617 long var214 /* : Int */;
4618 val* var215 /* : String */;
4619 static val* varonce216;
4620 val* var217 /* : String */;
4621 char* var218 /* : NativeString */;
4622 long var219 /* : Int */;
4623 val* var220 /* : String */;
4624 val* var221 /* : ModelBuilder */;
4625 val* var222 /* : ToolContext */;
4626 val* var223 /* : OptionBool */;
4627 val* var224 /* : nullable Object */;
4628 short int var225 /* : Bool */;
4629 static val* varonce226;
4630 val* var227 /* : String */;
4631 char* var228 /* : NativeString */;
4632 long var229 /* : Int */;
4633 val* var230 /* : String */;
4634 static val* varonce231;
4635 val* var232 /* : String */;
4636 char* var233 /* : NativeString */;
4637 long var234 /* : Int */;
4638 val* var235 /* : String */;
4639 static val* varonce236;
4640 val* var237 /* : String */;
4641 char* var238 /* : NativeString */;
4642 long var239 /* : Int */;
4643 val* var240 /* : String */;
4644 static val* varonce241;
4645 val* var242 /* : String */;
4646 char* var243 /* : NativeString */;
4647 long var244 /* : Int */;
4648 val* var245 /* : String */;
4649 static val* varonce246;
4650 val* var247 /* : String */;
4651 char* var248 /* : NativeString */;
4652 long var249 /* : Int */;
4653 val* var250 /* : String */;
4654 static val* varonce251;
4655 val* var252 /* : String */;
4656 char* var253 /* : NativeString */;
4657 long var254 /* : Int */;
4658 val* var255 /* : String */;
4659 static val* varonce256;
4660 val* var257 /* : String */;
4661 char* var258 /* : NativeString */;
4662 long var259 /* : Int */;
4663 val* var260 /* : String */;
4664 static val* varonce261;
4665 val* var262 /* : String */;
4666 char* var263 /* : NativeString */;
4667 long var264 /* : Int */;
4668 val* var265 /* : String */;
4669 static val* varonce266;
4670 val* var267 /* : String */;
4671 char* var268 /* : NativeString */;
4672 long var269 /* : Int */;
4673 val* var270 /* : String */;
4674 static val* varonce271;
4675 val* var272 /* : String */;
4676 char* var273 /* : NativeString */;
4677 long var274 /* : Int */;
4678 val* var275 /* : String */;
4679 static val* varonce276;
4680 val* var277 /* : String */;
4681 char* var278 /* : NativeString */;
4682 long var279 /* : Int */;
4683 val* var280 /* : String */;
4684 static val* varonce281;
4685 val* var282 /* : String */;
4686 char* var283 /* : NativeString */;
4687 long var284 /* : Int */;
4688 val* var285 /* : String */;
4689 static val* varonce286;
4690 val* var287 /* : String */;
4691 char* var288 /* : NativeString */;
4692 long var289 /* : Int */;
4693 val* var290 /* : String */;
4694 static val* varonce291;
4695 val* var292 /* : String */;
4696 char* var293 /* : NativeString */;
4697 long var294 /* : Int */;
4698 val* var295 /* : String */;
4699 static val* varonce296;
4700 val* var297 /* : String */;
4701 char* var298 /* : NativeString */;
4702 long var299 /* : Int */;
4703 val* var300 /* : String */;
4704 static val* varonce301;
4705 val* var302 /* : String */;
4706 char* var303 /* : NativeString */;
4707 long var304 /* : Int */;
4708 val* var305 /* : String */;
4709 static val* varonce306;
4710 val* var307 /* : String */;
4711 char* var308 /* : NativeString */;
4712 long var309 /* : Int */;
4713 val* var310 /* : String */;
4714 static val* varonce311;
4715 val* var312 /* : String */;
4716 char* var313 /* : NativeString */;
4717 long var314 /* : Int */;
4718 val* var315 /* : String */;
4719 static val* varonce316;
4720 val* var317 /* : String */;
4721 char* var318 /* : NativeString */;
4722 long var319 /* : Int */;
4723 val* var320 /* : String */;
4724 static val* varonce321;
4725 val* var322 /* : String */;
4726 char* var323 /* : NativeString */;
4727 long var324 /* : Int */;
4728 val* var325 /* : String */;
4729 static val* varonce326;
4730 val* var327 /* : String */;
4731 char* var328 /* : NativeString */;
4732 long var329 /* : Int */;
4733 val* var330 /* : String */;
4734 static val* varonce331;
4735 val* var332 /* : String */;
4736 char* var333 /* : NativeString */;
4737 long var334 /* : Int */;
4738 val* var335 /* : String */;
4739 val* var336 /* : MModule */;
4740 val* var337 /* : nullable MClassType */;
4741 val* var_main_type /* var main_type: nullable MClassType */;
4742 val* var338 /* : null */;
4743 short int var339 /* : Bool */;
4744 val* var340 /* : AbstractCompiler */;
4745 val* var341 /* : MModule */;
4746 val* var_mainmodule /* var mainmodule: MModule */;
4747 val* var342 /* : RuntimeVariable */;
4748 val* var_glob_sys /* var glob_sys: RuntimeVariable */;
4749 static val* varonce343;
4750 val* var344 /* : String */;
4751 char* var345 /* : NativeString */;
4752 long var346 /* : Int */;
4753 val* var347 /* : String */;
4754 static val* varonce348;
4755 val* var349 /* : String */;
4756 char* var350 /* : NativeString */;
4757 long var351 /* : Int */;
4758 val* var352 /* : String */;
4759 val* var353 /* : Array[Object] */;
4760 long var354 /* : Int */;
4761 val* var355 /* : NativeArray[Object] */;
4762 val* var356 /* : String */;
4763 static val* varonce357;
4764 val* var358 /* : String */;
4765 char* var359 /* : NativeString */;
4766 long var360 /* : Int */;
4767 val* var361 /* : String */;
4768 val* var362 /* : MClass */;
4769 val* var363 /* : nullable MMethod */;
4770 val* var_main_init /* var main_init: nullable MMethod */;
4771 val* var364 /* : null */;
4772 short int var365 /* : Bool */;
4773 val* var366 /* : Array[RuntimeVariable] */;
4774 long var367 /* : Int */;
4775 val* var368 /* : NativeArray[RuntimeVariable] */;
4776 val* var369 /* : nullable RuntimeVariable */;
4777 static val* varonce370;
4778 val* var371 /* : String */;
4779 char* var372 /* : NativeString */;
4780 long var373 /* : Int */;
4781 val* var374 /* : String */;
4782 val* var375 /* : MClass */;
4783 val* var376 /* : nullable MMethod */;
4784 val* var_main_method /* var main_method: nullable MMethod */;
4785 val* var377 /* : null */;
4786 short int var378 /* : Bool */;
4787 val* var379 /* : Array[RuntimeVariable] */;
4788 long var380 /* : Int */;
4789 val* var381 /* : NativeArray[RuntimeVariable] */;
4790 val* var382 /* : nullable RuntimeVariable */;
4791 val* var383 /* : ModelBuilder */;
4792 val* var384 /* : ToolContext */;
4793 val* var385 /* : OptionBool */;
4794 val* var386 /* : nullable Object */;
4795 short int var387 /* : Bool */;
4796 static val* varonce388;
4797 val* var389 /* : String */;
4798 char* var390 /* : NativeString */;
4799 long var391 /* : Int */;
4800 val* var392 /* : String */;
4801 static val* varonce393;
4802 val* var394 /* : String */;
4803 char* var395 /* : NativeString */;
4804 long var396 /* : Int */;
4805 val* var397 /* : String */;
4806 static val* varonce398;
4807 val* var399 /* : String */;
4808 char* var400 /* : NativeString */;
4809 long var401 /* : Int */;
4810 val* var402 /* : String */;
4811 static val* varonce403;
4812 val* var404 /* : String */;
4813 char* var405 /* : NativeString */;
4814 long var406 /* : Int */;
4815 val* var407 /* : String */;
4816 val* var408 /* : Array[String] */;
4817 val* var409 /* : Iterator[nullable Object] */;
4818 short int var410 /* : Bool */;
4819 val* var411 /* : nullable Object */;
4820 val* var_tag412 /* var tag: String */;
4821 static val* varonce413;
4822 val* var414 /* : String */;
4823 char* var415 /* : NativeString */;
4824 long var416 /* : Int */;
4825 val* var417 /* : String */;
4826 static val* varonce418;
4827 val* var419 /* : String */;
4828 char* var420 /* : NativeString */;
4829 long var421 /* : Int */;
4830 val* var422 /* : String */;
4831 val* var423 /* : Array[Object] */;
4832 long var424 /* : Int */;
4833 val* var425 /* : NativeArray[Object] */;
4834 val* var426 /* : String */;
4835 static val* varonce427;
4836 val* var428 /* : String */;
4837 char* var429 /* : NativeString */;
4838 long var430 /* : Int */;
4839 val* var431 /* : String */;
4840 static val* varonce432;
4841 val* var433 /* : String */;
4842 char* var434 /* : NativeString */;
4843 long var435 /* : Int */;
4844 val* var436 /* : String */;
4845 static val* varonce437;
4846 val* var438 /* : String */;
4847 char* var439 /* : NativeString */;
4848 long var440 /* : Int */;
4849 val* var441 /* : String */;
4850 static val* varonce442;
4851 val* var443 /* : String */;
4852 char* var444 /* : NativeString */;
4853 long var445 /* : Int */;
4854 val* var446 /* : String */;
4855 static val* varonce447;
4856 val* var448 /* : String */;
4857 char* var449 /* : NativeString */;
4858 long var450 /* : Int */;
4859 val* var451 /* : String */;
4860 val* var452 /* : Array[Object] */;
4861 long var453 /* : Int */;
4862 val* var454 /* : NativeArray[Object] */;
4863 val* var455 /* : String */;
4864 static val* varonce456;
4865 val* var457 /* : String */;
4866 char* var458 /* : NativeString */;
4867 long var459 /* : Int */;
4868 val* var460 /* : String */;
4869 static val* varonce461;
4870 val* var462 /* : String */;
4871 char* var463 /* : NativeString */;
4872 long var464 /* : Int */;
4873 val* var465 /* : String */;
4874 val* var466 /* : Array[Object] */;
4875 long var467 /* : Int */;
4876 val* var468 /* : NativeArray[Object] */;
4877 val* var469 /* : String */;
4878 static val* varonce470;
4879 val* var471 /* : String */;
4880 char* var472 /* : NativeString */;
4881 long var473 /* : Int */;
4882 val* var474 /* : String */;
4883 static val* varonce475;
4884 val* var476 /* : String */;
4885 char* var477 /* : NativeString */;
4886 long var478 /* : Int */;
4887 val* var479 /* : String */;
4888 val* var480 /* : Array[Object] */;
4889 long var481 /* : Int */;
4890 val* var482 /* : NativeArray[Object] */;
4891 val* var483 /* : String */;
4892 static val* varonce484;
4893 val* var485 /* : String */;
4894 char* var486 /* : NativeString */;
4895 long var487 /* : Int */;
4896 val* var488 /* : String */;
4897 static val* varonce489;
4898 val* var490 /* : String */;
4899 char* var491 /* : NativeString */;
4900 long var492 /* : Int */;
4901 val* var493 /* : String */;
4902 val* var494 /* : Array[Object] */;
4903 long var495 /* : Int */;
4904 val* var496 /* : NativeArray[Object] */;
4905 val* var497 /* : String */;
4906 static val* varonce498;
4907 val* var499 /* : String */;
4908 char* var500 /* : NativeString */;
4909 long var501 /* : Int */;
4910 val* var502 /* : String */;
4911 static val* varonce503;
4912 val* var504 /* : String */;
4913 char* var505 /* : NativeString */;
4914 long var506 /* : Int */;
4915 val* var507 /* : String */;
4916 val* var508 /* : Array[Object] */;
4917 long var509 /* : Int */;
4918 val* var510 /* : NativeArray[Object] */;
4919 val* var511 /* : String */;
4920 static val* varonce513;
4921 val* var514 /* : String */;
4922 char* var515 /* : NativeString */;
4923 long var516 /* : Int */;
4924 val* var517 /* : String */;
4925 static val* varonce518;
4926 val* var519 /* : String */;
4927 char* var520 /* : NativeString */;
4928 long var521 /* : Int */;
4929 val* var522 /* : String */;
4930 val* var523 /* : Array[String] */;
4931 val* var524 /* : Array[nullable Object] */;
4932 val* var_tags /* var tags: Array[String] */;
4933 static val* varonce525;
4934 val* var526 /* : String */;
4935 char* var527 /* : NativeString */;
4936 long var528 /* : Int */;
4937 val* var529 /* : String */;
4938 val* var530 /* : Iterator[nullable Object] */;
4939 short int var531 /* : Bool */;
4940 val* var532 /* : nullable Object */;
4941 val* var_tag533 /* var tag: String */;
4942 static val* varonce534;
4943 val* var535 /* : String */;
4944 char* var536 /* : NativeString */;
4945 long var537 /* : Int */;
4946 val* var538 /* : String */;
4947 static val* varonce539;
4948 val* var540 /* : String */;
4949 char* var541 /* : NativeString */;
4950 long var542 /* : Int */;
4951 val* var543 /* : String */;
4952 val* var544 /* : Array[Object] */;
4953 long var545 /* : Int */;
4954 val* var546 /* : NativeArray[Object] */;
4955 val* var547 /* : String */;
4956 static val* varonce548;
4957 val* var549 /* : String */;
4958 char* var550 /* : NativeString */;
4959 long var551 /* : Int */;
4960 val* var552 /* : String */;
4961 static val* varonce553;
4962 val* var554 /* : String */;
4963 char* var555 /* : NativeString */;
4964 long var556 /* : Int */;
4965 val* var557 /* : String */;
4966 static val* varonce558;
4967 val* var559 /* : String */;
4968 char* var560 /* : NativeString */;
4969 long var561 /* : Int */;
4970 val* var562 /* : String */;
4971 val* var563 /* : Array[Object] */;
4972 long var564 /* : Int */;
4973 val* var565 /* : NativeArray[Object] */;
4974 val* var566 /* : String */;
4975 static val* varonce567;
4976 val* var568 /* : String */;
4977 char* var569 /* : NativeString */;
4978 long var570 /* : Int */;
4979 val* var571 /* : String */;
4980 static val* varonce572;
4981 val* var573 /* : String */;
4982 char* var574 /* : NativeString */;
4983 long var575 /* : Int */;
4984 val* var576 /* : String */;
4985 static val* varonce577;
4986 val* var578 /* : String */;
4987 char* var579 /* : NativeString */;
4988 long var580 /* : Int */;
4989 val* var581 /* : String */;
4990 val* var582 /* : Array[Object] */;
4991 long var583 /* : Int */;
4992 val* var584 /* : NativeArray[Object] */;
4993 val* var585 /* : String */;
4994 static val* varonce586;
4995 val* var587 /* : String */;
4996 char* var588 /* : NativeString */;
4997 long var589 /* : Int */;
4998 val* var590 /* : String */;
4999 static val* varonce591;
5000 val* var592 /* : String */;
5001 char* var593 /* : NativeString */;
5002 long var594 /* : Int */;
5003 val* var595 /* : String */;
5004 static val* varonce596;
5005 val* var597 /* : String */;
5006 char* var598 /* : NativeString */;
5007 long var599 /* : Int */;
5008 val* var600 /* : String */;
5009 val* var601 /* : Array[Object] */;
5010 long var602 /* : Int */;
5011 val* var603 /* : NativeArray[Object] */;
5012 val* var604 /* : String */;
5013 static val* varonce605;
5014 val* var606 /* : String */;
5015 char* var607 /* : NativeString */;
5016 long var608 /* : Int */;
5017 val* var609 /* : String */;
5018 static val* varonce610;
5019 val* var611 /* : String */;
5020 char* var612 /* : NativeString */;
5021 long var613 /* : Int */;
5022 val* var614 /* : String */;
5023 static val* varonce615;
5024 val* var616 /* : String */;
5025 char* var617 /* : NativeString */;
5026 long var618 /* : Int */;
5027 val* var619 /* : String */;
5028 val* var620 /* : Array[Object] */;
5029 long var621 /* : Int */;
5030 val* var622 /* : NativeArray[Object] */;
5031 val* var623 /* : String */;
5032 static val* varonce625;
5033 val* var626 /* : String */;
5034 char* var627 /* : NativeString */;
5035 long var628 /* : Int */;
5036 val* var629 /* : String */;
5037 static val* varonce630;
5038 val* var631 /* : String */;
5039 char* var632 /* : NativeString */;
5040 long var633 /* : Int */;
5041 val* var634 /* : String */;
5042 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_visitor]))(self) /* new_visitor on <self:AbstractCompiler>*/;
5043 var_v = var;
5044 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
5045 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var1) /* toolcontext on <var1:ModelBuilder>*/;
5046 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__ToolContext__opt_stacktrace]))(var2) /* opt_stacktrace on <var2:ToolContext>*/;
5047 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_opts__Option__value]))(var3) /* value on <var3:OptionBool>*/;
5048 var5 = ((struct instance_kernel__Bool*)var4)->value; /* autounbox from nullable Object to Bool */;
5049 if (var5){
5050 if (varonce) {
5051 var6 = varonce;
5052 } else {
5053 var7 = "#include \"c_functions_hash.h\"";
5054 var8 = 29;
5055 var9 = string__NativeString__to_s_with_length(var7, var8);
5056 var6 = var9;
5057 varonce = var6;
5058 }
5059 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var6) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5060 } else {
5061 }
5062 if (varonce10) {
5063 var11 = varonce10;
5064 } else {
5065 var12 = "#include <signal.h>";
5066 var13 = 19;
5067 var14 = string__NativeString__to_s_with_length(var12, var13);
5068 var11 = var14;
5069 varonce10 = var11;
5070 }
5071 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var11) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5072 var15 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
5073 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var15) /* toolcontext on <var15:ModelBuilder>*/;
5074 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_stacktrace]))(var16) /* opt_no_stacktrace on <var16:ToolContext>*/;
5075 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_opts__Option__value]))(var17) /* value on <var17:OptionBool>*/;
5076 var19 = ((struct instance_kernel__Bool*)var18)->value; /* autounbox from nullable Object to Bool */;
5077 var20 = !var19;
5078 if (var20){
5079 if (varonce21) {
5080 var22 = varonce21;
5081 } else {
5082 var23 = "#define UNW_LOCAL_ONLY";
5083 var24 = 22;
5084 var25 = string__NativeString__to_s_with_length(var23, var24);
5085 var22 = var25;
5086 varonce21 = var22;
5087 }
5088 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var22) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5089 if (varonce26) {
5090 var27 = varonce26;
5091 } else {
5092 var28 = "#include <libunwind.h>";
5093 var29 = 22;
5094 var30 = string__NativeString__to_s_with_length(var28, var29);
5095 var27 = var30;
5096 varonce26 = var27;
5097 }
5098 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var27) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5099 } else {
5100 }
5101 if (varonce31) {
5102 var32 = varonce31;
5103 } else {
5104 var33 = "int glob_argc;";
5105 var34 = 14;
5106 var35 = string__NativeString__to_s_with_length(var33, var34);
5107 var32 = var35;
5108 varonce31 = var32;
5109 }
5110 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var32) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5111 if (varonce36) {
5112 var37 = varonce36;
5113 } else {
5114 var38 = "char **glob_argv;";
5115 var39 = 17;
5116 var40 = string__NativeString__to_s_with_length(var38, var39);
5117 var37 = var40;
5118 varonce36 = var37;
5119 }
5120 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var37) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5121 if (varonce41) {
5122 var42 = varonce41;
5123 } else {
5124 var43 = "val *glob_sys;";
5125 var44 = 14;
5126 var45 = string__NativeString__to_s_with_length(var43, var44);
5127 var42 = var45;
5128 varonce41 = var42;
5129 }
5130 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var42) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5131 var46 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
5132 var47 = ((val* (*)(val*))(var46->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var46) /* toolcontext on <var46:ModelBuilder>*/;
5133 var48 = ((val* (*)(val*))(var47->class->vft[COLOR_abstract_compiler__ToolContext__opt_typing_test_metrics]))(var47) /* opt_typing_test_metrics on <var47:ToolContext>*/;
5134 var49 = ((val* (*)(val*))(var48->class->vft[COLOR_opts__Option__value]))(var48) /* value on <var48:OptionBool>*/;
5135 var50 = ((struct instance_kernel__Bool*)var49)->value; /* autounbox from nullable Object to Bool */;
5136 if (var50){
5137 var51 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_tags]))(self) /* count_type_test_tags on <self:AbstractCompiler>*/;
5138 var52 = ((val* (*)(val*))(var51->class->vft[COLOR_abstract_collection__Collection__iterator]))(var51) /* iterator on <var51:Array[String]>*/;
5139 for(;;) {
5140 var53 = ((short int (*)(val*))(var52->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var52) /* is_ok on <var52:Iterator[nullable Object]>*/;
5141 if(!var53) break;
5142 var54 = ((val* (*)(val*))(var52->class->vft[COLOR_abstract_collection__Iterator__item]))(var52) /* item on <var52:Iterator[nullable Object]>*/;
5143 var_tag = var54;
5144 if (varonce55) {
5145 var56 = varonce55;
5146 } else {
5147 var57 = "long count_type_test_resolved_";
5148 var58 = 30;
5149 var59 = string__NativeString__to_s_with_length(var57, var58);
5150 var56 = var59;
5151 varonce55 = var56;
5152 }
5153 if (varonce60) {
5154 var61 = varonce60;
5155 } else {
5156 var62 = ";";
5157 var63 = 1;
5158 var64 = string__NativeString__to_s_with_length(var62, var63);
5159 var61 = var64;
5160 varonce60 = var61;
5161 }
5162 var65 = NEW_array__Array(&type_array__Arraykernel__Object);
5163 { /* var65 = array_instance Array[Object] */
5164 var66 = 3;
5165 var67 = NEW_array__NativeArray(var66, &type_array__NativeArraykernel__Object);
5166 ((struct instance_array__NativeArray*)var67)->values[0] = (val*) var56;
5167 ((struct instance_array__NativeArray*)var67)->values[1] = (val*) var_tag;
5168 ((struct instance_array__NativeArray*)var67)->values[2] = (val*) var61;
5169 ((void (*)(val*, val*, long))(var65->class->vft[COLOR_array__Array__with_native]))(var65, var67, var66) /* with_native on <var65:Array[Object]>*/;
5170 }
5171 var68 = ((val* (*)(val*))(var65->class->vft[COLOR_string__Object__to_s]))(var65) /* to_s on <var65:Array[Object]>*/;
5172 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var68) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5173 if (varonce69) {
5174 var70 = varonce69;
5175 } else {
5176 var71 = "long count_type_test_unresolved_";
5177 var72 = 32;
5178 var73 = string__NativeString__to_s_with_length(var71, var72);
5179 var70 = var73;
5180 varonce69 = var70;
5181 }
5182 if (varonce74) {
5183 var75 = varonce74;
5184 } else {
5185 var76 = ";";
5186 var77 = 1;
5187 var78 = string__NativeString__to_s_with_length(var76, var77);
5188 var75 = var78;
5189 varonce74 = var75;
5190 }
5191 var79 = NEW_array__Array(&type_array__Arraykernel__Object);
5192 { /* var79 = array_instance Array[Object] */
5193 var80 = 3;
5194 var81 = NEW_array__NativeArray(var80, &type_array__NativeArraykernel__Object);
5195 ((struct instance_array__NativeArray*)var81)->values[0] = (val*) var70;
5196 ((struct instance_array__NativeArray*)var81)->values[1] = (val*) var_tag;
5197 ((struct instance_array__NativeArray*)var81)->values[2] = (val*) var75;
5198 ((void (*)(val*, val*, long))(var79->class->vft[COLOR_array__Array__with_native]))(var79, var81, var80) /* with_native on <var79:Array[Object]>*/;
5199 }
5200 var82 = ((val* (*)(val*))(var79->class->vft[COLOR_string__Object__to_s]))(var79) /* to_s on <var79:Array[Object]>*/;
5201 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var82) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5202 if (varonce83) {
5203 var84 = varonce83;
5204 } else {
5205 var85 = "long count_type_test_skipped_";
5206 var86 = 29;
5207 var87 = string__NativeString__to_s_with_length(var85, var86);
5208 var84 = var87;
5209 varonce83 = var84;
5210 }
5211 if (varonce88) {
5212 var89 = varonce88;
5213 } else {
5214 var90 = ";";
5215 var91 = 1;
5216 var92 = string__NativeString__to_s_with_length(var90, var91);
5217 var89 = var92;
5218 varonce88 = var89;
5219 }
5220 var93 = NEW_array__Array(&type_array__Arraykernel__Object);
5221 { /* var93 = array_instance Array[Object] */
5222 var94 = 3;
5223 var95 = NEW_array__NativeArray(var94, &type_array__NativeArraykernel__Object);
5224 ((struct instance_array__NativeArray*)var95)->values[0] = (val*) var84;
5225 ((struct instance_array__NativeArray*)var95)->values[1] = (val*) var_tag;
5226 ((struct instance_array__NativeArray*)var95)->values[2] = (val*) var89;
5227 ((void (*)(val*, val*, long))(var93->class->vft[COLOR_array__Array__with_native]))(var93, var95, var94) /* with_native on <var93:Array[Object]>*/;
5228 }
5229 var96 = ((val* (*)(val*))(var93->class->vft[COLOR_string__Object__to_s]))(var93) /* to_s on <var93:Array[Object]>*/;
5230 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var96) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5231 var97 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(var_v) /* compiler on <var_v:AbstractCompilerVisitor>*/;
5232 var98 = ((val* (*)(val*))(var97->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(var97) /* header on <var97:AbstractCompiler>*/;
5233 if (varonce99) {
5234 var100 = varonce99;
5235 } else {
5236 var101 = "extern long count_type_test_resolved_";
5237 var102 = 37;
5238 var103 = string__NativeString__to_s_with_length(var101, var102);
5239 var100 = var103;
5240 varonce99 = var100;
5241 }
5242 if (varonce104) {
5243 var105 = varonce104;
5244 } else {
5245 var106 = ";";
5246 var107 = 1;
5247 var108 = string__NativeString__to_s_with_length(var106, var107);
5248 var105 = var108;
5249 varonce104 = var105;
5250 }
5251 var109 = NEW_array__Array(&type_array__Arraykernel__Object);
5252 { /* var109 = array_instance Array[Object] */
5253 var110 = 3;
5254 var111 = NEW_array__NativeArray(var110, &type_array__NativeArraykernel__Object);
5255 ((struct instance_array__NativeArray*)var111)->values[0] = (val*) var100;
5256 ((struct instance_array__NativeArray*)var111)->values[1] = (val*) var_tag;
5257 ((struct instance_array__NativeArray*)var111)->values[2] = (val*) var105;
5258 ((void (*)(val*, val*, long))(var109->class->vft[COLOR_array__Array__with_native]))(var109, var111, var110) /* with_native on <var109:Array[Object]>*/;
5259 }
5260 var112 = ((val* (*)(val*))(var109->class->vft[COLOR_string__Object__to_s]))(var109) /* to_s on <var109:Array[Object]>*/;
5261 ((void (*)(val*, val*))(var98->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var98, var112) /* add_decl on <var98:CodeWriter>*/;
5262 var113 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(var_v) /* compiler on <var_v:AbstractCompilerVisitor>*/;
5263 var114 = ((val* (*)(val*))(var113->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(var113) /* header on <var113:AbstractCompiler>*/;
5264 if (varonce115) {
5265 var116 = varonce115;
5266 } else {
5267 var117 = "extern long count_type_test_unresolved_";
5268 var118 = 39;
5269 var119 = string__NativeString__to_s_with_length(var117, var118);
5270 var116 = var119;
5271 varonce115 = var116;
5272 }
5273 if (varonce120) {
5274 var121 = varonce120;
5275 } else {
5276 var122 = ";";
5277 var123 = 1;
5278 var124 = string__NativeString__to_s_with_length(var122, var123);
5279 var121 = var124;
5280 varonce120 = var121;
5281 }
5282 var125 = NEW_array__Array(&type_array__Arraykernel__Object);
5283 { /* var125 = array_instance Array[Object] */
5284 var126 = 3;
5285 var127 = NEW_array__NativeArray(var126, &type_array__NativeArraykernel__Object);
5286 ((struct instance_array__NativeArray*)var127)->values[0] = (val*) var116;
5287 ((struct instance_array__NativeArray*)var127)->values[1] = (val*) var_tag;
5288 ((struct instance_array__NativeArray*)var127)->values[2] = (val*) var121;
5289 ((void (*)(val*, val*, long))(var125->class->vft[COLOR_array__Array__with_native]))(var125, var127, var126) /* with_native on <var125:Array[Object]>*/;
5290 }
5291 var128 = ((val* (*)(val*))(var125->class->vft[COLOR_string__Object__to_s]))(var125) /* to_s on <var125:Array[Object]>*/;
5292 ((void (*)(val*, val*))(var114->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var114, var128) /* add_decl on <var114:CodeWriter>*/;
5293 var129 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(var_v) /* compiler on <var_v:AbstractCompilerVisitor>*/;
5294 var130 = ((val* (*)(val*))(var129->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(var129) /* header on <var129:AbstractCompiler>*/;
5295 if (varonce131) {
5296 var132 = varonce131;
5297 } else {
5298 var133 = "extern long count_type_test_skipped_";
5299 var134 = 36;
5300 var135 = string__NativeString__to_s_with_length(var133, var134);
5301 var132 = var135;
5302 varonce131 = var132;
5303 }
5304 if (varonce136) {
5305 var137 = varonce136;
5306 } else {
5307 var138 = ";";
5308 var139 = 1;
5309 var140 = string__NativeString__to_s_with_length(var138, var139);
5310 var137 = var140;
5311 varonce136 = var137;
5312 }
5313 var141 = NEW_array__Array(&type_array__Arraykernel__Object);
5314 { /* var141 = array_instance Array[Object] */
5315 var142 = 3;
5316 var143 = NEW_array__NativeArray(var142, &type_array__NativeArraykernel__Object);
5317 ((struct instance_array__NativeArray*)var143)->values[0] = (val*) var132;
5318 ((struct instance_array__NativeArray*)var143)->values[1] = (val*) var_tag;
5319 ((struct instance_array__NativeArray*)var143)->values[2] = (val*) var137;
5320 ((void (*)(val*, val*, long))(var141->class->vft[COLOR_array__Array__with_native]))(var141, var143, var142) /* with_native on <var141:Array[Object]>*/;
5321 }
5322 var144 = ((val* (*)(val*))(var141->class->vft[COLOR_string__Object__to_s]))(var141) /* to_s on <var141:Array[Object]>*/;
5323 ((void (*)(val*, val*))(var130->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var130, var144) /* add_decl on <var130:CodeWriter>*/;
5324 CONTINUE_label: (void)0;
5325 ((void (*)(val*))(var52->class->vft[COLOR_abstract_collection__Iterator__next]))(var52) /* next on <var52:Iterator[nullable Object]>*/;
5326 }
5327 BREAK_label: (void)0;
5328 } else {
5329 }
5330 if (varonce145) {
5331 var146 = varonce145;
5332 } else {
5333 var147 = "void show_backtrace (int signo) {";
5334 var148 = 33;
5335 var149 = string__NativeString__to_s_with_length(var147, var148);
5336 var146 = var149;
5337 varonce145 = var146;
5338 }
5339 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var146) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5340 var150 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
5341 var151 = ((val* (*)(val*))(var150->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var150) /* toolcontext on <var150:ModelBuilder>*/;
5342 var152 = ((val* (*)(val*))(var151->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_stacktrace]))(var151) /* opt_no_stacktrace on <var151:ToolContext>*/;
5343 var153 = ((val* (*)(val*))(var152->class->vft[COLOR_opts__Option__value]))(var152) /* value on <var152:OptionBool>*/;
5344 var154 = ((struct instance_kernel__Bool*)var153)->value; /* autounbox from nullable Object to Bool */;
5345 var155 = !var154;
5346 if (var155){
5347 if (varonce156) {
5348 var157 = varonce156;
5349 } else {
5350 var158 = "char* opt = getenv(\"NIT_NO_STACK\");";
5351 var159 = 35;
5352 var160 = string__NativeString__to_s_with_length(var158, var159);
5353 var157 = var160;
5354 varonce156 = var157;
5355 }
5356 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var157) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5357 if (varonce161) {
5358 var162 = varonce161;
5359 } else {
5360 var163 = "unw_cursor_t cursor;";
5361 var164 = 20;
5362 var165 = string__NativeString__to_s_with_length(var163, var164);
5363 var162 = var165;
5364 varonce161 = var162;
5365 }
5366 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var162) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5367 if (varonce166) {
5368 var167 = varonce166;
5369 } else {
5370 var168 = "if(opt==NULL){";
5371 var169 = 14;
5372 var170 = string__NativeString__to_s_with_length(var168, var169);
5373 var167 = var170;
5374 varonce166 = var167;
5375 }
5376 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var167) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5377 if (varonce171) {
5378 var172 = varonce171;
5379 } else {
5380 var173 = "unw_context_t uc;";
5381 var174 = 17;
5382 var175 = string__NativeString__to_s_with_length(var173, var174);
5383 var172 = var175;
5384 varonce171 = var172;
5385 }
5386 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var172) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5387 if (varonce176) {
5388 var177 = varonce176;
5389 } else {
5390 var178 = "unw_word_t ip;";
5391 var179 = 14;
5392 var180 = string__NativeString__to_s_with_length(var178, var179);
5393 var177 = var180;
5394 varonce176 = var177;
5395 }
5396 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var177) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5397 if (varonce181) {
5398 var182 = varonce181;
5399 } else {
5400 var183 = "char* procname = malloc(sizeof(char) * 100);";
5401 var184 = 44;
5402 var185 = string__NativeString__to_s_with_length(var183, var184);
5403 var182 = var185;
5404 varonce181 = var182;
5405 }
5406 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var182) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5407 if (varonce186) {
5408 var187 = varonce186;
5409 } else {
5410 var188 = "unw_getcontext(&uc);";
5411 var189 = 20;
5412 var190 = string__NativeString__to_s_with_length(var188, var189);
5413 var187 = var190;
5414 varonce186 = var187;
5415 }
5416 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var187) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5417 if (varonce191) {
5418 var192 = varonce191;
5419 } else {
5420 var193 = "unw_init_local(&cursor, &uc);";
5421 var194 = 29;
5422 var195 = string__NativeString__to_s_with_length(var193, var194);
5423 var192 = var195;
5424 varonce191 = var192;
5425 }
5426 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var192) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5427 if (varonce196) {
5428 var197 = varonce196;
5429 } else {
5430 var198 = "printf(\"-------------------------------------------------\\n\");";
5431 var199 = 62;
5432 var200 = string__NativeString__to_s_with_length(var198, var199);
5433 var197 = var200;
5434 varonce196 = var197;
5435 }
5436 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var197) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5437 if (varonce201) {
5438 var202 = varonce201;
5439 } else {
5440 var203 = "printf(\"-- Stack Trace ------------------------------\\n\");";
5441 var204 = 62;
5442 var205 = string__NativeString__to_s_with_length(var203, var204);
5443 var202 = var205;
5444 varonce201 = var202;
5445 }
5446 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var202) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5447 if (varonce206) {
5448 var207 = varonce206;
5449 } else {
5450 var208 = "printf(\"-------------------------------------------------\\n\");";
5451 var209 = 62;
5452 var210 = string__NativeString__to_s_with_length(var208, var209);
5453 var207 = var210;
5454 varonce206 = var207;
5455 }
5456 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var207) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5457 if (varonce211) {
5458 var212 = varonce211;
5459 } else {
5460 var213 = "while (unw_step(&cursor) > 0) {";
5461 var214 = 31;
5462 var215 = string__NativeString__to_s_with_length(var213, var214);
5463 var212 = var215;
5464 varonce211 = var212;
5465 }
5466 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var212) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5467 if (varonce216) {
5468 var217 = varonce216;
5469 } else {
5470 var218 = "\11unw_get_proc_name(&cursor, procname, 100, &ip);";
5471 var219 = 48;
5472 var220 = string__NativeString__to_s_with_length(var218, var219);
5473 var217 = var220;
5474 varonce216 = var217;
5475 }
5476 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var217) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5477 var221 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
5478 var222 = ((val* (*)(val*))(var221->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var221) /* toolcontext on <var221:ModelBuilder>*/;
5479 var223 = ((val* (*)(val*))(var222->class->vft[COLOR_abstract_compiler__ToolContext__opt_stacktrace]))(var222) /* opt_stacktrace on <var222:ToolContext>*/;
5480 var224 = ((val* (*)(val*))(var223->class->vft[COLOR_opts__Option__value]))(var223) /* value on <var223:OptionBool>*/;
5481 var225 = ((struct instance_kernel__Bool*)var224)->value; /* autounbox from nullable Object to Bool */;
5482 if (var225){
5483 if (varonce226) {
5484 var227 = varonce226;
5485 } else {
5486 var228 = "\11const C_Nit_Names* recv = get_nit_name(procname, strlen(procname));";
5487 var229 = 68;
5488 var230 = string__NativeString__to_s_with_length(var228, var229);
5489 var227 = var230;
5490 varonce226 = var227;
5491 }
5492 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var227) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5493 if (varonce231) {
5494 var232 = varonce231;
5495 } else {
5496 var233 = "\11if (recv != 0){";
5497 var234 = 16;
5498 var235 = string__NativeString__to_s_with_length(var233, var234);
5499 var232 = var235;
5500 varonce231 = var232;
5501 }
5502 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var232) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5503 if (varonce236) {
5504 var237 = varonce236;
5505 } else {
5506 var238 = "\11\11printf(\"` %s\\n\", recv->nit_name);";
5507 var239 = 35;
5508 var240 = string__NativeString__to_s_with_length(var238, var239);
5509 var237 = var240;
5510 varonce236 = var237;
5511 }
5512 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var237) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5513 if (varonce241) {
5514 var242 = varonce241;
5515 } else {
5516 var243 = "\11}else{";
5517 var244 = 7;
5518 var245 = string__NativeString__to_s_with_length(var243, var244);
5519 var242 = var245;
5520 varonce241 = var242;
5521 }
5522 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var242) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5523 if (varonce246) {
5524 var247 = varonce246;
5525 } else {
5526 var248 = "\11\11printf(\"` %s\\n\", procname);";
5527 var249 = 29;
5528 var250 = string__NativeString__to_s_with_length(var248, var249);
5529 var247 = var250;
5530 varonce246 = var247;
5531 }
5532 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var247) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5533 if (varonce251) {
5534 var252 = varonce251;
5535 } else {
5536 var253 = "\11}";
5537 var254 = 2;
5538 var255 = string__NativeString__to_s_with_length(var253, var254);
5539 var252 = var255;
5540 varonce251 = var252;
5541 }
5542 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var252) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5543 } else {
5544 if (varonce256) {
5545 var257 = varonce256;
5546 } else {
5547 var258 = "\11printf(\"` %s \\n\",procname);";
5548 var259 = 28;
5549 var260 = string__NativeString__to_s_with_length(var258, var259);
5550 var257 = var260;
5551 varonce256 = var257;
5552 }
5553 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var257) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5554 }
5555 if (varonce261) {
5556 var262 = varonce261;
5557 } else {
5558 var263 = "}";
5559 var264 = 1;
5560 var265 = string__NativeString__to_s_with_length(var263, var264);
5561 var262 = var265;
5562 varonce261 = var262;
5563 }
5564 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var262) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5565 if (varonce266) {
5566 var267 = varonce266;
5567 } else {
5568 var268 = "printf(\"-------------------------------------------------\\n\");";
5569 var269 = 62;
5570 var270 = string__NativeString__to_s_with_length(var268, var269);
5571 var267 = var270;
5572 varonce266 = var267;
5573 }
5574 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var267) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5575 if (varonce271) {
5576 var272 = varonce271;
5577 } else {
5578 var273 = "free(procname);";
5579 var274 = 15;
5580 var275 = string__NativeString__to_s_with_length(var273, var274);
5581 var272 = var275;
5582 varonce271 = var272;
5583 }
5584 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var272) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5585 if (varonce276) {
5586 var277 = varonce276;
5587 } else {
5588 var278 = "}";
5589 var279 = 1;
5590 var280 = string__NativeString__to_s_with_length(var278, var279);
5591 var277 = var280;
5592 varonce276 = var277;
5593 }
5594 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var277) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5595 } else {
5596 }
5597 if (varonce281) {
5598 var282 = varonce281;
5599 } else {
5600 var283 = "exit(signo);";
5601 var284 = 12;
5602 var285 = string__NativeString__to_s_with_length(var283, var284);
5603 var282 = var285;
5604 varonce281 = var282;
5605 }
5606 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var282) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5607 if (varonce286) {
5608 var287 = varonce286;
5609 } else {
5610 var288 = "}";
5611 var289 = 1;
5612 var290 = string__NativeString__to_s_with_length(var288, var289);
5613 var287 = var290;
5614 varonce286 = var287;
5615 }
5616 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var287) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5617 if (varonce291) {
5618 var292 = varonce291;
5619 } else {
5620 var293 = "int main(int argc, char** argv) {";
5621 var294 = 33;
5622 var295 = string__NativeString__to_s_with_length(var293, var294);
5623 var292 = var295;
5624 varonce291 = var292;
5625 }
5626 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var292) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5627 if (varonce296) {
5628 var297 = varonce296;
5629 } else {
5630 var298 = "signal(SIGABRT, show_backtrace);";
5631 var299 = 32;
5632 var300 = string__NativeString__to_s_with_length(var298, var299);
5633 var297 = var300;
5634 varonce296 = var297;
5635 }
5636 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var297) /* add on <var_v:AbstractCompilerVisitor>*/;
5637 if (varonce301) {
5638 var302 = varonce301;
5639 } else {
5640 var303 = "signal(SIGFPE, show_backtrace);";
5641 var304 = 31;
5642 var305 = string__NativeString__to_s_with_length(var303, var304);
5643 var302 = var305;
5644 varonce301 = var302;
5645 }
5646 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var302) /* add on <var_v:AbstractCompilerVisitor>*/;
5647 if (varonce306) {
5648 var307 = varonce306;
5649 } else {
5650 var308 = "signal(SIGILL, show_backtrace);";
5651 var309 = 31;
5652 var310 = string__NativeString__to_s_with_length(var308, var309);
5653 var307 = var310;
5654 varonce306 = var307;
5655 }
5656 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var307) /* add on <var_v:AbstractCompilerVisitor>*/;
5657 if (varonce311) {
5658 var312 = varonce311;
5659 } else {
5660 var313 = "signal(SIGINT, show_backtrace);";
5661 var314 = 31;
5662 var315 = string__NativeString__to_s_with_length(var313, var314);
5663 var312 = var315;
5664 varonce311 = var312;
5665 }
5666 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var312) /* add on <var_v:AbstractCompilerVisitor>*/;
5667 if (varonce316) {
5668 var317 = varonce316;
5669 } else {
5670 var318 = "signal(SIGTERM, show_backtrace);";
5671 var319 = 32;
5672 var320 = string__NativeString__to_s_with_length(var318, var319);
5673 var317 = var320;
5674 varonce316 = var317;
5675 }
5676 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var317) /* add on <var_v:AbstractCompilerVisitor>*/;
5677 if (varonce321) {
5678 var322 = varonce321;
5679 } else {
5680 var323 = "signal(SIGSEGV, show_backtrace);";
5681 var324 = 32;
5682 var325 = string__NativeString__to_s_with_length(var323, var324);
5683 var322 = var325;
5684 varonce321 = var322;
5685 }
5686 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var322) /* add on <var_v:AbstractCompilerVisitor>*/;
5687 if (varonce326) {
5688 var327 = varonce326;
5689 } else {
5690 var328 = "glob_argc = argc; glob_argv = argv;";
5691 var329 = 35;
5692 var330 = string__NativeString__to_s_with_length(var328, var329);
5693 var327 = var330;
5694 varonce326 = var327;
5695 }
5696 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var327) /* add on <var_v:AbstractCompilerVisitor>*/;
5697 if (varonce331) {
5698 var332 = varonce331;
5699 } else {
5700 var333 = "initialize_gc_option();";
5701 var334 = 23;
5702 var335 = string__NativeString__to_s_with_length(var333, var334);
5703 var332 = var335;
5704 varonce331 = var332;
5705 }
5706 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var332) /* add on <var_v:AbstractCompilerVisitor>*/;
5707 var336 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:AbstractCompiler>*/;
5708 var337 = ((val* (*)(val*))(var336->class->vft[COLOR_model__MModule__sys_type]))(var336) /* sys_type on <var336:MModule>*/;
5709 var_main_type = var337;
5710 var338 = NULL;
5711 if (var_main_type == NULL) {
5712 var339 = 0; /* is null */
5713 } else {
5714 var339 = 1; /* arg is null and recv is not */
5715 }
5716 if (var339){
5717 var340 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(var_v) /* compiler on <var_v:AbstractCompilerVisitor>*/;
5718 var341 = ((val* (*)(val*))(var340->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var340) /* mainmodule on <var340:AbstractCompiler>*/;
5719 var_mainmodule = var341;
5720 var342 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__init_instance]))(var_v, var_main_type) /* init_instance on <var_v:AbstractCompilerVisitor>*/;
5721 var_glob_sys = var342;
5722 if (varonce343) {
5723 var344 = varonce343;
5724 } else {
5725 var345 = "glob_sys = ";
5726 var346 = 11;
5727 var347 = string__NativeString__to_s_with_length(var345, var346);
5728 var344 = var347;
5729 varonce343 = var344;
5730 }
5731 if (varonce348) {
5732 var349 = varonce348;
5733 } else {
5734 var350 = ";";
5735 var351 = 1;
5736 var352 = string__NativeString__to_s_with_length(var350, var351);
5737 var349 = var352;
5738 varonce348 = var349;
5739 }
5740 var353 = NEW_array__Array(&type_array__Arraykernel__Object);
5741 { /* var353 = array_instance Array[Object] */
5742 var354 = 3;
5743 var355 = NEW_array__NativeArray(var354, &type_array__NativeArraykernel__Object);
5744 ((struct instance_array__NativeArray*)var355)->values[0] = (val*) var344;
5745 ((struct instance_array__NativeArray*)var355)->values[1] = (val*) var_glob_sys;
5746 ((struct instance_array__NativeArray*)var355)->values[2] = (val*) var349;
5747 ((void (*)(val*, val*, long))(var353->class->vft[COLOR_array__Array__with_native]))(var353, var355, var354) /* with_native on <var353:Array[Object]>*/;
5748 }
5749 var356 = ((val* (*)(val*))(var353->class->vft[COLOR_string__Object__to_s]))(var353) /* to_s on <var353:Array[Object]>*/;
5750 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var356) /* add on <var_v:AbstractCompilerVisitor>*/;
5751 if (varonce357) {
5752 var358 = varonce357;
5753 } else {
5754 var359 = "init";
5755 var360 = 4;
5756 var361 = string__NativeString__to_s_with_length(var359, var360);
5757 var358 = var361;
5758 varonce357 = var358;
5759 }
5760 var362 = ((val* (*)(val*))(var_main_type->class->vft[COLOR_model__MClassType__mclass]))(var_main_type) /* mclass on <var_main_type:nullable MClassType(MClassType)>*/;
5761 var363 = ((val* (*)(val*, val*, val*))(var_mainmodule->class->vft[COLOR_model__MModule__try_get_primitive_method]))(var_mainmodule, var358, var362) /* try_get_primitive_method on <var_mainmodule:MModule>*/;
5762 var_main_init = var363;
5763 var364 = NULL;
5764 if (var_main_init == NULL) {
5765 var365 = 0; /* is null */
5766 } else {
5767 var365 = 1; /* arg is null and recv is not */
5768 }
5769 if (var365){
5770 var366 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
5771 { /* var366 = array_instance Array[RuntimeVariable] */
5772 var367 = 1;
5773 var368 = NEW_array__NativeArray(var367, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
5774 ((struct instance_array__NativeArray*)var368)->values[0] = (val*) var_glob_sys;
5775 ((void (*)(val*, val*, long))(var366->class->vft[COLOR_array__Array__with_native]))(var366, var368, var367) /* with_native on <var366:Array[RuntimeVariable]>*/;
5776 }
5777 var369 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(var_v, var_main_init, var366) /* send on <var_v:AbstractCompilerVisitor>*/;
5778 var369;
5779 } else {
5780 }
5781 if (varonce370) {
5782 var371 = varonce370;
5783 } else {
5784 var372 = "main";
5785 var373 = 4;
5786 var374 = string__NativeString__to_s_with_length(var372, var373);
5787 var371 = var374;
5788 varonce370 = var371;
5789 }
5790 var375 = ((val* (*)(val*))(var_main_type->class->vft[COLOR_model__MClassType__mclass]))(var_main_type) /* mclass on <var_main_type:nullable MClassType(MClassType)>*/;
5791 var376 = ((val* (*)(val*, val*, val*))(var_mainmodule->class->vft[COLOR_model__MModule__try_get_primitive_method]))(var_mainmodule, var371, var375) /* try_get_primitive_method on <var_mainmodule:MModule>*/;
5792 var_main_method = var376;
5793 var377 = NULL;
5794 if (var_main_method == NULL) {
5795 var378 = 0; /* is null */
5796 } else {
5797 var378 = 1; /* arg is null and recv is not */
5798 }
5799 if (var378){
5800 var379 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
5801 { /* var379 = array_instance Array[RuntimeVariable] */
5802 var380 = 1;
5803 var381 = NEW_array__NativeArray(var380, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
5804 ((struct instance_array__NativeArray*)var381)->values[0] = (val*) var_glob_sys;
5805 ((void (*)(val*, val*, long))(var379->class->vft[COLOR_array__Array__with_native]))(var379, var381, var380) /* with_native on <var379:Array[RuntimeVariable]>*/;
5806 }
5807 var382 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(var_v, var_main_method, var379) /* send on <var_v:AbstractCompilerVisitor>*/;
5808 var382;
5809 } else {
5810 }
5811 } else {
5812 }
5813 var383 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
5814 var384 = ((val* (*)(val*))(var383->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var383) /* toolcontext on <var383:ModelBuilder>*/;
5815 var385 = ((val* (*)(val*))(var384->class->vft[COLOR_abstract_compiler__ToolContext__opt_typing_test_metrics]))(var384) /* opt_typing_test_metrics on <var384:ToolContext>*/;
5816 var386 = ((val* (*)(val*))(var385->class->vft[COLOR_opts__Option__value]))(var385) /* value on <var385:OptionBool>*/;
5817 var387 = ((struct instance_kernel__Bool*)var386)->value; /* autounbox from nullable Object to Bool */;
5818 if (var387){
5819 if (varonce388) {
5820 var389 = varonce388;
5821 } else {
5822 var390 = "long count_type_test_resolved_total = 0;";
5823 var391 = 40;
5824 var392 = string__NativeString__to_s_with_length(var390, var391);
5825 var389 = var392;
5826 varonce388 = var389;
5827 }
5828 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var389) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5829 if (varonce393) {
5830 var394 = varonce393;
5831 } else {
5832 var395 = "long count_type_test_unresolved_total = 0;";
5833 var396 = 42;
5834 var397 = string__NativeString__to_s_with_length(var395, var396);
5835 var394 = var397;
5836 varonce393 = var394;
5837 }
5838 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var394) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5839 if (varonce398) {
5840 var399 = varonce398;
5841 } else {
5842 var400 = "long count_type_test_skipped_total = 0;";
5843 var401 = 39;
5844 var402 = string__NativeString__to_s_with_length(var400, var401);
5845 var399 = var402;
5846 varonce398 = var399;
5847 }
5848 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var399) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5849 if (varonce403) {
5850 var404 = varonce403;
5851 } else {
5852 var405 = "long count_type_test_total_total = 0;";
5853 var406 = 37;
5854 var407 = string__NativeString__to_s_with_length(var405, var406);
5855 var404 = var407;
5856 varonce403 = var404;
5857 }
5858 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var404) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5859 var408 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_tags]))(self) /* count_type_test_tags on <self:AbstractCompiler>*/;
5860 var409 = ((val* (*)(val*))(var408->class->vft[COLOR_abstract_collection__Collection__iterator]))(var408) /* iterator on <var408:Array[String]>*/;
5861 for(;;) {
5862 var410 = ((short int (*)(val*))(var409->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var409) /* is_ok on <var409:Iterator[nullable Object]>*/;
5863 if(!var410) break;
5864 var411 = ((val* (*)(val*))(var409->class->vft[COLOR_abstract_collection__Iterator__item]))(var409) /* item on <var409:Iterator[nullable Object]>*/;
5865 var_tag412 = var411;
5866 if (varonce413) {
5867 var414 = varonce413;
5868 } else {
5869 var415 = "long count_type_test_total_";
5870 var416 = 27;
5871 var417 = string__NativeString__to_s_with_length(var415, var416);
5872 var414 = var417;
5873 varonce413 = var414;
5874 }
5875 if (varonce418) {
5876 var419 = varonce418;
5877 } else {
5878 var420 = ";";
5879 var421 = 1;
5880 var422 = string__NativeString__to_s_with_length(var420, var421);
5881 var419 = var422;
5882 varonce418 = var419;
5883 }
5884 var423 = NEW_array__Array(&type_array__Arraykernel__Object);
5885 { /* var423 = array_instance Array[Object] */
5886 var424 = 3;
5887 var425 = NEW_array__NativeArray(var424, &type_array__NativeArraykernel__Object);
5888 ((struct instance_array__NativeArray*)var425)->values[0] = (val*) var414;
5889 ((struct instance_array__NativeArray*)var425)->values[1] = (val*) var_tag412;
5890 ((struct instance_array__NativeArray*)var425)->values[2] = (val*) var419;
5891 ((void (*)(val*, val*, long))(var423->class->vft[COLOR_array__Array__with_native]))(var423, var425, var424) /* with_native on <var423:Array[Object]>*/;
5892 }
5893 var426 = ((val* (*)(val*))(var423->class->vft[COLOR_string__Object__to_s]))(var423) /* to_s on <var423:Array[Object]>*/;
5894 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var426) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
5895 if (varonce427) {
5896 var428 = varonce427;
5897 } else {
5898 var429 = "count_type_test_total_";
5899 var430 = 22;
5900 var431 = string__NativeString__to_s_with_length(var429, var430);
5901 var428 = var431;
5902 varonce427 = var428;
5903 }
5904 if (varonce432) {
5905 var433 = varonce432;
5906 } else {
5907 var434 = " = count_type_test_resolved_";
5908 var435 = 28;
5909 var436 = string__NativeString__to_s_with_length(var434, var435);
5910 var433 = var436;
5911 varonce432 = var433;
5912 }
5913 if (varonce437) {
5914 var438 = varonce437;
5915 } else {
5916 var439 = " + count_type_test_unresolved_";
5917 var440 = 30;
5918 var441 = string__NativeString__to_s_with_length(var439, var440);
5919 var438 = var441;
5920 varonce437 = var438;
5921 }
5922 if (varonce442) {
5923 var443 = varonce442;
5924 } else {
5925 var444 = " + count_type_test_skipped_";
5926 var445 = 27;
5927 var446 = string__NativeString__to_s_with_length(var444, var445);
5928 var443 = var446;
5929 varonce442 = var443;
5930 }
5931 if (varonce447) {
5932 var448 = varonce447;
5933 } else {
5934 var449 = ";";
5935 var450 = 1;
5936 var451 = string__NativeString__to_s_with_length(var449, var450);
5937 var448 = var451;
5938 varonce447 = var448;
5939 }
5940 var452 = NEW_array__Array(&type_array__Arraykernel__Object);
5941 { /* var452 = array_instance Array[Object] */
5942 var453 = 9;
5943 var454 = NEW_array__NativeArray(var453, &type_array__NativeArraykernel__Object);
5944 ((struct instance_array__NativeArray*)var454)->values[0] = (val*) var428;
5945 ((struct instance_array__NativeArray*)var454)->values[1] = (val*) var_tag412;
5946 ((struct instance_array__NativeArray*)var454)->values[2] = (val*) var433;
5947 ((struct instance_array__NativeArray*)var454)->values[3] = (val*) var_tag412;
5948 ((struct instance_array__NativeArray*)var454)->values[4] = (val*) var438;
5949 ((struct instance_array__NativeArray*)var454)->values[5] = (val*) var_tag412;
5950 ((struct instance_array__NativeArray*)var454)->values[6] = (val*) var443;
5951 ((struct instance_array__NativeArray*)var454)->values[7] = (val*) var_tag412;
5952 ((struct instance_array__NativeArray*)var454)->values[8] = (val*) var448;
5953 ((void (*)(val*, val*, long))(var452->class->vft[COLOR_array__Array__with_native]))(var452, var454, var453) /* with_native on <var452:Array[Object]>*/;
5954 }
5955 var455 = ((val* (*)(val*))(var452->class->vft[COLOR_string__Object__to_s]))(var452) /* to_s on <var452:Array[Object]>*/;
5956 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var455) /* add on <var_v:AbstractCompilerVisitor>*/;
5957 if (varonce456) {
5958 var457 = varonce456;
5959 } else {
5960 var458 = "count_type_test_resolved_total += count_type_test_resolved_";
5961 var459 = 59;
5962 var460 = string__NativeString__to_s_with_length(var458, var459);
5963 var457 = var460;
5964 varonce456 = var457;
5965 }
5966 if (varonce461) {
5967 var462 = varonce461;
5968 } else {
5969 var463 = ";";
5970 var464 = 1;
5971 var465 = string__NativeString__to_s_with_length(var463, var464);
5972 var462 = var465;
5973 varonce461 = var462;
5974 }
5975 var466 = NEW_array__Array(&type_array__Arraykernel__Object);
5976 { /* var466 = array_instance Array[Object] */
5977 var467 = 3;
5978 var468 = NEW_array__NativeArray(var467, &type_array__NativeArraykernel__Object);
5979 ((struct instance_array__NativeArray*)var468)->values[0] = (val*) var457;
5980 ((struct instance_array__NativeArray*)var468)->values[1] = (val*) var_tag412;
5981 ((struct instance_array__NativeArray*)var468)->values[2] = (val*) var462;
5982 ((void (*)(val*, val*, long))(var466->class->vft[COLOR_array__Array__with_native]))(var466, var468, var467) /* with_native on <var466:Array[Object]>*/;
5983 }
5984 var469 = ((val* (*)(val*))(var466->class->vft[COLOR_string__Object__to_s]))(var466) /* to_s on <var466:Array[Object]>*/;
5985 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var469) /* add on <var_v:AbstractCompilerVisitor>*/;
5986 if (varonce470) {
5987 var471 = varonce470;
5988 } else {
5989 var472 = "count_type_test_unresolved_total += count_type_test_unresolved_";
5990 var473 = 63;
5991 var474 = string__NativeString__to_s_with_length(var472, var473);
5992 var471 = var474;
5993 varonce470 = var471;
5994 }
5995 if (varonce475) {
5996 var476 = varonce475;
5997 } else {
5998 var477 = ";";
5999 var478 = 1;
6000 var479 = string__NativeString__to_s_with_length(var477, var478);
6001 var476 = var479;
6002 varonce475 = var476;
6003 }
6004 var480 = NEW_array__Array(&type_array__Arraykernel__Object);
6005 { /* var480 = array_instance Array[Object] */
6006 var481 = 3;
6007 var482 = NEW_array__NativeArray(var481, &type_array__NativeArraykernel__Object);
6008 ((struct instance_array__NativeArray*)var482)->values[0] = (val*) var471;
6009 ((struct instance_array__NativeArray*)var482)->values[1] = (val*) var_tag412;
6010 ((struct instance_array__NativeArray*)var482)->values[2] = (val*) var476;
6011 ((void (*)(val*, val*, long))(var480->class->vft[COLOR_array__Array__with_native]))(var480, var482, var481) /* with_native on <var480:Array[Object]>*/;
6012 }
6013 var483 = ((val* (*)(val*))(var480->class->vft[COLOR_string__Object__to_s]))(var480) /* to_s on <var480:Array[Object]>*/;
6014 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var483) /* add on <var_v:AbstractCompilerVisitor>*/;
6015 if (varonce484) {
6016 var485 = varonce484;
6017 } else {
6018 var486 = "count_type_test_skipped_total += count_type_test_skipped_";
6019 var487 = 57;
6020 var488 = string__NativeString__to_s_with_length(var486, var487);
6021 var485 = var488;
6022 varonce484 = var485;
6023 }
6024 if (varonce489) {
6025 var490 = varonce489;
6026 } else {
6027 var491 = ";";
6028 var492 = 1;
6029 var493 = string__NativeString__to_s_with_length(var491, var492);
6030 var490 = var493;
6031 varonce489 = var490;
6032 }
6033 var494 = NEW_array__Array(&type_array__Arraykernel__Object);
6034 { /* var494 = array_instance Array[Object] */
6035 var495 = 3;
6036 var496 = NEW_array__NativeArray(var495, &type_array__NativeArraykernel__Object);
6037 ((struct instance_array__NativeArray*)var496)->values[0] = (val*) var485;
6038 ((struct instance_array__NativeArray*)var496)->values[1] = (val*) var_tag412;
6039 ((struct instance_array__NativeArray*)var496)->values[2] = (val*) var490;
6040 ((void (*)(val*, val*, long))(var494->class->vft[COLOR_array__Array__with_native]))(var494, var496, var495) /* with_native on <var494:Array[Object]>*/;
6041 }
6042 var497 = ((val* (*)(val*))(var494->class->vft[COLOR_string__Object__to_s]))(var494) /* to_s on <var494:Array[Object]>*/;
6043 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var497) /* add on <var_v:AbstractCompilerVisitor>*/;
6044 if (varonce498) {
6045 var499 = varonce498;
6046 } else {
6047 var500 = "count_type_test_total_total += count_type_test_total_";
6048 var501 = 53;
6049 var502 = string__NativeString__to_s_with_length(var500, var501);
6050 var499 = var502;
6051 varonce498 = var499;
6052 }
6053 if (varonce503) {
6054 var504 = varonce503;
6055 } else {
6056 var505 = ";";
6057 var506 = 1;
6058 var507 = string__NativeString__to_s_with_length(var505, var506);
6059 var504 = var507;
6060 varonce503 = var504;
6061 }
6062 var508 = NEW_array__Array(&type_array__Arraykernel__Object);
6063 { /* var508 = array_instance Array[Object] */
6064 var509 = 3;
6065 var510 = NEW_array__NativeArray(var509, &type_array__NativeArraykernel__Object);
6066 ((struct instance_array__NativeArray*)var510)->values[0] = (val*) var499;
6067 ((struct instance_array__NativeArray*)var510)->values[1] = (val*) var_tag412;
6068 ((struct instance_array__NativeArray*)var510)->values[2] = (val*) var504;
6069 ((void (*)(val*, val*, long))(var508->class->vft[COLOR_array__Array__with_native]))(var508, var510, var509) /* with_native on <var508:Array[Object]>*/;
6070 }
6071 var511 = ((val* (*)(val*))(var508->class->vft[COLOR_string__Object__to_s]))(var508) /* to_s on <var508:Array[Object]>*/;
6072 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var511) /* add on <var_v:AbstractCompilerVisitor>*/;
6073 CONTINUE_label512: (void)0;
6074 ((void (*)(val*))(var409->class->vft[COLOR_abstract_collection__Iterator__next]))(var409) /* next on <var409:Iterator[nullable Object]>*/;
6075 }
6076 BREAK_label512: (void)0;
6077 if (varonce513) {
6078 var514 = varonce513;
6079 } else {
6080 var515 = "printf(\"# dynamic count_type_test: total %l\\n\");";
6081 var516 = 48;
6082 var517 = string__NativeString__to_s_with_length(var515, var516);
6083 var514 = var517;
6084 varonce513 = var514;
6085 }
6086 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var514) /* add on <var_v:AbstractCompilerVisitor>*/;
6087 if (varonce518) {
6088 var519 = varonce518;
6089 } else {
6090 var520 = "printf(\"\\tresolved\\tunresolved\\tskipped\\ttotal\\n\");";
6091 var521 = 51;
6092 var522 = string__NativeString__to_s_with_length(var520, var521);
6093 var519 = var522;
6094 varonce518 = var519;
6095 }
6096 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var519) /* add on <var_v:AbstractCompilerVisitor>*/;
6097 var523 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_tags]))(self) /* count_type_test_tags on <self:AbstractCompiler>*/;
6098 var524 = ((val* (*)(val*))(var523->class->vft[COLOR_array__Collection__to_a]))(var523) /* to_a on <var523:Array[String]>*/;
6099 var_tags = var524;
6100 if (varonce525) {
6101 var526 = varonce525;
6102 } else {
6103 var527 = "total";
6104 var528 = 5;
6105 var529 = string__NativeString__to_s_with_length(var527, var528);
6106 var526 = var529;
6107 varonce525 = var526;
6108 }
6109 ((void (*)(val*, val*))(var_tags->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_tags, var526) /* add on <var_tags:Array[String]>*/;
6110 var530 = ((val* (*)(val*))(var_tags->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_tags) /* iterator on <var_tags:Array[String]>*/;
6111 for(;;) {
6112 var531 = ((short int (*)(val*))(var530->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var530) /* is_ok on <var530:Iterator[nullable Object]>*/;
6113 if(!var531) break;
6114 var532 = ((val* (*)(val*))(var530->class->vft[COLOR_abstract_collection__Iterator__item]))(var530) /* item on <var530:Iterator[nullable Object]>*/;
6115 var_tag533 = var532;
6116 if (varonce534) {
6117 var535 = varonce534;
6118 } else {
6119 var536 = "printf(\"";
6120 var537 = 8;
6121 var538 = string__NativeString__to_s_with_length(var536, var537);
6122 var535 = var538;
6123 varonce534 = var535;
6124 }
6125 if (varonce539) {
6126 var540 = varonce539;
6127 } else {
6128 var541 = "\");";
6129 var542 = 3;
6130 var543 = string__NativeString__to_s_with_length(var541, var542);
6131 var540 = var543;
6132 varonce539 = var540;
6133 }
6134 var544 = NEW_array__Array(&type_array__Arraykernel__Object);
6135 { /* var544 = array_instance Array[Object] */
6136 var545 = 3;
6137 var546 = NEW_array__NativeArray(var545, &type_array__NativeArraykernel__Object);
6138 ((struct instance_array__NativeArray*)var546)->values[0] = (val*) var535;
6139 ((struct instance_array__NativeArray*)var546)->values[1] = (val*) var_tag533;
6140 ((struct instance_array__NativeArray*)var546)->values[2] = (val*) var540;
6141 ((void (*)(val*, val*, long))(var544->class->vft[COLOR_array__Array__with_native]))(var544, var546, var545) /* with_native on <var544:Array[Object]>*/;
6142 }
6143 var547 = ((val* (*)(val*))(var544->class->vft[COLOR_string__Object__to_s]))(var544) /* to_s on <var544:Array[Object]>*/;
6144 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var547) /* add on <var_v:AbstractCompilerVisitor>*/;
6145 if (varonce548) {
6146 var549 = varonce548;
6147 } else {
6148 var550 = "printf(\"\\t%ld (%.2f%%)\", count_type_test_resolved_";
6149 var551 = 50;
6150 var552 = string__NativeString__to_s_with_length(var550, var551);
6151 var549 = var552;
6152 varonce548 = var549;
6153 }
6154 if (varonce553) {
6155 var554 = varonce553;
6156 } else {
6157 var555 = ", 100.0*count_type_test_resolved_";
6158 var556 = 33;
6159 var557 = string__NativeString__to_s_with_length(var555, var556);
6160 var554 = var557;
6161 varonce553 = var554;
6162 }
6163 if (varonce558) {
6164 var559 = varonce558;
6165 } else {
6166 var560 = "/count_type_test_total_total);";
6167 var561 = 30;
6168 var562 = string__NativeString__to_s_with_length(var560, var561);
6169 var559 = var562;
6170 varonce558 = var559;
6171 }
6172 var563 = NEW_array__Array(&type_array__Arraykernel__Object);
6173 { /* var563 = array_instance Array[Object] */
6174 var564 = 5;
6175 var565 = NEW_array__NativeArray(var564, &type_array__NativeArraykernel__Object);
6176 ((struct instance_array__NativeArray*)var565)->values[0] = (val*) var549;
6177 ((struct instance_array__NativeArray*)var565)->values[1] = (val*) var_tag533;
6178 ((struct instance_array__NativeArray*)var565)->values[2] = (val*) var554;
6179 ((struct instance_array__NativeArray*)var565)->values[3] = (val*) var_tag533;
6180 ((struct instance_array__NativeArray*)var565)->values[4] = (val*) var559;
6181 ((void (*)(val*, val*, long))(var563->class->vft[COLOR_array__Array__with_native]))(var563, var565, var564) /* with_native on <var563:Array[Object]>*/;
6182 }
6183 var566 = ((val* (*)(val*))(var563->class->vft[COLOR_string__Object__to_s]))(var563) /* to_s on <var563:Array[Object]>*/;
6184 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var566) /* add on <var_v:AbstractCompilerVisitor>*/;
6185 if (varonce567) {
6186 var568 = varonce567;
6187 } else {
6188 var569 = "printf(\"\\t%ld (%.2f%%)\", count_type_test_unresolved_";
6189 var570 = 52;
6190 var571 = string__NativeString__to_s_with_length(var569, var570);
6191 var568 = var571;
6192 varonce567 = var568;
6193 }
6194 if (varonce572) {
6195 var573 = varonce572;
6196 } else {
6197 var574 = ", 100.0*count_type_test_unresolved_";
6198 var575 = 35;
6199 var576 = string__NativeString__to_s_with_length(var574, var575);
6200 var573 = var576;
6201 varonce572 = var573;
6202 }
6203 if (varonce577) {
6204 var578 = varonce577;
6205 } else {
6206 var579 = "/count_type_test_total_total);";
6207 var580 = 30;
6208 var581 = string__NativeString__to_s_with_length(var579, var580);
6209 var578 = var581;
6210 varonce577 = var578;
6211 }
6212 var582 = NEW_array__Array(&type_array__Arraykernel__Object);
6213 { /* var582 = array_instance Array[Object] */
6214 var583 = 5;
6215 var584 = NEW_array__NativeArray(var583, &type_array__NativeArraykernel__Object);
6216 ((struct instance_array__NativeArray*)var584)->values[0] = (val*) var568;
6217 ((struct instance_array__NativeArray*)var584)->values[1] = (val*) var_tag533;
6218 ((struct instance_array__NativeArray*)var584)->values[2] = (val*) var573;
6219 ((struct instance_array__NativeArray*)var584)->values[3] = (val*) var_tag533;
6220 ((struct instance_array__NativeArray*)var584)->values[4] = (val*) var578;
6221 ((void (*)(val*, val*, long))(var582->class->vft[COLOR_array__Array__with_native]))(var582, var584, var583) /* with_native on <var582:Array[Object]>*/;
6222 }
6223 var585 = ((val* (*)(val*))(var582->class->vft[COLOR_string__Object__to_s]))(var582) /* to_s on <var582:Array[Object]>*/;
6224 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var585) /* add on <var_v:AbstractCompilerVisitor>*/;
6225 if (varonce586) {
6226 var587 = varonce586;
6227 } else {
6228 var588 = "printf(\"\\t%ld (%.2f%%)\", count_type_test_skipped_";
6229 var589 = 49;
6230 var590 = string__NativeString__to_s_with_length(var588, var589);
6231 var587 = var590;
6232 varonce586 = var587;
6233 }
6234 if (varonce591) {
6235 var592 = varonce591;
6236 } else {
6237 var593 = ", 100.0*count_type_test_skipped_";
6238 var594 = 32;
6239 var595 = string__NativeString__to_s_with_length(var593, var594);
6240 var592 = var595;
6241 varonce591 = var592;
6242 }
6243 if (varonce596) {
6244 var597 = varonce596;
6245 } else {
6246 var598 = "/count_type_test_total_total);";
6247 var599 = 30;
6248 var600 = string__NativeString__to_s_with_length(var598, var599);
6249 var597 = var600;
6250 varonce596 = var597;
6251 }
6252 var601 = NEW_array__Array(&type_array__Arraykernel__Object);
6253 { /* var601 = array_instance Array[Object] */
6254 var602 = 5;
6255 var603 = NEW_array__NativeArray(var602, &type_array__NativeArraykernel__Object);
6256 ((struct instance_array__NativeArray*)var603)->values[0] = (val*) var587;
6257 ((struct instance_array__NativeArray*)var603)->values[1] = (val*) var_tag533;
6258 ((struct instance_array__NativeArray*)var603)->values[2] = (val*) var592;
6259 ((struct instance_array__NativeArray*)var603)->values[3] = (val*) var_tag533;
6260 ((struct instance_array__NativeArray*)var603)->values[4] = (val*) var597;
6261 ((void (*)(val*, val*, long))(var601->class->vft[COLOR_array__Array__with_native]))(var601, var603, var602) /* with_native on <var601:Array[Object]>*/;
6262 }
6263 var604 = ((val* (*)(val*))(var601->class->vft[COLOR_string__Object__to_s]))(var601) /* to_s on <var601:Array[Object]>*/;
6264 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var604) /* add on <var_v:AbstractCompilerVisitor>*/;
6265 if (varonce605) {
6266 var606 = varonce605;
6267 } else {
6268 var607 = "printf(\"\\t%ld (%.2f%%)\\n\", count_type_test_total_";
6269 var608 = 49;
6270 var609 = string__NativeString__to_s_with_length(var607, var608);
6271 var606 = var609;
6272 varonce605 = var606;
6273 }
6274 if (varonce610) {
6275 var611 = varonce610;
6276 } else {
6277 var612 = ", 100.0*count_type_test_total_";
6278 var613 = 30;
6279 var614 = string__NativeString__to_s_with_length(var612, var613);
6280 var611 = var614;
6281 varonce610 = var611;
6282 }
6283 if (varonce615) {
6284 var616 = varonce615;
6285 } else {
6286 var617 = "/count_type_test_total_total);";
6287 var618 = 30;
6288 var619 = string__NativeString__to_s_with_length(var617, var618);
6289 var616 = var619;
6290 varonce615 = var616;
6291 }
6292 var620 = NEW_array__Array(&type_array__Arraykernel__Object);
6293 { /* var620 = array_instance Array[Object] */
6294 var621 = 5;
6295 var622 = NEW_array__NativeArray(var621, &type_array__NativeArraykernel__Object);
6296 ((struct instance_array__NativeArray*)var622)->values[0] = (val*) var606;
6297 ((struct instance_array__NativeArray*)var622)->values[1] = (val*) var_tag533;
6298 ((struct instance_array__NativeArray*)var622)->values[2] = (val*) var611;
6299 ((struct instance_array__NativeArray*)var622)->values[3] = (val*) var_tag533;
6300 ((struct instance_array__NativeArray*)var622)->values[4] = (val*) var616;
6301 ((void (*)(val*, val*, long))(var620->class->vft[COLOR_array__Array__with_native]))(var620, var622, var621) /* with_native on <var620:Array[Object]>*/;
6302 }
6303 var623 = ((val* (*)(val*))(var620->class->vft[COLOR_string__Object__to_s]))(var620) /* to_s on <var620:Array[Object]>*/;
6304 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var623) /* add on <var_v:AbstractCompilerVisitor>*/;
6305 CONTINUE_label624: (void)0;
6306 ((void (*)(val*))(var530->class->vft[COLOR_abstract_collection__Iterator__next]))(var530) /* next on <var530:Iterator[nullable Object]>*/;
6307 }
6308 BREAK_label624: (void)0;
6309 } else {
6310 }
6311 if (varonce625) {
6312 var626 = varonce625;
6313 } else {
6314 var627 = "return 0;";
6315 var628 = 9;
6316 var629 = string__NativeString__to_s_with_length(var627, var628);
6317 var626 = var629;
6318 varonce625 = var626;
6319 }
6320 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var626) /* add on <var_v:AbstractCompilerVisitor>*/;
6321 if (varonce630) {
6322 var631 = varonce630;
6323 } else {
6324 var632 = "}";
6325 var633 = 1;
6326 var634 = string__NativeString__to_s_with_length(var632, var633);
6327 var631 = var634;
6328 varonce630 = var631;
6329 }
6330 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var631) /* add on <var_v:AbstractCompilerVisitor>*/;
6331 RET_LABEL:;
6332 }
6333 /* method abstract_compiler#AbstractCompiler#compile_main_function for (self: Object) */
6334 void VIRTUAL_abstract_compiler__AbstractCompiler__compile_main_function(val* self) {
6335 abstract_compiler__AbstractCompiler__compile_main_function(self);
6336 RET_LABEL:;
6337 }
6338 /* method abstract_compiler#AbstractCompiler#extern_bodies for (self: AbstractCompiler): Array[ExternCFile] */
6339 val* abstract_compiler__AbstractCompiler__extern_bodies(val* self) {
6340 val* var /* : Array[ExternCFile] */;
6341 val* var1 /* : Array[ExternCFile] */;
6342 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dextern_bodies].val; /* @extern_bodies on <self:AbstractCompiler> */
6343 if (var1 == NULL) {
6344 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @extern_bodies");
6345 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 508);
6346 show_backtrace(1);
6347 }
6348 var = var1;
6349 RET_LABEL:;
6350 return var;
6351 }
6352 /* method abstract_compiler#AbstractCompiler#extern_bodies for (self: Object): Array[ExternCFile] */
6353 val* VIRTUAL_abstract_compiler__AbstractCompiler__extern_bodies(val* self) {
6354 val* var /* : Array[ExternCFile] */;
6355 val* var1 /* : Array[ExternCFile] */;
6356 var1 = abstract_compiler__AbstractCompiler__extern_bodies(self);
6357 var = var1;
6358 RET_LABEL:;
6359 return var;
6360 }
6361 /* method abstract_compiler#AbstractCompiler#extern_bodies= for (self: AbstractCompiler, Array[ExternCFile]) */
6362 void abstract_compiler__AbstractCompiler__extern_bodies_61d(val* self, val* p0) {
6363 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dextern_bodies].val = p0; /* @extern_bodies on <self:AbstractCompiler> */
6364 RET_LABEL:;
6365 }
6366 /* method abstract_compiler#AbstractCompiler#extern_bodies= for (self: Object, Array[ExternCFile]) */
6367 void VIRTUAL_abstract_compiler__AbstractCompiler__extern_bodies_61d(val* self, val* p0) {
6368 abstract_compiler__AbstractCompiler__extern_bodies_61d(self, p0);
6369 RET_LABEL:;
6370 }
6371 /* method abstract_compiler#AbstractCompiler#seen_extern for (self: AbstractCompiler): ArraySet[String] */
6372 val* abstract_compiler__AbstractCompiler__seen_extern(val* self) {
6373 val* var /* : ArraySet[String] */;
6374 val* var1 /* : ArraySet[String] */;
6375 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dseen_extern].val; /* @seen_extern on <self:AbstractCompiler> */
6376 if (var1 == NULL) {
6377 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @seen_extern");
6378 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 511);
6379 show_backtrace(1);
6380 }
6381 var = var1;
6382 RET_LABEL:;
6383 return var;
6384 }
6385 /* method abstract_compiler#AbstractCompiler#seen_extern for (self: Object): ArraySet[String] */
6386 val* VIRTUAL_abstract_compiler__AbstractCompiler__seen_extern(val* self) {
6387 val* var /* : ArraySet[String] */;
6388 val* var1 /* : ArraySet[String] */;
6389 var1 = abstract_compiler__AbstractCompiler__seen_extern(self);
6390 var = var1;
6391 RET_LABEL:;
6392 return var;
6393 }
6394 /* method abstract_compiler#AbstractCompiler#seen_extern= for (self: AbstractCompiler, ArraySet[String]) */
6395 void abstract_compiler__AbstractCompiler__seen_extern_61d(val* self, val* p0) {
6396 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dseen_extern].val = p0; /* @seen_extern on <self:AbstractCompiler> */
6397 RET_LABEL:;
6398 }
6399 /* method abstract_compiler#AbstractCompiler#seen_extern= for (self: Object, ArraySet[String]) */
6400 void VIRTUAL_abstract_compiler__AbstractCompiler__seen_extern_61d(val* self, val* p0) {
6401 abstract_compiler__AbstractCompiler__seen_extern_61d(self, p0);
6402 RET_LABEL:;
6403 }
6404 /* method abstract_compiler#AbstractCompiler#generate_init_attr for (self: AbstractCompiler, AbstractCompilerVisitor, RuntimeVariable, MClassType) */
6405 void abstract_compiler__AbstractCompiler__generate_init_attr(val* self, val* p0, val* p1, val* p2) {
6406 short int var /* : Bool */;
6407 int cltype;
6408 int idtype;
6409 const struct type* type_struct;
6410 const char* var_class_name;
6411 val* var_v /* var v: AbstractCompilerVisitor */;
6412 val* var_recv /* var recv: RuntimeVariable */;
6413 val* var_mtype /* var mtype: MClassType */;
6414 val* var1 /* : MModule */;
6415 val* var2 /* : Set[MClassDef] */;
6416 val* var3 /* : Array[nullable Object] */;
6417 val* var_cds /* var cds: Array[MClassDef] */;
6418 val* var4 /* : MModule */;
6419 val* var5 /* : Iterator[nullable Object] */;
6420 short int var6 /* : Bool */;
6421 val* var7 /* : nullable Object */;
6422 val* var_cd /* var cd: MClassDef */;
6423 val* var8 /* : ModelBuilder */;
6424 val* var9 /* : HashMap[MClassDef, AClassdef] */;
6425 val* var10 /* : nullable Object */;
6426 val* var_n /* var n: AClassdef */;
6427 val* var11 /* : ANodes[APropdef] */;
6428 val* var12 /* : Iterator[nullable Object] */;
6429 short int var13 /* : Bool */;
6430 val* var14 /* : nullable Object */;
6431 val* var_npropdef /* var npropdef: APropdef */;
6432 short int var15 /* : Bool */;
6433 int cltype16;
6434 int idtype17;
6435 /* Covariant cast for argument 0 (v) <p0:AbstractCompilerVisitor> isa VISITOR */
6436 /* <p0:AbstractCompilerVisitor> isa VISITOR */
6437 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractCompiler_VTVISITOR];
6438 cltype = type_struct->color;
6439 idtype = type_struct->id;
6440 if(cltype >= p0->type->table_size) {
6441 var = 0;
6442 } else {
6443 var = p0->type->type_table[cltype] == idtype;
6444 }
6445 if (!var) {
6446 var_class_name = p0 == NULL ? "null" : p0->type->name;
6447 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
6448 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 514);
6449 show_backtrace(1);
6450 }
6451 var_v = p0;
6452 var_recv = p1;
6453 var_mtype = p2;
6454 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:AbstractCompiler>*/;
6455 var2 = ((val* (*)(val*, val*))(var_mtype->class->vft[COLOR_model__MType__collect_mclassdefs]))(var_mtype, var1) /* collect_mclassdefs on <var_mtype:MClassType>*/;
6456 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_array__Collection__to_a]))(var2) /* to_a on <var2:Set[MClassDef]>*/;
6457 var_cds = var3;
6458 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:AbstractCompiler>*/;
6459 ((void (*)(val*, val*))(var4->class->vft[COLOR_model__MModule__linearize_mclassdefs]))(var4, var_cds) /* linearize_mclassdefs on <var4:MModule>*/;
6460 var5 = ((val* (*)(val*))(var_cds->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_cds) /* iterator on <var_cds:Array[MClassDef]>*/;
6461 for(;;) {
6462 var6 = ((short int (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var5) /* is_ok on <var5:Iterator[nullable Object]>*/;
6463 if(!var6) break;
6464 var7 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__item]))(var5) /* item on <var5:Iterator[nullable Object]>*/;
6465 var_cd = var7;
6466 var8 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
6467 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_modelize_class__ModelBuilder__mclassdef2nclassdef]))(var8) /* mclassdef2nclassdef on <var8:ModelBuilder>*/;
6468 var10 = ((val* (*)(val*, val*))(var9->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var9, var_cd) /* [] on <var9:HashMap[MClassDef, AClassdef]>*/;
6469 var_n = var10;
6470 var11 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__AClassdef__n_propdefs]))(var_n) /* n_propdefs on <var_n:AClassdef>*/;
6471 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__Collection__iterator]))(var11) /* iterator on <var11:ANodes[APropdef]>*/;
6472 for(;;) {
6473 var13 = ((short int (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var12) /* is_ok on <var12:Iterator[nullable Object]>*/;
6474 if(!var13) break;
6475 var14 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__item]))(var12) /* item on <var12:Iterator[nullable Object]>*/;
6476 var_npropdef = var14;
6477 /* <var_npropdef:APropdef> isa AAttrPropdef */
6478 cltype16 = type_parser_nodes__AAttrPropdef.color;
6479 idtype17 = type_parser_nodes__AAttrPropdef.id;
6480 if(cltype16 >= var_npropdef->type->table_size) {
6481 var15 = 0;
6482 } else {
6483 var15 = var_npropdef->type->type_table[cltype16] == idtype17;
6484 }
6485 if (var15){
6486 ((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)>*/;
6487 } else {
6488 }
6489 CONTINUE_label: (void)0;
6490 ((void (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__next]))(var12) /* next on <var12:Iterator[nullable Object]>*/;
6491 }
6492 BREAK_label: (void)0;
6493 CONTINUE_label18: (void)0;
6494 ((void (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__next]))(var5) /* next on <var5:Iterator[nullable Object]>*/;
6495 }
6496 BREAK_label18: (void)0;
6497 RET_LABEL:;
6498 }
6499 /* method abstract_compiler#AbstractCompiler#generate_init_attr for (self: Object, AbstractCompilerVisitor, RuntimeVariable, MClassType) */
6500 void VIRTUAL_abstract_compiler__AbstractCompiler__generate_init_attr(val* self, val* p0, val* p1, val* p2) {
6501 abstract_compiler__AbstractCompiler__generate_init_attr(self, p0, p1, p2);
6502 RET_LABEL:;
6503 }
6504 /* method abstract_compiler#AbstractCompiler#generate_check_attr for (self: AbstractCompiler, AbstractCompilerVisitor, RuntimeVariable, MClassType) */
6505 void abstract_compiler__AbstractCompiler__generate_check_attr(val* self, val* p0, val* p1, val* p2) {
6506 short int var /* : Bool */;
6507 int cltype;
6508 int idtype;
6509 const struct type* type_struct;
6510 const char* var_class_name;
6511 val* var_v /* var v: AbstractCompilerVisitor */;
6512 val* var_recv /* var recv: RuntimeVariable */;
6513 val* var_mtype /* var mtype: MClassType */;
6514 val* var1 /* : MModule */;
6515 val* var2 /* : Set[MClassDef] */;
6516 val* var3 /* : Array[nullable Object] */;
6517 val* var_cds /* var cds: Array[MClassDef] */;
6518 val* var4 /* : MModule */;
6519 val* var5 /* : Iterator[nullable Object] */;
6520 short int var6 /* : Bool */;
6521 val* var7 /* : nullable Object */;
6522 val* var_cd /* var cd: MClassDef */;
6523 val* var8 /* : ModelBuilder */;
6524 val* var9 /* : HashMap[MClassDef, AClassdef] */;
6525 val* var10 /* : nullable Object */;
6526 val* var_n /* var n: AClassdef */;
6527 val* var11 /* : ANodes[APropdef] */;
6528 val* var12 /* : Iterator[nullable Object] */;
6529 short int var13 /* : Bool */;
6530 val* var14 /* : nullable Object */;
6531 val* var_npropdef /* var npropdef: APropdef */;
6532 short int var15 /* : Bool */;
6533 int cltype16;
6534 int idtype17;
6535 /* Covariant cast for argument 0 (v) <p0:AbstractCompilerVisitor> isa VISITOR */
6536 /* <p0:AbstractCompilerVisitor> isa VISITOR */
6537 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractCompiler_VTVISITOR];
6538 cltype = type_struct->color;
6539 idtype = type_struct->id;
6540 if(cltype >= p0->type->table_size) {
6541 var = 0;
6542 } else {
6543 var = p0->type->type_table[cltype] == idtype;
6544 }
6545 if (!var) {
6546 var_class_name = p0 == NULL ? "null" : p0->type->name;
6547 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
6548 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 529);
6549 show_backtrace(1);
6550 }
6551 var_v = p0;
6552 var_recv = p1;
6553 var_mtype = p2;
6554 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:AbstractCompiler>*/;
6555 var2 = ((val* (*)(val*, val*))(var_mtype->class->vft[COLOR_model__MType__collect_mclassdefs]))(var_mtype, var1) /* collect_mclassdefs on <var_mtype:MClassType>*/;
6556 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_array__Collection__to_a]))(var2) /* to_a on <var2:Set[MClassDef]>*/;
6557 var_cds = var3;
6558 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:AbstractCompiler>*/;
6559 ((void (*)(val*, val*))(var4->class->vft[COLOR_model__MModule__linearize_mclassdefs]))(var4, var_cds) /* linearize_mclassdefs on <var4:MModule>*/;
6560 var5 = ((val* (*)(val*))(var_cds->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_cds) /* iterator on <var_cds:Array[MClassDef]>*/;
6561 for(;;) {
6562 var6 = ((short int (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var5) /* is_ok on <var5:Iterator[nullable Object]>*/;
6563 if(!var6) break;
6564 var7 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__item]))(var5) /* item on <var5:Iterator[nullable Object]>*/;
6565 var_cd = var7;
6566 var8 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
6567 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_modelize_class__ModelBuilder__mclassdef2nclassdef]))(var8) /* mclassdef2nclassdef on <var8:ModelBuilder>*/;
6568 var10 = ((val* (*)(val*, val*))(var9->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var9, var_cd) /* [] on <var9:HashMap[MClassDef, AClassdef]>*/;
6569 var_n = var10;
6570 var11 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__AClassdef__n_propdefs]))(var_n) /* n_propdefs on <var_n:AClassdef>*/;
6571 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__Collection__iterator]))(var11) /* iterator on <var11:ANodes[APropdef]>*/;
6572 for(;;) {
6573 var13 = ((short int (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var12) /* is_ok on <var12:Iterator[nullable Object]>*/;
6574 if(!var13) break;
6575 var14 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__item]))(var12) /* item on <var12:Iterator[nullable Object]>*/;
6576 var_npropdef = var14;
6577 /* <var_npropdef:APropdef> isa AAttrPropdef */
6578 cltype16 = type_parser_nodes__AAttrPropdef.color;
6579 idtype17 = type_parser_nodes__AAttrPropdef.id;
6580 if(cltype16 >= var_npropdef->type->table_size) {
6581 var15 = 0;
6582 } else {
6583 var15 = var_npropdef->type->type_table[cltype16] == idtype17;
6584 }
6585 if (var15){
6586 ((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)>*/;
6587 } else {
6588 }
6589 CONTINUE_label: (void)0;
6590 ((void (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__next]))(var12) /* next on <var12:Iterator[nullable Object]>*/;
6591 }
6592 BREAK_label: (void)0;
6593 CONTINUE_label18: (void)0;
6594 ((void (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__next]))(var5) /* next on <var5:Iterator[nullable Object]>*/;
6595 }
6596 BREAK_label18: (void)0;
6597 RET_LABEL:;
6598 }
6599 /* method abstract_compiler#AbstractCompiler#generate_check_attr for (self: Object, AbstractCompilerVisitor, RuntimeVariable, MClassType) */
6600 void VIRTUAL_abstract_compiler__AbstractCompiler__generate_check_attr(val* self, val* p0, val* p1, val* p2) {
6601 abstract_compiler__AbstractCompiler__generate_check_attr(self, p0, p1, p2);
6602 RET_LABEL:;
6603 }
6604 /* method abstract_compiler#AbstractCompiler#count_type_test_tags for (self: AbstractCompiler): Array[String] */
6605 val* abstract_compiler__AbstractCompiler__count_type_test_tags(val* self) {
6606 val* var /* : Array[String] */;
6607 val* var1 /* : Array[String] */;
6608 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_tags].val; /* @count_type_test_tags on <self:AbstractCompiler> */
6609 if (var1 == NULL) {
6610 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @count_type_test_tags");
6611 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 546);
6612 show_backtrace(1);
6613 }
6614 var = var1;
6615 RET_LABEL:;
6616 return var;
6617 }
6618 /* method abstract_compiler#AbstractCompiler#count_type_test_tags for (self: Object): Array[String] */
6619 val* VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_tags(val* self) {
6620 val* var /* : Array[String] */;
6621 val* var1 /* : Array[String] */;
6622 var1 = abstract_compiler__AbstractCompiler__count_type_test_tags(self);
6623 var = var1;
6624 RET_LABEL:;
6625 return var;
6626 }
6627 /* method abstract_compiler#AbstractCompiler#count_type_test_tags= for (self: AbstractCompiler, Array[String]) */
6628 void abstract_compiler__AbstractCompiler__count_type_test_tags_61d(val* self, val* p0) {
6629 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_tags].val = p0; /* @count_type_test_tags on <self:AbstractCompiler> */
6630 RET_LABEL:;
6631 }
6632 /* method abstract_compiler#AbstractCompiler#count_type_test_tags= for (self: Object, Array[String]) */
6633 void VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_tags_61d(val* self, val* p0) {
6634 abstract_compiler__AbstractCompiler__count_type_test_tags_61d(self, p0);
6635 RET_LABEL:;
6636 }
6637 /* method abstract_compiler#AbstractCompiler#count_type_test_resolved for (self: AbstractCompiler): HashMap[String, Int] */
6638 val* abstract_compiler__AbstractCompiler__count_type_test_resolved(val* self) {
6639 val* var /* : HashMap[String, Int] */;
6640 val* var1 /* : HashMap[String, Int] */;
6641 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_resolved].val; /* @count_type_test_resolved on <self:AbstractCompiler> */
6642 if (var1 == NULL) {
6643 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @count_type_test_resolved");
6644 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 547);
6645 show_backtrace(1);
6646 }
6647 var = var1;
6648 RET_LABEL:;
6649 return var;
6650 }
6651 /* method abstract_compiler#AbstractCompiler#count_type_test_resolved for (self: Object): HashMap[String, Int] */
6652 val* VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_resolved(val* self) {
6653 val* var /* : HashMap[String, Int] */;
6654 val* var1 /* : HashMap[String, Int] */;
6655 var1 = abstract_compiler__AbstractCompiler__count_type_test_resolved(self);
6656 var = var1;
6657 RET_LABEL:;
6658 return var;
6659 }
6660 /* method abstract_compiler#AbstractCompiler#count_type_test_resolved= for (self: AbstractCompiler, HashMap[String, Int]) */
6661 void abstract_compiler__AbstractCompiler__count_type_test_resolved_61d(val* self, val* p0) {
6662 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_resolved].val = p0; /* @count_type_test_resolved on <self:AbstractCompiler> */
6663 RET_LABEL:;
6664 }
6665 /* method abstract_compiler#AbstractCompiler#count_type_test_resolved= for (self: Object, HashMap[String, Int]) */
6666 void VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_resolved_61d(val* self, val* p0) {
6667 abstract_compiler__AbstractCompiler__count_type_test_resolved_61d(self, p0);
6668 RET_LABEL:;
6669 }
6670 /* method abstract_compiler#AbstractCompiler#count_type_test_unresolved for (self: AbstractCompiler): HashMap[String, Int] */
6671 val* abstract_compiler__AbstractCompiler__count_type_test_unresolved(val* self) {
6672 val* var /* : HashMap[String, Int] */;
6673 val* var1 /* : HashMap[String, Int] */;
6674 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_unresolved].val; /* @count_type_test_unresolved on <self:AbstractCompiler> */
6675 if (var1 == NULL) {
6676 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @count_type_test_unresolved");
6677 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 548);
6678 show_backtrace(1);
6679 }
6680 var = var1;
6681 RET_LABEL:;
6682 return var;
6683 }
6684 /* method abstract_compiler#AbstractCompiler#count_type_test_unresolved for (self: Object): HashMap[String, Int] */
6685 val* VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_unresolved(val* self) {
6686 val* var /* : HashMap[String, Int] */;
6687 val* var1 /* : HashMap[String, Int] */;
6688 var1 = abstract_compiler__AbstractCompiler__count_type_test_unresolved(self);
6689 var = var1;
6690 RET_LABEL:;
6691 return var;
6692 }
6693 /* method abstract_compiler#AbstractCompiler#count_type_test_unresolved= for (self: AbstractCompiler, HashMap[String, Int]) */
6694 void abstract_compiler__AbstractCompiler__count_type_test_unresolved_61d(val* self, val* p0) {
6695 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_unresolved].val = p0; /* @count_type_test_unresolved on <self:AbstractCompiler> */
6696 RET_LABEL:;
6697 }
6698 /* method abstract_compiler#AbstractCompiler#count_type_test_unresolved= for (self: Object, HashMap[String, Int]) */
6699 void VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_unresolved_61d(val* self, val* p0) {
6700 abstract_compiler__AbstractCompiler__count_type_test_unresolved_61d(self, p0);
6701 RET_LABEL:;
6702 }
6703 /* method abstract_compiler#AbstractCompiler#count_type_test_skipped for (self: AbstractCompiler): HashMap[String, Int] */
6704 val* abstract_compiler__AbstractCompiler__count_type_test_skipped(val* self) {
6705 val* var /* : HashMap[String, Int] */;
6706 val* var1 /* : HashMap[String, Int] */;
6707 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_skipped].val; /* @count_type_test_skipped on <self:AbstractCompiler> */
6708 if (var1 == NULL) {
6709 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @count_type_test_skipped");
6710 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 549);
6711 show_backtrace(1);
6712 }
6713 var = var1;
6714 RET_LABEL:;
6715 return var;
6716 }
6717 /* method abstract_compiler#AbstractCompiler#count_type_test_skipped for (self: Object): HashMap[String, Int] */
6718 val* VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_skipped(val* self) {
6719 val* var /* : HashMap[String, Int] */;
6720 val* var1 /* : HashMap[String, Int] */;
6721 var1 = abstract_compiler__AbstractCompiler__count_type_test_skipped(self);
6722 var = var1;
6723 RET_LABEL:;
6724 return var;
6725 }
6726 /* method abstract_compiler#AbstractCompiler#count_type_test_skipped= for (self: AbstractCompiler, HashMap[String, Int]) */
6727 void abstract_compiler__AbstractCompiler__count_type_test_skipped_61d(val* self, val* p0) {
6728 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_skipped].val = p0; /* @count_type_test_skipped on <self:AbstractCompiler> */
6729 RET_LABEL:;
6730 }
6731 /* method abstract_compiler#AbstractCompiler#count_type_test_skipped= for (self: Object, HashMap[String, Int]) */
6732 void VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_skipped_61d(val* self, val* p0) {
6733 abstract_compiler__AbstractCompiler__count_type_test_skipped_61d(self, p0);
6734 RET_LABEL:;
6735 }
6736 /* method abstract_compiler#AbstractCompiler#init_count_type_test_tags for (self: AbstractCompiler): HashMap[String, Int] */
6737 val* abstract_compiler__AbstractCompiler__init_count_type_test_tags(val* self) {
6738 val* var /* : HashMap[String, Int] */;
6739 val* var1 /* : HashMap[String, Int] */;
6740 val* var_res /* var res: HashMap[String, Int] */;
6741 val* var2 /* : Array[String] */;
6742 val* var3 /* : Iterator[nullable Object] */;
6743 short int var4 /* : Bool */;
6744 val* var5 /* : nullable Object */;
6745 val* var_tag /* var tag: String */;
6746 long var6 /* : Int */;
6747 val* var7 /* : nullable Object */;
6748 var1 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapstring__Stringkernel__Int);
6749 ((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashMap__init]))(var1) /* init on <var1:HashMap[String, Int]>*/;
6750 var_res = var1;
6751 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_tags]))(self) /* count_type_test_tags on <self:AbstractCompiler>*/;
6752 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:Array[String]>*/;
6753 for(;;) {
6754 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
6755 if(!var4) break;
6756 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
6757 var_tag = var5;
6758 var6 = 0;
6759 var7 = BOX_kernel__Int(var6); /* autobox from Int to nullable Object */
6760 ((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]>*/;
6761 CONTINUE_label: (void)0;
6762 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
6763 }
6764 BREAK_label: (void)0;
6765 var = var_res;
6766 goto RET_LABEL;
6767 RET_LABEL:;
6768 return var;
6769 }
6770 /* method abstract_compiler#AbstractCompiler#init_count_type_test_tags for (self: Object): HashMap[String, Int] */
6771 val* VIRTUAL_abstract_compiler__AbstractCompiler__init_count_type_test_tags(val* self) {
6772 val* var /* : HashMap[String, Int] */;
6773 val* var1 /* : HashMap[String, Int] */;
6774 var1 = abstract_compiler__AbstractCompiler__init_count_type_test_tags(self);
6775 var = var1;
6776 RET_LABEL:;
6777 return var;
6778 }
6779 /* method abstract_compiler#AbstractCompiler#display_stats for (self: AbstractCompiler) */
6780 void abstract_compiler__AbstractCompiler__display_stats(val* self) {
6781 val* var /* : ModelBuilder */;
6782 val* var1 /* : ToolContext */;
6783 val* var2 /* : OptionBool */;
6784 val* var3 /* : nullable Object */;
6785 short int var4 /* : Bool */;
6786 static val* varonce;
6787 val* var5 /* : String */;
6788 char* var6 /* : NativeString */;
6789 long var7 /* : Int */;
6790 val* var8 /* : String */;
6791 static val* varonce9;
6792 val* var10 /* : String */;
6793 char* var11 /* : NativeString */;
6794 long var12 /* : Int */;
6795 val* var13 /* : String */;
6796 val* var14 /* : HashMap[String, Int] */;
6797 val* var_count_type_test_total /* var count_type_test_total: HashMap[String, Int] */;
6798 val* var15 /* : HashMap[String, Int] */;
6799 static val* varonce16;
6800 val* var17 /* : String */;
6801 char* var18 /* : NativeString */;
6802 long var19 /* : Int */;
6803 val* var20 /* : String */;
6804 long var21 /* : Int */;
6805 val* var22 /* : nullable Object */;
6806 val* var23 /* : HashMap[String, Int] */;
6807 static val* varonce24;
6808 val* var25 /* : String */;
6809 char* var26 /* : NativeString */;
6810 long var27 /* : Int */;
6811 val* var28 /* : String */;
6812 long var29 /* : Int */;
6813 val* var30 /* : nullable Object */;
6814 val* var31 /* : HashMap[String, Int] */;
6815 static val* varonce32;
6816 val* var33 /* : String */;
6817 char* var34 /* : NativeString */;
6818 long var35 /* : Int */;
6819 val* var36 /* : String */;
6820 long var37 /* : Int */;
6821 val* var38 /* : nullable Object */;
6822 static val* varonce39;
6823 val* var40 /* : String */;
6824 char* var41 /* : NativeString */;
6825 long var42 /* : Int */;
6826 val* var43 /* : String */;
6827 long var44 /* : Int */;
6828 val* var45 /* : nullable Object */;
6829 val* var46 /* : Array[String] */;
6830 val* var47 /* : Iterator[nullable Object] */;
6831 short int var48 /* : Bool */;
6832 val* var49 /* : nullable Object */;
6833 val* var_tag /* var tag: String */;
6834 val* var50 /* : HashMap[String, Int] */;
6835 val* var51 /* : nullable Object */;
6836 val* var52 /* : HashMap[String, Int] */;
6837 val* var53 /* : nullable Object */;
6838 long var54 /* : Int */;
6839 long var56 /* : Int */;
6840 long var57 /* : Int */;
6841 long var58 /* : Int */;
6842 val* var59 /* : HashMap[String, Int] */;
6843 val* var60 /* : nullable Object */;
6844 long var61 /* : Int */;
6845 long var63 /* : Int */;
6846 long var64 /* : Int */;
6847 val* var65 /* : nullable Object */;
6848 val* var66 /* : HashMap[String, Int] */;
6849 val* var_ /* var : HashMap[String, Int] */;
6850 static val* varonce67;
6851 val* var68 /* : String */;
6852 char* var69 /* : NativeString */;
6853 long var70 /* : Int */;
6854 val* var71 /* : String */;
6855 val* var_72 /* var : String */;
6856 val* var73 /* : nullable Object */;
6857 val* var74 /* : HashMap[String, Int] */;
6858 val* var75 /* : nullable Object */;
6859 long var76 /* : Int */;
6860 long var78 /* : Int */;
6861 long var79 /* : Int */;
6862 long var80 /* : Int */;
6863 val* var81 /* : nullable Object */;
6864 val* var82 /* : HashMap[String, Int] */;
6865 val* var_83 /* var : HashMap[String, Int] */;
6866 static val* varonce84;
6867 val* var85 /* : String */;
6868 char* var86 /* : NativeString */;
6869 long var87 /* : Int */;
6870 val* var88 /* : String */;
6871 val* var_89 /* var : String */;
6872 val* var90 /* : nullable Object */;
6873 val* var91 /* : HashMap[String, Int] */;
6874 val* var92 /* : nullable Object */;
6875 long var93 /* : Int */;
6876 long var95 /* : Int */;
6877 long var96 /* : Int */;
6878 long var97 /* : Int */;
6879 val* var98 /* : nullable Object */;
6880 val* var99 /* : HashMap[String, Int] */;
6881 val* var_100 /* var : HashMap[String, Int] */;
6882 static val* varonce101;
6883 val* var102 /* : String */;
6884 char* var103 /* : NativeString */;
6885 long var104 /* : Int */;
6886 val* var105 /* : String */;
6887 val* var_106 /* var : String */;
6888 val* var107 /* : nullable Object */;
6889 val* var108 /* : HashMap[String, Int] */;
6890 val* var109 /* : nullable Object */;
6891 long var110 /* : Int */;
6892 long var112 /* : Int */;
6893 long var113 /* : Int */;
6894 long var114 /* : Int */;
6895 val* var115 /* : nullable Object */;
6896 val* var_116 /* var : HashMap[String, Int] */;
6897 static val* varonce117;
6898 val* var118 /* : String */;
6899 char* var119 /* : NativeString */;
6900 long var120 /* : Int */;
6901 val* var121 /* : String */;
6902 val* var_122 /* var : String */;
6903 val* var123 /* : nullable Object */;
6904 val* var124 /* : nullable Object */;
6905 long var125 /* : Int */;
6906 long var127 /* : Int */;
6907 long var128 /* : Int */;
6908 long var129 /* : Int */;
6909 val* var130 /* : nullable Object */;
6910 static val* varonce131;
6911 val* var132 /* : String */;
6912 char* var133 /* : NativeString */;
6913 long var134 /* : Int */;
6914 val* var135 /* : String */;
6915 val* var136 /* : nullable Object */;
6916 long var137 /* : Int */;
6917 long var_count_type_test /* var count_type_test: Int */;
6918 val* var138 /* : Array[String] */;
6919 val* var139 /* : Array[nullable Object] */;
6920 val* var_tags /* var tags: Array[String] */;
6921 static val* varonce140;
6922 val* var141 /* : String */;
6923 char* var142 /* : NativeString */;
6924 long var143 /* : Int */;
6925 val* var144 /* : String */;
6926 val* var145 /* : Iterator[nullable Object] */;
6927 short int var146 /* : Bool */;
6928 val* var147 /* : nullable Object */;
6929 val* var_tag148 /* var tag: String */;
6930 val* var149 /* : Array[Object] */;
6931 long var150 /* : Int */;
6932 val* var151 /* : NativeArray[Object] */;
6933 static val* varonce152;
6934 val* var153 /* : String */;
6935 char* var154 /* : NativeString */;
6936 long var155 /* : Int */;
6937 val* var156 /* : String */;
6938 val* var157 /* : HashMap[String, Int] */;
6939 val* var158 /* : nullable Object */;
6940 static val* varonce159;
6941 val* var160 /* : String */;
6942 char* var161 /* : NativeString */;
6943 long var162 /* : Int */;
6944 val* var163 /* : String */;
6945 val* var164 /* : HashMap[String, Int] */;
6946 val* var165 /* : nullable Object */;
6947 val* var166 /* : String */;
6948 long var167 /* : Int */;
6949 static val* varonce168;
6950 val* var169 /* : String */;
6951 char* var170 /* : NativeString */;
6952 long var171 /* : Int */;
6953 val* var172 /* : String */;
6954 val* var173 /* : Array[Object] */;
6955 long var174 /* : Int */;
6956 val* var175 /* : NativeArray[Object] */;
6957 val* var176 /* : String */;
6958 val* var177 /* : Array[Object] */;
6959 long var178 /* : Int */;
6960 val* var179 /* : NativeArray[Object] */;
6961 static val* varonce180;
6962 val* var181 /* : String */;
6963 char* var182 /* : NativeString */;
6964 long var183 /* : Int */;
6965 val* var184 /* : String */;
6966 val* var185 /* : HashMap[String, Int] */;
6967 val* var186 /* : nullable Object */;
6968 static val* varonce187;
6969 val* var188 /* : String */;
6970 char* var189 /* : NativeString */;
6971 long var190 /* : Int */;
6972 val* var191 /* : String */;
6973 val* var192 /* : HashMap[String, Int] */;
6974 val* var193 /* : nullable Object */;
6975 val* var194 /* : String */;
6976 long var195 /* : Int */;
6977 static val* varonce196;
6978 val* var197 /* : String */;
6979 char* var198 /* : NativeString */;
6980 long var199 /* : Int */;
6981 val* var200 /* : String */;
6982 val* var201 /* : Array[Object] */;
6983 long var202 /* : Int */;
6984 val* var203 /* : NativeArray[Object] */;
6985 val* var204 /* : String */;
6986 val* var205 /* : Array[Object] */;
6987 long var206 /* : Int */;
6988 val* var207 /* : NativeArray[Object] */;
6989 static val* varonce208;
6990 val* var209 /* : String */;
6991 char* var210 /* : NativeString */;
6992 long var211 /* : Int */;
6993 val* var212 /* : String */;
6994 val* var213 /* : HashMap[String, Int] */;
6995 val* var214 /* : nullable Object */;
6996 static val* varonce215;
6997 val* var216 /* : String */;
6998 char* var217 /* : NativeString */;
6999 long var218 /* : Int */;
7000 val* var219 /* : String */;
7001 val* var220 /* : HashMap[String, Int] */;
7002 val* var221 /* : nullable Object */;
7003 val* var222 /* : String */;
7004 long var223 /* : Int */;
7005 static val* varonce224;
7006 val* var225 /* : String */;
7007 char* var226 /* : NativeString */;
7008 long var227 /* : Int */;
7009 val* var228 /* : String */;
7010 val* var229 /* : Array[Object] */;
7011 long var230 /* : Int */;
7012 val* var231 /* : NativeArray[Object] */;
7013 val* var232 /* : String */;
7014 val* var233 /* : Array[Object] */;
7015 long var234 /* : Int */;
7016 val* var235 /* : NativeArray[Object] */;
7017 static val* varonce236;
7018 val* var237 /* : String */;
7019 char* var238 /* : NativeString */;
7020 long var239 /* : Int */;
7021 val* var240 /* : String */;
7022 val* var241 /* : nullable Object */;
7023 static val* varonce242;
7024 val* var243 /* : String */;
7025 char* var244 /* : NativeString */;
7026 long var245 /* : Int */;
7027 val* var246 /* : String */;
7028 val* var247 /* : nullable Object */;
7029 val* var248 /* : String */;
7030 long var249 /* : Int */;
7031 static val* varonce250;
7032 val* var251 /* : String */;
7033 char* var252 /* : NativeString */;
7034 long var253 /* : Int */;
7035 val* var254 /* : String */;
7036 val* var255 /* : Array[Object] */;
7037 long var256 /* : Int */;
7038 val* var257 /* : NativeArray[Object] */;
7039 val* var258 /* : String */;
7040 val* var259 /* : Array[Object] */;
7041 long var260 /* : Int */;
7042 val* var261 /* : NativeArray[Object] */;
7043 static val* varonce262;
7044 val* var263 /* : String */;
7045 char* var264 /* : NativeString */;
7046 long var265 /* : Int */;
7047 val* var266 /* : String */;
7048 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
7049 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var) /* toolcontext on <var:ModelBuilder>*/;
7050 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__ToolContext__opt_typing_test_metrics]))(var1) /* opt_typing_test_metrics on <var1:ToolContext>*/;
7051 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_opts__Option__value]))(var2) /* value on <var2:OptionBool>*/;
7052 var4 = ((struct instance_kernel__Bool*)var3)->value; /* autounbox from nullable Object to Bool */;
7053 if (var4){
7054 if (varonce) {
7055 var5 = varonce;
7056 } else {
7057 var6 = "# static count_type_test";
7058 var7 = 24;
7059 var8 = string__NativeString__to_s_with_length(var6, var7);
7060 var5 = var8;
7061 varonce = var5;
7062 }
7063 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var5) /* print on <self:AbstractCompiler>*/;
7064 if (varonce9) {
7065 var10 = varonce9;
7066 } else {
7067 var11 = "\11resolved:\11unresolved\11skipped\11total";
7068 var12 = 35;
7069 var13 = string__NativeString__to_s_with_length(var11, var12);
7070 var10 = var13;
7071 varonce9 = var10;
7072 }
7073 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var10) /* print on <self:AbstractCompiler>*/;
7074 var14 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__init_count_type_test_tags]))(self) /* init_count_type_test_tags on <self:AbstractCompiler>*/;
7075 var_count_type_test_total = var14;
7076 var15 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_resolved]))(self) /* count_type_test_resolved on <self:AbstractCompiler>*/;
7077 if (varonce16) {
7078 var17 = varonce16;
7079 } else {
7080 var18 = "total";
7081 var19 = 5;
7082 var20 = string__NativeString__to_s_with_length(var18, var19);
7083 var17 = var20;
7084 varonce16 = var17;
7085 }
7086 var21 = 0;
7087 var22 = BOX_kernel__Int(var21); /* autobox from Int to nullable Object */
7088 ((void (*)(val*, val*, val*))(var15->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var15, var17, var22) /* []= on <var15:HashMap[String, Int]>*/;
7089 var23 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_unresolved]))(self) /* count_type_test_unresolved on <self:AbstractCompiler>*/;
7090 if (varonce24) {
7091 var25 = varonce24;
7092 } else {
7093 var26 = "total";
7094 var27 = 5;
7095 var28 = string__NativeString__to_s_with_length(var26, var27);
7096 var25 = var28;
7097 varonce24 = var25;
7098 }
7099 var29 = 0;
7100 var30 = BOX_kernel__Int(var29); /* autobox from Int to nullable Object */
7101 ((void (*)(val*, val*, val*))(var23->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var23, var25, var30) /* []= on <var23:HashMap[String, Int]>*/;
7102 var31 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_skipped]))(self) /* count_type_test_skipped on <self:AbstractCompiler>*/;
7103 if (varonce32) {
7104 var33 = varonce32;
7105 } else {
7106 var34 = "total";
7107 var35 = 5;
7108 var36 = string__NativeString__to_s_with_length(var34, var35);
7109 var33 = var36;
7110 varonce32 = var33;
7111 }
7112 var37 = 0;
7113 var38 = BOX_kernel__Int(var37); /* autobox from Int to nullable Object */
7114 ((void (*)(val*, val*, val*))(var31->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var31, var33, var38) /* []= on <var31:HashMap[String, Int]>*/;
7115 if (varonce39) {
7116 var40 = varonce39;
7117 } else {
7118 var41 = "total";
7119 var42 = 5;
7120 var43 = string__NativeString__to_s_with_length(var41, var42);
7121 var40 = var43;
7122 varonce39 = var40;
7123 }
7124 var44 = 0;
7125 var45 = BOX_kernel__Int(var44); /* autobox from Int to nullable Object */
7126 ((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]>*/;
7127 var46 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_tags]))(self) /* count_type_test_tags on <self:AbstractCompiler>*/;
7128 var47 = ((val* (*)(val*))(var46->class->vft[COLOR_abstract_collection__Collection__iterator]))(var46) /* iterator on <var46:Array[String]>*/;
7129 for(;;) {
7130 var48 = ((short int (*)(val*))(var47->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var47) /* is_ok on <var47:Iterator[nullable Object]>*/;
7131 if(!var48) break;
7132 var49 = ((val* (*)(val*))(var47->class->vft[COLOR_abstract_collection__Iterator__item]))(var47) /* item on <var47:Iterator[nullable Object]>*/;
7133 var_tag = var49;
7134 var50 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_resolved]))(self) /* count_type_test_resolved on <self:AbstractCompiler>*/;
7135 var51 = ((val* (*)(val*, val*))(var50->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var50, var_tag) /* [] on <var50:HashMap[String, Int]>*/;
7136 var52 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_unresolved]))(self) /* count_type_test_unresolved on <self:AbstractCompiler>*/;
7137 var53 = ((val* (*)(val*, val*))(var52->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var52, var_tag) /* [] on <var52:HashMap[String, Int]>*/;
7138 { /* Inline kernel#Int#+ (var51,var53) */
7139 var56 = ((struct instance_kernel__Int*)var51)->value; /* autounbox from nullable Object to Int */;
7140 var57 = ((struct instance_kernel__Int*)var53)->value; /* autounbox from nullable Object to Int */;
7141 var58 = var56 + var57;
7142 var54 = var58;
7143 goto RET_LABEL55;
7144 RET_LABEL55:(void)0;
7145 }
7146 var59 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_skipped]))(self) /* count_type_test_skipped on <self:AbstractCompiler>*/;
7147 var60 = ((val* (*)(val*, val*))(var59->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var59, var_tag) /* [] on <var59:HashMap[String, Int]>*/;
7148 { /* Inline kernel#Int#+ (var54,var60) */
7149 var63 = ((struct instance_kernel__Int*)var60)->value; /* autounbox from nullable Object to Int */;
7150 var64 = var54 + var63;
7151 var61 = var64;
7152 goto RET_LABEL62;
7153 RET_LABEL62:(void)0;
7154 }
7155 var65 = BOX_kernel__Int(var61); /* autobox from Int to nullable Object */
7156 ((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]>*/;
7157 var66 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_resolved]))(self) /* count_type_test_resolved on <self:AbstractCompiler>*/;
7158 var_ = var66;
7159 if (varonce67) {
7160 var68 = varonce67;
7161 } else {
7162 var69 = "total";
7163 var70 = 5;
7164 var71 = string__NativeString__to_s_with_length(var69, var70);
7165 var68 = var71;
7166 varonce67 = var68;
7167 }
7168 var_72 = var68;
7169 var73 = ((val* (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_, var_72) /* [] on <var_:HashMap[String, Int]>*/;
7170 var74 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_resolved]))(self) /* count_type_test_resolved on <self:AbstractCompiler>*/;
7171 var75 = ((val* (*)(val*, val*))(var74->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var74, var_tag) /* [] on <var74:HashMap[String, Int]>*/;
7172 { /* Inline kernel#Int#+ (var73,var75) */
7173 var78 = ((struct instance_kernel__Int*)var73)->value; /* autounbox from nullable Object to Int */;
7174 var79 = ((struct instance_kernel__Int*)var75)->value; /* autounbox from nullable Object to Int */;
7175 var80 = var78 + var79;
7176 var76 = var80;
7177 goto RET_LABEL77;
7178 RET_LABEL77:(void)0;
7179 }
7180 var81 = BOX_kernel__Int(var76); /* autobox from Int to nullable Object */
7181 ((void (*)(val*, val*, val*))(var_->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_, var_72, var81) /* []= on <var_:HashMap[String, Int]>*/;
7182 var82 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_unresolved]))(self) /* count_type_test_unresolved on <self:AbstractCompiler>*/;
7183 var_83 = var82;
7184 if (varonce84) {
7185 var85 = varonce84;
7186 } else {
7187 var86 = "total";
7188 var87 = 5;
7189 var88 = string__NativeString__to_s_with_length(var86, var87);
7190 var85 = var88;
7191 varonce84 = var85;
7192 }
7193 var_89 = var85;
7194 var90 = ((val* (*)(val*, val*))(var_83->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_83, var_89) /* [] on <var_83:HashMap[String, Int]>*/;
7195 var91 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_unresolved]))(self) /* count_type_test_unresolved on <self:AbstractCompiler>*/;
7196 var92 = ((val* (*)(val*, val*))(var91->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var91, var_tag) /* [] on <var91:HashMap[String, Int]>*/;
7197 { /* Inline kernel#Int#+ (var90,var92) */
7198 var95 = ((struct instance_kernel__Int*)var90)->value; /* autounbox from nullable Object to Int */;
7199 var96 = ((struct instance_kernel__Int*)var92)->value; /* autounbox from nullable Object to Int */;
7200 var97 = var95 + var96;
7201 var93 = var97;
7202 goto RET_LABEL94;
7203 RET_LABEL94:(void)0;
7204 }
7205 var98 = BOX_kernel__Int(var93); /* autobox from Int to nullable Object */
7206 ((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]>*/;
7207 var99 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_skipped]))(self) /* count_type_test_skipped on <self:AbstractCompiler>*/;
7208 var_100 = var99;
7209 if (varonce101) {
7210 var102 = varonce101;
7211 } else {
7212 var103 = "total";
7213 var104 = 5;
7214 var105 = string__NativeString__to_s_with_length(var103, var104);
7215 var102 = var105;
7216 varonce101 = var102;
7217 }
7218 var_106 = var102;
7219 var107 = ((val* (*)(val*, val*))(var_100->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_100, var_106) /* [] on <var_100:HashMap[String, Int]>*/;
7220 var108 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_skipped]))(self) /* count_type_test_skipped on <self:AbstractCompiler>*/;
7221 var109 = ((val* (*)(val*, val*))(var108->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var108, var_tag) /* [] on <var108:HashMap[String, Int]>*/;
7222 { /* Inline kernel#Int#+ (var107,var109) */
7223 var112 = ((struct instance_kernel__Int*)var107)->value; /* autounbox from nullable Object to Int */;
7224 var113 = ((struct instance_kernel__Int*)var109)->value; /* autounbox from nullable Object to Int */;
7225 var114 = var112 + var113;
7226 var110 = var114;
7227 goto RET_LABEL111;
7228 RET_LABEL111:(void)0;
7229 }
7230 var115 = BOX_kernel__Int(var110); /* autobox from Int to nullable Object */
7231 ((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]>*/;
7232 var_116 = var_count_type_test_total;
7233 if (varonce117) {
7234 var118 = varonce117;
7235 } else {
7236 var119 = "total";
7237 var120 = 5;
7238 var121 = string__NativeString__to_s_with_length(var119, var120);
7239 var118 = var121;
7240 varonce117 = var118;
7241 }
7242 var_122 = var118;
7243 var123 = ((val* (*)(val*, val*))(var_116->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_116, var_122) /* [] on <var_116:HashMap[String, Int]>*/;
7244 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]>*/;
7245 { /* Inline kernel#Int#+ (var123,var124) */
7246 var127 = ((struct instance_kernel__Int*)var123)->value; /* autounbox from nullable Object to Int */;
7247 var128 = ((struct instance_kernel__Int*)var124)->value; /* autounbox from nullable Object to Int */;
7248 var129 = var127 + var128;
7249 var125 = var129;
7250 goto RET_LABEL126;
7251 RET_LABEL126:(void)0;
7252 }
7253 var130 = BOX_kernel__Int(var125); /* autobox from Int to nullable Object */
7254 ((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]>*/;
7255 CONTINUE_label: (void)0;
7256 ((void (*)(val*))(var47->class->vft[COLOR_abstract_collection__Iterator__next]))(var47) /* next on <var47:Iterator[nullable Object]>*/;
7257 }
7258 BREAK_label: (void)0;
7259 if (varonce131) {
7260 var132 = varonce131;
7261 } else {
7262 var133 = "total";
7263 var134 = 5;
7264 var135 = string__NativeString__to_s_with_length(var133, var134);
7265 var132 = var135;
7266 varonce131 = var132;
7267 }
7268 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]>*/;
7269 var137 = ((struct instance_kernel__Int*)var136)->value; /* autounbox from nullable Object to Int */;
7270 var_count_type_test = var137;
7271 var138 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_tags]))(self) /* count_type_test_tags on <self:AbstractCompiler>*/;
7272 var139 = ((val* (*)(val*))(var138->class->vft[COLOR_array__Collection__to_a]))(var138) /* to_a on <var138:Array[String]>*/;
7273 var_tags = var139;
7274 if (varonce140) {
7275 var141 = varonce140;
7276 } else {
7277 var142 = "total";
7278 var143 = 5;
7279 var144 = string__NativeString__to_s_with_length(var142, var143);
7280 var141 = var144;
7281 varonce140 = var141;
7282 }
7283 ((void (*)(val*, val*))(var_tags->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_tags, var141) /* add on <var_tags:Array[String]>*/;
7284 var145 = ((val* (*)(val*))(var_tags->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_tags) /* iterator on <var_tags:Array[String]>*/;
7285 for(;;) {
7286 var146 = ((short int (*)(val*))(var145->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var145) /* is_ok on <var145:Iterator[nullable Object]>*/;
7287 if(!var146) break;
7288 var147 = ((val* (*)(val*))(var145->class->vft[COLOR_abstract_collection__Iterator__item]))(var145) /* item on <var145:Iterator[nullable Object]>*/;
7289 var_tag148 = var147;
7290 var149 = NEW_array__Array(&type_array__Arraykernel__Object);
7291 { /* var149 = array_instance Array[Object] */
7292 var150 = 1;
7293 var151 = NEW_array__NativeArray(var150, &type_array__NativeArraykernel__Object);
7294 ((struct instance_array__NativeArray*)var151)->values[0] = (val*) var_tag148;
7295 ((void (*)(val*, val*, long))(var149->class->vft[COLOR_array__Array__with_native]))(var149, var151, var150) /* with_native on <var149:Array[Object]>*/;
7296 }
7297 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__printn]))(self, var149) /* printn on <self:AbstractCompiler>*/;
7298 if (varonce152) {
7299 var153 = varonce152;
7300 } else {
7301 var154 = "\11";
7302 var155 = 1;
7303 var156 = string__NativeString__to_s_with_length(var154, var155);
7304 var153 = var156;
7305 varonce152 = var153;
7306 }
7307 var157 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_resolved]))(self) /* count_type_test_resolved on <self:AbstractCompiler>*/;
7308 var158 = ((val* (*)(val*, val*))(var157->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var157, var_tag148) /* [] on <var157:HashMap[String, Int]>*/;
7309 if (varonce159) {
7310 var160 = varonce159;
7311 } else {
7312 var161 = " (";
7313 var162 = 2;
7314 var163 = string__NativeString__to_s_with_length(var161, var162);
7315 var160 = var163;
7316 varonce159 = var160;
7317 }
7318 var164 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_resolved]))(self) /* count_type_test_resolved on <self:AbstractCompiler>*/;
7319 var165 = ((val* (*)(val*, val*))(var164->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var164, var_tag148) /* [] on <var164:HashMap[String, Int]>*/;
7320 var167 = ((struct instance_kernel__Int*)var165)->value; /* autounbox from nullable Object to Int */;
7321 var166 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__div]))(self, var167, var_count_type_test) /* div on <self:AbstractCompiler>*/;
7322 if (varonce168) {
7323 var169 = varonce168;
7324 } else {
7325 var170 = "%)";
7326 var171 = 2;
7327 var172 = string__NativeString__to_s_with_length(var170, var171);
7328 var169 = var172;
7329 varonce168 = var169;
7330 }
7331 var173 = NEW_array__Array(&type_array__Arraykernel__Object);
7332 { /* var173 = array_instance Array[Object] */
7333 var174 = 5;
7334 var175 = NEW_array__NativeArray(var174, &type_array__NativeArraykernel__Object);
7335 ((struct instance_array__NativeArray*)var175)->values[0] = (val*) var153;
7336 ((struct instance_array__NativeArray*)var175)->values[1] = (val*) var158;
7337 ((struct instance_array__NativeArray*)var175)->values[2] = (val*) var160;
7338 ((struct instance_array__NativeArray*)var175)->values[3] = (val*) var166;
7339 ((struct instance_array__NativeArray*)var175)->values[4] = (val*) var169;
7340 ((void (*)(val*, val*, long))(var173->class->vft[COLOR_array__Array__with_native]))(var173, var175, var174) /* with_native on <var173:Array[Object]>*/;
7341 }
7342 var176 = ((val* (*)(val*))(var173->class->vft[COLOR_string__Object__to_s]))(var173) /* to_s on <var173:Array[Object]>*/;
7343 var177 = NEW_array__Array(&type_array__Arraykernel__Object);
7344 { /* var177 = array_instance Array[Object] */
7345 var178 = 1;
7346 var179 = NEW_array__NativeArray(var178, &type_array__NativeArraykernel__Object);
7347 ((struct instance_array__NativeArray*)var179)->values[0] = (val*) var176;
7348 ((void (*)(val*, val*, long))(var177->class->vft[COLOR_array__Array__with_native]))(var177, var179, var178) /* with_native on <var177:Array[Object]>*/;
7349 }
7350 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__printn]))(self, var177) /* printn on <self:AbstractCompiler>*/;
7351 if (varonce180) {
7352 var181 = varonce180;
7353 } else {
7354 var182 = "\11";
7355 var183 = 1;
7356 var184 = string__NativeString__to_s_with_length(var182, var183);
7357 var181 = var184;
7358 varonce180 = var181;
7359 }
7360 var185 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_unresolved]))(self) /* count_type_test_unresolved on <self:AbstractCompiler>*/;
7361 var186 = ((val* (*)(val*, val*))(var185->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var185, var_tag148) /* [] on <var185:HashMap[String, Int]>*/;
7362 if (varonce187) {
7363 var188 = varonce187;
7364 } else {
7365 var189 = " (";
7366 var190 = 2;
7367 var191 = string__NativeString__to_s_with_length(var189, var190);
7368 var188 = var191;
7369 varonce187 = var188;
7370 }
7371 var192 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_unresolved]))(self) /* count_type_test_unresolved on <self:AbstractCompiler>*/;
7372 var193 = ((val* (*)(val*, val*))(var192->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var192, var_tag148) /* [] on <var192:HashMap[String, Int]>*/;
7373 var195 = ((struct instance_kernel__Int*)var193)->value; /* autounbox from nullable Object to Int */;
7374 var194 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__div]))(self, var195, var_count_type_test) /* div on <self:AbstractCompiler>*/;
7375 if (varonce196) {
7376 var197 = varonce196;
7377 } else {
7378 var198 = "%)";
7379 var199 = 2;
7380 var200 = string__NativeString__to_s_with_length(var198, var199);
7381 var197 = var200;
7382 varonce196 = var197;
7383 }
7384 var201 = NEW_array__Array(&type_array__Arraykernel__Object);
7385 { /* var201 = array_instance Array[Object] */
7386 var202 = 5;
7387 var203 = NEW_array__NativeArray(var202, &type_array__NativeArraykernel__Object);
7388 ((struct instance_array__NativeArray*)var203)->values[0] = (val*) var181;
7389 ((struct instance_array__NativeArray*)var203)->values[1] = (val*) var186;
7390 ((struct instance_array__NativeArray*)var203)->values[2] = (val*) var188;
7391 ((struct instance_array__NativeArray*)var203)->values[3] = (val*) var194;
7392 ((struct instance_array__NativeArray*)var203)->values[4] = (val*) var197;
7393 ((void (*)(val*, val*, long))(var201->class->vft[COLOR_array__Array__with_native]))(var201, var203, var202) /* with_native on <var201:Array[Object]>*/;
7394 }
7395 var204 = ((val* (*)(val*))(var201->class->vft[COLOR_string__Object__to_s]))(var201) /* to_s on <var201:Array[Object]>*/;
7396 var205 = NEW_array__Array(&type_array__Arraykernel__Object);
7397 { /* var205 = array_instance Array[Object] */
7398 var206 = 1;
7399 var207 = NEW_array__NativeArray(var206, &type_array__NativeArraykernel__Object);
7400 ((struct instance_array__NativeArray*)var207)->values[0] = (val*) var204;
7401 ((void (*)(val*, val*, long))(var205->class->vft[COLOR_array__Array__with_native]))(var205, var207, var206) /* with_native on <var205:Array[Object]>*/;
7402 }
7403 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__printn]))(self, var205) /* printn on <self:AbstractCompiler>*/;
7404 if (varonce208) {
7405 var209 = varonce208;
7406 } else {
7407 var210 = "\11";
7408 var211 = 1;
7409 var212 = string__NativeString__to_s_with_length(var210, var211);
7410 var209 = var212;
7411 varonce208 = var209;
7412 }
7413 var213 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_skipped]))(self) /* count_type_test_skipped on <self:AbstractCompiler>*/;
7414 var214 = ((val* (*)(val*, val*))(var213->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var213, var_tag148) /* [] on <var213:HashMap[String, Int]>*/;
7415 if (varonce215) {
7416 var216 = varonce215;
7417 } else {
7418 var217 = " (";
7419 var218 = 2;
7420 var219 = string__NativeString__to_s_with_length(var217, var218);
7421 var216 = var219;
7422 varonce215 = var216;
7423 }
7424 var220 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_skipped]))(self) /* count_type_test_skipped on <self:AbstractCompiler>*/;
7425 var221 = ((val* (*)(val*, val*))(var220->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var220, var_tag148) /* [] on <var220:HashMap[String, Int]>*/;
7426 var223 = ((struct instance_kernel__Int*)var221)->value; /* autounbox from nullable Object to Int */;
7427 var222 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__div]))(self, var223, var_count_type_test) /* div on <self:AbstractCompiler>*/;
7428 if (varonce224) {
7429 var225 = varonce224;
7430 } else {
7431 var226 = "%)";
7432 var227 = 2;
7433 var228 = string__NativeString__to_s_with_length(var226, var227);
7434 var225 = var228;
7435 varonce224 = var225;
7436 }
7437 var229 = NEW_array__Array(&type_array__Arraykernel__Object);
7438 { /* var229 = array_instance Array[Object] */
7439 var230 = 5;
7440 var231 = NEW_array__NativeArray(var230, &type_array__NativeArraykernel__Object);
7441 ((struct instance_array__NativeArray*)var231)->values[0] = (val*) var209;
7442 ((struct instance_array__NativeArray*)var231)->values[1] = (val*) var214;
7443 ((struct instance_array__NativeArray*)var231)->values[2] = (val*) var216;
7444 ((struct instance_array__NativeArray*)var231)->values[3] = (val*) var222;
7445 ((struct instance_array__NativeArray*)var231)->values[4] = (val*) var225;
7446 ((void (*)(val*, val*, long))(var229->class->vft[COLOR_array__Array__with_native]))(var229, var231, var230) /* with_native on <var229:Array[Object]>*/;
7447 }
7448 var232 = ((val* (*)(val*))(var229->class->vft[COLOR_string__Object__to_s]))(var229) /* to_s on <var229:Array[Object]>*/;
7449 var233 = NEW_array__Array(&type_array__Arraykernel__Object);
7450 { /* var233 = array_instance Array[Object] */
7451 var234 = 1;
7452 var235 = NEW_array__NativeArray(var234, &type_array__NativeArraykernel__Object);
7453 ((struct instance_array__NativeArray*)var235)->values[0] = (val*) var232;
7454 ((void (*)(val*, val*, long))(var233->class->vft[COLOR_array__Array__with_native]))(var233, var235, var234) /* with_native on <var233:Array[Object]>*/;
7455 }
7456 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__printn]))(self, var233) /* printn on <self:AbstractCompiler>*/;
7457 if (varonce236) {
7458 var237 = varonce236;
7459 } else {
7460 var238 = "\11";
7461 var239 = 1;
7462 var240 = string__NativeString__to_s_with_length(var238, var239);
7463 var237 = var240;
7464 varonce236 = var237;
7465 }
7466 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]>*/;
7467 if (varonce242) {
7468 var243 = varonce242;
7469 } else {
7470 var244 = " (";
7471 var245 = 2;
7472 var246 = string__NativeString__to_s_with_length(var244, var245);
7473 var243 = var246;
7474 varonce242 = var243;
7475 }
7476 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]>*/;
7477 var249 = ((struct instance_kernel__Int*)var247)->value; /* autounbox from nullable Object to Int */;
7478 var248 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__div]))(self, var249, var_count_type_test) /* div on <self:AbstractCompiler>*/;
7479 if (varonce250) {
7480 var251 = varonce250;
7481 } else {
7482 var252 = "%)";
7483 var253 = 2;
7484 var254 = string__NativeString__to_s_with_length(var252, var253);
7485 var251 = var254;
7486 varonce250 = var251;
7487 }
7488 var255 = NEW_array__Array(&type_array__Arraykernel__Object);
7489 { /* var255 = array_instance Array[Object] */
7490 var256 = 5;
7491 var257 = NEW_array__NativeArray(var256, &type_array__NativeArraykernel__Object);
7492 ((struct instance_array__NativeArray*)var257)->values[0] = (val*) var237;
7493 ((struct instance_array__NativeArray*)var257)->values[1] = (val*) var241;
7494 ((struct instance_array__NativeArray*)var257)->values[2] = (val*) var243;
7495 ((struct instance_array__NativeArray*)var257)->values[3] = (val*) var248;
7496 ((struct instance_array__NativeArray*)var257)->values[4] = (val*) var251;
7497 ((void (*)(val*, val*, long))(var255->class->vft[COLOR_array__Array__with_native]))(var255, var257, var256) /* with_native on <var255:Array[Object]>*/;
7498 }
7499 var258 = ((val* (*)(val*))(var255->class->vft[COLOR_string__Object__to_s]))(var255) /* to_s on <var255:Array[Object]>*/;
7500 var259 = NEW_array__Array(&type_array__Arraykernel__Object);
7501 { /* var259 = array_instance Array[Object] */
7502 var260 = 1;
7503 var261 = NEW_array__NativeArray(var260, &type_array__NativeArraykernel__Object);
7504 ((struct instance_array__NativeArray*)var261)->values[0] = (val*) var258;
7505 ((void (*)(val*, val*, long))(var259->class->vft[COLOR_array__Array__with_native]))(var259, var261, var260) /* with_native on <var259:Array[Object]>*/;
7506 }
7507 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__printn]))(self, var259) /* printn on <self:AbstractCompiler>*/;
7508 if (varonce262) {
7509 var263 = varonce262;
7510 } else {
7511 var264 = "";
7512 var265 = 0;
7513 var266 = string__NativeString__to_s_with_length(var264, var265);
7514 var263 = var266;
7515 varonce262 = var263;
7516 }
7517 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var263) /* print on <self:AbstractCompiler>*/;
7518 CONTINUE_label267: (void)0;
7519 ((void (*)(val*))(var145->class->vft[COLOR_abstract_collection__Iterator__next]))(var145) /* next on <var145:Iterator[nullable Object]>*/;
7520 }
7521 BREAK_label267: (void)0;
7522 } else {
7523 }
7524 RET_LABEL:;
7525 }
7526 /* method abstract_compiler#AbstractCompiler#display_stats for (self: Object) */
7527 void VIRTUAL_abstract_compiler__AbstractCompiler__display_stats(val* self) {
7528 abstract_compiler__AbstractCompiler__display_stats(self);
7529 RET_LABEL:;
7530 }
7531 /* method abstract_compiler#AbstractCompiler#div for (self: AbstractCompiler, Int, Int): String */
7532 val* abstract_compiler__AbstractCompiler__div(val* self, long p0, long p1) {
7533 val* var /* : String */;
7534 long var_a /* var a: Int */;
7535 long var_b /* var b: Int */;
7536 long var1 /* : Int */;
7537 short int var2 /* : Bool */;
7538 short int var4 /* : Bool */;
7539 static val* varonce;
7540 val* var5 /* : String */;
7541 char* var6 /* : NativeString */;
7542 long var7 /* : Int */;
7543 val* var8 /* : String */;
7544 long var9 /* : Int */;
7545 long var10 /* : Int */;
7546 long var12 /* : Int */;
7547 long var13 /* : Int */;
7548 long var15 /* : Int */;
7549 double var16 /* : Float */;
7550 double var18 /* : Float */;
7551 double var19 /* : Float */;
7552 double var20 /* : Float */;
7553 double var22 /* : Float */;
7554 long var23 /* : Int */;
7555 val* var24 /* : String */;
7556 var_a = p0;
7557 var_b = p1;
7558 var1 = 0;
7559 { /* Inline kernel#Int#== (var_b,var1) */
7560 var4 = var_b == var1;
7561 var2 = var4;
7562 goto RET_LABEL3;
7563 RET_LABEL3:(void)0;
7564 }
7565 if (var2){
7566 if (varonce) {
7567 var5 = varonce;
7568 } else {
7569 var6 = "n/a";
7570 var7 = 3;
7571 var8 = string__NativeString__to_s_with_length(var6, var7);
7572 var5 = var8;
7573 varonce = var5;
7574 }
7575 var = var5;
7576 goto RET_LABEL;
7577 } else {
7578 }
7579 var9 = 10000;
7580 { /* Inline kernel#Int#* (var_a,var9) */
7581 var12 = var_a * var9;
7582 var10 = var12;
7583 goto RET_LABEL11;
7584 RET_LABEL11:(void)0;
7585 }
7586 { /* Inline kernel#Int#/ (var10,var_b) */
7587 var15 = var10 / var_b;
7588 var13 = var15;
7589 goto RET_LABEL14;
7590 RET_LABEL14:(void)0;
7591 }
7592 { /* Inline kernel#Int#to_f (var13) */
7593 var18 = (double)var13;
7594 var16 = var18;
7595 goto RET_LABEL17;
7596 RET_LABEL17:(void)0;
7597 }
7598 var19 = 100.0;
7599 { /* Inline kernel#Float#/ (var16,var19) */
7600 var22 = var16 / var19;
7601 var20 = var22;
7602 goto RET_LABEL21;
7603 RET_LABEL21:(void)0;
7604 }
7605 var23 = 2;
7606 var24 = string__Float__to_precision(var20, var23);
7607 var = var24;
7608 goto RET_LABEL;
7609 RET_LABEL:;
7610 return var;
7611 }
7612 /* method abstract_compiler#AbstractCompiler#div for (self: Object, Int, Int): String */
7613 val* VIRTUAL_abstract_compiler__AbstractCompiler__div(val* self, long p0, long p1) {
7614 val* var /* : String */;
7615 val* var1 /* : String */;
7616 var1 = abstract_compiler__AbstractCompiler__div(self, p0, p1);
7617 var = var1;
7618 RET_LABEL:;
7619 return var;
7620 }
7621 /* method abstract_compiler#CodeFile#name for (self: CodeFile): String */
7622 val* abstract_compiler__CodeFile__name(val* self) {
7623 val* var /* : String */;
7624 val* var1 /* : String */;
7625 var1 = self->attrs[COLOR_abstract_compiler__CodeFile___64dname].val; /* @name on <self:CodeFile> */
7626 if (var1 == NULL) {
7627 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @name");
7628 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 610);
7629 show_backtrace(1);
7630 }
7631 var = var1;
7632 RET_LABEL:;
7633 return var;
7634 }
7635 /* method abstract_compiler#CodeFile#name for (self: Object): String */
7636 val* VIRTUAL_abstract_compiler__CodeFile__name(val* self) {
7637 val* var /* : String */;
7638 val* var1 /* : String */;
7639 var1 = abstract_compiler__CodeFile__name(self);
7640 var = var1;
7641 RET_LABEL:;
7642 return var;
7643 }
7644 /* method abstract_compiler#CodeFile#name= for (self: CodeFile, String) */
7645 void abstract_compiler__CodeFile__name_61d(val* self, val* p0) {
7646 self->attrs[COLOR_abstract_compiler__CodeFile___64dname].val = p0; /* @name on <self:CodeFile> */
7647 RET_LABEL:;
7648 }
7649 /* method abstract_compiler#CodeFile#name= for (self: Object, String) */
7650 void VIRTUAL_abstract_compiler__CodeFile__name_61d(val* self, val* p0) {
7651 abstract_compiler__CodeFile__name_61d(self, p0);
7652 RET_LABEL:;
7653 }
7654 /* method abstract_compiler#CodeFile#writers for (self: CodeFile): Array[CodeWriter] */
7655 val* abstract_compiler__CodeFile__writers(val* self) {
7656 val* var /* : Array[CodeWriter] */;
7657 val* var1 /* : Array[CodeWriter] */;
7658 var1 = self->attrs[COLOR_abstract_compiler__CodeFile___64dwriters].val; /* @writers on <self:CodeFile> */
7659 if (var1 == NULL) {
7660 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @writers");
7661 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 611);
7662 show_backtrace(1);
7663 }
7664 var = var1;
7665 RET_LABEL:;
7666 return var;
7667 }
7668 /* method abstract_compiler#CodeFile#writers for (self: Object): Array[CodeWriter] */
7669 val* VIRTUAL_abstract_compiler__CodeFile__writers(val* self) {
7670 val* var /* : Array[CodeWriter] */;
7671 val* var1 /* : Array[CodeWriter] */;
7672 var1 = abstract_compiler__CodeFile__writers(self);
7673 var = var1;
7674 RET_LABEL:;
7675 return var;
7676 }
7677 /* method abstract_compiler#CodeFile#writers= for (self: CodeFile, Array[CodeWriter]) */
7678 void abstract_compiler__CodeFile__writers_61d(val* self, val* p0) {
7679 self->attrs[COLOR_abstract_compiler__CodeFile___64dwriters].val = p0; /* @writers on <self:CodeFile> */
7680 RET_LABEL:;
7681 }
7682 /* method abstract_compiler#CodeFile#writers= for (self: Object, Array[CodeWriter]) */
7683 void VIRTUAL_abstract_compiler__CodeFile__writers_61d(val* self, val* p0) {
7684 abstract_compiler__CodeFile__writers_61d(self, p0);
7685 RET_LABEL:;
7686 }
7687 /* method abstract_compiler#CodeFile#required_declarations for (self: CodeFile): HashSet[String] */
7688 val* abstract_compiler__CodeFile__required_declarations(val* self) {
7689 val* var /* : HashSet[String] */;
7690 val* var1 /* : HashSet[String] */;
7691 var1 = self->attrs[COLOR_abstract_compiler__CodeFile___64drequired_declarations].val; /* @required_declarations on <self:CodeFile> */
7692 if (var1 == NULL) {
7693 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @required_declarations");
7694 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 612);
7695 show_backtrace(1);
7696 }
7697 var = var1;
7698 RET_LABEL:;
7699 return var;
7700 }
7701 /* method abstract_compiler#CodeFile#required_declarations for (self: Object): HashSet[String] */
7702 val* VIRTUAL_abstract_compiler__CodeFile__required_declarations(val* self) {
7703 val* var /* : HashSet[String] */;
7704 val* var1 /* : HashSet[String] */;
7705 var1 = abstract_compiler__CodeFile__required_declarations(self);
7706 var = var1;
7707 RET_LABEL:;
7708 return var;
7709 }
7710 /* method abstract_compiler#CodeFile#required_declarations= for (self: CodeFile, HashSet[String]) */
7711 void abstract_compiler__CodeFile__required_declarations_61d(val* self, val* p0) {
7712 self->attrs[COLOR_abstract_compiler__CodeFile___64drequired_declarations].val = p0; /* @required_declarations on <self:CodeFile> */
7713 RET_LABEL:;
7714 }
7715 /* method abstract_compiler#CodeFile#required_declarations= for (self: Object, HashSet[String]) */
7716 void VIRTUAL_abstract_compiler__CodeFile__required_declarations_61d(val* self, val* p0) {
7717 abstract_compiler__CodeFile__required_declarations_61d(self, p0);
7718 RET_LABEL:;
7719 }
7720 /* method abstract_compiler#CodeFile#init for (self: CodeFile, String) */
7721 void abstract_compiler__CodeFile__init(val* self, val* p0) {
7722 self->attrs[COLOR_abstract_compiler__CodeFile___64dname].val = p0; /* @name on <self:CodeFile> */
7723 RET_LABEL:;
7724 }
7725 /* method abstract_compiler#CodeFile#init for (self: Object, String) */
7726 void VIRTUAL_abstract_compiler__CodeFile__init(val* self, val* p0) {
7727 abstract_compiler__CodeFile__init(self, p0);
7728 RET_LABEL:;
7729 }
7730 /* method abstract_compiler#CodeWriter#file for (self: CodeWriter): CodeFile */
7731 val* abstract_compiler__CodeWriter__file(val* self) {
7732 val* var /* : CodeFile */;
7733 val* var1 /* : CodeFile */;
7734 var1 = self->attrs[COLOR_abstract_compiler__CodeWriter___64dfile].val; /* @file on <self:CodeWriter> */
7735 if (var1 == NULL) {
7736 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @file");
7737 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 617);
7738 show_backtrace(1);
7739 }
7740 var = var1;
7741 RET_LABEL:;
7742 return var;
7743 }
7744 /* method abstract_compiler#CodeWriter#file for (self: Object): CodeFile */
7745 val* VIRTUAL_abstract_compiler__CodeWriter__file(val* self) {
7746 val* var /* : CodeFile */;
7747 val* var1 /* : CodeFile */;
7748 var1 = abstract_compiler__CodeWriter__file(self);
7749 var = var1;
7750 RET_LABEL:;
7751 return var;
7752 }
7753 /* method abstract_compiler#CodeWriter#file= for (self: CodeWriter, CodeFile) */
7754 void abstract_compiler__CodeWriter__file_61d(val* self, val* p0) {
7755 self->attrs[COLOR_abstract_compiler__CodeWriter___64dfile].val = p0; /* @file on <self:CodeWriter> */
7756 RET_LABEL:;
7757 }
7758 /* method abstract_compiler#CodeWriter#file= for (self: Object, CodeFile) */
7759 void VIRTUAL_abstract_compiler__CodeWriter__file_61d(val* self, val* p0) {
7760 abstract_compiler__CodeWriter__file_61d(self, p0);
7761 RET_LABEL:;
7762 }
7763 /* method abstract_compiler#CodeWriter#lines for (self: CodeWriter): List[String] */
7764 val* abstract_compiler__CodeWriter__lines(val* self) {
7765 val* var /* : List[String] */;
7766 val* var1 /* : List[String] */;
7767 var1 = self->attrs[COLOR_abstract_compiler__CodeWriter___64dlines].val; /* @lines on <self:CodeWriter> */
7768 if (var1 == NULL) {
7769 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @lines");
7770 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 618);
7771 show_backtrace(1);
7772 }
7773 var = var1;
7774 RET_LABEL:;
7775 return var;
7776 }
7777 /* method abstract_compiler#CodeWriter#lines for (self: Object): List[String] */
7778 val* VIRTUAL_abstract_compiler__CodeWriter__lines(val* self) {
7779 val* var /* : List[String] */;
7780 val* var1 /* : List[String] */;
7781 var1 = abstract_compiler__CodeWriter__lines(self);
7782 var = var1;
7783 RET_LABEL:;
7784 return var;
7785 }
7786 /* method abstract_compiler#CodeWriter#lines= for (self: CodeWriter, List[String]) */
7787 void abstract_compiler__CodeWriter__lines_61d(val* self, val* p0) {
7788 self->attrs[COLOR_abstract_compiler__CodeWriter___64dlines].val = p0; /* @lines on <self:CodeWriter> */
7789 RET_LABEL:;
7790 }
7791 /* method abstract_compiler#CodeWriter#lines= for (self: Object, List[String]) */
7792 void VIRTUAL_abstract_compiler__CodeWriter__lines_61d(val* self, val* p0) {
7793 abstract_compiler__CodeWriter__lines_61d(self, p0);
7794 RET_LABEL:;
7795 }
7796 /* method abstract_compiler#CodeWriter#decl_lines for (self: CodeWriter): List[String] */
7797 val* abstract_compiler__CodeWriter__decl_lines(val* self) {
7798 val* var /* : List[String] */;
7799 val* var1 /* : List[String] */;
7800 var1 = self->attrs[COLOR_abstract_compiler__CodeWriter___64ddecl_lines].val; /* @decl_lines on <self:CodeWriter> */
7801 if (var1 == NULL) {
7802 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @decl_lines");
7803 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 619);
7804 show_backtrace(1);
7805 }
7806 var = var1;
7807 RET_LABEL:;
7808 return var;
7809 }
7810 /* method abstract_compiler#CodeWriter#decl_lines for (self: Object): List[String] */
7811 val* VIRTUAL_abstract_compiler__CodeWriter__decl_lines(val* self) {
7812 val* var /* : List[String] */;
7813 val* var1 /* : List[String] */;
7814 var1 = abstract_compiler__CodeWriter__decl_lines(self);
7815 var = var1;
7816 RET_LABEL:;
7817 return var;
7818 }
7819 /* method abstract_compiler#CodeWriter#decl_lines= for (self: CodeWriter, List[String]) */
7820 void abstract_compiler__CodeWriter__decl_lines_61d(val* self, val* p0) {
7821 self->attrs[COLOR_abstract_compiler__CodeWriter___64ddecl_lines].val = p0; /* @decl_lines on <self:CodeWriter> */
7822 RET_LABEL:;
7823 }
7824 /* method abstract_compiler#CodeWriter#decl_lines= for (self: Object, List[String]) */
7825 void VIRTUAL_abstract_compiler__CodeWriter__decl_lines_61d(val* self, val* p0) {
7826 abstract_compiler__CodeWriter__decl_lines_61d(self, p0);
7827 RET_LABEL:;
7828 }
7829 /* method abstract_compiler#CodeWriter#add for (self: CodeWriter, String) */
7830 void abstract_compiler__CodeWriter__add(val* self, val* p0) {
7831 val* var_s /* var s: String */;
7832 val* var /* : List[String] */;
7833 var_s = p0;
7834 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__CodeWriter__lines]))(self) /* lines on <self:CodeWriter>*/;
7835 ((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var, var_s) /* add on <var:List[String]>*/;
7836 RET_LABEL:;
7837 }
7838 /* method abstract_compiler#CodeWriter#add for (self: Object, String) */
7839 void VIRTUAL_abstract_compiler__CodeWriter__add(val* self, val* p0) {
7840 abstract_compiler__CodeWriter__add(self, p0);
7841 RET_LABEL:;
7842 }
7843 /* method abstract_compiler#CodeWriter#add_decl for (self: CodeWriter, String) */
7844 void abstract_compiler__CodeWriter__add_decl(val* self, val* p0) {
7845 val* var_s /* var s: String */;
7846 val* var /* : List[String] */;
7847 var_s = p0;
7848 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__CodeWriter__decl_lines]))(self) /* decl_lines on <self:CodeWriter>*/;
7849 ((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var, var_s) /* add on <var:List[String]>*/;
7850 RET_LABEL:;
7851 }
7852 /* method abstract_compiler#CodeWriter#add_decl for (self: Object, String) */
7853 void VIRTUAL_abstract_compiler__CodeWriter__add_decl(val* self, val* p0) {
7854 abstract_compiler__CodeWriter__add_decl(self, p0);
7855 RET_LABEL:;
7856 }
7857 /* method abstract_compiler#CodeWriter#init for (self: CodeWriter, CodeFile) */
7858 void abstract_compiler__CodeWriter__init(val* self, val* p0) {
7859 val* var_file /* var file: CodeFile */;
7860 val* var /* : Array[CodeWriter] */;
7861 var_file = p0;
7862 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__CodeWriter__file_61d]))(self, var_file) /* file= on <self:CodeWriter>*/;
7863 var = ((val* (*)(val*))(var_file->class->vft[COLOR_abstract_compiler__CodeFile__writers]))(var_file) /* writers on <var_file:CodeFile>*/;
7864 ((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var, self) /* add on <var:Array[CodeWriter]>*/;
7865 RET_LABEL:;
7866 }
7867 /* method abstract_compiler#CodeWriter#init for (self: Object, CodeFile) */
7868 void VIRTUAL_abstract_compiler__CodeWriter__init(val* self, val* p0) {
7869 abstract_compiler__CodeWriter__init(self, p0);
7870 RET_LABEL:;
7871 }
7872 /* method abstract_compiler#AbstractCompilerVisitor#compiler for (self: AbstractCompilerVisitor): AbstractCompiler */
7873 val* abstract_compiler__AbstractCompilerVisitor__compiler(val* self) {
7874 val* var /* : AbstractCompiler */;
7875 val* var1 /* : AbstractCompiler */;
7876 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dcompiler].val; /* @compiler on <self:AbstractCompilerVisitor> */
7877 if (var1 == NULL) {
7878 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @compiler");
7879 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 640);
7880 show_backtrace(1);
7881 }
7882 var = var1;
7883 RET_LABEL:;
7884 return var;
7885 }
7886 /* method abstract_compiler#AbstractCompilerVisitor#compiler for (self: Object): AbstractCompiler */
7887 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__compiler(val* self) {
7888 val* var /* : AbstractCompiler */;
7889 val* var1 /* : AbstractCompiler */;
7890 var1 = abstract_compiler__AbstractCompilerVisitor__compiler(self);
7891 var = var1;
7892 RET_LABEL:;
7893 return var;
7894 }
7895 /* method abstract_compiler#AbstractCompilerVisitor#compiler= for (self: AbstractCompilerVisitor, AbstractCompiler) */
7896 void abstract_compiler__AbstractCompilerVisitor__compiler_61d(val* self, val* p0) {
7897 short int var /* : Bool */;
7898 int cltype;
7899 int idtype;
7900 const struct type* type_struct;
7901 const char* var_class_name;
7902 /* Covariant cast for argument 0 (compiler) <p0:AbstractCompiler> isa COMPILER */
7903 /* <p0:AbstractCompiler> isa COMPILER */
7904 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractCompilerVisitor_VTCOMPILER];
7905 cltype = type_struct->color;
7906 idtype = type_struct->id;
7907 if(cltype >= p0->type->table_size) {
7908 var = 0;
7909 } else {
7910 var = p0->type->type_table[cltype] == idtype;
7911 }
7912 if (!var) {
7913 var_class_name = p0 == NULL ? "null" : p0->type->name;
7914 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPILER", var_class_name);
7915 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 640);
7916 show_backtrace(1);
7917 }
7918 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dcompiler].val = p0; /* @compiler on <self:AbstractCompilerVisitor> */
7919 RET_LABEL:;
7920 }
7921 /* method abstract_compiler#AbstractCompilerVisitor#compiler= for (self: Object, AbstractCompiler) */
7922 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__compiler_61d(val* self, val* p0) {
7923 abstract_compiler__AbstractCompilerVisitor__compiler_61d(self, p0);
7924 RET_LABEL:;
7925 }
7926 /* method abstract_compiler#AbstractCompilerVisitor#current_node for (self: AbstractCompilerVisitor): nullable ANode */
7927 val* abstract_compiler__AbstractCompilerVisitor__current_node(val* self) {
7928 val* var /* : nullable ANode */;
7929 val* var1 /* : nullable ANode */;
7930 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dcurrent_node].val; /* @current_node on <self:AbstractCompilerVisitor> */
7931 var = var1;
7932 RET_LABEL:;
7933 return var;
7934 }
7935 /* method abstract_compiler#AbstractCompilerVisitor#current_node for (self: Object): nullable ANode */
7936 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__current_node(val* self) {
7937 val* var /* : nullable ANode */;
7938 val* var1 /* : nullable ANode */;
7939 var1 = abstract_compiler__AbstractCompilerVisitor__current_node(self);
7940 var = var1;
7941 RET_LABEL:;
7942 return var;
7943 }
7944 /* method abstract_compiler#AbstractCompilerVisitor#current_node= for (self: AbstractCompilerVisitor, nullable ANode) */
7945 void abstract_compiler__AbstractCompilerVisitor__current_node_61d(val* self, val* p0) {
7946 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dcurrent_node].val = p0; /* @current_node on <self:AbstractCompilerVisitor> */
7947 RET_LABEL:;
7948 }
7949 /* method abstract_compiler#AbstractCompilerVisitor#current_node= for (self: Object, nullable ANode) */
7950 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__current_node_61d(val* self, val* p0) {
7951 abstract_compiler__AbstractCompilerVisitor__current_node_61d(self, p0);
7952 RET_LABEL:;
7953 }
7954 /* method abstract_compiler#AbstractCompilerVisitor#frame for (self: AbstractCompilerVisitor): nullable Frame */
7955 val* abstract_compiler__AbstractCompilerVisitor__frame(val* self) {
7956 val* var /* : nullable Frame */;
7957 val* var1 /* : nullable Frame */;
7958 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dframe].val; /* @frame on <self:AbstractCompilerVisitor> */
7959 var = var1;
7960 RET_LABEL:;
7961 return var;
7962 }
7963 /* method abstract_compiler#AbstractCompilerVisitor#frame for (self: Object): nullable Frame */
7964 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__frame(val* self) {
7965 val* var /* : nullable Frame */;
7966 val* var1 /* : nullable Frame */;
7967 var1 = abstract_compiler__AbstractCompilerVisitor__frame(self);
7968 var = var1;
7969 RET_LABEL:;
7970 return var;
7971 }
7972 /* method abstract_compiler#AbstractCompilerVisitor#frame= for (self: AbstractCompilerVisitor, nullable Frame) */
7973 void abstract_compiler__AbstractCompilerVisitor__frame_61d(val* self, val* p0) {
7974 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dframe].val = p0; /* @frame on <self:AbstractCompilerVisitor> */
7975 RET_LABEL:;
7976 }
7977 /* method abstract_compiler#AbstractCompilerVisitor#frame= for (self: Object, nullable Frame) */
7978 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__frame_61d(val* self, val* p0) {
7979 abstract_compiler__AbstractCompilerVisitor__frame_61d(self, p0);
7980 RET_LABEL:;
7981 }
7982 /* method abstract_compiler#AbstractCompilerVisitor#object_type for (self: AbstractCompilerVisitor): MClassType */
7983 val* abstract_compiler__AbstractCompilerVisitor__object_type(val* self) {
7984 val* var /* : MClassType */;
7985 val* var1 /* : AbstractCompiler */;
7986 val* var2 /* : MModule */;
7987 val* var3 /* : MClassType */;
7988 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
7989 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var1) /* mainmodule on <var1:AbstractCompiler>*/;
7990 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MModule__object_type]))(var2) /* object_type on <var2:MModule>*/;
7991 var = var3;
7992 goto RET_LABEL;
7993 RET_LABEL:;
7994 return var;
7995 }
7996 /* method abstract_compiler#AbstractCompilerVisitor#object_type for (self: Object): MClassType */
7997 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__object_type(val* self) {
7998 val* var /* : MClassType */;
7999 val* var1 /* : MClassType */;
8000 var1 = abstract_compiler__AbstractCompilerVisitor__object_type(self);
8001 var = var1;
8002 RET_LABEL:;
8003 return var;
8004 }
8005 /* method abstract_compiler#AbstractCompilerVisitor#bool_type for (self: AbstractCompilerVisitor): MClassType */
8006 val* abstract_compiler__AbstractCompilerVisitor__bool_type(val* self) {
8007 val* var /* : MClassType */;
8008 val* var1 /* : AbstractCompiler */;
8009 val* var2 /* : MModule */;
8010 val* var3 /* : MClassType */;
8011 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
8012 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var1) /* mainmodule on <var1:AbstractCompiler>*/;
8013 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MModule__bool_type]))(var2) /* bool_type on <var2:MModule>*/;
8014 var = var3;
8015 goto RET_LABEL;
8016 RET_LABEL:;
8017 return var;
8018 }
8019 /* method abstract_compiler#AbstractCompilerVisitor#bool_type for (self: Object): MClassType */
8020 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__bool_type(val* self) {
8021 val* var /* : MClassType */;
8022 val* var1 /* : MClassType */;
8023 var1 = abstract_compiler__AbstractCompilerVisitor__bool_type(self);
8024 var = var1;
8025 RET_LABEL:;
8026 return var;
8027 }
8028 /* method abstract_compiler#AbstractCompilerVisitor#writer for (self: AbstractCompilerVisitor): CodeWriter */
8029 val* abstract_compiler__AbstractCompilerVisitor__writer(val* self) {
8030 val* var /* : CodeWriter */;
8031 val* var1 /* : CodeWriter */;
8032 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dwriter].val; /* @writer on <self:AbstractCompilerVisitor> */
8033 if (var1 == NULL) {
8034 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @writer");
8035 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 655);
8036 show_backtrace(1);
8037 }
8038 var = var1;
8039 RET_LABEL:;
8040 return var;
8041 }
8042 /* method abstract_compiler#AbstractCompilerVisitor#writer for (self: Object): CodeWriter */
8043 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__writer(val* self) {
8044 val* var /* : CodeWriter */;
8045 val* var1 /* : CodeWriter */;
8046 var1 = abstract_compiler__AbstractCompilerVisitor__writer(self);
8047 var = var1;
8048 RET_LABEL:;
8049 return var;
8050 }
8051 /* method abstract_compiler#AbstractCompilerVisitor#writer= for (self: AbstractCompilerVisitor, CodeWriter) */
8052 void abstract_compiler__AbstractCompilerVisitor__writer_61d(val* self, val* p0) {
8053 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dwriter].val = p0; /* @writer on <self:AbstractCompilerVisitor> */
8054 RET_LABEL:;
8055 }
8056 /* method abstract_compiler#AbstractCompilerVisitor#writer= for (self: Object, CodeWriter) */
8057 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__writer_61d(val* self, val* p0) {
8058 abstract_compiler__AbstractCompilerVisitor__writer_61d(self, p0);
8059 RET_LABEL:;
8060 }
8061 /* method abstract_compiler#AbstractCompilerVisitor#init for (self: AbstractCompilerVisitor, AbstractCompiler) */
8062 void abstract_compiler__AbstractCompilerVisitor__init(val* self, val* p0) {
8063 short int var /* : Bool */;
8064 int cltype;
8065 int idtype;
8066 const struct type* type_struct;
8067 const char* var_class_name;
8068 val* var_compiler /* var compiler: AbstractCompiler */;
8069 val* var1 /* : CodeWriter */;
8070 val* var2 /* : List[CodeFile] */;
8071 val* var3 /* : nullable Object */;
8072 /* Covariant cast for argument 0 (compiler) <p0:AbstractCompiler> isa COMPILER */
8073 /* <p0:AbstractCompiler> isa COMPILER */
8074 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractCompilerVisitor_VTCOMPILER];
8075 cltype = type_struct->color;
8076 idtype = type_struct->id;
8077 if(cltype >= p0->type->table_size) {
8078 var = 0;
8079 } else {
8080 var = p0->type->type_table[cltype] == idtype;
8081 }
8082 if (!var) {
8083 var_class_name = p0 == NULL ? "null" : p0->type->name;
8084 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPILER", var_class_name);
8085 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 657);
8086 show_backtrace(1);
8087 }
8088 var_compiler = p0;
8089 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler_61d]))(self, var_compiler) /* compiler= on <self:AbstractCompilerVisitor>*/;
8090 var1 = NEW_abstract_compiler__CodeWriter(&type_abstract_compiler__CodeWriter);
8091 var2 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__files]))(var_compiler) /* files on <var_compiler:AbstractCompiler>*/;
8092 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__SequenceRead__last]))(var2) /* last on <var2:List[CodeFile]>*/;
8093 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_compiler__CodeWriter__init]))(var1, var3) /* init on <var1:CodeWriter>*/;
8094 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__writer_61d]))(self, var1) /* writer= on <self:AbstractCompilerVisitor>*/;
8095 RET_LABEL:;
8096 }
8097 /* method abstract_compiler#AbstractCompilerVisitor#init for (self: Object, AbstractCompiler) */
8098 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__init(val* self, val* p0) {
8099 abstract_compiler__AbstractCompilerVisitor__init(self, p0);
8100 RET_LABEL:;
8101 }
8102 /* method abstract_compiler#AbstractCompilerVisitor#get_class for (self: AbstractCompilerVisitor, String): MClass */
8103 val* abstract_compiler__AbstractCompilerVisitor__get_class(val* self, val* p0) {
8104 val* var /* : MClass */;
8105 val* var_name /* var name: String */;
8106 val* var1 /* : AbstractCompiler */;
8107 val* var2 /* : MModule */;
8108 val* var3 /* : MClass */;
8109 var_name = p0;
8110 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
8111 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var1) /* mainmodule on <var1:AbstractCompiler>*/;
8112 var3 = ((val* (*)(val*, val*))(var2->class->vft[COLOR_model__MModule__get_primitive_class]))(var2, var_name) /* get_primitive_class on <var2:MModule>*/;
8113 var = var3;
8114 goto RET_LABEL;
8115 RET_LABEL:;
8116 return var;
8117 }
8118 /* method abstract_compiler#AbstractCompilerVisitor#get_class for (self: Object, String): MClass */
8119 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__get_class(val* self, val* p0) {
8120 val* var /* : MClass */;
8121 val* var1 /* : MClass */;
8122 var1 = abstract_compiler__AbstractCompilerVisitor__get_class(self, p0);
8123 var = var1;
8124 RET_LABEL:;
8125 return var;
8126 }
8127 /* method abstract_compiler#AbstractCompilerVisitor#get_property for (self: AbstractCompilerVisitor, String, MType): MMethod */
8128 val* abstract_compiler__AbstractCompilerVisitor__get_property(val* self, val* p0, val* p1) {
8129 val* var /* : MMethod */;
8130 val* var_name /* var name: String */;
8131 val* var_recv /* var recv: MType */;
8132 short int var1 /* : Bool */;
8133 int cltype;
8134 int idtype;
8135 val* var2 /* : AbstractCompiler */;
8136 val* var3 /* : ModelBuilder */;
8137 val* var4 /* : nullable ANode */;
8138 val* var5 /* : MClass */;
8139 val* var6 /* : AbstractCompiler */;
8140 val* var7 /* : MModule */;
8141 val* var8 /* : MMethod */;
8142 var_name = p0;
8143 var_recv = p1;
8144 /* <var_recv:MType> isa MClassType */
8145 cltype = type_model__MClassType.color;
8146 idtype = type_model__MClassType.id;
8147 if(cltype >= var_recv->type->table_size) {
8148 var1 = 0;
8149 } else {
8150 var1 = var_recv->type->type_table[cltype] == idtype;
8151 }
8152 if (!var1) {
8153 fprintf(stderr, "Runtime error: %s", "Assert failed");
8154 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 669);
8155 show_backtrace(1);
8156 }
8157 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
8158 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var2) /* modelbuilder on <var2:AbstractCompiler>*/;
8159 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node]))(self) /* current_node on <self:AbstractCompilerVisitor>*/;
8160 if (var4 == NULL) {
8161 fprintf(stderr, "Runtime error: %s", "Cast failed");
8162 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 670);
8163 show_backtrace(1);
8164 }
8165 var5 = ((val* (*)(val*))(var_recv->class->vft[COLOR_model__MClassType__mclass]))(var_recv) /* mclass on <var_recv:MType(MClassType)>*/;
8166 var6 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
8167 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var6) /* mainmodule on <var6:AbstractCompiler>*/;
8168 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>*/;
8169 var = var8;
8170 goto RET_LABEL;
8171 RET_LABEL:;
8172 return var;
8173 }
8174 /* method abstract_compiler#AbstractCompilerVisitor#get_property for (self: Object, String, MType): MMethod */
8175 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__get_property(val* self, val* p0, val* p1) {
8176 val* var /* : MMethod */;
8177 val* var1 /* : MMethod */;
8178 var1 = abstract_compiler__AbstractCompilerVisitor__get_property(self, p0, p1);
8179 var = var1;
8180 RET_LABEL:;
8181 return var;
8182 }
8183 /* method abstract_compiler#AbstractCompilerVisitor#compile_callsite for (self: AbstractCompilerVisitor, CallSite, Array[RuntimeVariable]): nullable RuntimeVariable */
8184 val* abstract_compiler__AbstractCompilerVisitor__compile_callsite(val* self, val* p0, val* p1) {
8185 val* var /* : nullable RuntimeVariable */;
8186 val* var_callsite /* var callsite: CallSite */;
8187 val* var_args /* var args: Array[RuntimeVariable] */;
8188 val* var1 /* : MMethod */;
8189 val* var2 /* : nullable RuntimeVariable */;
8190 var_callsite = p0;
8191 var_args = p1;
8192 var1 = ((val* (*)(val*))(var_callsite->class->vft[COLOR_typing__CallSite__mproperty]))(var_callsite) /* mproperty on <var_callsite:CallSite>*/;
8193 var2 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(self, var1, var_args) /* send on <self:AbstractCompilerVisitor>*/;
8194 var = var2;
8195 goto RET_LABEL;
8196 RET_LABEL:;
8197 return var;
8198 }
8199 /* method abstract_compiler#AbstractCompilerVisitor#compile_callsite for (self: Object, CallSite, Array[RuntimeVariable]): nullable RuntimeVariable */
8200 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__compile_callsite(val* self, val* p0, val* p1) {
8201 val* var /* : nullable RuntimeVariable */;
8202 val* var1 /* : nullable RuntimeVariable */;
8203 var1 = abstract_compiler__AbstractCompilerVisitor__compile_callsite(self, p0, p1);
8204 var = var1;
8205 RET_LABEL:;
8206 return var;
8207 }
8208 /* method abstract_compiler#AbstractCompilerVisitor#calloc_array for (self: AbstractCompilerVisitor, MType, Array[RuntimeVariable]) */
8209 void abstract_compiler__AbstractCompilerVisitor__calloc_array(val* self, val* p0, val* p1) {
8210 const char* var_class_name;
8211 var_class_name = self == NULL ? "null" : self->type->name;
8212 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "calloc_array", var_class_name);
8213 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 678);
8214 show_backtrace(1);
8215 RET_LABEL:;
8216 }
8217 /* method abstract_compiler#AbstractCompilerVisitor#calloc_array for (self: Object, MType, Array[RuntimeVariable]) */
8218 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__calloc_array(val* self, val* p0, val* p1) {
8219 abstract_compiler__AbstractCompilerVisitor__calloc_array(self, p0, p1);
8220 RET_LABEL:;
8221 }
8222 /* method abstract_compiler#AbstractCompilerVisitor#native_array_def for (self: AbstractCompilerVisitor, String, nullable MType, Array[RuntimeVariable]) */
8223 void abstract_compiler__AbstractCompilerVisitor__native_array_def(val* self, val* p0, val* p1, val* p2) {
8224 const char* var_class_name;
8225 var_class_name = self == NULL ? "null" : self->type->name;
8226 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "native_array_def", var_class_name);
8227 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 680);
8228 show_backtrace(1);
8229 RET_LABEL:;
8230 }
8231 /* method abstract_compiler#AbstractCompilerVisitor#native_array_def for (self: Object, String, nullable MType, Array[RuntimeVariable]) */
8232 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__native_array_def(val* self, val* p0, val* p1, val* p2) {
8233 abstract_compiler__AbstractCompilerVisitor__native_array_def(self, p0, p1, p2);
8234 RET_LABEL:;
8235 }
8236 /* method abstract_compiler#AbstractCompilerVisitor#varargize for (self: AbstractCompilerVisitor, MPropDef, MSignature, Array[RuntimeVariable]) */
8237 void abstract_compiler__AbstractCompilerVisitor__varargize(val* self, val* p0, val* p1, val* p2) {
8238 val* var_mpropdef /* var mpropdef: MPropDef */;
8239 val* var_msignature /* var msignature: MSignature */;
8240 val* var_args /* var args: Array[RuntimeVariable] */;
8241 val* var /* : nullable Object */;
8242 val* var_recv /* var recv: RuntimeVariable */;
8243 long var1 /* : Int */;
8244 long var_vararg_rank /* var vararg_rank: Int */;
8245 long var2 /* : Int */;
8246 short int var3 /* : Bool */;
8247 short int var5 /* : Bool */;
8248 int cltype;
8249 int idtype;
8250 const char* var_class_name;
8251 short int var6 /* : Bool */;
8252 long var7 /* : Int */;
8253 long var8 /* : Int */;
8254 long var9 /* : Int */;
8255 long var10 /* : Int */;
8256 long var12 /* : Int */;
8257 short int var13 /* : Bool */;
8258 short int var15 /* : Bool */;
8259 int cltype16;
8260 int idtype17;
8261 const char* var_class_name18;
8262 short int var19 /* : Bool */;
8263 val* var_rawargs /* var rawargs: Array[RuntimeVariable] */;
8264 val* var20 /* : Array[RuntimeVariable] */;
8265 val* var21 /* : nullable Object */;
8266 val* var22 /* : Range[Int] */;
8267 long var23 /* : Int */;
8268 val* var24 /* : Discrete */;
8269 val* var25 /* : Discrete */;
8270 val* var26 /* : Iterator[nullable Object] */;
8271 short int var27 /* : Bool */;
8272 val* var28 /* : nullable Object */;
8273 long var_i /* var i: Int */;
8274 long var29 /* : Int */;
8275 long var30 /* : Int */;
8276 long var31 /* : Int */;
8277 long var33 /* : Int */;
8278 val* var34 /* : nullable Object */;
8279 long var35 /* : Int */;
8280 long var36 /* : Int */;
8281 long var38 /* : Int */;
8282 long var39 /* : Int */;
8283 long var40 /* : Int */;
8284 long var42 /* : Int */;
8285 long var43 /* : Int */;
8286 long var44 /* : Int */;
8287 long var46 /* : Int */;
8288 long var_vararg_lastrank /* var vararg_lastrank: Int */;
8289 val* var47 /* : Array[RuntimeVariable] */;
8290 val* var_vararg /* var vararg: Array[RuntimeVariable] */;
8291 val* var48 /* : Range[Int] */;
8292 val* var49 /* : Discrete */;
8293 val* var50 /* : Discrete */;
8294 val* var51 /* : Iterator[nullable Object] */;
8295 short int var52 /* : Bool */;
8296 val* var53 /* : nullable Object */;
8297 long var_i54 /* var i: Int */;
8298 long var55 /* : Int */;
8299 long var56 /* : Int */;
8300 long var57 /* : Int */;
8301 long var59 /* : Int */;
8302 val* var60 /* : nullable Object */;
8303 val* var62 /* : Array[MParameter] */;
8304 val* var63 /* : nullable Object */;
8305 val* var64 /* : MType */;
8306 val* var_elttype /* var elttype: MType */;
8307 val* var65 /* : RuntimeVariable */;
8308 val* var66 /* : Range[Int] */;
8309 long var67 /* : Int */;
8310 long var68 /* : Int */;
8311 long var70 /* : Int */;
8312 long var71 /* : Int */;
8313 long var72 /* : Int */;
8314 long var73 /* : Int */;
8315 long var75 /* : Int */;
8316 val* var76 /* : Discrete */;
8317 val* var77 /* : Discrete */;
8318 val* var78 /* : Iterator[nullable Object] */;
8319 short int var79 /* : Bool */;
8320 val* var80 /* : nullable Object */;
8321 long var_i81 /* var i: Int */;
8322 long var82 /* : Int */;
8323 long var83 /* : Int */;
8324 long var84 /* : Int */;
8325 long var86 /* : Int */;
8326 val* var87 /* : nullable Object */;
8327 var_mpropdef = p0;
8328 var_msignature = p1;
8329 var_args = p2;
8330 var = ((val* (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__first]))(var_args) /* first on <var_args:Array[RuntimeVariable]>*/;
8331 var_recv = var;
8332 var1 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__vararg_rank]))(var_msignature) /* vararg_rank on <var_msignature:MSignature>*/;
8333 var_vararg_rank = var1;
8334 var2 = 0;
8335 { /* Inline kernel#Int#>= (var_vararg_rank,var2) */
8336 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
8337 /* <var2:Int> isa OTHER */
8338 var5 = 1; /* easy <var2:Int> isa OTHER*/
8339 if (!var5) {
8340 var_class_name = type_kernel__Int.name;
8341 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
8342 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
8343 show_backtrace(1);
8344 }
8345 var6 = var_vararg_rank >= var2;
8346 var3 = var6;
8347 goto RET_LABEL4;
8348 RET_LABEL4:(void)0;
8349 }
8350 if (var3){
8351 var7 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[RuntimeVariable]>*/;
8352 var8 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
8353 var9 = 1;
8354 { /* Inline kernel#Int#+ (var8,var9) */
8355 var12 = var8 + var9;
8356 var10 = var12;
8357 goto RET_LABEL11;
8358 RET_LABEL11:(void)0;
8359 }
8360 { /* Inline kernel#Int#>= (var7,var10) */
8361 /* Covariant cast for argument 0 (i) <var10:Int> isa OTHER */
8362 /* <var10:Int> isa OTHER */
8363 var15 = 1; /* easy <var10:Int> isa OTHER*/
8364 if (!var15) {
8365 var_class_name18 = type_kernel__Int.name;
8366 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name18);
8367 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
8368 show_backtrace(1);
8369 }
8370 var19 = var7 >= var10;
8371 var13 = var19;
8372 goto RET_LABEL14;
8373 RET_LABEL14:(void)0;
8374 }
8375 if (!var13) {
8376 fprintf(stderr, "Runtime error: %s", "Assert failed");
8377 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 690);
8378 show_backtrace(1);
8379 }
8380 var_rawargs = var_args;
8381 var20 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
8382 ((void (*)(val*))(var20->class->vft[COLOR_array__Array__init]))(var20) /* init on <var20:Array[RuntimeVariable]>*/;
8383 var_args = var20;
8384 var21 = ((val* (*)(val*))(var_rawargs->class->vft[COLOR_abstract_collection__Collection__first]))(var_rawargs) /* first on <var_rawargs:Array[RuntimeVariable]>*/;
8385 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_args, var21) /* add on <var_args:Array[RuntimeVariable]>*/;
8386 var22 = NEW_range__Range(&type_range__Rangekernel__Int);
8387 var23 = 0;
8388 var24 = BOX_kernel__Int(var23); /* autobox from Int to Discrete */
8389 var25 = BOX_kernel__Int(var_vararg_rank); /* autobox from Int to Discrete */
8390 ((void (*)(val*, val*, val*))(var22->class->vft[COLOR_range__Range__without_last]))(var22, var24, var25) /* without_last on <var22:Range[Int]>*/;
8391 var26 = ((val* (*)(val*))(var22->class->vft[COLOR_abstract_collection__Collection__iterator]))(var22) /* iterator on <var22:Range[Int]>*/;
8392 for(;;) {
8393 var27 = ((short int (*)(val*))(var26->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var26) /* is_ok on <var26:Iterator[nullable Object]>*/;
8394 if(!var27) break;
8395 var28 = ((val* (*)(val*))(var26->class->vft[COLOR_abstract_collection__Iterator__item]))(var26) /* item on <var26:Iterator[nullable Object]>*/;
8396 var29 = ((struct instance_kernel__Int*)var28)->value; /* autounbox from nullable Object to Int */;
8397 var_i = var29;
8398 var30 = 1;
8399 { /* Inline kernel#Int#+ (var_i,var30) */
8400 var33 = var_i + var30;
8401 var31 = var33;
8402 goto RET_LABEL32;
8403 RET_LABEL32:(void)0;
8404 }
8405 var34 = ((val* (*)(val*, long))(var_rawargs->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_rawargs, var31) /* [] on <var_rawargs:Array[RuntimeVariable]>*/;
8406 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_args, var34) /* add on <var_args:Array[RuntimeVariable]>*/;
8407 CONTINUE_label: (void)0;
8408 ((void (*)(val*))(var26->class->vft[COLOR_abstract_collection__Iterator__next]))(var26) /* next on <var26:Iterator[nullable Object]>*/;
8409 }
8410 BREAK_label: (void)0;
8411 var35 = ((long (*)(val*))(var_rawargs->class->vft[COLOR_abstract_collection__Collection__length]))(var_rawargs) /* length on <var_rawargs:Array[RuntimeVariable]>*/;
8412 { /* Inline kernel#Int#+ (var_vararg_rank,var35) */
8413 var38 = var_vararg_rank + var35;
8414 var36 = var38;
8415 goto RET_LABEL37;
8416 RET_LABEL37:(void)0;
8417 }
8418 var39 = 1;
8419 { /* Inline kernel#Int#- (var36,var39) */
8420 var42 = var36 - var39;
8421 var40 = var42;
8422 goto RET_LABEL41;
8423 RET_LABEL41:(void)0;
8424 }
8425 var43 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
8426 { /* Inline kernel#Int#- (var40,var43) */
8427 var46 = var40 - var43;
8428 var44 = var46;
8429 goto RET_LABEL45;
8430 RET_LABEL45:(void)0;
8431 }
8432 var_vararg_lastrank = var44;
8433 var47 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
8434 ((void (*)(val*))(var47->class->vft[COLOR_array__Array__init]))(var47) /* init on <var47:Array[RuntimeVariable]>*/;
8435 var_vararg = var47;
8436 var48 = NEW_range__Range(&type_range__Rangekernel__Int);
8437 var49 = BOX_kernel__Int(var_vararg_rank); /* autobox from Int to Discrete */
8438 var50 = BOX_kernel__Int(var_vararg_lastrank); /* autobox from Int to Discrete */
8439 ((void (*)(val*, val*, val*))(var48->class->vft[COLOR_range__Range__init]))(var48, var49, var50) /* init on <var48:Range[Int]>*/;
8440 var51 = ((val* (*)(val*))(var48->class->vft[COLOR_abstract_collection__Collection__iterator]))(var48) /* iterator on <var48:Range[Int]>*/;
8441 for(;;) {
8442 var52 = ((short int (*)(val*))(var51->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var51) /* is_ok on <var51:Iterator[nullable Object]>*/;
8443 if(!var52) break;
8444 var53 = ((val* (*)(val*))(var51->class->vft[COLOR_abstract_collection__Iterator__item]))(var51) /* item on <var51:Iterator[nullable Object]>*/;
8445 var55 = ((struct instance_kernel__Int*)var53)->value; /* autounbox from nullable Object to Int */;
8446 var_i54 = var55;
8447 var56 = 1;
8448 { /* Inline kernel#Int#+ (var_i54,var56) */
8449 var59 = var_i54 + var56;
8450 var57 = var59;
8451 goto RET_LABEL58;
8452 RET_LABEL58:(void)0;
8453 }
8454 var60 = ((val* (*)(val*, long))(var_rawargs->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_rawargs, var57) /* [] on <var_rawargs:Array[RuntimeVariable]>*/;
8455 ((void (*)(val*, val*))(var_vararg->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_vararg, var60) /* add on <var_vararg:Array[RuntimeVariable]>*/;
8456 CONTINUE_label61: (void)0;
8457 ((void (*)(val*))(var51->class->vft[COLOR_abstract_collection__Iterator__next]))(var51) /* next on <var51:Iterator[nullable Object]>*/;
8458 }
8459 BREAK_label61: (void)0;
8460 var62 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
8461 var63 = ((val* (*)(val*, long))(var62->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var62, var_vararg_rank) /* [] on <var62:Array[MParameter]>*/;
8462 var64 = ((val* (*)(val*))(var63->class->vft[COLOR_model__MParameter__mtype]))(var63) /* mtype on <var63:nullable Object(MParameter)>*/;
8463 var_elttype = var64;
8464 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>*/;
8465 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_args, var65) /* add on <var_args:Array[RuntimeVariable]>*/;
8466 var66 = NEW_range__Range(&type_range__Rangekernel__Int);
8467 var67 = 1;
8468 { /* Inline kernel#Int#+ (var_vararg_lastrank,var67) */
8469 var70 = var_vararg_lastrank + var67;
8470 var68 = var70;
8471 goto RET_LABEL69;
8472 RET_LABEL69:(void)0;
8473 }
8474 var71 = ((long (*)(val*))(var_rawargs->class->vft[COLOR_abstract_collection__Collection__length]))(var_rawargs) /* length on <var_rawargs:Array[RuntimeVariable]>*/;
8475 var72 = 1;
8476 { /* Inline kernel#Int#- (var71,var72) */
8477 var75 = var71 - var72;
8478 var73 = var75;
8479 goto RET_LABEL74;
8480 RET_LABEL74:(void)0;
8481 }
8482 var76 = BOX_kernel__Int(var68); /* autobox from Int to Discrete */
8483 var77 = BOX_kernel__Int(var73); /* autobox from Int to Discrete */
8484 ((void (*)(val*, val*, val*))(var66->class->vft[COLOR_range__Range__without_last]))(var66, var76, var77) /* without_last on <var66:Range[Int]>*/;
8485 var78 = ((val* (*)(val*))(var66->class->vft[COLOR_abstract_collection__Collection__iterator]))(var66) /* iterator on <var66:Range[Int]>*/;
8486 for(;;) {
8487 var79 = ((short int (*)(val*))(var78->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var78) /* is_ok on <var78:Iterator[nullable Object]>*/;
8488 if(!var79) break;
8489 var80 = ((val* (*)(val*))(var78->class->vft[COLOR_abstract_collection__Iterator__item]))(var78) /* item on <var78:Iterator[nullable Object]>*/;
8490 var82 = ((struct instance_kernel__Int*)var80)->value; /* autounbox from nullable Object to Int */;
8491 var_i81 = var82;
8492 var83 = 1;
8493 { /* Inline kernel#Int#+ (var_i81,var83) */
8494 var86 = var_i81 + var83;
8495 var84 = var86;
8496 goto RET_LABEL85;
8497 RET_LABEL85:(void)0;
8498 }
8499 var87 = ((val* (*)(val*, long))(var_rawargs->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_rawargs, var84) /* [] on <var_rawargs:Array[RuntimeVariable]>*/;
8500 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_args, var87) /* add on <var_args:Array[RuntimeVariable]>*/;
8501 CONTINUE_label88: (void)0;
8502 ((void (*)(val*))(var78->class->vft[COLOR_abstract_collection__Iterator__next]))(var78) /* next on <var78:Iterator[nullable Object]>*/;
8503 }
8504 BREAK_label88: (void)0;
8505 ((void (*)(val*))(var_rawargs->class->vft[COLOR_abstract_collection__RemovableCollection__clear]))(var_rawargs) /* clear on <var_rawargs:Array[RuntimeVariable]>*/;
8506 ((void (*)(val*, val*))(var_rawargs->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_rawargs, var_args) /* add_all on <var_rawargs:Array[RuntimeVariable]>*/;
8507 } else {
8508 }
8509 RET_LABEL:;
8510 }
8511 /* method abstract_compiler#AbstractCompilerVisitor#varargize for (self: Object, MPropDef, MSignature, Array[RuntimeVariable]) */
8512 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__varargize(val* self, val* p0, val* p1, val* p2) {
8513 abstract_compiler__AbstractCompilerVisitor__varargize(self, p0, p1, p2);
8514 RET_LABEL:;
8515 }
8516 /* method abstract_compiler#AbstractCompilerVisitor#anchor for (self: AbstractCompilerVisitor, MType): MType */
8517 val* abstract_compiler__AbstractCompilerVisitor__anchor(val* self, val* p0) {
8518 val* var /* : MType */;
8519 val* var_mtype /* var mtype: MType */;
8520 short int var1 /* : Bool */;
8521 short int var2 /* : Bool */;
8522 val* var3 /* : AbstractCompiler */;
8523 val* var4 /* : MModule */;
8524 val* var5 /* : nullable Frame */;
8525 val* var6 /* : MClassType */;
8526 val* var7 /* : MType */;
8527 var_mtype = p0;
8528 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
8529 var2 = !var1;
8530 if (var2){
8531 var = var_mtype;
8532 goto RET_LABEL;
8533 } else {
8534 }
8535 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
8536 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var3) /* mainmodule on <var3:AbstractCompiler>*/;
8537 var5 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:AbstractCompilerVisitor>*/;
8538 if (var5 == NULL) {
8539 fprintf(stderr, "Runtime error: %s", "Reciever is null");
8540 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 723);
8541 show_backtrace(1);
8542 } else {
8543 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_compiler__Frame__receiver]))(var5) /* receiver on <var5:nullable Frame>*/;
8544 }
8545 var7 = ((val* (*)(val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__anchor_to]))(var_mtype, var4, var6) /* anchor_to on <var_mtype:MType>*/;
8546 var = var7;
8547 goto RET_LABEL;
8548 RET_LABEL:;
8549 return var;
8550 }
8551 /* method abstract_compiler#AbstractCompilerVisitor#anchor for (self: Object, MType): MType */
8552 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__anchor(val* self, val* p0) {
8553 val* var /* : MType */;
8554 val* var1 /* : MType */;
8555 var1 = abstract_compiler__AbstractCompilerVisitor__anchor(self, p0);
8556 var = var1;
8557 RET_LABEL:;
8558 return var;
8559 }
8560 /* method abstract_compiler#AbstractCompilerVisitor#resolve_for for (self: AbstractCompilerVisitor, MType, RuntimeVariable): MType */
8561 val* abstract_compiler__AbstractCompilerVisitor__resolve_for(val* self, val* p0, val* p1) {
8562 val* var /* : MType */;
8563 val* var_mtype /* var mtype: MType */;
8564 val* var_recv /* var recv: RuntimeVariable */;
8565 short int var1 /* : Bool */;
8566 short int var2 /* : Bool */;
8567 val* var3 /* : MType */;
8568 val* var4 /* : nullable Frame */;
8569 val* var5 /* : MClassType */;
8570 val* var6 /* : AbstractCompiler */;
8571 val* var7 /* : MModule */;
8572 short int var8 /* : Bool */;
8573 val* var9 /* : MType */;
8574 var_mtype = p0;
8575 var_recv = p1;
8576 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
8577 var2 = !var1;
8578 if (var2){
8579 var = var_mtype;
8580 goto RET_LABEL;
8581 } else {
8582 }
8583 var3 = ((val* (*)(val*))(var_recv->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_recv) /* mcasttype on <var_recv:RuntimeVariable>*/;
8584 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:AbstractCompilerVisitor>*/;
8585 if (var4 == NULL) {
8586 fprintf(stderr, "Runtime error: %s", "Reciever is null");
8587 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 729);
8588 show_backtrace(1);
8589 } else {
8590 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_compiler__Frame__receiver]))(var4) /* receiver on <var4:nullable Frame>*/;
8591 }
8592 var6 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
8593 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var6) /* mainmodule on <var6:AbstractCompiler>*/;
8594 var8 = 1;
8595 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>*/;
8596 var = var9;
8597 goto RET_LABEL;
8598 RET_LABEL:;
8599 return var;
8600 }
8601 /* method abstract_compiler#AbstractCompilerVisitor#resolve_for for (self: Object, MType, RuntimeVariable): MType */
8602 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__resolve_for(val* self, val* p0, val* p1) {
8603 val* var /* : MType */;
8604 val* var1 /* : MType */;
8605 var1 = abstract_compiler__AbstractCompilerVisitor__resolve_for(self, p0, p1);
8606 var = var1;
8607 RET_LABEL:;
8608 return var;
8609 }
8610 /* method abstract_compiler#AbstractCompilerVisitor#autoadapt for (self: AbstractCompilerVisitor, RuntimeVariable, MType): RuntimeVariable */
8611 val* abstract_compiler__AbstractCompilerVisitor__autoadapt(val* self, val* p0, val* p1) {
8612 val* var /* : RuntimeVariable */;
8613 val* var_value /* var value: RuntimeVariable */;
8614 val* var_mtype /* var mtype: MType */;
8615 val* var1 /* : MType */;
8616 val* var2 /* : MType */;
8617 val* var_valmtype /* var valmtype: MType */;
8618 val* var3 /* : AbstractCompiler */;
8619 val* var4 /* : MModule */;
8620 val* var5 /* : null */;
8621 short int var6 /* : Bool */;
8622 short int var7 /* : Bool */;
8623 short int var8 /* : Bool */;
8624 int cltype;
8625 int idtype;
8626 short int var_ /* var : Bool */;
8627 val* var9 /* : MType */;
8628 val* var10 /* : AbstractCompiler */;
8629 val* var11 /* : MModule */;
8630 val* var12 /* : null */;
8631 short int var13 /* : Bool */;
8632 val* var14 /* : RuntimeVariable */;
8633 val* var15 /* : String */;
8634 val* var16 /* : MType */;
8635 val* var_res /* var res: RuntimeVariable */;
8636 val* var17 /* : RuntimeVariable */;
8637 val* var18 /* : String */;
8638 val* var_res19 /* var res: RuntimeVariable */;
8639 var_value = p0;
8640 var_mtype = p1;
8641 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__anchor]))(self, var_mtype) /* anchor on <self:AbstractCompilerVisitor>*/;
8642 var_mtype = var1;
8643 var2 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_value) /* mcasttype on <var_value:RuntimeVariable>*/;
8644 var_valmtype = var2;
8645 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
8646 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var3) /* mainmodule on <var3:AbstractCompiler>*/;
8647 var5 = NULL;
8648 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>*/;
8649 if (var6){
8650 var = var_value;
8651 goto RET_LABEL;
8652 } else {
8653 }
8654 /* <var_valmtype:MType> isa MNullableType */
8655 cltype = type_model__MNullableType.color;
8656 idtype = type_model__MNullableType.id;
8657 if(cltype >= var_valmtype->type->table_size) {
8658 var8 = 0;
8659 } else {
8660 var8 = var_valmtype->type->type_table[cltype] == idtype;
8661 }
8662 var_ = var8;
8663 if (var8){
8664 var9 = ((val* (*)(val*))(var_valmtype->class->vft[COLOR_model__MNullableType__mtype]))(var_valmtype) /* mtype on <var_valmtype:MType(MNullableType)>*/;
8665 var10 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
8666 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var10) /* mainmodule on <var10:AbstractCompiler>*/;
8667 var12 = NULL;
8668 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>*/;
8669 var7 = var13;
8670 } else {
8671 var7 = var_;
8672 }
8673 if (var7){
8674 var14 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
8675 var15 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__name]))(var_value) /* name on <var_value:RuntimeVariable>*/;
8676 var16 = ((val* (*)(val*))(var_valmtype->class->vft[COLOR_model__MNullableType__mtype]))(var_valmtype) /* mtype on <var_valmtype:MType(MNullableType)>*/;
8677 ((void (*)(val*, val*, val*, val*))(var14->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var14, var15, var_valmtype, var16) /* init on <var14:RuntimeVariable>*/;
8678 var_res = var14;
8679 var = var_res;
8680 goto RET_LABEL;
8681 } else {
8682 var17 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
8683 var18 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__name]))(var_value) /* name on <var_value:RuntimeVariable>*/;
8684 ((void (*)(val*, val*, val*, val*))(var17->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var17, var18, var_valmtype, var_mtype) /* init on <var17:RuntimeVariable>*/;
8685 var_res19 = var17;
8686 var = var_res19;
8687 goto RET_LABEL;
8688 }
8689 RET_LABEL:;
8690 return var;
8691 }
8692 /* method abstract_compiler#AbstractCompilerVisitor#autoadapt for (self: Object, RuntimeVariable, MType): RuntimeVariable */
8693 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__autoadapt(val* self, val* p0, val* p1) {
8694 val* var /* : RuntimeVariable */;
8695 val* var1 /* : RuntimeVariable */;
8696 var1 = abstract_compiler__AbstractCompilerVisitor__autoadapt(self, p0, p1);
8697 var = var1;
8698 RET_LABEL:;
8699 return var;
8700 }
8701 /* method abstract_compiler#AbstractCompilerVisitor#supercall for (self: AbstractCompilerVisitor, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
8702 val* abstract_compiler__AbstractCompilerVisitor__supercall(val* self, val* p0, val* p1, val* p2) {
8703 val* var /* : nullable RuntimeVariable */;
8704 const char* var_class_name;
8705 var_class_name = self == NULL ? "null" : self->type->name;
8706 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "supercall", var_class_name);
8707 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 753);
8708 show_backtrace(1);
8709 RET_LABEL:;
8710 return var;
8711 }
8712 /* method abstract_compiler#AbstractCompilerVisitor#supercall for (self: Object, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
8713 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__supercall(val* self, val* p0, val* p1, val* p2) {
8714 val* var /* : nullable RuntimeVariable */;
8715 val* var1 /* : nullable RuntimeVariable */;
8716 var1 = abstract_compiler__AbstractCompilerVisitor__supercall(self, p0, p1, p2);
8717 var = var1;
8718 RET_LABEL:;
8719 return var;
8720 }
8721 /* method abstract_compiler#AbstractCompilerVisitor#adapt_signature for (self: AbstractCompilerVisitor, MMethodDef, Array[RuntimeVariable]) */
8722 void abstract_compiler__AbstractCompilerVisitor__adapt_signature(val* self, val* p0, val* p1) {
8723 const char* var_class_name;
8724 var_class_name = self == NULL ? "null" : self->type->name;
8725 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "adapt_signature", var_class_name);
8726 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 756);
8727 show_backtrace(1);
8728 RET_LABEL:;
8729 }
8730 /* method abstract_compiler#AbstractCompilerVisitor#adapt_signature for (self: Object, MMethodDef, Array[RuntimeVariable]) */
8731 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__adapt_signature(val* self, val* p0, val* p1) {
8732 abstract_compiler__AbstractCompilerVisitor__adapt_signature(self, p0, p1);
8733 RET_LABEL:;
8734 }
8735 /* method abstract_compiler#AbstractCompilerVisitor#autobox for (self: AbstractCompilerVisitor, RuntimeVariable, MType): RuntimeVariable */
8736 val* abstract_compiler__AbstractCompilerVisitor__autobox(val* self, val* p0, val* p1) {
8737 val* var /* : RuntimeVariable */;
8738 const char* var_class_name;
8739 var_class_name = self == NULL ? "null" : self->type->name;
8740 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "autobox", var_class_name);
8741 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 758);
8742 show_backtrace(1);
8743 RET_LABEL:;
8744 return var;
8745 }
8746 /* method abstract_compiler#AbstractCompilerVisitor#autobox for (self: Object, RuntimeVariable, MType): RuntimeVariable */
8747 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__autobox(val* self, val* p0, val* p1) {
8748 val* var /* : RuntimeVariable */;
8749 val* var1 /* : RuntimeVariable */;
8750 var1 = abstract_compiler__AbstractCompilerVisitor__autobox(self, p0, p1);
8751 var = var1;
8752 RET_LABEL:;
8753 return var;
8754 }
8755 /* method abstract_compiler#AbstractCompilerVisitor#type_test for (self: AbstractCompilerVisitor, RuntimeVariable, MType, String): RuntimeVariable */
8756 val* abstract_compiler__AbstractCompilerVisitor__type_test(val* self, val* p0, val* p1, val* p2) {
8757 val* var /* : RuntimeVariable */;
8758 const char* var_class_name;
8759 var_class_name = self == NULL ? "null" : self->type->name;
8760 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "type_test", var_class_name);
8761 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 762);
8762 show_backtrace(1);
8763 RET_LABEL:;
8764 return var;
8765 }
8766 /* method abstract_compiler#AbstractCompilerVisitor#type_test for (self: Object, RuntimeVariable, MType, String): RuntimeVariable */
8767 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__type_test(val* self, val* p0, val* p1, val* p2) {
8768 val* var /* : RuntimeVariable */;
8769 val* var1 /* : RuntimeVariable */;
8770 var1 = abstract_compiler__AbstractCompilerVisitor__type_test(self, p0, p1, p2);
8771 var = var1;
8772 RET_LABEL:;
8773 return var;
8774 }
8775 /* method abstract_compiler#AbstractCompilerVisitor#is_same_type_test for (self: AbstractCompilerVisitor, RuntimeVariable, RuntimeVariable): RuntimeVariable */
8776 val* abstract_compiler__AbstractCompilerVisitor__is_same_type_test(val* self, val* p0, val* p1) {
8777 val* var /* : RuntimeVariable */;
8778 const char* var_class_name;
8779 var_class_name = self == NULL ? "null" : self->type->name;
8780 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "is_same_type_test", var_class_name);
8781 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 765);
8782 show_backtrace(1);
8783 RET_LABEL:;
8784 return var;
8785 }
8786 /* method abstract_compiler#AbstractCompilerVisitor#is_same_type_test for (self: Object, RuntimeVariable, RuntimeVariable): RuntimeVariable */
8787 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__is_same_type_test(val* self, val* p0, val* p1) {
8788 val* var /* : RuntimeVariable */;
8789 val* var1 /* : RuntimeVariable */;
8790 var1 = abstract_compiler__AbstractCompilerVisitor__is_same_type_test(self, p0, p1);
8791 var = var1;
8792 RET_LABEL:;
8793 return var;
8794 }
8795 /* method abstract_compiler#AbstractCompilerVisitor#equal_test for (self: AbstractCompilerVisitor, RuntimeVariable, RuntimeVariable): RuntimeVariable */
8796 val* abstract_compiler__AbstractCompilerVisitor__equal_test(val* self, val* p0, val* p1) {
8797 val* var /* : RuntimeVariable */;
8798 const char* var_class_name;
8799 var_class_name = self == NULL ? "null" : self->type->name;
8800 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "equal_test", var_class_name);
8801 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 768);
8802 show_backtrace(1);
8803 RET_LABEL:;
8804 return var;
8805 }
8806 /* method abstract_compiler#AbstractCompilerVisitor#equal_test for (self: Object, RuntimeVariable, RuntimeVariable): RuntimeVariable */
8807 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__equal_test(val* self, val* p0, val* p1) {
8808 val* var /* : RuntimeVariable */;
8809 val* var1 /* : RuntimeVariable */;
8810 var1 = abstract_compiler__AbstractCompilerVisitor__equal_test(self, p0, p1);
8811 var = var1;
8812 RET_LABEL:;
8813 return var;
8814 }
8815 /* method abstract_compiler#AbstractCompilerVisitor#call for (self: AbstractCompilerVisitor, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
8816 val* abstract_compiler__AbstractCompilerVisitor__call(val* self, val* p0, val* p1, val* p2) {
8817 val* var /* : nullable RuntimeVariable */;
8818 const char* var_class_name;
8819 var_class_name = self == NULL ? "null" : self->type->name;
8820 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "call", var_class_name);
8821 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 773);
8822 show_backtrace(1);
8823 RET_LABEL:;
8824 return var;
8825 }
8826 /* method abstract_compiler#AbstractCompilerVisitor#call for (self: Object, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
8827 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__call(val* self, val* p0, val* p1, val* p2) {
8828 val* var /* : nullable RuntimeVariable */;
8829 val* var1 /* : nullable RuntimeVariable */;
8830 var1 = abstract_compiler__AbstractCompilerVisitor__call(self, p0, p1, p2);
8831 var = var1;
8832 RET_LABEL:;
8833 return var;
8834 }
8835 /* method abstract_compiler#AbstractCompilerVisitor#send for (self: AbstractCompilerVisitor, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */
8836 val* abstract_compiler__AbstractCompilerVisitor__send(val* self, val* p0, val* p1) {
8837 val* var /* : nullable RuntimeVariable */;
8838 const char* var_class_name;
8839 var_class_name = self == NULL ? "null" : self->type->name;
8840 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "send", var_class_name);
8841 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 776);
8842 show_backtrace(1);
8843 RET_LABEL:;
8844 return var;
8845 }
8846 /* method abstract_compiler#AbstractCompilerVisitor#send for (self: Object, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */
8847 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__send(val* self, val* p0, val* p1) {
8848 val* var /* : nullable RuntimeVariable */;
8849 val* var1 /* : nullable RuntimeVariable */;
8850 var1 = abstract_compiler__AbstractCompilerVisitor__send(self, p0, p1);
8851 var = var1;
8852 RET_LABEL:;
8853 return var;
8854 }
8855 /* method abstract_compiler#AbstractCompilerVisitor#monomorphic_send for (self: AbstractCompilerVisitor, MMethod, MType, Array[RuntimeVariable]): nullable RuntimeVariable */
8856 val* abstract_compiler__AbstractCompilerVisitor__monomorphic_send(val* self, val* p0, val* p1, val* p2) {
8857 val* var /* : nullable RuntimeVariable */;
8858 val* var_m /* var m: MMethod */;
8859 val* var_t /* var t: MType */;
8860 val* var_args /* var args: Array[RuntimeVariable] */;
8861 short int var1 /* : Bool */;
8862 int cltype;
8863 int idtype;
8864 val* var2 /* : AbstractCompiler */;
8865 val* var3 /* : MModule */;
8866 val* var4 /* : MPropDef */;
8867 val* var_propdef /* var propdef: MMethodDef */;
8868 val* var5 /* : nullable RuntimeVariable */;
8869 var_m = p0;
8870 var_t = p1;
8871 var_args = p2;
8872 /* <var_t:MType> isa MClassType */
8873 cltype = type_model__MClassType.color;
8874 idtype = type_model__MClassType.id;
8875 if(cltype >= var_t->type->table_size) {
8876 var1 = 0;
8877 } else {
8878 var1 = var_t->type->type_table[cltype] == idtype;
8879 }
8880 if (!var1) {
8881 fprintf(stderr, "Runtime error: %s", "Assert failed");
8882 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 782);
8883 show_backtrace(1);
8884 }
8885 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
8886 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var2) /* mainmodule on <var2:AbstractCompiler>*/;
8887 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>*/;
8888 var_propdef = var4;
8889 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>*/;
8890 var = var5;
8891 goto RET_LABEL;
8892 RET_LABEL:;
8893 return var;
8894 }
8895 /* method abstract_compiler#AbstractCompilerVisitor#monomorphic_send for (self: Object, MMethod, MType, Array[RuntimeVariable]): nullable RuntimeVariable */
8896 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__monomorphic_send(val* self, val* p0, val* p1, val* p2) {
8897 val* var /* : nullable RuntimeVariable */;
8898 val* var1 /* : nullable RuntimeVariable */;
8899 var1 = abstract_compiler__AbstractCompilerVisitor__monomorphic_send(self, p0, p1, p2);
8900 var = var1;
8901 RET_LABEL:;
8902 return var;
8903 }
8904 /* method abstract_compiler#AbstractCompilerVisitor#monomorphic_super_send for (self: AbstractCompilerVisitor, MMethodDef, MType, Array[RuntimeVariable]): nullable RuntimeVariable */
8905 val* abstract_compiler__AbstractCompilerVisitor__monomorphic_super_send(val* self, val* p0, val* p1, val* p2) {
8906 val* var /* : nullable RuntimeVariable */;
8907 val* var_m /* var m: MMethodDef */;
8908 val* var_t /* var t: MType */;
8909 val* var_args /* var args: Array[RuntimeVariable] */;
8910 short int var1 /* : Bool */;
8911 int cltype;
8912 int idtype;
8913 val* var2 /* : AbstractCompiler */;
8914 val* var3 /* : MModule */;
8915 val* var4 /* : MPropDef */;
8916 val* var5 /* : nullable RuntimeVariable */;
8917 var_m = p0;
8918 var_t = p1;
8919 var_args = p2;
8920 /* <var_t:MType> isa MClassType */
8921 cltype = type_model__MClassType.color;
8922 idtype = type_model__MClassType.id;
8923 if(cltype >= var_t->type->table_size) {
8924 var1 = 0;
8925 } else {
8926 var1 = var_t->type->type_table[cltype] == idtype;
8927 }
8928 if (!var1) {
8929 fprintf(stderr, "Runtime error: %s", "Assert failed");
8930 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 790);
8931 show_backtrace(1);
8932 }
8933 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
8934 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var2) /* mainmodule on <var2:AbstractCompiler>*/;
8935 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>*/;
8936 var_m = var4;
8937 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>*/;
8938 var = var5;
8939 goto RET_LABEL;
8940 RET_LABEL:;
8941 return var;
8942 }
8943 /* method abstract_compiler#AbstractCompilerVisitor#monomorphic_super_send for (self: Object, MMethodDef, MType, Array[RuntimeVariable]): nullable RuntimeVariable */
8944 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__monomorphic_super_send(val* self, val* p0, val* p1, val* p2) {
8945 val* var /* : nullable RuntimeVariable */;
8946 val* var1 /* : nullable RuntimeVariable */;
8947 var1 = abstract_compiler__AbstractCompilerVisitor__monomorphic_super_send(self, p0, p1, p2);
8948 var = var1;
8949 RET_LABEL:;
8950 return var;
8951 }
8952 /* method abstract_compiler#AbstractCompilerVisitor#isset_attribute for (self: AbstractCompilerVisitor, MAttribute, RuntimeVariable): RuntimeVariable */
8953 val* abstract_compiler__AbstractCompilerVisitor__isset_attribute(val* self, val* p0, val* p1) {
8954 val* var /* : RuntimeVariable */;
8955 const char* var_class_name;
8956 var_class_name = self == NULL ? "null" : self->type->name;
8957 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "isset_attribute", var_class_name);
8958 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 797);
8959 show_backtrace(1);
8960 RET_LABEL:;
8961 return var;
8962 }
8963 /* method abstract_compiler#AbstractCompilerVisitor#isset_attribute for (self: Object, MAttribute, RuntimeVariable): RuntimeVariable */
8964 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__isset_attribute(val* self, val* p0, val* p1) {
8965 val* var /* : RuntimeVariable */;
8966 val* var1 /* : RuntimeVariable */;
8967 var1 = abstract_compiler__AbstractCompilerVisitor__isset_attribute(self, p0, p1);
8968 var = var1;
8969 RET_LABEL:;
8970 return var;
8971 }
8972 /* method abstract_compiler#AbstractCompilerVisitor#read_attribute for (self: AbstractCompilerVisitor, MAttribute, RuntimeVariable): RuntimeVariable */
8973 val* abstract_compiler__AbstractCompilerVisitor__read_attribute(val* self, val* p0, val* p1) {
8974 val* var /* : RuntimeVariable */;
8975 const char* var_class_name;
8976 var_class_name = self == NULL ? "null" : self->type->name;
8977 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "read_attribute", var_class_name);
8978 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 800);
8979 show_backtrace(1);
8980 RET_LABEL:;
8981 return var;
8982 }
8983 /* method abstract_compiler#AbstractCompilerVisitor#read_attribute for (self: Object, MAttribute, RuntimeVariable): RuntimeVariable */
8984 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__read_attribute(val* self, val* p0, val* p1) {
8985 val* var /* : RuntimeVariable */;
8986 val* var1 /* : RuntimeVariable */;
8987 var1 = abstract_compiler__AbstractCompilerVisitor__read_attribute(self, p0, p1);
8988 var = var1;
8989 RET_LABEL:;
8990 return var;
8991 }
8992 /* method abstract_compiler#AbstractCompilerVisitor#write_attribute for (self: AbstractCompilerVisitor, MAttribute, RuntimeVariable, RuntimeVariable) */
8993 void abstract_compiler__AbstractCompilerVisitor__write_attribute(val* self, val* p0, val* p1, val* p2) {
8994 const char* var_class_name;
8995 var_class_name = self == NULL ? "null" : self->type->name;
8996 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "write_attribute", var_class_name);
8997 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 803);
8998 show_backtrace(1);
8999 RET_LABEL:;
9000 }
9001 /* method abstract_compiler#AbstractCompilerVisitor#write_attribute for (self: Object, MAttribute, RuntimeVariable, RuntimeVariable) */
9002 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__write_attribute(val* self, val* p0, val* p1, val* p2) {
9003 abstract_compiler__AbstractCompilerVisitor__write_attribute(self, p0, p1, p2);
9004 RET_LABEL:;
9005 }
9006 /* method abstract_compiler#AbstractCompilerVisitor#check_recv_notnull for (self: AbstractCompilerVisitor, RuntimeVariable) */
9007 void abstract_compiler__AbstractCompilerVisitor__check_recv_notnull(val* self, val* p0) {
9008 val* var_recv /* var recv: RuntimeVariable */;
9009 val* var /* : AbstractCompiler */;
9010 val* var1 /* : ModelBuilder */;
9011 val* var2 /* : ToolContext */;
9012 val* var3 /* : OptionBool */;
9013 val* var4 /* : nullable Object */;
9014 short int var5 /* : Bool */;
9015 short int var6 /* : Bool */;
9016 val* var7 /* : MType */;
9017 short int var8 /* : Bool */;
9018 int cltype;
9019 int idtype;
9020 short int var_ /* var : Bool */;
9021 val* var9 /* : MType */;
9022 short int var10 /* : Bool */;
9023 int cltype11;
9024 int idtype12;
9025 short int var_maybenull /* var maybenull: Bool */;
9026 static val* varonce;
9027 val* var13 /* : String */;
9028 char* var14 /* : NativeString */;
9029 long var15 /* : Int */;
9030 val* var16 /* : String */;
9031 static val* varonce17;
9032 val* var18 /* : String */;
9033 char* var19 /* : NativeString */;
9034 long var20 /* : Int */;
9035 val* var21 /* : String */;
9036 val* var22 /* : Array[Object] */;
9037 long var23 /* : Int */;
9038 val* var24 /* : NativeArray[Object] */;
9039 val* var25 /* : String */;
9040 static val* varonce26;
9041 val* var27 /* : String */;
9042 char* var28 /* : NativeString */;
9043 long var29 /* : Int */;
9044 val* var30 /* : String */;
9045 static val* varonce31;
9046 val* var32 /* : String */;
9047 char* var33 /* : NativeString */;
9048 long var34 /* : Int */;
9049 val* var35 /* : String */;
9050 var_recv = p0;
9051 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
9052 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var) /* modelbuilder on <var:AbstractCompiler>*/;
9053 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var1) /* toolcontext on <var1:ModelBuilder>*/;
9054 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_other]))(var2) /* opt_no_check_other on <var2:ToolContext>*/;
9055 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_opts__Option__value]))(var3) /* value on <var3:OptionBool>*/;
9056 var5 = ((struct instance_kernel__Bool*)var4)->value; /* autounbox from nullable Object to Bool */;
9057 if (var5){
9058 goto RET_LABEL;
9059 } else {
9060 }
9061 var7 = ((val* (*)(val*))(var_recv->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_recv) /* mcasttype on <var_recv:RuntimeVariable>*/;
9062 /* <var7:MType> isa MNullableType */
9063 cltype = type_model__MNullableType.color;
9064 idtype = type_model__MNullableType.id;
9065 if(cltype >= var7->type->table_size) {
9066 var8 = 0;
9067 } else {
9068 var8 = var7->type->type_table[cltype] == idtype;
9069 }
9070 var_ = var8;
9071 if (var8){
9072 var6 = var_;
9073 } else {
9074 var9 = ((val* (*)(val*))(var_recv->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_recv) /* mcasttype on <var_recv:RuntimeVariable>*/;
9075 /* <var9:MType> isa MNullType */
9076 cltype11 = type_model__MNullType.color;
9077 idtype12 = type_model__MNullType.id;
9078 if(cltype11 >= var9->type->table_size) {
9079 var10 = 0;
9080 } else {
9081 var10 = var9->type->type_table[cltype11] == idtype12;
9082 }
9083 var6 = var10;
9084 }
9085 var_maybenull = var6;
9086 if (var_maybenull){
9087 if (varonce) {
9088 var13 = varonce;
9089 } else {
9090 var14 = "if (";
9091 var15 = 4;
9092 var16 = string__NativeString__to_s_with_length(var14, var15);
9093 var13 = var16;
9094 varonce = var13;
9095 }
9096 if (varonce17) {
9097 var18 = varonce17;
9098 } else {
9099 var19 = " == NULL) {";
9100 var20 = 11;
9101 var21 = string__NativeString__to_s_with_length(var19, var20);
9102 var18 = var21;
9103 varonce17 = var18;
9104 }
9105 var22 = NEW_array__Array(&type_array__Arraykernel__Object);
9106 { /* var22 = array_instance Array[Object] */
9107 var23 = 3;
9108 var24 = NEW_array__NativeArray(var23, &type_array__NativeArraykernel__Object);
9109 ((struct instance_array__NativeArray*)var24)->values[0] = (val*) var13;
9110 ((struct instance_array__NativeArray*)var24)->values[1] = (val*) var_recv;
9111 ((struct instance_array__NativeArray*)var24)->values[2] = (val*) var18;
9112 ((void (*)(val*, val*, long))(var22->class->vft[COLOR_array__Array__with_native]))(var22, var24, var23) /* with_native on <var22:Array[Object]>*/;
9113 }
9114 var25 = ((val* (*)(val*))(var22->class->vft[COLOR_string__Object__to_s]))(var22) /* to_s on <var22:Array[Object]>*/;
9115 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var25) /* add on <self:AbstractCompilerVisitor>*/;
9116 if (varonce26) {
9117 var27 = varonce26;
9118 } else {
9119 var28 = "Reciever is null";
9120 var29 = 16;
9121 var30 = string__NativeString__to_s_with_length(var28, var29);
9122 var27 = var30;
9123 varonce26 = var27;
9124 }
9125 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(self, var27) /* add_abort on <self:AbstractCompilerVisitor>*/;
9126 if (varonce31) {
9127 var32 = varonce31;
9128 } else {
9129 var33 = "}";
9130 var34 = 1;
9131 var35 = string__NativeString__to_s_with_length(var33, var34);
9132 var32 = var35;
9133 varonce31 = var32;
9134 }
9135 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var32) /* add on <self:AbstractCompilerVisitor>*/;
9136 } else {
9137 }
9138 RET_LABEL:;
9139 }
9140 /* method abstract_compiler#AbstractCompilerVisitor#check_recv_notnull for (self: Object, RuntimeVariable) */
9141 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__check_recv_notnull(val* self, val* p0) {
9142 abstract_compiler__AbstractCompilerVisitor__check_recv_notnull(self, p0);
9143 RET_LABEL:;
9144 }
9145 /* method abstract_compiler#AbstractCompilerVisitor#names for (self: AbstractCompilerVisitor): HashSet[String] */
9146 val* abstract_compiler__AbstractCompilerVisitor__names(val* self) {
9147 val* var /* : HashSet[String] */;
9148 val* var1 /* : HashSet[String] */;
9149 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dnames].val; /* @names on <self:AbstractCompilerVisitor> */
9150 if (var1 == NULL) {
9151 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @names");
9152 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 823);
9153 show_backtrace(1);
9154 }
9155 var = var1;
9156 RET_LABEL:;
9157 return var;
9158 }
9159 /* method abstract_compiler#AbstractCompilerVisitor#names for (self: Object): HashSet[String] */
9160 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__names(val* self) {
9161 val* var /* : HashSet[String] */;
9162 val* var1 /* : HashSet[String] */;
9163 var1 = abstract_compiler__AbstractCompilerVisitor__names(self);
9164 var = var1;
9165 RET_LABEL:;
9166 return var;
9167 }
9168 /* method abstract_compiler#AbstractCompilerVisitor#names= for (self: AbstractCompilerVisitor, HashSet[String]) */
9169 void abstract_compiler__AbstractCompilerVisitor__names_61d(val* self, val* p0) {
9170 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dnames].val = p0; /* @names on <self:AbstractCompilerVisitor> */
9171 RET_LABEL:;
9172 }
9173 /* method abstract_compiler#AbstractCompilerVisitor#names= for (self: Object, HashSet[String]) */
9174 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__names_61d(val* self, val* p0) {
9175 abstract_compiler__AbstractCompilerVisitor__names_61d(self, p0);
9176 RET_LABEL:;
9177 }
9178 /* method abstract_compiler#AbstractCompilerVisitor#last for (self: AbstractCompilerVisitor): Int */
9179 long abstract_compiler__AbstractCompilerVisitor__last(val* self) {
9180 long var /* : Int */;
9181 long var1 /* : Int */;
9182 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dlast].l; /* @last on <self:AbstractCompilerVisitor> */
9183 var = var1;
9184 RET_LABEL:;
9185 return var;
9186 }
9187 /* method abstract_compiler#AbstractCompilerVisitor#last for (self: Object): Int */
9188 long VIRTUAL_abstract_compiler__AbstractCompilerVisitor__last(val* self) {
9189 long var /* : Int */;
9190 long var1 /* : Int */;
9191 var1 = abstract_compiler__AbstractCompilerVisitor__last(self);
9192 var = var1;
9193 RET_LABEL:;
9194 return var;
9195 }
9196 /* method abstract_compiler#AbstractCompilerVisitor#last= for (self: AbstractCompilerVisitor, Int) */
9197 void abstract_compiler__AbstractCompilerVisitor__last_61d(val* self, long p0) {
9198 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dlast].l = p0; /* @last on <self:AbstractCompilerVisitor> */
9199 RET_LABEL:;
9200 }
9201 /* method abstract_compiler#AbstractCompilerVisitor#last= for (self: Object, Int) */
9202 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__last_61d(val* self, long p0) {
9203 abstract_compiler__AbstractCompilerVisitor__last_61d(self, p0);
9204 RET_LABEL:;
9205 }
9206 /* method abstract_compiler#AbstractCompilerVisitor#get_name for (self: AbstractCompilerVisitor, String): String */
9207 val* abstract_compiler__AbstractCompilerVisitor__get_name(val* self, val* p0) {
9208 val* var /* : String */;
9209 val* var_s /* var s: String */;
9210 val* var1 /* : HashSet[String] */;
9211 short int var2 /* : Bool */;
9212 short int var3 /* : Bool */;
9213 val* var4 /* : HashSet[String] */;
9214 long var5 /* : Int */;
9215 long var6 /* : Int */;
9216 long var7 /* : Int */;
9217 long var9 /* : Int */;
9218 long var_i /* var i: Int */;
9219 val* var10 /* : String */;
9220 val* var11 /* : String */;
9221 val* var_s2 /* var s2: String */;
9222 val* var12 /* : HashSet[String] */;
9223 short int var13 /* : Bool */;
9224 short int var14 /* : Bool */;
9225 val* var15 /* : HashSet[String] */;
9226 long var16 /* : Int */;
9227 long var17 /* : Int */;
9228 long var19 /* : Int */;
9229 var_s = p0;
9230 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__names]))(self) /* names on <self:AbstractCompilerVisitor>*/;
9231 var2 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__Collection__has]))(var1, var_s) /* has on <var1:HashSet[String]>*/;
9232 var3 = !var2;
9233 if (var3){
9234 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__names]))(self) /* names on <self:AbstractCompilerVisitor>*/;
9235 ((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var4, var_s) /* add on <var4:HashSet[String]>*/;
9236 var = var_s;
9237 goto RET_LABEL;
9238 } else {
9239 }
9240 var5 = ((long (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__last]))(self) /* last on <self:AbstractCompilerVisitor>*/;
9241 var6 = 1;
9242 { /* Inline kernel#Int#+ (var5,var6) */
9243 var9 = var5 + var6;
9244 var7 = var9;
9245 goto RET_LABEL8;
9246 RET_LABEL8:(void)0;
9247 }
9248 var_i = var7;
9249 for(;;) {
9250 var10 = string__Int__to_s(var_i);
9251 var11 = ((val* (*)(val*, val*))(var_s->class->vft[COLOR_string__String___43d]))(var_s, var10) /* + on <var_s:String>*/;
9252 var_s2 = var11;
9253 var12 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__names]))(self) /* names on <self:AbstractCompilerVisitor>*/;
9254 var13 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_abstract_collection__Collection__has]))(var12, var_s2) /* has on <var12:HashSet[String]>*/;
9255 var14 = !var13;
9256 if (var14){
9257 ((void (*)(val*, long))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__last_61d]))(self, var_i) /* last= on <self:AbstractCompilerVisitor>*/;
9258 var15 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__names]))(self) /* names on <self:AbstractCompilerVisitor>*/;
9259 ((void (*)(val*, val*))(var15->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var15, var_s2) /* add on <var15:HashSet[String]>*/;
9260 var = var_s2;
9261 goto RET_LABEL;
9262 } else {
9263 }
9264 var16 = 1;
9265 { /* Inline kernel#Int#+ (var_i,var16) */
9266 var19 = var_i + var16;
9267 var17 = var19;
9268 goto RET_LABEL18;
9269 RET_LABEL18:(void)0;
9270 }
9271 var_i = var17;
9272 CONTINUE_label: (void)0;
9273 }
9274 BREAK_label: (void)0;
9275 RET_LABEL:;
9276 return var;
9277 }
9278 /* method abstract_compiler#AbstractCompilerVisitor#get_name for (self: Object, String): String */
9279 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__get_name(val* self, val* p0) {
9280 val* var /* : String */;
9281 val* var1 /* : String */;
9282 var1 = abstract_compiler__AbstractCompilerVisitor__get_name(self, p0);
9283 var = var1;
9284 RET_LABEL:;
9285 return var;
9286 }
9287 /* method abstract_compiler#AbstractCompilerVisitor#escapemark_name for (self: AbstractCompilerVisitor, nullable EscapeMark): String */
9288 val* abstract_compiler__AbstractCompilerVisitor__escapemark_name(val* self, val* p0) {
9289 val* var /* : String */;
9290 val* var_e /* var e: nullable EscapeMark */;
9291 val* var1 /* : null */;
9292 short int var2 /* : Bool */;
9293 val* var3 /* : HashMap[EscapeMark, String] */;
9294 short int var4 /* : Bool */;
9295 val* var5 /* : HashMap[EscapeMark, String] */;
9296 val* var6 /* : nullable Object */;
9297 val* var7 /* : nullable String */;
9298 val* var_name /* var name: nullable String */;
9299 val* var8 /* : null */;
9300 short int var9 /* : Bool */;
9301 static val* varonce;
9302 val* var10 /* : String */;
9303 char* var11 /* : NativeString */;
9304 long var12 /* : Int */;
9305 val* var13 /* : String */;
9306 val* var14 /* : String */;
9307 val* var15 /* : HashMap[EscapeMark, String] */;
9308 var_e = p0;
9309 var1 = NULL;
9310 if (var_e == NULL) {
9311 var2 = 0; /* is null */
9312 } else {
9313 var2 = 1; /* arg is null and recv is not */
9314 }
9315 if (!var2) {
9316 fprintf(stderr, "Runtime error: %s", "Assert failed");
9317 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 848);
9318 show_backtrace(1);
9319 }
9320 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__escapemark_names]))(self) /* escapemark_names on <self:AbstractCompilerVisitor>*/;
9321 var4 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var3, var_e) /* has_key on <var3:HashMap[EscapeMark, String]>*/;
9322 if (var4){
9323 var5 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__escapemark_names]))(self) /* escapemark_names on <self:AbstractCompilerVisitor>*/;
9324 var6 = ((val* (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var5, var_e) /* [] on <var5:HashMap[EscapeMark, String]>*/;
9325 var = var6;
9326 goto RET_LABEL;
9327 } else {
9328 }
9329 var7 = ((val* (*)(val*))(var_e->class->vft[COLOR_scope__EscapeMark__name]))(var_e) /* name on <var_e:nullable EscapeMark(EscapeMark)>*/;
9330 var_name = var7;
9331 var8 = NULL;
9332 if (var_name == NULL) {
9333 var9 = 1; /* is null */
9334 } else {
9335 var9 = 0; /* arg is null but recv is not */
9336 }
9337 if (var9){
9338 if (varonce) {
9339 var10 = varonce;
9340 } else {
9341 var11 = "label";
9342 var12 = 5;
9343 var13 = string__NativeString__to_s_with_length(var11, var12);
9344 var10 = var13;
9345 varonce = var10;
9346 }
9347 var_name = var10;
9348 } else {
9349 }
9350 var14 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var_name) /* get_name on <self:AbstractCompilerVisitor>*/;
9351 var_name = var14;
9352 var15 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__escapemark_names]))(self) /* escapemark_names on <self:AbstractCompilerVisitor>*/;
9353 ((void (*)(val*, val*, val*))(var15->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var15, var_e, var_name) /* []= on <var15:HashMap[EscapeMark, String]>*/;
9354 var = var_name;
9355 goto RET_LABEL;
9356 RET_LABEL:;
9357 return var;
9358 }
9359 /* method abstract_compiler#AbstractCompilerVisitor#escapemark_name for (self: Object, nullable EscapeMark): String */
9360 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__escapemark_name(val* self, val* p0) {
9361 val* var /* : String */;
9362 val* var1 /* : String */;
9363 var1 = abstract_compiler__AbstractCompilerVisitor__escapemark_name(self, p0);
9364 var = var1;
9365 RET_LABEL:;
9366 return var;
9367 }
9368 /* method abstract_compiler#AbstractCompilerVisitor#escapemark_names for (self: AbstractCompilerVisitor): HashMap[EscapeMark, String] */
9369 val* abstract_compiler__AbstractCompilerVisitor__escapemark_names(val* self) {
9370 val* var /* : HashMap[EscapeMark, String] */;
9371 val* var1 /* : HashMap[EscapeMark, String] */;
9372 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64descapemark_names].val; /* @escapemark_names on <self:AbstractCompilerVisitor> */
9373 if (var1 == NULL) {
9374 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @escapemark_names");
9375 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 857);
9376 show_backtrace(1);
9377 }
9378 var = var1;
9379 RET_LABEL:;
9380 return var;
9381 }
9382 /* method abstract_compiler#AbstractCompilerVisitor#escapemark_names for (self: Object): HashMap[EscapeMark, String] */
9383 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__escapemark_names(val* self) {
9384 val* var /* : HashMap[EscapeMark, String] */;
9385 val* var1 /* : HashMap[EscapeMark, String] */;
9386 var1 = abstract_compiler__AbstractCompilerVisitor__escapemark_names(self);
9387 var = var1;
9388 RET_LABEL:;
9389 return var;
9390 }
9391 /* method abstract_compiler#AbstractCompilerVisitor#escapemark_names= for (self: AbstractCompilerVisitor, HashMap[EscapeMark, String]) */
9392 void abstract_compiler__AbstractCompilerVisitor__escapemark_names_61d(val* self, val* p0) {
9393 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64descapemark_names].val = p0; /* @escapemark_names on <self:AbstractCompilerVisitor> */
9394 RET_LABEL:;
9395 }
9396 /* method abstract_compiler#AbstractCompilerVisitor#escapemark_names= for (self: Object, HashMap[EscapeMark, String]) */
9397 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__escapemark_names_61d(val* self, val* p0) {
9398 abstract_compiler__AbstractCompilerVisitor__escapemark_names_61d(self, p0);
9399 RET_LABEL:;
9400 }
9401 /* method abstract_compiler#AbstractCompilerVisitor#class_name_string for (self: AbstractCompilerVisitor, RuntimeVariable): String */
9402 val* abstract_compiler__AbstractCompilerVisitor__class_name_string(val* self, val* p0) {
9403 val* var /* : String */;
9404 const char* var_class_name;
9405 var_class_name = self == NULL ? "null" : self->type->name;
9406 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "class_name_string", var_class_name);
9407 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 859);
9408 show_backtrace(1);
9409 RET_LABEL:;
9410 return var;
9411 }
9412 /* method abstract_compiler#AbstractCompilerVisitor#class_name_string for (self: Object, RuntimeVariable): String */
9413 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__class_name_string(val* self, val* p0) {
9414 val* var /* : String */;
9415 val* var1 /* : String */;
9416 var1 = abstract_compiler__AbstractCompilerVisitor__class_name_string(self, p0);
9417 var = var1;
9418 RET_LABEL:;
9419 return var;
9420 }
9421 /* method abstract_compiler#AbstractCompilerVisitor#variables for (self: AbstractCompilerVisitor): HashMap[Variable, RuntimeVariable] */
9422 val* abstract_compiler__AbstractCompilerVisitor__variables(val* self) {
9423 val* var /* : HashMap[Variable, RuntimeVariable] */;
9424 val* var1 /* : HashMap[Variable, RuntimeVariable] */;
9425 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dvariables].val; /* @variables on <self:AbstractCompilerVisitor> */
9426 if (var1 == NULL) {
9427 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @variables");
9428 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 865);
9429 show_backtrace(1);
9430 }
9431 var = var1;
9432 RET_LABEL:;
9433 return var;
9434 }
9435 /* method abstract_compiler#AbstractCompilerVisitor#variables for (self: Object): HashMap[Variable, RuntimeVariable] */
9436 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__variables(val* self) {
9437 val* var /* : HashMap[Variable, RuntimeVariable] */;
9438 val* var1 /* : HashMap[Variable, RuntimeVariable] */;
9439 var1 = abstract_compiler__AbstractCompilerVisitor__variables(self);
9440 var = var1;
9441 RET_LABEL:;
9442 return var;
9443 }
9444 /* method abstract_compiler#AbstractCompilerVisitor#variables= for (self: AbstractCompilerVisitor, HashMap[Variable, RuntimeVariable]) */
9445 void abstract_compiler__AbstractCompilerVisitor__variables_61d(val* self, val* p0) {
9446 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dvariables].val = p0; /* @variables on <self:AbstractCompilerVisitor> */
9447 RET_LABEL:;
9448 }
9449 /* method abstract_compiler#AbstractCompilerVisitor#variables= for (self: Object, HashMap[Variable, RuntimeVariable]) */
9450 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__variables_61d(val* self, val* p0) {
9451 abstract_compiler__AbstractCompilerVisitor__variables_61d(self, p0);
9452 RET_LABEL:;
9453 }
9454 /* method abstract_compiler#AbstractCompilerVisitor#variable for (self: AbstractCompilerVisitor, Variable): RuntimeVariable */
9455 val* abstract_compiler__AbstractCompilerVisitor__variable(val* self, val* p0) {
9456 val* var /* : RuntimeVariable */;
9457 val* var_variable /* var variable: Variable */;
9458 val* var1 /* : HashMap[Variable, RuntimeVariable] */;
9459 short int var2 /* : Bool */;
9460 val* var3 /* : HashMap[Variable, RuntimeVariable] */;
9461 val* var4 /* : nullable Object */;
9462 static val* varonce;
9463 val* var5 /* : String */;
9464 char* var6 /* : NativeString */;
9465 long var7 /* : Int */;
9466 val* var8 /* : String */;
9467 val* var9 /* : String */;
9468 val* var10 /* : Array[Object] */;
9469 long var11 /* : Int */;
9470 val* var12 /* : NativeArray[Object] */;
9471 val* var13 /* : String */;
9472 val* var14 /* : String */;
9473 val* var_name /* var name: String */;
9474 val* var15 /* : nullable MType */;
9475 val* var_mtype /* var mtype: MType */;
9476 val* var16 /* : MType */;
9477 val* var17 /* : RuntimeVariable */;
9478 val* var_res /* var res: RuntimeVariable */;
9479 val* var18 /* : String */;
9480 static val* varonce19;
9481 val* var20 /* : String */;
9482 char* var21 /* : NativeString */;
9483 long var22 /* : Int */;
9484 val* var23 /* : String */;
9485 static val* varonce24;
9486 val* var25 /* : String */;
9487 char* var26 /* : NativeString */;
9488 long var27 /* : Int */;
9489 val* var28 /* : String */;
9490 static val* varonce29;
9491 val* var30 /* : String */;
9492 char* var31 /* : NativeString */;
9493 long var32 /* : Int */;
9494 val* var33 /* : String */;
9495 static val* varonce34;
9496 val* var35 /* : String */;
9497 char* var36 /* : NativeString */;
9498 long var37 /* : Int */;
9499 val* var38 /* : String */;
9500 val* var39 /* : Array[Object] */;
9501 long var40 /* : Int */;
9502 val* var41 /* : NativeArray[Object] */;
9503 val* var42 /* : String */;
9504 val* var43 /* : HashMap[Variable, RuntimeVariable] */;
9505 var_variable = p0;
9506 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__variables]))(self) /* variables on <self:AbstractCompilerVisitor>*/;
9507 var2 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var1, var_variable) /* has_key on <var1:HashMap[Variable, RuntimeVariable]>*/;
9508 if (var2){
9509 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__variables]))(self) /* variables on <self:AbstractCompilerVisitor>*/;
9510 var4 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var3, var_variable) /* [] on <var3:HashMap[Variable, RuntimeVariable]>*/;
9511 var = var4;
9512 goto RET_LABEL;
9513 } else {
9514 if (varonce) {
9515 var5 = varonce;
9516 } else {
9517 var6 = "var_";
9518 var7 = 4;
9519 var8 = string__NativeString__to_s_with_length(var6, var7);
9520 var5 = var8;
9521 varonce = var5;
9522 }
9523 var9 = ((val* (*)(val*))(var_variable->class->vft[COLOR_scope__Variable__name]))(var_variable) /* name on <var_variable:Variable>*/;
9524 var10 = NEW_array__Array(&type_array__Arraykernel__Object);
9525 { /* var10 = array_instance Array[Object] */
9526 var11 = 2;
9527 var12 = NEW_array__NativeArray(var11, &type_array__NativeArraykernel__Object);
9528 ((struct instance_array__NativeArray*)var12)->values[0] = (val*) var5;
9529 ((struct instance_array__NativeArray*)var12)->values[1] = (val*) var9;
9530 ((void (*)(val*, val*, long))(var10->class->vft[COLOR_array__Array__with_native]))(var10, var12, var11) /* with_native on <var10:Array[Object]>*/;
9531 }
9532 var13 = ((val* (*)(val*))(var10->class->vft[COLOR_string__Object__to_s]))(var10) /* to_s on <var10:Array[Object]>*/;
9533 var14 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var13) /* get_name on <self:AbstractCompilerVisitor>*/;
9534 var_name = var14;
9535 var15 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:Variable>*/;
9536 if (var15 == NULL) {
9537 fprintf(stderr, "Runtime error: %s", "Cast failed");
9538 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 874);
9539 show_backtrace(1);
9540 }
9541 var_mtype = var15;
9542 var16 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__anchor]))(self, var_mtype) /* anchor on <self:AbstractCompilerVisitor>*/;
9543 var_mtype = var16;
9544 var17 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
9545 ((void (*)(val*, val*, val*, val*))(var17->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var17, var_name, var_mtype, var_mtype) /* init on <var17:RuntimeVariable>*/;
9546 var_res = var17;
9547 var18 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
9548 if (varonce19) {
9549 var20 = varonce19;
9550 } else {
9551 var21 = " ";
9552 var22 = 1;
9553 var23 = string__NativeString__to_s_with_length(var21, var22);
9554 var20 = var23;
9555 varonce19 = var20;
9556 }
9557 if (varonce24) {
9558 var25 = varonce24;
9559 } else {
9560 var26 = " /* var ";
9561 var27 = 8;
9562 var28 = string__NativeString__to_s_with_length(var26, var27);
9563 var25 = var28;
9564 varonce24 = var25;
9565 }
9566 if (varonce29) {
9567 var30 = varonce29;
9568 } else {
9569 var31 = ": ";
9570 var32 = 2;
9571 var33 = string__NativeString__to_s_with_length(var31, var32);
9572 var30 = var33;
9573 varonce29 = var30;
9574 }
9575 if (varonce34) {
9576 var35 = varonce34;
9577 } else {
9578 var36 = " */;";
9579 var37 = 4;
9580 var38 = string__NativeString__to_s_with_length(var36, var37);
9581 var35 = var38;
9582 varonce34 = var35;
9583 }
9584 var39 = NEW_array__Array(&type_array__Arraykernel__Object);
9585 { /* var39 = array_instance Array[Object] */
9586 var40 = 8;
9587 var41 = NEW_array__NativeArray(var40, &type_array__NativeArraykernel__Object);
9588 ((struct instance_array__NativeArray*)var41)->values[0] = (val*) var18;
9589 ((struct instance_array__NativeArray*)var41)->values[1] = (val*) var20;
9590 ((struct instance_array__NativeArray*)var41)->values[2] = (val*) var_name;
9591 ((struct instance_array__NativeArray*)var41)->values[3] = (val*) var25;
9592 ((struct instance_array__NativeArray*)var41)->values[4] = (val*) var_variable;
9593 ((struct instance_array__NativeArray*)var41)->values[5] = (val*) var30;
9594 ((struct instance_array__NativeArray*)var41)->values[6] = (val*) var_mtype;
9595 ((struct instance_array__NativeArray*)var41)->values[7] = (val*) var35;
9596 ((void (*)(val*, val*, long))(var39->class->vft[COLOR_array__Array__with_native]))(var39, var41, var40) /* with_native on <var39:Array[Object]>*/;
9597 }
9598 var42 = ((val* (*)(val*))(var39->class->vft[COLOR_string__Object__to_s]))(var39) /* to_s on <var39:Array[Object]>*/;
9599 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var42) /* add_decl on <self:AbstractCompilerVisitor>*/;
9600 var43 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__variables]))(self) /* variables on <self:AbstractCompilerVisitor>*/;
9601 ((void (*)(val*, val*, val*))(var43->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var43, var_variable, var_res) /* []= on <var43:HashMap[Variable, RuntimeVariable]>*/;
9602 var = var_res;
9603 goto RET_LABEL;
9604 }
9605 RET_LABEL:;
9606 return var;
9607 }
9608 /* method abstract_compiler#AbstractCompilerVisitor#variable for (self: Object, Variable): RuntimeVariable */
9609 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__variable(val* self, val* p0) {
9610 val* var /* : RuntimeVariable */;
9611 val* var1 /* : RuntimeVariable */;
9612 var1 = abstract_compiler__AbstractCompilerVisitor__variable(self, p0);
9613 var = var1;
9614 RET_LABEL:;
9615 return var;
9616 }
9617 /* method abstract_compiler#AbstractCompilerVisitor#new_var for (self: AbstractCompilerVisitor, MType): RuntimeVariable */
9618 val* abstract_compiler__AbstractCompilerVisitor__new_var(val* self, val* p0) {
9619 val* var /* : RuntimeVariable */;
9620 val* var_mtype /* var mtype: MType */;
9621 val* var1 /* : MType */;
9622 static val* varonce;
9623 val* var2 /* : String */;
9624 char* var3 /* : NativeString */;
9625 long var4 /* : Int */;
9626 val* var5 /* : String */;
9627 val* var6 /* : String */;
9628 val* var_name /* var name: String */;
9629 val* var7 /* : RuntimeVariable */;
9630 val* var_res /* var res: RuntimeVariable */;
9631 val* var8 /* : String */;
9632 static val* varonce9;
9633 val* var10 /* : String */;
9634 char* var11 /* : NativeString */;
9635 long var12 /* : Int */;
9636 val* var13 /* : String */;
9637 static val* varonce14;
9638 val* var15 /* : String */;
9639 char* var16 /* : NativeString */;
9640 long var17 /* : Int */;
9641 val* var18 /* : String */;
9642 static val* varonce19;
9643 val* var20 /* : String */;
9644 char* var21 /* : NativeString */;
9645 long var22 /* : Int */;
9646 val* var23 /* : String */;
9647 val* var24 /* : Array[Object] */;
9648 long var25 /* : Int */;
9649 val* var26 /* : NativeArray[Object] */;
9650 val* var27 /* : String */;
9651 var_mtype = p0;
9652 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__anchor]))(self, var_mtype) /* anchor on <self:AbstractCompilerVisitor>*/;
9653 var_mtype = var1;
9654 if (varonce) {
9655 var2 = varonce;
9656 } else {
9657 var3 = "var";
9658 var4 = 3;
9659 var5 = string__NativeString__to_s_with_length(var3, var4);
9660 var2 = var5;
9661 varonce = var2;
9662 }
9663 var6 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var2) /* get_name on <self:AbstractCompilerVisitor>*/;
9664 var_name = var6;
9665 var7 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
9666 ((void (*)(val*, val*, val*, val*))(var7->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var7, var_name, var_mtype, var_mtype) /* init on <var7:RuntimeVariable>*/;
9667 var_res = var7;
9668 var8 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
9669 if (varonce9) {
9670 var10 = varonce9;
9671 } else {
9672 var11 = " ";
9673 var12 = 1;
9674 var13 = string__NativeString__to_s_with_length(var11, var12);
9675 var10 = var13;
9676 varonce9 = var10;
9677 }
9678 if (varonce14) {
9679 var15 = varonce14;
9680 } else {
9681 var16 = " /* : ";
9682 var17 = 6;
9683 var18 = string__NativeString__to_s_with_length(var16, var17);
9684 var15 = var18;
9685 varonce14 = var15;
9686 }
9687 if (varonce19) {
9688 var20 = varonce19;
9689 } else {
9690 var21 = " */;";
9691 var22 = 4;
9692 var23 = string__NativeString__to_s_with_length(var21, var22);
9693 var20 = var23;
9694 varonce19 = var20;
9695 }
9696 var24 = NEW_array__Array(&type_array__Arraykernel__Object);
9697 { /* var24 = array_instance Array[Object] */
9698 var25 = 6;
9699 var26 = NEW_array__NativeArray(var25, &type_array__NativeArraykernel__Object);
9700 ((struct instance_array__NativeArray*)var26)->values[0] = (val*) var8;
9701 ((struct instance_array__NativeArray*)var26)->values[1] = (val*) var10;
9702 ((struct instance_array__NativeArray*)var26)->values[2] = (val*) var_name;
9703 ((struct instance_array__NativeArray*)var26)->values[3] = (val*) var15;
9704 ((struct instance_array__NativeArray*)var26)->values[4] = (val*) var_mtype;
9705 ((struct instance_array__NativeArray*)var26)->values[5] = (val*) var20;
9706 ((void (*)(val*, val*, long))(var24->class->vft[COLOR_array__Array__with_native]))(var24, var26, var25) /* with_native on <var24:Array[Object]>*/;
9707 }
9708 var27 = ((val* (*)(val*))(var24->class->vft[COLOR_string__Object__to_s]))(var24) /* to_s on <var24:Array[Object]>*/;
9709 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var27) /* add_decl on <self:AbstractCompilerVisitor>*/;
9710 var = var_res;
9711 goto RET_LABEL;
9712 RET_LABEL:;
9713 return var;
9714 }
9715 /* method abstract_compiler#AbstractCompilerVisitor#new_var for (self: Object, MType): RuntimeVariable */
9716 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__new_var(val* self, val* p0) {
9717 val* var /* : RuntimeVariable */;
9718 val* var1 /* : RuntimeVariable */;
9719 var1 = abstract_compiler__AbstractCompilerVisitor__new_var(self, p0);
9720 var = var1;
9721 RET_LABEL:;
9722 return var;
9723 }
9724 /* method abstract_compiler#AbstractCompilerVisitor#new_named_var for (self: AbstractCompilerVisitor, MType, String): RuntimeVariable */
9725 val* abstract_compiler__AbstractCompilerVisitor__new_named_var(val* self, val* p0, val* p1) {
9726 val* var /* : RuntimeVariable */;
9727 val* var_mtype /* var mtype: MType */;
9728 val* var_name /* var name: String */;
9729 val* var1 /* : MType */;
9730 val* var2 /* : RuntimeVariable */;
9731 val* var_res /* var res: RuntimeVariable */;
9732 val* var3 /* : String */;
9733 static val* varonce;
9734 val* var4 /* : String */;
9735 char* var5 /* : NativeString */;
9736 long var6 /* : Int */;
9737 val* var7 /* : String */;
9738 static val* varonce8;
9739 val* var9 /* : String */;
9740 char* var10 /* : NativeString */;
9741 long var11 /* : Int */;
9742 val* var12 /* : String */;
9743 static val* varonce13;
9744 val* var14 /* : String */;
9745 char* var15 /* : NativeString */;
9746 long var16 /* : Int */;
9747 val* var17 /* : String */;
9748 val* var18 /* : Array[Object] */;
9749 long var19 /* : Int */;
9750 val* var20 /* : NativeArray[Object] */;
9751 val* var21 /* : String */;
9752 var_mtype = p0;
9753 var_name = p1;
9754 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__anchor]))(self, var_mtype) /* anchor on <self:AbstractCompilerVisitor>*/;
9755 var_mtype = var1;
9756 var2 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
9757 ((void (*)(val*, val*, val*, val*))(var2->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var2, var_name, var_mtype, var_mtype) /* init on <var2:RuntimeVariable>*/;
9758 var_res = var2;
9759 var3 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
9760 if (varonce) {
9761 var4 = varonce;
9762 } else {
9763 var5 = " ";
9764 var6 = 1;
9765 var7 = string__NativeString__to_s_with_length(var5, var6);
9766 var4 = var7;
9767 varonce = var4;
9768 }
9769 if (varonce8) {
9770 var9 = varonce8;
9771 } else {
9772 var10 = " /* : ";
9773 var11 = 6;
9774 var12 = string__NativeString__to_s_with_length(var10, var11);
9775 var9 = var12;
9776 varonce8 = var9;
9777 }
9778 if (varonce13) {
9779 var14 = varonce13;
9780 } else {
9781 var15 = " */;";
9782 var16 = 4;
9783 var17 = string__NativeString__to_s_with_length(var15, var16);
9784 var14 = var17;
9785 varonce13 = var14;
9786 }
9787 var18 = NEW_array__Array(&type_array__Arraykernel__Object);
9788 { /* var18 = array_instance Array[Object] */
9789 var19 = 6;
9790 var20 = NEW_array__NativeArray(var19, &type_array__NativeArraykernel__Object);
9791 ((struct instance_array__NativeArray*)var20)->values[0] = (val*) var3;
9792 ((struct instance_array__NativeArray*)var20)->values[1] = (val*) var4;
9793 ((struct instance_array__NativeArray*)var20)->values[2] = (val*) var_name;
9794 ((struct instance_array__NativeArray*)var20)->values[3] = (val*) var9;
9795 ((struct instance_array__NativeArray*)var20)->values[4] = (val*) var_mtype;
9796 ((struct instance_array__NativeArray*)var20)->values[5] = (val*) var14;
9797 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_array__Array__with_native]))(var18, var20, var19) /* with_native on <var18:Array[Object]>*/;
9798 }
9799 var21 = ((val* (*)(val*))(var18->class->vft[COLOR_string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
9800 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var21) /* add_decl on <self:AbstractCompilerVisitor>*/;
9801 var = var_res;
9802 goto RET_LABEL;
9803 RET_LABEL:;
9804 return var;
9805 }
9806 /* method abstract_compiler#AbstractCompilerVisitor#new_named_var for (self: Object, MType, String): RuntimeVariable */
9807 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__new_named_var(val* self, val* p0, val* p1) {
9808 val* var /* : RuntimeVariable */;
9809 val* var1 /* : RuntimeVariable */;
9810 var1 = abstract_compiler__AbstractCompilerVisitor__new_named_var(self, p0, p1);
9811 var = var1;
9812 RET_LABEL:;
9813 return var;
9814 }
9815 /* method abstract_compiler#AbstractCompilerVisitor#assign for (self: AbstractCompilerVisitor, RuntimeVariable, RuntimeVariable) */
9816 void abstract_compiler__AbstractCompilerVisitor__assign(val* self, val* p0, val* p1) {
9817 val* var_left /* var left: RuntimeVariable */;
9818 val* var_right /* var right: RuntimeVariable */;
9819 val* var /* : MType */;
9820 val* var1 /* : RuntimeVariable */;
9821 static val* varonce;
9822 val* var2 /* : String */;
9823 char* var3 /* : NativeString */;
9824 long var4 /* : Int */;
9825 val* var5 /* : String */;
9826 static val* varonce6;
9827 val* var7 /* : String */;
9828 char* var8 /* : NativeString */;
9829 long var9 /* : Int */;
9830 val* var10 /* : String */;
9831 val* var11 /* : Array[Object] */;
9832 long var12 /* : Int */;
9833 val* var13 /* : NativeArray[Object] */;
9834 val* var14 /* : String */;
9835 var_left = p0;
9836 var_right = p1;
9837 var = ((val* (*)(val*))(var_left->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_left) /* mtype on <var_left:RuntimeVariable>*/;
9838 var1 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var_right, var) /* autobox on <self:AbstractCompilerVisitor>*/;
9839 var_right = var1;
9840 if (varonce) {
9841 var2 = varonce;
9842 } else {
9843 var3 = " = ";
9844 var4 = 3;
9845 var5 = string__NativeString__to_s_with_length(var3, var4);
9846 var2 = var5;
9847 varonce = var2;
9848 }
9849 if (varonce6) {
9850 var7 = varonce6;
9851 } else {
9852 var8 = ";";
9853 var9 = 1;
9854 var10 = string__NativeString__to_s_with_length(var8, var9);
9855 var7 = var10;
9856 varonce6 = var7;
9857 }
9858 var11 = NEW_array__Array(&type_array__Arraykernel__Object);
9859 { /* var11 = array_instance Array[Object] */
9860 var12 = 4;
9861 var13 = NEW_array__NativeArray(var12, &type_array__NativeArraykernel__Object);
9862 ((struct instance_array__NativeArray*)var13)->values[0] = (val*) var_left;
9863 ((struct instance_array__NativeArray*)var13)->values[1] = (val*) var2;
9864 ((struct instance_array__NativeArray*)var13)->values[2] = (val*) var_right;
9865 ((struct instance_array__NativeArray*)var13)->values[3] = (val*) var7;
9866 ((void (*)(val*, val*, long))(var11->class->vft[COLOR_array__Array__with_native]))(var11, var13, var12) /* with_native on <var11:Array[Object]>*/;
9867 }
9868 var14 = ((val* (*)(val*))(var11->class->vft[COLOR_string__Object__to_s]))(var11) /* to_s on <var11:Array[Object]>*/;
9869 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var14) /* add on <self:AbstractCompilerVisitor>*/;
9870 RET_LABEL:;
9871 }
9872 /* method abstract_compiler#AbstractCompilerVisitor#assign for (self: Object, RuntimeVariable, RuntimeVariable) */
9873 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__assign(val* self, val* p0, val* p1) {
9874 abstract_compiler__AbstractCompilerVisitor__assign(self, p0, p1);
9875 RET_LABEL:;
9876 }
9877 /* method abstract_compiler#AbstractCompilerVisitor#init_instance for (self: AbstractCompilerVisitor, MClassType): RuntimeVariable */
9878 val* abstract_compiler__AbstractCompilerVisitor__init_instance(val* self, val* p0) {
9879 val* var /* : RuntimeVariable */;
9880 const char* var_class_name;
9881 var_class_name = self == NULL ? "null" : self->type->name;
9882 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "init_instance", var_class_name);
9883 fprintf(stderr, " (%s:%d)\n", "src/abstract_compiler.nit", 912);
9884 show_backtrace(1);
9885 RET_LABEL:;
9886 return var;
9887 }
9888 /* method abstract_compiler#AbstractCompilerVisitor#init_instance for (self: Object, MClassType): RuntimeVariable */
9889 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__init_instance(val* self, val* p0) {
9890 val* var /* : RuntimeVariable */;
9891 val* var1 /* : RuntimeVariable */;
9892 var1 = abstract_compiler__AbstractCompilerVisitor__init_instance(self, p0);
9893 var = var1;
9894 RET_LABEL:;
9895 return var;
9896 }
9897 /* method abstract_compiler#AbstractCompilerVisitor#int_instance for (self: AbstractCompilerVisitor, Int): RuntimeVariable */
9898 val* abstract_compiler__AbstractCompilerVisitor__int_instance(val* self, long p0) {
9899 val* var /* : RuntimeVariable */;
9900 long var_value /* var value: Int */;
9901 static val* varonce;
9902 val* var1 /* : String */;
9903 char* var2 /* : NativeString */;
9904 long var3 /* : Int */;
9905 val* var4 /* : String */;
9906 val* var5 /* : MClass */;
9907 val* var6 /* : MClassType */;
9908 val* var7 /* : RuntimeVariable */;
9909 val* var_res /* var res: RuntimeVariable */;
9910 static val* varonce8;
9911 val* var9 /* : String */;
9912 char* var10 /* : NativeString */;
9913 long var11 /* : Int */;
9914 val* var12 /* : String */;
9915 static val* varonce13;
9916 val* var14 /* : String */;
9917 char* var15 /* : NativeString */;
9918 long var16 /* : Int */;
9919 val* var17 /* : String */;
9920 val* var18 /* : Array[Object] */;
9921 long var19 /* : Int */;
9922 val* var20 /* : NativeArray[Object] */;
9923 val* var21 /* : Object */;
9924 val* var22 /* : String */;
9925 var_value = p0;
9926 if (varonce) {
9927 var1 = varonce;
9928 } else {
9929 var2 = "Int";
9930 var3 = 3;
9931 var4 = string__NativeString__to_s_with_length(var2, var3);
9932 var1 = var4;
9933 varonce = var1;
9934 }
9935 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var1) /* get_class on <self:AbstractCompilerVisitor>*/;
9936 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClass__mclass_type]))(var5) /* mclass_type on <var5:MClass>*/;
9937 var7 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var6) /* new_var on <self:AbstractCompilerVisitor>*/;
9938 var_res = var7;
9939 if (varonce8) {
9940 var9 = varonce8;
9941 } else {
9942 var10 = " = ";
9943 var11 = 3;
9944 var12 = string__NativeString__to_s_with_length(var10, var11);
9945 var9 = var12;
9946 varonce8 = var9;
9947 }
9948 if (varonce13) {
9949 var14 = varonce13;
9950 } else {
9951 var15 = ";";
9952 var16 = 1;
9953 var17 = string__NativeString__to_s_with_length(var15, var16);
9954 var14 = var17;
9955 varonce13 = var14;
9956 }
9957 var18 = NEW_array__Array(&type_array__Arraykernel__Object);
9958 { /* var18 = array_instance Array[Object] */
9959 var19 = 4;
9960 var20 = NEW_array__NativeArray(var19, &type_array__NativeArraykernel__Object);
9961 ((struct instance_array__NativeArray*)var20)->values[0] = (val*) var_res;
9962 ((struct instance_array__NativeArray*)var20)->values[1] = (val*) var9;
9963 var21 = BOX_kernel__Int(var_value); /* autobox from Int to Object */
9964 ((struct instance_array__NativeArray*)var20)->values[2] = (val*) var21;
9965 ((struct instance_array__NativeArray*)var20)->values[3] = (val*) var14;
9966 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_array__Array__with_native]))(var18, var20, var19) /* with_native on <var18:Array[Object]>*/;
9967 }
9968 var22 = ((val* (*)(val*))(var18->class->vft[COLOR_string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
9969 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var22) /* add on <self:AbstractCompilerVisitor>*/;
9970 var = var_res;
9971 goto RET_LABEL;
9972 RET_LABEL:;
9973 return var;
9974 }
9975 /* method abstract_compiler#AbstractCompilerVisitor#int_instance for (self: Object, Int): RuntimeVariable */
9976 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__int_instance(val* self, long p0) {
9977 val* var /* : RuntimeVariable */;
9978 val* var1 /* : RuntimeVariable */;
9979 var1 = abstract_compiler__AbstractCompilerVisitor__int_instance(self, p0);
9980 var = var1;
9981 RET_LABEL:;
9982 return var;
9983 }