7b12811d5d73b3b1adfe1e7f7f2b6ee0c94a0690
[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 (%s:%d)\n", "Uninitialized attribute @opt_output", "src/abstract_compiler.nit", 27);
9 exit(1);
10 }
11 var = var1;
12 RET_LABEL:;
13 return var;
14 }
15 /* method abstract_compiler#ToolContext#opt_output for (self: Object): OptionString */
16 val* VIRTUAL_abstract_compiler__ToolContext__opt_output(val* self) {
17 val* var /* : OptionString */;
18 val* var1 /* : OptionString */;
19 var1 = abstract_compiler__ToolContext__opt_output(self);
20 var = var1;
21 RET_LABEL:;
22 return var;
23 }
24 /* method abstract_compiler#ToolContext#opt_output= for (self: ToolContext, OptionString) */
25 void abstract_compiler__ToolContext__opt_output_61d(val* self, val* p0) {
26 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_output].val = p0; /* @opt_output on <self:ToolContext> */
27 RET_LABEL:;
28 }
29 /* method abstract_compiler#ToolContext#opt_output= for (self: Object, OptionString) */
30 void VIRTUAL_abstract_compiler__ToolContext__opt_output_61d(val* self, val* p0) {
31 abstract_compiler__ToolContext__opt_output_61d(self, p0);
32 RET_LABEL:;
33 }
34 /* method abstract_compiler#ToolContext#opt_no_cc for (self: ToolContext): OptionBool */
35 val* abstract_compiler__ToolContext__opt_no_cc(val* self) {
36 val* var /* : OptionBool */;
37 val* var1 /* : OptionBool */;
38 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_cc].val; /* @opt_no_cc on <self:ToolContext> */
39 if (var1 == NULL) {
40 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @opt_no_cc", "src/abstract_compiler.nit", 29);
41 exit(1);
42 }
43 var = var1;
44 RET_LABEL:;
45 return var;
46 }
47 /* method abstract_compiler#ToolContext#opt_no_cc for (self: Object): OptionBool */
48 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_cc(val* self) {
49 val* var /* : OptionBool */;
50 val* var1 /* : OptionBool */;
51 var1 = abstract_compiler__ToolContext__opt_no_cc(self);
52 var = var1;
53 RET_LABEL:;
54 return var;
55 }
56 /* method abstract_compiler#ToolContext#opt_no_cc= for (self: ToolContext, OptionBool) */
57 void abstract_compiler__ToolContext__opt_no_cc_61d(val* self, val* p0) {
58 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_cc].val = p0; /* @opt_no_cc on <self:ToolContext> */
59 RET_LABEL:;
60 }
61 /* method abstract_compiler#ToolContext#opt_no_cc= for (self: Object, OptionBool) */
62 void VIRTUAL_abstract_compiler__ToolContext__opt_no_cc_61d(val* self, val* p0) {
63 abstract_compiler__ToolContext__opt_no_cc_61d(self, p0);
64 RET_LABEL:;
65 }
66 /* method abstract_compiler#ToolContext#opt_cc_path for (self: ToolContext): OptionArray */
67 val* abstract_compiler__ToolContext__opt_cc_path(val* self) {
68 val* var /* : OptionArray */;
69 val* var1 /* : OptionArray */;
70 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_cc_path].val; /* @opt_cc_path on <self:ToolContext> */
71 if (var1 == NULL) {
72 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @opt_cc_path", "src/abstract_compiler.nit", 31);
73 exit(1);
74 }
75 var = var1;
76 RET_LABEL:;
77 return var;
78 }
79 /* method abstract_compiler#ToolContext#opt_cc_path for (self: Object): OptionArray */
80 val* VIRTUAL_abstract_compiler__ToolContext__opt_cc_path(val* self) {
81 val* var /* : OptionArray */;
82 val* var1 /* : OptionArray */;
83 var1 = abstract_compiler__ToolContext__opt_cc_path(self);
84 var = var1;
85 RET_LABEL:;
86 return var;
87 }
88 /* method abstract_compiler#ToolContext#opt_cc_path= for (self: ToolContext, OptionArray) */
89 void abstract_compiler__ToolContext__opt_cc_path_61d(val* self, val* p0) {
90 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_cc_path].val = p0; /* @opt_cc_path on <self:ToolContext> */
91 RET_LABEL:;
92 }
93 /* method abstract_compiler#ToolContext#opt_cc_path= for (self: Object, OptionArray) */
94 void VIRTUAL_abstract_compiler__ToolContext__opt_cc_path_61d(val* self, val* p0) {
95 abstract_compiler__ToolContext__opt_cc_path_61d(self, p0);
96 RET_LABEL:;
97 }
98 /* method abstract_compiler#ToolContext#opt_make_flags for (self: ToolContext): OptionString */
99 val* abstract_compiler__ToolContext__opt_make_flags(val* self) {
100 val* var /* : OptionString */;
101 val* var1 /* : OptionString */;
102 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_make_flags].val; /* @opt_make_flags on <self:ToolContext> */
103 if (var1 == NULL) {
104 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @opt_make_flags", "src/abstract_compiler.nit", 33);
105 exit(1);
106 }
107 var = var1;
108 RET_LABEL:;
109 return var;
110 }
111 /* method abstract_compiler#ToolContext#opt_make_flags for (self: Object): OptionString */
112 val* VIRTUAL_abstract_compiler__ToolContext__opt_make_flags(val* self) {
113 val* var /* : OptionString */;
114 val* var1 /* : OptionString */;
115 var1 = abstract_compiler__ToolContext__opt_make_flags(self);
116 var = var1;
117 RET_LABEL:;
118 return var;
119 }
120 /* method abstract_compiler#ToolContext#opt_make_flags= for (self: ToolContext, OptionString) */
121 void abstract_compiler__ToolContext__opt_make_flags_61d(val* self, val* p0) {
122 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_make_flags].val = p0; /* @opt_make_flags on <self:ToolContext> */
123 RET_LABEL:;
124 }
125 /* method abstract_compiler#ToolContext#opt_make_flags= for (self: Object, OptionString) */
126 void VIRTUAL_abstract_compiler__ToolContext__opt_make_flags_61d(val* self, val* p0) {
127 abstract_compiler__ToolContext__opt_make_flags_61d(self, p0);
128 RET_LABEL:;
129 }
130 /* method abstract_compiler#ToolContext#opt_compile_dir for (self: ToolContext): OptionString */
131 val* abstract_compiler__ToolContext__opt_compile_dir(val* self) {
132 val* var /* : OptionString */;
133 val* var1 /* : OptionString */;
134 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_compile_dir].val; /* @opt_compile_dir on <self:ToolContext> */
135 if (var1 == NULL) {
136 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @opt_compile_dir", "src/abstract_compiler.nit", 35);
137 exit(1);
138 }
139 var = var1;
140 RET_LABEL:;
141 return var;
142 }
143 /* method abstract_compiler#ToolContext#opt_compile_dir for (self: Object): OptionString */
144 val* VIRTUAL_abstract_compiler__ToolContext__opt_compile_dir(val* self) {
145 val* var /* : OptionString */;
146 val* var1 /* : OptionString */;
147 var1 = abstract_compiler__ToolContext__opt_compile_dir(self);
148 var = var1;
149 RET_LABEL:;
150 return var;
151 }
152 /* method abstract_compiler#ToolContext#opt_compile_dir= for (self: ToolContext, OptionString) */
153 void abstract_compiler__ToolContext__opt_compile_dir_61d(val* self, val* p0) {
154 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_compile_dir].val = p0; /* @opt_compile_dir on <self:ToolContext> */
155 RET_LABEL:;
156 }
157 /* method abstract_compiler#ToolContext#opt_compile_dir= for (self: Object, OptionString) */
158 void VIRTUAL_abstract_compiler__ToolContext__opt_compile_dir_61d(val* self, val* p0) {
159 abstract_compiler__ToolContext__opt_compile_dir_61d(self, p0);
160 RET_LABEL:;
161 }
162 /* method abstract_compiler#ToolContext#opt_hardening for (self: ToolContext): OptionBool */
163 val* abstract_compiler__ToolContext__opt_hardening(val* self) {
164 val* var /* : OptionBool */;
165 val* var1 /* : OptionBool */;
166 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_hardening].val; /* @opt_hardening on <self:ToolContext> */
167 if (var1 == NULL) {
168 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @opt_hardening", "src/abstract_compiler.nit", 37);
169 exit(1);
170 }
171 var = var1;
172 RET_LABEL:;
173 return var;
174 }
175 /* method abstract_compiler#ToolContext#opt_hardening for (self: Object): OptionBool */
176 val* VIRTUAL_abstract_compiler__ToolContext__opt_hardening(val* self) {
177 val* var /* : OptionBool */;
178 val* var1 /* : OptionBool */;
179 var1 = abstract_compiler__ToolContext__opt_hardening(self);
180 var = var1;
181 RET_LABEL:;
182 return var;
183 }
184 /* method abstract_compiler#ToolContext#opt_hardening= for (self: ToolContext, OptionBool) */
185 void abstract_compiler__ToolContext__opt_hardening_61d(val* self, val* p0) {
186 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_hardening].val = p0; /* @opt_hardening on <self:ToolContext> */
187 RET_LABEL:;
188 }
189 /* method abstract_compiler#ToolContext#opt_hardening= for (self: Object, OptionBool) */
190 void VIRTUAL_abstract_compiler__ToolContext__opt_hardening_61d(val* self, val* p0) {
191 abstract_compiler__ToolContext__opt_hardening_61d(self, p0);
192 RET_LABEL:;
193 }
194 /* method abstract_compiler#ToolContext#opt_no_shortcut_range for (self: ToolContext): OptionBool */
195 val* abstract_compiler__ToolContext__opt_no_shortcut_range(val* self) {
196 val* var /* : OptionBool */;
197 val* var1 /* : OptionBool */;
198 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_shortcut_range].val; /* @opt_no_shortcut_range on <self:ToolContext> */
199 if (var1 == NULL) {
200 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @opt_no_shortcut_range", "src/abstract_compiler.nit", 39);
201 exit(1);
202 }
203 var = var1;
204 RET_LABEL:;
205 return var;
206 }
207 /* method abstract_compiler#ToolContext#opt_no_shortcut_range for (self: Object): OptionBool */
208 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_shortcut_range(val* self) {
209 val* var /* : OptionBool */;
210 val* var1 /* : OptionBool */;
211 var1 = abstract_compiler__ToolContext__opt_no_shortcut_range(self);
212 var = var1;
213 RET_LABEL:;
214 return var;
215 }
216 /* method abstract_compiler#ToolContext#opt_no_shortcut_range= for (self: ToolContext, OptionBool) */
217 void abstract_compiler__ToolContext__opt_no_shortcut_range_61d(val* self, val* p0) {
218 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_shortcut_range].val = p0; /* @opt_no_shortcut_range on <self:ToolContext> */
219 RET_LABEL:;
220 }
221 /* method abstract_compiler#ToolContext#opt_no_shortcut_range= for (self: Object, OptionBool) */
222 void VIRTUAL_abstract_compiler__ToolContext__opt_no_shortcut_range_61d(val* self, val* p0) {
223 abstract_compiler__ToolContext__opt_no_shortcut_range_61d(self, p0);
224 RET_LABEL:;
225 }
226 /* method abstract_compiler#ToolContext#opt_no_check_covariance for (self: ToolContext): OptionBool */
227 val* abstract_compiler__ToolContext__opt_no_check_covariance(val* self) {
228 val* var /* : OptionBool */;
229 val* var1 /* : OptionBool */;
230 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_check_covariance].val; /* @opt_no_check_covariance on <self:ToolContext> */
231 if (var1 == NULL) {
232 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @opt_no_check_covariance", "src/abstract_compiler.nit", 41);
233 exit(1);
234 }
235 var = var1;
236 RET_LABEL:;
237 return var;
238 }
239 /* method abstract_compiler#ToolContext#opt_no_check_covariance for (self: Object): OptionBool */
240 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_check_covariance(val* self) {
241 val* var /* : OptionBool */;
242 val* var1 /* : OptionBool */;
243 var1 = abstract_compiler__ToolContext__opt_no_check_covariance(self);
244 var = var1;
245 RET_LABEL:;
246 return var;
247 }
248 /* method abstract_compiler#ToolContext#opt_no_check_covariance= for (self: ToolContext, OptionBool) */
249 void abstract_compiler__ToolContext__opt_no_check_covariance_61d(val* self, val* p0) {
250 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_check_covariance].val = p0; /* @opt_no_check_covariance on <self:ToolContext> */
251 RET_LABEL:;
252 }
253 /* method abstract_compiler#ToolContext#opt_no_check_covariance= for (self: Object, OptionBool) */
254 void VIRTUAL_abstract_compiler__ToolContext__opt_no_check_covariance_61d(val* self, val* p0) {
255 abstract_compiler__ToolContext__opt_no_check_covariance_61d(self, p0);
256 RET_LABEL:;
257 }
258 /* method abstract_compiler#ToolContext#opt_no_check_initialization for (self: ToolContext): OptionBool */
259 val* abstract_compiler__ToolContext__opt_no_check_initialization(val* self) {
260 val* var /* : OptionBool */;
261 val* var1 /* : OptionBool */;
262 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_check_initialization].val; /* @opt_no_check_initialization on <self:ToolContext> */
263 if (var1 == NULL) {
264 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @opt_no_check_initialization", "src/abstract_compiler.nit", 43);
265 exit(1);
266 }
267 var = var1;
268 RET_LABEL:;
269 return var;
270 }
271 /* method abstract_compiler#ToolContext#opt_no_check_initialization for (self: Object): OptionBool */
272 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_check_initialization(val* self) {
273 val* var /* : OptionBool */;
274 val* var1 /* : OptionBool */;
275 var1 = abstract_compiler__ToolContext__opt_no_check_initialization(self);
276 var = var1;
277 RET_LABEL:;
278 return var;
279 }
280 /* method abstract_compiler#ToolContext#opt_no_check_initialization= for (self: ToolContext, OptionBool) */
281 void abstract_compiler__ToolContext__opt_no_check_initialization_61d(val* self, val* p0) {
282 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_check_initialization].val = p0; /* @opt_no_check_initialization on <self:ToolContext> */
283 RET_LABEL:;
284 }
285 /* method abstract_compiler#ToolContext#opt_no_check_initialization= for (self: Object, OptionBool) */
286 void VIRTUAL_abstract_compiler__ToolContext__opt_no_check_initialization_61d(val* self, val* p0) {
287 abstract_compiler__ToolContext__opt_no_check_initialization_61d(self, p0);
288 RET_LABEL:;
289 }
290 /* method abstract_compiler#ToolContext#opt_no_check_assert for (self: ToolContext): OptionBool */
291 val* abstract_compiler__ToolContext__opt_no_check_assert(val* self) {
292 val* var /* : OptionBool */;
293 val* var1 /* : OptionBool */;
294 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_check_assert].val; /* @opt_no_check_assert on <self:ToolContext> */
295 if (var1 == NULL) {
296 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @opt_no_check_assert", "src/abstract_compiler.nit", 45);
297 exit(1);
298 }
299 var = var1;
300 RET_LABEL:;
301 return var;
302 }
303 /* method abstract_compiler#ToolContext#opt_no_check_assert for (self: Object): OptionBool */
304 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_check_assert(val* self) {
305 val* var /* : OptionBool */;
306 val* var1 /* : OptionBool */;
307 var1 = abstract_compiler__ToolContext__opt_no_check_assert(self);
308 var = var1;
309 RET_LABEL:;
310 return var;
311 }
312 /* method abstract_compiler#ToolContext#opt_no_check_assert= for (self: ToolContext, OptionBool) */
313 void abstract_compiler__ToolContext__opt_no_check_assert_61d(val* self, val* p0) {
314 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_check_assert].val = p0; /* @opt_no_check_assert on <self:ToolContext> */
315 RET_LABEL:;
316 }
317 /* method abstract_compiler#ToolContext#opt_no_check_assert= for (self: Object, OptionBool) */
318 void VIRTUAL_abstract_compiler__ToolContext__opt_no_check_assert_61d(val* self, val* p0) {
319 abstract_compiler__ToolContext__opt_no_check_assert_61d(self, p0);
320 RET_LABEL:;
321 }
322 /* method abstract_compiler#ToolContext#opt_no_check_autocast for (self: ToolContext): OptionBool */
323 val* abstract_compiler__ToolContext__opt_no_check_autocast(val* self) {
324 val* var /* : OptionBool */;
325 val* var1 /* : OptionBool */;
326 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_check_autocast].val; /* @opt_no_check_autocast on <self:ToolContext> */
327 if (var1 == NULL) {
328 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @opt_no_check_autocast", "src/abstract_compiler.nit", 47);
329 exit(1);
330 }
331 var = var1;
332 RET_LABEL:;
333 return var;
334 }
335 /* method abstract_compiler#ToolContext#opt_no_check_autocast for (self: Object): OptionBool */
336 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_check_autocast(val* self) {
337 val* var /* : OptionBool */;
338 val* var1 /* : OptionBool */;
339 var1 = abstract_compiler__ToolContext__opt_no_check_autocast(self);
340 var = var1;
341 RET_LABEL:;
342 return var;
343 }
344 /* method abstract_compiler#ToolContext#opt_no_check_autocast= for (self: ToolContext, OptionBool) */
345 void abstract_compiler__ToolContext__opt_no_check_autocast_61d(val* self, val* p0) {
346 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_check_autocast].val = p0; /* @opt_no_check_autocast on <self:ToolContext> */
347 RET_LABEL:;
348 }
349 /* method abstract_compiler#ToolContext#opt_no_check_autocast= for (self: Object, OptionBool) */
350 void VIRTUAL_abstract_compiler__ToolContext__opt_no_check_autocast_61d(val* self, val* p0) {
351 abstract_compiler__ToolContext__opt_no_check_autocast_61d(self, p0);
352 RET_LABEL:;
353 }
354 /* method abstract_compiler#ToolContext#opt_no_check_other for (self: ToolContext): OptionBool */
355 val* abstract_compiler__ToolContext__opt_no_check_other(val* self) {
356 val* var /* : OptionBool */;
357 val* var1 /* : OptionBool */;
358 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_check_other].val; /* @opt_no_check_other on <self:ToolContext> */
359 if (var1 == NULL) {
360 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @opt_no_check_other", "src/abstract_compiler.nit", 49);
361 exit(1);
362 }
363 var = var1;
364 RET_LABEL:;
365 return var;
366 }
367 /* method abstract_compiler#ToolContext#opt_no_check_other for (self: Object): OptionBool */
368 val* VIRTUAL_abstract_compiler__ToolContext__opt_no_check_other(val* self) {
369 val* var /* : OptionBool */;
370 val* var1 /* : OptionBool */;
371 var1 = abstract_compiler__ToolContext__opt_no_check_other(self);
372 var = var1;
373 RET_LABEL:;
374 return var;
375 }
376 /* method abstract_compiler#ToolContext#opt_no_check_other= for (self: ToolContext, OptionBool) */
377 void abstract_compiler__ToolContext__opt_no_check_other_61d(val* self, val* p0) {
378 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_no_check_other].val = p0; /* @opt_no_check_other on <self:ToolContext> */
379 RET_LABEL:;
380 }
381 /* method abstract_compiler#ToolContext#opt_no_check_other= for (self: Object, OptionBool) */
382 void VIRTUAL_abstract_compiler__ToolContext__opt_no_check_other_61d(val* self, val* p0) {
383 abstract_compiler__ToolContext__opt_no_check_other_61d(self, p0);
384 RET_LABEL:;
385 }
386 /* method abstract_compiler#ToolContext#opt_typing_test_metrics for (self: ToolContext): OptionBool */
387 val* abstract_compiler__ToolContext__opt_typing_test_metrics(val* self) {
388 val* var /* : OptionBool */;
389 val* var1 /* : OptionBool */;
390 var1 = self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_typing_test_metrics].val; /* @opt_typing_test_metrics on <self:ToolContext> */
391 if (var1 == NULL) {
392 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @opt_typing_test_metrics", "src/abstract_compiler.nit", 51);
393 exit(1);
394 }
395 var = var1;
396 RET_LABEL:;
397 return var;
398 }
399 /* method abstract_compiler#ToolContext#opt_typing_test_metrics for (self: Object): OptionBool */
400 val* VIRTUAL_abstract_compiler__ToolContext__opt_typing_test_metrics(val* self) {
401 val* var /* : OptionBool */;
402 val* var1 /* : OptionBool */;
403 var1 = abstract_compiler__ToolContext__opt_typing_test_metrics(self);
404 var = var1;
405 RET_LABEL:;
406 return var;
407 }
408 /* method abstract_compiler#ToolContext#opt_typing_test_metrics= for (self: ToolContext, OptionBool) */
409 void abstract_compiler__ToolContext__opt_typing_test_metrics_61d(val* self, val* p0) {
410 self->attrs[COLOR_abstract_compiler__ToolContext___64dopt_typing_test_metrics].val = p0; /* @opt_typing_test_metrics on <self:ToolContext> */
411 RET_LABEL:;
412 }
413 /* method abstract_compiler#ToolContext#opt_typing_test_metrics= for (self: Object, OptionBool) */
414 void VIRTUAL_abstract_compiler__ToolContext__opt_typing_test_metrics_61d(val* self, val* p0) {
415 abstract_compiler__ToolContext__opt_typing_test_metrics_61d(self, p0);
416 RET_LABEL:;
417 }
418 /* method abstract_compiler#ToolContext#init for (self: ToolContext) */
419 void abstract_compiler__ToolContext__init(val* self) {
420 val* var /* : OptionContext */;
421 val* var1 /* : OptionString */;
422 val* var2 /* : OptionBool */;
423 val* var3 /* : OptionString */;
424 val* var4 /* : OptionString */;
425 val* var5 /* : OptionBool */;
426 val* var6 /* : OptionBool */;
427 val* var7 /* : Array[Option] */;
428 long var8 /* : Int */;
429 val* var9 /* : NativeArray[Option] */;
430 val* var10 /* : OptionContext */;
431 val* var11 /* : OptionBool */;
432 val* var12 /* : OptionBool */;
433 val* var13 /* : OptionBool */;
434 val* var14 /* : OptionBool */;
435 val* var15 /* : OptionBool */;
436 val* var16 /* : Array[Option] */;
437 long var17 /* : Int */;
438 val* var18 /* : NativeArray[Option] */;
439 val* var19 /* : OptionContext */;
440 val* var20 /* : OptionBool */;
441 val* var21 /* : Array[Option] */;
442 long var22 /* : Int */;
443 val* var23 /* : NativeArray[Option] */;
444 ((void (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__init]))(self) /* init on <self:ToolContext>*/;
445 var = ((val* (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__option_context]))(self) /* option_context on <self:ToolContext>*/;
446 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_output]))(self) /* opt_output on <self:ToolContext>*/;
447 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_cc]))(self) /* opt_no_cc on <self:ToolContext>*/;
448 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_make_flags]))(self) /* opt_make_flags on <self:ToolContext>*/;
449 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_compile_dir]))(self) /* opt_compile_dir on <self:ToolContext>*/;
450 var5 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_hardening]))(self) /* opt_hardening on <self:ToolContext>*/;
451 var6 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_shortcut_range]))(self) /* opt_no_shortcut_range on <self:ToolContext>*/;
452 var7 = NEW_array__Array(&type_array__Arrayopts__Option);
453 { /* var7 = array_instance Array[Option] */
454 var8 = 6;
455 var9 = NEW_array__NativeArray(var8, &type_array__NativeArrayopts__Option);
456 ((struct instance_array__NativeArray*)var9)->values[0] = (val*) var1;
457 ((struct instance_array__NativeArray*)var9)->values[1] = (val*) var2;
458 ((struct instance_array__NativeArray*)var9)->values[2] = (val*) var3;
459 ((struct instance_array__NativeArray*)var9)->values[3] = (val*) var4;
460 ((struct instance_array__NativeArray*)var9)->values[4] = (val*) var5;
461 ((struct instance_array__NativeArray*)var9)->values[5] = (val*) var6;
462 ((void (*)(val*, val*, long))(var7->class->vft[COLOR_array__Array__with_native]))(var7, var9, var8) /* with_native on <var7:Array[Option]>*/;
463 CHECK_NEW_array__Array(var7);
464 }
465 ((void (*)(val*, val*))(var->class->vft[COLOR_opts__OptionContext__add_option]))(var, var7) /* add_option on <var:OptionContext>*/;
466 var10 = ((val* (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__option_context]))(self) /* option_context on <self:ToolContext>*/;
467 var11 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_covariance]))(self) /* opt_no_check_covariance on <self:ToolContext>*/;
468 var12 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_initialization]))(self) /* opt_no_check_initialization on <self:ToolContext>*/;
469 var13 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_assert]))(self) /* opt_no_check_assert on <self:ToolContext>*/;
470 var14 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_autocast]))(self) /* opt_no_check_autocast on <self:ToolContext>*/;
471 var15 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_other]))(self) /* opt_no_check_other on <self:ToolContext>*/;
472 var16 = NEW_array__Array(&type_array__Arrayopts__Option);
473 { /* var16 = array_instance Array[Option] */
474 var17 = 5;
475 var18 = NEW_array__NativeArray(var17, &type_array__NativeArrayopts__Option);
476 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var11;
477 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var12;
478 ((struct instance_array__NativeArray*)var18)->values[2] = (val*) var13;
479 ((struct instance_array__NativeArray*)var18)->values[3] = (val*) var14;
480 ((struct instance_array__NativeArray*)var18)->values[4] = (val*) var15;
481 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Option]>*/;
482 CHECK_NEW_array__Array(var16);
483 }
484 ((void (*)(val*, val*))(var10->class->vft[COLOR_opts__OptionContext__add_option]))(var10, var16) /* add_option on <var10:OptionContext>*/;
485 var19 = ((val* (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__option_context]))(self) /* option_context on <self:ToolContext>*/;
486 var20 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ToolContext__opt_typing_test_metrics]))(self) /* opt_typing_test_metrics on <self:ToolContext>*/;
487 var21 = NEW_array__Array(&type_array__Arrayopts__Option);
488 { /* var21 = array_instance Array[Option] */
489 var22 = 1;
490 var23 = NEW_array__NativeArray(var22, &type_array__NativeArrayopts__Option);
491 ((struct instance_array__NativeArray*)var23)->values[0] = (val*) var20;
492 ((void (*)(val*, val*, long))(var21->class->vft[COLOR_array__Array__with_native]))(var21, var23, var22) /* with_native on <var21:Array[Option]>*/;
493 CHECK_NEW_array__Array(var21);
494 }
495 ((void (*)(val*, val*))(var19->class->vft[COLOR_opts__OptionContext__add_option]))(var19, var21) /* add_option on <var19:OptionContext>*/;
496 RET_LABEL:;
497 }
498 /* method abstract_compiler#ToolContext#init for (self: Object) */
499 void VIRTUAL_abstract_compiler__ToolContext__init(val* self) {
500 abstract_compiler__ToolContext__init(self);
501 RET_LABEL:;
502 }
503 /* method abstract_compiler#ModelBuilder#cc_paths for (self: ModelBuilder): Array[String] */
504 val* abstract_compiler__ModelBuilder__cc_paths(val* self) {
505 val* var /* : Array[String] */;
506 val* var1 /* : Array[String] */;
507 var1 = self->attrs[COLOR_abstract_compiler__ModelBuilder___64dcc_paths].val; /* @cc_paths on <self:ModelBuilder> */
508 if (var1 == NULL) {
509 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @cc_paths", "src/abstract_compiler.nit", 64);
510 exit(1);
511 }
512 var = var1;
513 RET_LABEL:;
514 return var;
515 }
516 /* method abstract_compiler#ModelBuilder#cc_paths for (self: Object): Array[String] */
517 val* VIRTUAL_abstract_compiler__ModelBuilder__cc_paths(val* self) {
518 val* var /* : Array[String] */;
519 val* var1 /* : Array[String] */;
520 var1 = abstract_compiler__ModelBuilder__cc_paths(self);
521 var = var1;
522 RET_LABEL:;
523 return var;
524 }
525 /* method abstract_compiler#ModelBuilder#cc_paths= for (self: ModelBuilder, Array[String]) */
526 void abstract_compiler__ModelBuilder__cc_paths_61d(val* self, val* p0) {
527 self->attrs[COLOR_abstract_compiler__ModelBuilder___64dcc_paths].val = p0; /* @cc_paths on <self:ModelBuilder> */
528 RET_LABEL:;
529 }
530 /* method abstract_compiler#ModelBuilder#cc_paths= for (self: Object, Array[String]) */
531 void VIRTUAL_abstract_compiler__ModelBuilder__cc_paths_61d(val* self, val* p0) {
532 abstract_compiler__ModelBuilder__cc_paths_61d(self, p0);
533 RET_LABEL:;
534 }
535 /* method abstract_compiler#ModelBuilder#init for (self: ModelBuilder, Model, ToolContext) */
536 void abstract_compiler__ModelBuilder__init(val* self, val* p0, val* p1) {
537 val* var_model /* var model: Model */;
538 val* var_toolcontext /* var toolcontext: ToolContext */;
539 static val* varonce;
540 val* var /* : String */;
541 char* var1 /* : NativeString */;
542 long var2 /* : Int */;
543 val* var3 /* : String */;
544 val* var4 /* : String */;
545 val* var_path_env /* var path_env: String */;
546 short int var5 /* : Bool */;
547 short int var6 /* : Bool */;
548 val* var7 /* : Array[Object] */;
549 long var8 /* : Int */;
550 val* var_ /* var : Array[Object] */;
551 static val* varonce9;
552 val* var10 /* : String */;
553 char* var11 /* : NativeString */;
554 long var12 /* : Int */;
555 val* var13 /* : String */;
556 static val* varonce14;
557 val* var15 /* : String */;
558 char* var16 /* : NativeString */;
559 long var17 /* : Int */;
560 val* var18 /* : String */;
561 val* var19 /* : String */;
562 val* var_libname /* var libname: String */;
563 short int var20 /* : Bool */;
564 val* var21 /* : Array[String] */;
565 val* var22 /* : Array[Object] */;
566 long var23 /* : Int */;
567 val* var_24 /* var : Array[Object] */;
568 static val* varonce25;
569 val* var26 /* : String */;
570 char* var27 /* : NativeString */;
571 long var28 /* : Int */;
572 val* var29 /* : String */;
573 val* var30 /* : Sys */;
574 val* var31 /* : String */;
575 val* var32 /* : String */;
576 static val* varonce33;
577 val* var34 /* : String */;
578 char* var35 /* : NativeString */;
579 long var36 /* : Int */;
580 val* var37 /* : String */;
581 val* var38 /* : String */;
582 val* var_libname39 /* var libname: String */;
583 short int var40 /* : Bool */;
584 val* var41 /* : Array[String] */;
585 val* var42 /* : String */;
586 val* var43 /* : Array[String] */;
587 short int var44 /* : Bool */;
588 val* var45 /* : null */;
589 static val* varonce46;
590 val* var47 /* : String */;
591 char* var48 /* : NativeString */;
592 long var49 /* : Int */;
593 val* var50 /* : String */;
594 val* var51 /* : Array[String] */;
595 val* var52 /* : OptionArray */;
596 val* var53 /* : nullable Object */;
597 static val* varonce54;
598 val* var55 /* : String */;
599 char* var56 /* : NativeString */;
600 long var57 /* : Int */;
601 val* var58 /* : String */;
602 val* var59 /* : String */;
603 short int var60 /* : Bool */;
604 short int var61 /* : Bool */;
605 val* var62 /* : Array[String] */;
606 char var63 /* : Char */;
607 val* var64 /* : Array[String] */;
608 val* var65 /* : Pattern */;
609 var_model = p0;
610 var_toolcontext = p1;
611 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__ModelBuilder__init]))(self, p0, p1) /* init on <self:ModelBuilder>*/;
612 if (varonce) {
613 var = varonce;
614 } else {
615 var1 = "NIT_DIR";
616 var2 = 7;
617 var3 = string__NativeString__to_s_with_length(var1, var2);
618 var = var3;
619 varonce = var;
620 }
621 var4 = ((val* (*)(val*))(var->class->vft[COLOR_environ__String__environ]))(var) /* environ on <var:String>*/;
622 var_path_env = var4;
623 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>*/;
624 var6 = !var5;
625 if (var6){
626 var7 = NEW_array__Array(&type_array__Arraykernel__Object);
627 var8 = 3;
628 ((void (*)(val*, long))(var7->class->vft[COLOR_array__Array__with_capacity]))(var7, var8) /* with_capacity on <var7:Array[Object]>*/;
629 CHECK_NEW_array__Array(var7);
630 var_ = var7;
631 if (varonce9) {
632 var10 = varonce9;
633 } else {
634 var11 = "";
635 var12 = 0;
636 var13 = string__NativeString__to_s_with_length(var11, var12);
637 var10 = var13;
638 varonce9 = var10;
639 }
640 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var10) /* add on <var_:Array[Object]>*/;
641 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_path_env) /* add on <var_:Array[Object]>*/;
642 if (varonce14) {
643 var15 = varonce14;
644 } else {
645 var16 = "/clib";
646 var17 = 5;
647 var18 = string__NativeString__to_s_with_length(var16, var17);
648 var15 = var18;
649 varonce14 = var15;
650 }
651 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var15) /* add on <var_:Array[Object]>*/;
652 var19 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
653 var_libname = var19;
654 var20 = ((short int (*)(val*))(var_libname->class->vft[COLOR_file__String__file_exists]))(var_libname) /* file_exists on <var_libname:String>*/;
655 if (var20){
656 var21 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ModelBuilder__cc_paths]))(self) /* cc_paths on <self:ModelBuilder>*/;
657 ((void (*)(val*, val*))(var21->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var21, var_libname) /* add on <var21:Array[String]>*/;
658 } else {
659 }
660 } else {
661 }
662 var22 = NEW_array__Array(&type_array__Arraykernel__Object);
663 var23 = 3;
664 ((void (*)(val*, long))(var22->class->vft[COLOR_array__Array__with_capacity]))(var22, var23) /* with_capacity on <var22:Array[Object]>*/;
665 CHECK_NEW_array__Array(var22);
666 var_24 = var22;
667 if (varonce25) {
668 var26 = varonce25;
669 } else {
670 var27 = "";
671 var28 = 0;
672 var29 = string__NativeString__to_s_with_length(var27, var28);
673 var26 = var29;
674 varonce25 = var26;
675 }
676 ((void (*)(val*, val*))(var_24->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_24, var26) /* add on <var_24:Array[Object]>*/;
677 var30 = ((val* (*)(val*))(self->class->vft[COLOR_kernel__Object__sys]))(self) /* sys on <self:ModelBuilder>*/;
678 var31 = ((val* (*)(val*))(var30->class->vft[COLOR_string__Sys__program_name]))(var30) /* program_name on <var30:Sys>*/;
679 var32 = ((val* (*)(val*))(var31->class->vft[COLOR_file__String__dirname]))(var31) /* dirname on <var31:String>*/;
680 ((void (*)(val*, val*))(var_24->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_24, var32) /* add on <var_24:Array[Object]>*/;
681 if (varonce33) {
682 var34 = varonce33;
683 } else {
684 var35 = "/../clib";
685 var36 = 8;
686 var37 = string__NativeString__to_s_with_length(var35, var36);
687 var34 = var37;
688 varonce33 = var34;
689 }
690 ((void (*)(val*, val*))(var_24->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_24, var34) /* add on <var_24:Array[Object]>*/;
691 var38 = ((val* (*)(val*))(var_24->class->vft[COLOR_string__Object__to_s]))(var_24) /* to_s on <var_24:Array[Object]>*/;
692 var_libname39 = var38;
693 var40 = ((short int (*)(val*))(var_libname39->class->vft[COLOR_file__String__file_exists]))(var_libname39) /* file_exists on <var_libname39:String>*/;
694 if (var40){
695 var41 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ModelBuilder__cc_paths]))(self) /* cc_paths on <self:ModelBuilder>*/;
696 var42 = ((val* (*)(val*))(var_libname39->class->vft[COLOR_file__String__simplify_path]))(var_libname39) /* simplify_path on <var_libname39:String>*/;
697 ((void (*)(val*, val*))(var41->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var41, var42) /* add on <var41:Array[String]>*/;
698 } else {
699 }
700 var43 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ModelBuilder__cc_paths]))(self) /* cc_paths on <self:ModelBuilder>*/;
701 var44 = ((short int (*)(val*))(var43->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var43) /* is_empty on <var43:Array[String]>*/;
702 if (var44){
703 var45 = NULL;
704 if (varonce46) {
705 var47 = varonce46;
706 } else {
707 var48 = "Cannot determine the nit clib path. define envvar NIT_DIR.";
708 var49 = 58;
709 var50 = string__NativeString__to_s_with_length(var48, var49);
710 var47 = var50;
711 varonce46 = var47;
712 }
713 ((void (*)(val*, val*, val*))(var_toolcontext->class->vft[COLOR_toolcontext__ToolContext__error]))(var_toolcontext, var45, var47) /* error on <var_toolcontext:ToolContext>*/;
714 } else {
715 }
716 var51 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ModelBuilder__cc_paths]))(self) /* cc_paths on <self:ModelBuilder>*/;
717 var52 = ((val* (*)(val*))(var_toolcontext->class->vft[COLOR_abstract_compiler__ToolContext__opt_cc_path]))(var_toolcontext) /* opt_cc_path on <var_toolcontext:ToolContext>*/;
718 var53 = ((val* (*)(val*))(var52->class->vft[COLOR_opts__Option__value]))(var52) /* value on <var52:OptionArray>*/;
719 ((void (*)(val*, val*))(var51->class->vft[COLOR_abstract_collection__Sequence__append]))(var51, var53) /* append on <var51:Array[String]>*/;
720 if (varonce54) {
721 var55 = varonce54;
722 } else {
723 var56 = "NIT_CC_PATH";
724 var57 = 11;
725 var58 = string__NativeString__to_s_with_length(var56, var57);
726 var55 = var58;
727 varonce54 = var55;
728 }
729 var59 = ((val* (*)(val*))(var55->class->vft[COLOR_environ__String__environ]))(var55) /* environ on <var55:String>*/;
730 var_path_env = var59;
731 var60 = ((short int (*)(val*))(var_path_env->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_path_env) /* is_empty on <var_path_env:String>*/;
732 var61 = !var60;
733 if (var61){
734 var62 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ModelBuilder__cc_paths]))(self) /* cc_paths on <self:ModelBuilder>*/;
735 var63 = ':';
736 var65 = BOX_kernel__Char(var63); /* autobox from Char to Pattern */
737 var64 = ((val* (*)(val*, val*))(var_path_env->class->vft[COLOR_string_search__String__split_with]))(var_path_env, var65) /* split_with on <var_path_env:String>*/;
738 ((void (*)(val*, val*))(var62->class->vft[COLOR_abstract_collection__Sequence__append]))(var62, var64) /* append on <var62:Array[String]>*/;
739 } else {
740 }
741 RET_LABEL:;
742 }
743 /* method abstract_compiler#ModelBuilder#init for (self: Object, Model, ToolContext) */
744 void VIRTUAL_abstract_compiler__ModelBuilder__init(val* self, val* p0, val* p1) {
745 abstract_compiler__ModelBuilder__init(self, p0, p1);
746 RET_LABEL:;
747 }
748 /* method abstract_compiler#ModelBuilder#write_and_make for (self: ModelBuilder, AbstractCompiler) */
749 void abstract_compiler__ModelBuilder__write_and_make(val* self, val* p0) {
750 val* var_compiler /* var compiler: AbstractCompiler */;
751 val* var /* : MModule */;
752 val* var_mainmodule /* var mainmodule: MModule */;
753 long var1 /* : Int */;
754 long var_time0 /* var time0: Int */;
755 val* var2 /* : ToolContext */;
756 static val* varonce;
757 val* var3 /* : String */;
758 char* var4 /* : NativeString */;
759 long var5 /* : Int */;
760 val* var6 /* : String */;
761 long var7 /* : Int */;
762 val* var8 /* : ToolContext */;
763 val* var9 /* : OptionString */;
764 val* var10 /* : nullable Object */;
765 val* var_compile_dir /* var compile_dir: nullable String */;
766 val* var11 /* : null */;
767 short int var12 /* : Bool */;
768 static val* varonce13;
769 val* var14 /* : String */;
770 char* var15 /* : NativeString */;
771 long var16 /* : Int */;
772 val* var17 /* : String */;
773 static val* varonce18;
774 val* var19 /* : String */;
775 char* var20 /* : NativeString */;
776 long var21 /* : Int */;
777 val* var22 /* : String */;
778 val* var_orig_dir /* var orig_dir: String */;
779 val* var23 /* : ToolContext */;
780 val* var24 /* : OptionString */;
781 val* var25 /* : nullable Object */;
782 val* var_outname /* var outname: nullable String */;
783 val* var26 /* : null */;
784 short int var27 /* : Bool */;
785 val* var28 /* : Array[Object] */;
786 long var29 /* : Int */;
787 val* var_ /* var : Array[Object] */;
788 static val* varonce30;
789 val* var31 /* : String */;
790 char* var32 /* : NativeString */;
791 long var33 /* : Int */;
792 val* var34 /* : String */;
793 val* var35 /* : String */;
794 static val* varonce36;
795 val* var37 /* : String */;
796 char* var38 /* : NativeString */;
797 long var39 /* : Int */;
798 val* var40 /* : String */;
799 val* var41 /* : String */;
800 val* var42 /* : String */;
801 val* var43 /* : String */;
802 val* var_outpath /* var outpath: String */;
803 val* var44 /* : CodeWriter */;
804 val* var45 /* : CodeFile */;
805 val* var46 /* : String */;
806 static val* varonce47;
807 val* var48 /* : String */;
808 char* var49 /* : NativeString */;
809 long var50 /* : Int */;
810 val* var51 /* : String */;
811 val* var52 /* : String */;
812 val* var_hfilename /* var hfilename: String */;
813 val* var53 /* : Array[Object] */;
814 long var54 /* : Int */;
815 val* var_55 /* var : Array[Object] */;
816 static val* varonce56;
817 val* var57 /* : String */;
818 char* var58 /* : NativeString */;
819 long var59 /* : Int */;
820 val* var60 /* : String */;
821 static val* varonce61;
822 val* var62 /* : String */;
823 char* var63 /* : NativeString */;
824 long var64 /* : Int */;
825 val* var65 /* : String */;
826 static val* varonce66;
827 val* var67 /* : String */;
828 char* var68 /* : NativeString */;
829 long var69 /* : Int */;
830 val* var70 /* : String */;
831 val* var71 /* : String */;
832 val* var_hfilepath /* var hfilepath: String */;
833 val* var72 /* : OFStream */;
834 val* var_h /* var h: OFStream */;
835 val* var73 /* : CodeWriter */;
836 val* var74 /* : List[String] */;
837 val* var75 /* : Iterator[nullable Object] */;
838 short int var76 /* : Bool */;
839 val* var77 /* : nullable Object */;
840 val* var_l /* var l: String */;
841 static val* varonce78;
842 val* var79 /* : String */;
843 char* var80 /* : NativeString */;
844 long var81 /* : Int */;
845 val* var82 /* : String */;
846 val* var83 /* : CodeWriter */;
847 val* var84 /* : List[String] */;
848 val* var85 /* : Iterator[nullable Object] */;
849 short int var86 /* : Bool */;
850 val* var87 /* : nullable Object */;
851 val* var_l88 /* var l: String */;
852 static val* varonce89;
853 val* var90 /* : String */;
854 char* var91 /* : NativeString */;
855 long var92 /* : Int */;
856 val* var93 /* : String */;
857 val* var95 /* : Array[String] */;
858 val* var_cfiles /* var cfiles: Array[String] */;
859 val* var96 /* : List[CodeFile] */;
860 val* var97 /* : Iterator[nullable Object] */;
861 short int var98 /* : Bool */;
862 val* var99 /* : nullable Object */;
863 val* var_f /* var f: CodeFile */;
864 long var100 /* : Int */;
865 long var_i /* var i: Int */;
866 val* var101 /* : null */;
867 val* var_hfile /* var hfile: nullable OFStream */;
868 long var102 /* : Int */;
869 long var_count /* var count: Int */;
870 val* var103 /* : Array[Object] */;
871 long var104 /* : Int */;
872 val* var_105 /* var : Array[Object] */;
873 static val* varonce106;
874 val* var107 /* : String */;
875 char* var108 /* : NativeString */;
876 long var109 /* : Int */;
877 val* var110 /* : String */;
878 val* var111 /* : String */;
879 static val* varonce112;
880 val* var113 /* : String */;
881 char* var114 /* : NativeString */;
882 long var115 /* : Int */;
883 val* var116 /* : String */;
884 val* var117 /* : String */;
885 val* var_cfilename /* var cfilename: String */;
886 val* var118 /* : Array[Object] */;
887 long var119 /* : Int */;
888 val* var_120 /* var : Array[Object] */;
889 static val* varonce121;
890 val* var122 /* : String */;
891 char* var123 /* : NativeString */;
892 long var124 /* : Int */;
893 val* var125 /* : String */;
894 static val* varonce126;
895 val* var127 /* : String */;
896 char* var128 /* : NativeString */;
897 long var129 /* : Int */;
898 val* var130 /* : String */;
899 static val* varonce131;
900 val* var132 /* : String */;
901 char* var133 /* : NativeString */;
902 long var134 /* : Int */;
903 val* var135 /* : String */;
904 val* var136 /* : String */;
905 val* var_cfilepath /* var cfilepath: String */;
906 val* var137 /* : OFStream */;
907 static val* varonce138;
908 val* var139 /* : String */;
909 char* var140 /* : NativeString */;
910 long var141 /* : Int */;
911 val* var142 /* : String */;
912 static val* varonce143;
913 val* var144 /* : String */;
914 char* var145 /* : NativeString */;
915 long var146 /* : Int */;
916 val* var147 /* : String */;
917 val* var148 /* : Array[Object] */;
918 long var149 /* : Int */;
919 val* var150 /* : NativeArray[Object] */;
920 val* var151 /* : String */;
921 val* var152 /* : HashSet[String] */;
922 val* var153 /* : Iterator[nullable Object] */;
923 short int var154 /* : Bool */;
924 val* var155 /* : nullable Object */;
925 val* var_key /* var key: String */;
926 val* var156 /* : HashMap[String, String] */;
927 short int var157 /* : Bool */;
928 short int var158 /* : Bool */;
929 static val* varonce159;
930 val* var160 /* : String */;
931 char* var161 /* : NativeString */;
932 long var162 /* : Int */;
933 val* var163 /* : String */;
934 val* var164 /* : Array[Object] */;
935 long var165 /* : Int */;
936 val* var166 /* : NativeArray[Object] */;
937 val* var167 /* : String */;
938 val* var168 /* : HashMap[String, String] */;
939 val* var169 /* : nullable Object */;
940 static val* varonce170;
941 val* var171 /* : String */;
942 char* var172 /* : NativeString */;
943 long var173 /* : Int */;
944 val* var174 /* : String */;
945 val* var176 /* : null */;
946 val* var_file /* var file: nullable OFStream */;
947 val* var177 /* : Array[CodeWriter] */;
948 val* var178 /* : Iterator[nullable Object] */;
949 short int var179 /* : Bool */;
950 val* var180 /* : nullable Object */;
951 val* var_vis /* var vis: CodeWriter */;
952 val* var181 /* : CodeWriter */;
953 short int var182 /* : Bool */;
954 val* var184 /* : List[String] */;
955 long var185 /* : Int */;
956 val* var186 /* : List[String] */;
957 long var187 /* : Int */;
958 long var188 /* : Int */;
959 long var190 /* : Int */;
960 long var_total_lines /* var total_lines: Int */;
961 long var191 /* : Int */;
962 short int var192 /* : Bool */;
963 short int var194 /* : Bool */;
964 long var195 /* : Int */;
965 long var197 /* : Int */;
966 short int var198 /* : Bool */;
967 val* var199 /* : null */;
968 short int var200 /* : Bool */;
969 short int var_201 /* var : Bool */;
970 long var202 /* : Int */;
971 short int var203 /* : Bool */;
972 short int var205 /* : Bool */;
973 int cltype;
974 int idtype;
975 short int var206 /* : Bool */;
976 long var207 /* : Int */;
977 long var208 /* : Int */;
978 long var210 /* : Int */;
979 val* var211 /* : null */;
980 short int var212 /* : Bool */;
981 val* var213 /* : Array[Object] */;
982 long var214 /* : Int */;
983 val* var_215 /* var : Array[Object] */;
984 static val* varonce216;
985 val* var217 /* : String */;
986 char* var218 /* : NativeString */;
987 long var219 /* : Int */;
988 val* var220 /* : String */;
989 val* var221 /* : String */;
990 static val* varonce222;
991 val* var223 /* : String */;
992 char* var224 /* : NativeString */;
993 long var225 /* : Int */;
994 val* var226 /* : String */;
995 val* var227 /* : nullable Object */;
996 static val* varonce228;
997 val* var229 /* : String */;
998 char* var230 /* : NativeString */;
999 long var231 /* : Int */;
1000 val* var232 /* : String */;
1001 val* var233 /* : String */;
1002 val* var234 /* : Array[Object] */;
1003 long var235 /* : Int */;
1004 val* var_236 /* var : Array[Object] */;
1005 static val* varonce237;
1006 val* var238 /* : String */;
1007 char* var239 /* : NativeString */;
1008 long var240 /* : Int */;
1009 val* var241 /* : String */;
1010 static val* varonce242;
1011 val* var243 /* : String */;
1012 char* var244 /* : NativeString */;
1013 long var245 /* : Int */;
1014 val* var246 /* : String */;
1015 static val* varonce247;
1016 val* var248 /* : String */;
1017 char* var249 /* : NativeString */;
1018 long var250 /* : Int */;
1019 val* var251 /* : String */;
1020 val* var252 /* : String */;
1021 val* var253 /* : ToolContext */;
1022 static val* varonce254;
1023 val* var255 /* : String */;
1024 char* var256 /* : NativeString */;
1025 long var257 /* : Int */;
1026 val* var258 /* : String */;
1027 val* var259 /* : Array[Object] */;
1028 long var260 /* : Int */;
1029 val* var261 /* : NativeArray[Object] */;
1030 val* var262 /* : String */;
1031 long var263 /* : Int */;
1032 val* var264 /* : OFStream */;
1033 static val* varonce265;
1034 val* var266 /* : String */;
1035 char* var267 /* : NativeString */;
1036 long var268 /* : Int */;
1037 val* var269 /* : String */;
1038 val* var270 /* : String */;
1039 static val* varonce271;
1040 val* var272 /* : String */;
1041 char* var273 /* : NativeString */;
1042 long var274 /* : Int */;
1043 val* var275 /* : String */;
1044 val* var276 /* : Array[Object] */;
1045 long var277 /* : Int */;
1046 val* var278 /* : NativeArray[Object] */;
1047 val* var279 /* : String */;
1048 val* var280 /* : List[String] */;
1049 val* var281 /* : Iterator[nullable Object] */;
1050 short int var282 /* : Bool */;
1051 val* var283 /* : nullable Object */;
1052 val* var_l284 /* var l: String */;
1053 static val* varonce285;
1054 val* var286 /* : String */;
1055 char* var287 /* : NativeString */;
1056 long var288 /* : Int */;
1057 val* var289 /* : String */;
1058 val* var291 /* : List[String] */;
1059 val* var292 /* : Iterator[nullable Object] */;
1060 short int var293 /* : Bool */;
1061 val* var294 /* : nullable Object */;
1062 val* var_l295 /* var l: String */;
1063 static val* varonce296;
1064 val* var297 /* : String */;
1065 char* var298 /* : NativeString */;
1066 long var299 /* : Int */;
1067 val* var300 /* : String */;
1068 val* var302 /* : null */;
1069 short int var303 /* : Bool */;
1070 val* var305 /* : ToolContext */;
1071 static val* varonce306;
1072 val* var307 /* : String */;
1073 char* var308 /* : NativeString */;
1074 long var309 /* : Int */;
1075 val* var310 /* : String */;
1076 long var311 /* : Int */;
1077 val* var312 /* : Array[Object] */;
1078 long var313 /* : Int */;
1079 val* var314 /* : NativeArray[Object] */;
1080 val* var315 /* : Object */;
1081 val* var316 /* : String */;
1082 long var317 /* : Int */;
1083 val* var318 /* : Array[Object] */;
1084 long var319 /* : Int */;
1085 val* var_320 /* var : Array[Object] */;
1086 static val* varonce321;
1087 val* var322 /* : String */;
1088 char* var323 /* : NativeString */;
1089 long var324 /* : Int */;
1090 val* var325 /* : String */;
1091 val* var326 /* : String */;
1092 static val* varonce327;
1093 val* var328 /* : String */;
1094 char* var329 /* : NativeString */;
1095 long var330 /* : Int */;
1096 val* var331 /* : String */;
1097 val* var332 /* : String */;
1098 val* var_makename /* var makename: String */;
1099 val* var333 /* : Array[Object] */;
1100 long var334 /* : Int */;
1101 val* var_335 /* var : Array[Object] */;
1102 static val* varonce336;
1103 val* var337 /* : String */;
1104 char* var338 /* : NativeString */;
1105 long var339 /* : Int */;
1106 val* var340 /* : String */;
1107 static val* varonce341;
1108 val* var342 /* : String */;
1109 char* var343 /* : NativeString */;
1110 long var344 /* : Int */;
1111 val* var345 /* : String */;
1112 static val* varonce346;
1113 val* var347 /* : String */;
1114 char* var348 /* : NativeString */;
1115 long var349 /* : Int */;
1116 val* var350 /* : String */;
1117 val* var351 /* : String */;
1118 val* var_makepath /* var makepath: String */;
1119 val* var352 /* : OFStream */;
1120 val* var_makefile /* var makefile: OFStream */;
1121 static val* varonce353;
1122 val* var354 /* : String */;
1123 char* var355 /* : NativeString */;
1124 long var356 /* : Int */;
1125 val* var357 /* : String */;
1126 val* var_cc_includes /* var cc_includes: String */;
1127 val* var358 /* : Array[String] */;
1128 val* var359 /* : Iterator[nullable Object] */;
1129 short int var360 /* : Bool */;
1130 val* var361 /* : nullable Object */;
1131 val* var_p /* var p: String */;
1132 val* var362 /* : String */;
1133 val* var363 /* : String */;
1134 static val* varonce364;
1135 val* var365 /* : String */;
1136 char* var366 /* : NativeString */;
1137 long var367 /* : Int */;
1138 val* var368 /* : String */;
1139 val* var369 /* : String */;
1140 static val* varonce370;
1141 val* var371 /* : String */;
1142 char* var372 /* : NativeString */;
1143 long var373 /* : Int */;
1144 val* var374 /* : String */;
1145 val* var375 /* : String */;
1146 val* var376 /* : String */;
1147 static val* varonce378;
1148 val* var379 /* : String */;
1149 char* var380 /* : NativeString */;
1150 long var381 /* : Int */;
1151 val* var382 /* : String */;
1152 static val* varonce383;
1153 val* var384 /* : String */;
1154 char* var385 /* : NativeString */;
1155 long var386 /* : Int */;
1156 val* var387 /* : String */;
1157 val* var388 /* : Array[Object] */;
1158 long var389 /* : Int */;
1159 val* var390 /* : NativeArray[Object] */;
1160 val* var391 /* : String */;
1161 static val* varonce392;
1162 val* var393 /* : String */;
1163 char* var394 /* : NativeString */;
1164 long var395 /* : Int */;
1165 val* var396 /* : String */;
1166 static val* varonce397;
1167 val* var398 /* : String */;
1168 char* var399 /* : NativeString */;
1169 long var400 /* : Int */;
1170 val* var401 /* : String */;
1171 val* var402 /* : Array[Object] */;
1172 long var403 /* : Int */;
1173 val* var404 /* : NativeArray[Object] */;
1174 val* var405 /* : String */;
1175 val* var406 /* : Array[String] */;
1176 val* var_ofiles /* var ofiles: Array[String] */;
1177 val* var407 /* : Iterator[nullable Object] */;
1178 short int var408 /* : Bool */;
1179 val* var409 /* : nullable Object */;
1180 val* var_f410 /* var f: String */;
1181 static val* varonce411;
1182 val* var412 /* : String */;
1183 char* var413 /* : NativeString */;
1184 long var414 /* : Int */;
1185 val* var415 /* : String */;
1186 val* var416 /* : String */;
1187 static val* varonce417;
1188 val* var418 /* : String */;
1189 char* var419 /* : NativeString */;
1190 long var420 /* : Int */;
1191 val* var421 /* : String */;
1192 val* var422 /* : String */;
1193 val* var_o /* var o: String */;
1194 static val* varonce423;
1195 val* var424 /* : String */;
1196 char* var425 /* : NativeString */;
1197 long var426 /* : Int */;
1198 val* var427 /* : String */;
1199 static val* varonce428;
1200 val* var429 /* : String */;
1201 char* var430 /* : NativeString */;
1202 long var431 /* : Int */;
1203 val* var432 /* : String */;
1204 static val* varonce433;
1205 val* var434 /* : String */;
1206 char* var435 /* : NativeString */;
1207 long var436 /* : Int */;
1208 val* var437 /* : String */;
1209 static val* varonce438;
1210 val* var439 /* : String */;
1211 char* var440 /* : NativeString */;
1212 long var441 /* : Int */;
1213 val* var442 /* : String */;
1214 val* var443 /* : Array[Object] */;
1215 long var444 /* : Int */;
1216 val* var445 /* : NativeArray[Object] */;
1217 val* var446 /* : String */;
1218 val* var448 /* : ExternCFile */;
1219 val* var449 /* : Array[Object] */;
1220 long var450 /* : Int */;
1221 val* var_451 /* var : Array[Object] */;
1222 static val* varonce452;
1223 val* var453 /* : String */;
1224 char* var454 /* : NativeString */;
1225 long var455 /* : Int */;
1226 val* var456 /* : String */;
1227 val* var457 /* : Array[String] */;
1228 val* var458 /* : nullable Object */;
1229 static val* varonce459;
1230 val* var460 /* : String */;
1231 char* var461 /* : NativeString */;
1232 long var462 /* : Int */;
1233 val* var463 /* : String */;
1234 val* var464 /* : String */;
1235 static val* varonce465;
1236 val* var466 /* : String */;
1237 char* var467 /* : NativeString */;
1238 long var468 /* : Int */;
1239 val* var469 /* : String */;
1240 val* var_gc_chooser /* var gc_chooser: ExternCFile */;
1241 val* var470 /* : Array[ExternCFile] */;
1242 val* var471 /* : Array[ExternCFile] */;
1243 val* var472 /* : Iterator[nullable Object] */;
1244 short int var473 /* : Bool */;
1245 val* var474 /* : nullable Object */;
1246 val* var_f475 /* var f: ExternCFile */;
1247 val* var476 /* : String */;
1248 static val* varonce477;
1249 val* var478 /* : String */;
1250 char* var479 /* : NativeString */;
1251 long var480 /* : Int */;
1252 val* var481 /* : String */;
1253 val* var482 /* : String */;
1254 val* var_basename /* var basename: String */;
1255 val* var483 /* : Array[Object] */;
1256 long var484 /* : Int */;
1257 val* var_485 /* var : Array[Object] */;
1258 static val* varonce486;
1259 val* var487 /* : String */;
1260 char* var488 /* : NativeString */;
1261 long var489 /* : Int */;
1262 val* var490 /* : String */;
1263 static val* varonce491;
1264 val* var492 /* : String */;
1265 char* var493 /* : NativeString */;
1266 long var494 /* : Int */;
1267 val* var495 /* : String */;
1268 val* var496 /* : String */;
1269 val* var_o497 /* var o: String */;
1270 val* var498 /* : String */;
1271 val* var499 /* : String */;
1272 val* var500 /* : String */;
1273 val* var_ff /* var ff: String */;
1274 static val* varonce501;
1275 val* var502 /* : String */;
1276 char* var503 /* : NativeString */;
1277 long var504 /* : Int */;
1278 val* var505 /* : String */;
1279 static val* varonce506;
1280 val* var507 /* : String */;
1281 char* var508 /* : NativeString */;
1282 long var509 /* : Int */;
1283 val* var510 /* : String */;
1284 val* var511 /* : String */;
1285 static val* varonce512;
1286 val* var513 /* : String */;
1287 char* var514 /* : NativeString */;
1288 long var515 /* : Int */;
1289 val* var516 /* : String */;
1290 static val* varonce517;
1291 val* var518 /* : String */;
1292 char* var519 /* : NativeString */;
1293 long var520 /* : Int */;
1294 val* var521 /* : String */;
1295 static val* varonce522;
1296 val* var523 /* : String */;
1297 char* var524 /* : NativeString */;
1298 long var525 /* : Int */;
1299 val* var526 /* : String */;
1300 val* var527 /* : Array[Object] */;
1301 long var528 /* : Int */;
1302 val* var529 /* : NativeArray[Object] */;
1303 val* var530 /* : String */;
1304 static val* varonce532;
1305 val* var533 /* : String */;
1306 char* var534 /* : NativeString */;
1307 long var535 /* : Int */;
1308 val* var536 /* : String */;
1309 static val* varonce537;
1310 val* var538 /* : String */;
1311 char* var539 /* : NativeString */;
1312 long var540 /* : Int */;
1313 val* var541 /* : String */;
1314 val* var542 /* : String */;
1315 static val* varonce543;
1316 val* var544 /* : String */;
1317 char* var545 /* : NativeString */;
1318 long var546 /* : Int */;
1319 val* var547 /* : String */;
1320 static val* varonce548;
1321 val* var549 /* : String */;
1322 char* var550 /* : NativeString */;
1323 long var551 /* : Int */;
1324 val* var552 /* : String */;
1325 static val* varonce553;
1326 val* var554 /* : String */;
1327 char* var555 /* : NativeString */;
1328 long var556 /* : Int */;
1329 val* var557 /* : String */;
1330 val* var558 /* : String */;
1331 static val* varonce559;
1332 val* var560 /* : String */;
1333 char* var561 /* : NativeString */;
1334 long var562 /* : Int */;
1335 val* var563 /* : String */;
1336 val* var564 /* : Array[Object] */;
1337 long var565 /* : Int */;
1338 val* var566 /* : NativeArray[Object] */;
1339 val* var567 /* : String */;
1340 static val* varonce568;
1341 val* var569 /* : String */;
1342 char* var570 /* : NativeString */;
1343 long var571 /* : Int */;
1344 val* var572 /* : String */;
1345 static val* varonce573;
1346 val* var574 /* : String */;
1347 char* var575 /* : NativeString */;
1348 long var576 /* : Int */;
1349 val* var577 /* : String */;
1350 val* var578 /* : String */;
1351 static val* varonce579;
1352 val* var580 /* : String */;
1353 char* var581 /* : NativeString */;
1354 long var582 /* : Int */;
1355 val* var583 /* : String */;
1356 val* var584 /* : Array[Object] */;
1357 long var585 /* : Int */;
1358 val* var586 /* : NativeArray[Object] */;
1359 val* var587 /* : String */;
1360 val* var588 /* : ToolContext */;
1361 static val* varonce589;
1362 val* var590 /* : String */;
1363 char* var591 /* : NativeString */;
1364 long var592 /* : Int */;
1365 val* var593 /* : String */;
1366 val* var594 /* : Array[Object] */;
1367 long var595 /* : Int */;
1368 val* var596 /* : NativeArray[Object] */;
1369 val* var597 /* : String */;
1370 long var598 /* : Int */;
1371 long var599 /* : Int */;
1372 long var_time1 /* var time1: Int */;
1373 val* var600 /* : ToolContext */;
1374 static val* varonce601;
1375 val* var602 /* : String */;
1376 char* var603 /* : NativeString */;
1377 long var604 /* : Int */;
1378 val* var605 /* : String */;
1379 long var606 /* : Int */;
1380 long var608 /* : Int */;
1381 static val* varonce609;
1382 val* var610 /* : String */;
1383 char* var611 /* : NativeString */;
1384 long var612 /* : Int */;
1385 val* var613 /* : String */;
1386 val* var614 /* : Array[Object] */;
1387 long var615 /* : Int */;
1388 val* var616 /* : NativeArray[Object] */;
1389 val* var617 /* : Object */;
1390 val* var618 /* : String */;
1391 long var619 /* : Int */;
1392 val* var620 /* : ToolContext */;
1393 val* var621 /* : OptionBool */;
1394 val* var622 /* : nullable Object */;
1395 short int var623 /* : Bool */;
1396 val* var624 /* : ToolContext */;
1397 static val* varonce625;
1398 val* var626 /* : String */;
1399 char* var627 /* : NativeString */;
1400 long var628 /* : Int */;
1401 val* var629 /* : String */;
1402 long var630 /* : Int */;
1403 val* var631 /* : ToolContext */;
1404 val* var632 /* : OptionString */;
1405 val* var633 /* : nullable Object */;
1406 val* var_makeflags /* var makeflags: nullable String */;
1407 val* var634 /* : null */;
1408 short int var635 /* : Bool */;
1409 static val* varonce636;
1410 val* var637 /* : String */;
1411 char* var638 /* : NativeString */;
1412 long var639 /* : Int */;
1413 val* var640 /* : String */;
1414 val* var641 /* : ToolContext */;
1415 static val* varonce642;
1416 val* var643 /* : String */;
1417 char* var644 /* : NativeString */;
1418 long var645 /* : Int */;
1419 val* var646 /* : String */;
1420 static val* varonce647;
1421 val* var648 /* : String */;
1422 char* var649 /* : NativeString */;
1423 long var650 /* : Int */;
1424 val* var651 /* : String */;
1425 static val* varonce652;
1426 val* var653 /* : String */;
1427 char* var654 /* : NativeString */;
1428 long var655 /* : Int */;
1429 val* var656 /* : String */;
1430 val* var657 /* : Array[Object] */;
1431 long var658 /* : Int */;
1432 val* var659 /* : NativeArray[Object] */;
1433 val* var660 /* : String */;
1434 long var661 /* : Int */;
1435 val* var662 /* : ToolContext */;
1436 long var663 /* : Int */;
1437 long var664 /* : Int */;
1438 short int var665 /* : Bool */;
1439 short int var667 /* : Bool */;
1440 int cltype668;
1441 int idtype669;
1442 short int var670 /* : Bool */;
1443 val* var671 /* : Sys */;
1444 static val* varonce672;
1445 val* var673 /* : String */;
1446 char* var674 /* : NativeString */;
1447 long var675 /* : Int */;
1448 val* var676 /* : String */;
1449 static val* varonce677;
1450 val* var678 /* : String */;
1451 char* var679 /* : NativeString */;
1452 long var680 /* : Int */;
1453 val* var681 /* : String */;
1454 static val* varonce682;
1455 val* var683 /* : String */;
1456 char* var684 /* : NativeString */;
1457 long var685 /* : Int */;
1458 val* var686 /* : String */;
1459 static val* varonce687;
1460 val* var688 /* : String */;
1461 char* var689 /* : NativeString */;
1462 long var690 /* : Int */;
1463 val* var691 /* : String */;
1464 val* var692 /* : Array[Object] */;
1465 long var693 /* : Int */;
1466 val* var694 /* : NativeArray[Object] */;
1467 val* var695 /* : String */;
1468 long var696 /* : Int */;
1469 val* var697 /* : nullable Object */;
1470 val* var_res /* var res: nullable Object */;
1471 val* var698 /* : Sys */;
1472 static val* varonce699;
1473 val* var700 /* : String */;
1474 char* var701 /* : NativeString */;
1475 long var702 /* : Int */;
1476 val* var703 /* : String */;
1477 static val* varonce704;
1478 val* var705 /* : String */;
1479 char* var706 /* : NativeString */;
1480 long var707 /* : Int */;
1481 val* var708 /* : String */;
1482 static val* varonce709;
1483 val* var710 /* : String */;
1484 char* var711 /* : NativeString */;
1485 long var712 /* : Int */;
1486 val* var713 /* : String */;
1487 static val* varonce714;
1488 val* var715 /* : String */;
1489 char* var716 /* : NativeString */;
1490 long var717 /* : Int */;
1491 val* var718 /* : String */;
1492 val* var719 /* : Array[Object] */;
1493 long var720 /* : Int */;
1494 val* var721 /* : NativeArray[Object] */;
1495 val* var722 /* : String */;
1496 long var723 /* : Int */;
1497 val* var724 /* : nullable Object */;
1498 long var725 /* : Int */;
1499 short int var726 /* : Bool */;
1500 short int var728 /* : Bool */;
1501 long var729 /* : Int */;
1502 short int var730 /* : Bool */;
1503 val* var731 /* : ToolContext */;
1504 val* var732 /* : null */;
1505 static val* varonce733;
1506 val* var734 /* : String */;
1507 char* var735 /* : NativeString */;
1508 long var736 /* : Int */;
1509 val* var737 /* : String */;
1510 static val* varonce738;
1511 val* var739 /* : String */;
1512 char* var740 /* : NativeString */;
1513 long var741 /* : Int */;
1514 val* var742 /* : String */;
1515 val* var743 /* : Array[Object] */;
1516 long var744 /* : Int */;
1517 val* var745 /* : NativeArray[Object] */;
1518 val* var746 /* : String */;
1519 long var747 /* : Int */;
1520 val* var748 /* : ToolContext */;
1521 static val* varonce749;
1522 val* var750 /* : String */;
1523 char* var751 /* : NativeString */;
1524 long var752 /* : Int */;
1525 val* var753 /* : String */;
1526 long var754 /* : Int */;
1527 long var756 /* : Int */;
1528 static val* varonce757;
1529 val* var758 /* : String */;
1530 char* var759 /* : NativeString */;
1531 long var760 /* : Int */;
1532 val* var761 /* : String */;
1533 val* var762 /* : Array[Object] */;
1534 long var763 /* : Int */;
1535 val* var764 /* : NativeArray[Object] */;
1536 val* var765 /* : Object */;
1537 val* var766 /* : String */;
1538 long var767 /* : Int */;
1539 var_compiler = p0;
1540 var = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var_compiler) /* mainmodule on <var_compiler:AbstractCompiler>*/;
1541 var_mainmodule = var;
1542 var1 = ((long (*)(val*))(self->class->vft[COLOR_time__Object__get_time]))(self) /* get_time on <self:ModelBuilder>*/;
1543 var_time0 = var1;
1544 var2 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
1545 if (varonce) {
1546 var3 = varonce;
1547 } else {
1548 var4 = "*** WRITING C ***";
1549 var5 = 17;
1550 var6 = string__NativeString__to_s_with_length(var4, var5);
1551 var3 = var6;
1552 varonce = var3;
1553 }
1554 var7 = 1;
1555 ((void (*)(val*, val*, long))(var2->class->vft[COLOR_toolcontext__ToolContext__info]))(var2, var3, var7) /* info on <var2:ToolContext>*/;
1556 var8 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
1557 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_compiler__ToolContext__opt_compile_dir]))(var8) /* opt_compile_dir on <var8:ToolContext>*/;
1558 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_opts__Option__value]))(var9) /* value on <var9:OptionString>*/;
1559 var_compile_dir = var10;
1560 var11 = NULL;
1561 if (var_compile_dir == NULL) {
1562 var12 = 1; /* is null */
1563 } else {
1564 var12 = 0; /* arg is null but recv is not */
1565 }
1566 if (var12){
1567 if (varonce13) {
1568 var14 = varonce13;
1569 } else {
1570 var15 = ".nit_compile";
1571 var16 = 12;
1572 var17 = string__NativeString__to_s_with_length(var15, var16);
1573 var14 = var17;
1574 varonce13 = var14;
1575 }
1576 var_compile_dir = var14;
1577 } else {
1578 }
1579 ((void (*)(val*))(var_compile_dir->class->vft[COLOR_file__String__mkdir]))(var_compile_dir) /* mkdir on <var_compile_dir:nullable String(String)>*/;
1580 if (varonce18) {
1581 var19 = varonce18;
1582 } else {
1583 var20 = "..";
1584 var21 = 2;
1585 var22 = string__NativeString__to_s_with_length(var20, var21);
1586 var19 = var22;
1587 varonce18 = var19;
1588 }
1589 var_orig_dir = var19;
1590 var23 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
1591 var24 = ((val* (*)(val*))(var23->class->vft[COLOR_abstract_compiler__ToolContext__opt_output]))(var23) /* opt_output on <var23:ToolContext>*/;
1592 var25 = ((val* (*)(val*))(var24->class->vft[COLOR_opts__Option__value]))(var24) /* value on <var24:OptionString>*/;
1593 var_outname = var25;
1594 var26 = NULL;
1595 if (var_outname == NULL) {
1596 var27 = 1; /* is null */
1597 } else {
1598 var27 = 0; /* arg is null but recv is not */
1599 }
1600 if (var27){
1601 var28 = NEW_array__Array(&type_array__Arraykernel__Object);
1602 var29 = 3;
1603 ((void (*)(val*, long))(var28->class->vft[COLOR_array__Array__with_capacity]))(var28, var29) /* with_capacity on <var28:Array[Object]>*/;
1604 CHECK_NEW_array__Array(var28);
1605 var_ = var28;
1606 if (varonce30) {
1607 var31 = varonce30;
1608 } else {
1609 var32 = "";
1610 var33 = 0;
1611 var34 = string__NativeString__to_s_with_length(var32, var33);
1612 var31 = var34;
1613 varonce30 = var31;
1614 }
1615 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var31) /* add on <var_:Array[Object]>*/;
1616 var35 = ((val* (*)(val*))(var_mainmodule->class->vft[COLOR_model_base__MModule__name]))(var_mainmodule) /* name on <var_mainmodule:MModule>*/;
1617 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var35) /* add on <var_:Array[Object]>*/;
1618 if (varonce36) {
1619 var37 = varonce36;
1620 } else {
1621 var38 = "";
1622 var39 = 0;
1623 var40 = string__NativeString__to_s_with_length(var38, var39);
1624 var37 = var40;
1625 varonce36 = var37;
1626 }
1627 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var37) /* add on <var_:Array[Object]>*/;
1628 var41 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
1629 var_outname = var41;
1630 } else {
1631 }
1632 var42 = ((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>*/;
1633 var43 = ((val* (*)(val*))(var42->class->vft[COLOR_file__String__simplify_path]))(var42) /* simplify_path on <var42:String>*/;
1634 var_outpath = var43;
1635 var44 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(var_compiler) /* header on <var_compiler:AbstractCompiler>*/;
1636 var45 = ((val* (*)(val*))(var44->class->vft[COLOR_abstract_compiler__CodeWriter__file]))(var44) /* file on <var44:CodeWriter>*/;
1637 var46 = ((val* (*)(val*))(var45->class->vft[COLOR_abstract_compiler__CodeFile__name]))(var45) /* name on <var45:CodeFile>*/;
1638 if (varonce47) {
1639 var48 = varonce47;
1640 } else {
1641 var49 = ".h";
1642 var50 = 2;
1643 var51 = string__NativeString__to_s_with_length(var49, var50);
1644 var48 = var51;
1645 varonce47 = var48;
1646 }
1647 var52 = ((val* (*)(val*, val*))(var46->class->vft[COLOR_string__String___43d]))(var46, var48) /* + on <var46:String>*/;
1648 var_hfilename = var52;
1649 var53 = NEW_array__Array(&type_array__Arraykernel__Object);
1650 var54 = 5;
1651 ((void (*)(val*, long))(var53->class->vft[COLOR_array__Array__with_capacity]))(var53, var54) /* with_capacity on <var53:Array[Object]>*/;
1652 CHECK_NEW_array__Array(var53);
1653 var_55 = var53;
1654 if (varonce56) {
1655 var57 = varonce56;
1656 } else {
1657 var58 = "";
1658 var59 = 0;
1659 var60 = string__NativeString__to_s_with_length(var58, var59);
1660 var57 = var60;
1661 varonce56 = var57;
1662 }
1663 ((void (*)(val*, val*))(var_55->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_55, var57) /* add on <var_55:Array[Object]>*/;
1664 ((void (*)(val*, val*))(var_55->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_55, var_compile_dir) /* add on <var_55:Array[Object]>*/;
1665 if (varonce61) {
1666 var62 = varonce61;
1667 } else {
1668 var63 = "/";
1669 var64 = 1;
1670 var65 = string__NativeString__to_s_with_length(var63, var64);
1671 var62 = var65;
1672 varonce61 = var62;
1673 }
1674 ((void (*)(val*, val*))(var_55->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_55, var62) /* add on <var_55:Array[Object]>*/;
1675 ((void (*)(val*, val*))(var_55->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_55, var_hfilename) /* add on <var_55:Array[Object]>*/;
1676 if (varonce66) {
1677 var67 = varonce66;
1678 } else {
1679 var68 = "";
1680 var69 = 0;
1681 var70 = string__NativeString__to_s_with_length(var68, var69);
1682 var67 = var70;
1683 varonce66 = var67;
1684 }
1685 ((void (*)(val*, val*))(var_55->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_55, var67) /* add on <var_55:Array[Object]>*/;
1686 var71 = ((val* (*)(val*))(var_55->class->vft[COLOR_string__Object__to_s]))(var_55) /* to_s on <var_55:Array[Object]>*/;
1687 var_hfilepath = var71;
1688 var72 = NEW_file__OFStream(&type_file__OFStream);
1689 ((void (*)(val*, val*))(var72->class->vft[COLOR_file__OFStream__open]))(var72, var_hfilepath) /* open on <var72:OFStream>*/;
1690 CHECK_NEW_file__OFStream(var72);
1691 var_h = var72;
1692 var73 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(var_compiler) /* header on <var_compiler:AbstractCompiler>*/;
1693 var74 = ((val* (*)(val*))(var73->class->vft[COLOR_abstract_compiler__CodeWriter__decl_lines]))(var73) /* decl_lines on <var73:CodeWriter>*/;
1694 var75 = ((val* (*)(val*))(var74->class->vft[COLOR_abstract_collection__Collection__iterator]))(var74) /* iterator on <var74:List[String]>*/;
1695 for(;;) {
1696 var76 = ((short int (*)(val*))(var75->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var75) /* is_ok on <var75:Iterator[nullable Object]>*/;
1697 if(!var76) break;
1698 var77 = ((val* (*)(val*))(var75->class->vft[COLOR_abstract_collection__Iterator__item]))(var75) /* item on <var75:Iterator[nullable Object]>*/;
1699 var_l = var77;
1700 ((void (*)(val*, val*))(var_h->class->vft[COLOR_stream__OStream__write]))(var_h, var_l) /* write on <var_h:OFStream>*/;
1701 if (varonce78) {
1702 var79 = varonce78;
1703 } else {
1704 var80 = "\n";
1705 var81 = 1;
1706 var82 = string__NativeString__to_s_with_length(var80, var81);
1707 var79 = var82;
1708 varonce78 = var79;
1709 }
1710 ((void (*)(val*, val*))(var_h->class->vft[COLOR_stream__OStream__write]))(var_h, var79) /* write on <var_h:OFStream>*/;
1711 CONTINUE_label: (void)0;
1712 ((void (*)(val*))(var75->class->vft[COLOR_abstract_collection__Iterator__next]))(var75) /* next on <var75:Iterator[nullable Object]>*/;
1713 }
1714 BREAK_label: (void)0;
1715 var83 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(var_compiler) /* header on <var_compiler:AbstractCompiler>*/;
1716 var84 = ((val* (*)(val*))(var83->class->vft[COLOR_abstract_compiler__CodeWriter__lines]))(var83) /* lines on <var83:CodeWriter>*/;
1717 var85 = ((val* (*)(val*))(var84->class->vft[COLOR_abstract_collection__Collection__iterator]))(var84) /* iterator on <var84:List[String]>*/;
1718 for(;;) {
1719 var86 = ((short int (*)(val*))(var85->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var85) /* is_ok on <var85:Iterator[nullable Object]>*/;
1720 if(!var86) break;
1721 var87 = ((val* (*)(val*))(var85->class->vft[COLOR_abstract_collection__Iterator__item]))(var85) /* item on <var85:Iterator[nullable Object]>*/;
1722 var_l88 = var87;
1723 ((void (*)(val*, val*))(var_h->class->vft[COLOR_stream__OStream__write]))(var_h, var_l88) /* write on <var_h:OFStream>*/;
1724 if (varonce89) {
1725 var90 = varonce89;
1726 } else {
1727 var91 = "\n";
1728 var92 = 1;
1729 var93 = string__NativeString__to_s_with_length(var91, var92);
1730 var90 = var93;
1731 varonce89 = var90;
1732 }
1733 ((void (*)(val*, val*))(var_h->class->vft[COLOR_stream__OStream__write]))(var_h, var90) /* write on <var_h:OFStream>*/;
1734 CONTINUE_label94: (void)0;
1735 ((void (*)(val*))(var85->class->vft[COLOR_abstract_collection__Iterator__next]))(var85) /* next on <var85:Iterator[nullable Object]>*/;
1736 }
1737 BREAK_label94: (void)0;
1738 ((void (*)(val*))(var_h->class->vft[COLOR_stream__IOS__close]))(var_h) /* close on <var_h:OFStream>*/;
1739 var95 = NEW_array__Array(&type_array__Arraystring__String);
1740 ((void (*)(val*))(var95->class->vft[COLOR_array__Array__init]))(var95) /* init on <var95:Array[String]>*/;
1741 CHECK_NEW_array__Array(var95);
1742 var_cfiles = var95;
1743 var96 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__files]))(var_compiler) /* files on <var_compiler:AbstractCompiler>*/;
1744 var97 = ((val* (*)(val*))(var96->class->vft[COLOR_abstract_collection__Collection__iterator]))(var96) /* iterator on <var96:List[CodeFile]>*/;
1745 for(;;) {
1746 var98 = ((short int (*)(val*))(var97->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var97) /* is_ok on <var97:Iterator[nullable Object]>*/;
1747 if(!var98) break;
1748 var99 = ((val* (*)(val*))(var97->class->vft[COLOR_abstract_collection__Iterator__item]))(var97) /* item on <var97:Iterator[nullable Object]>*/;
1749 var_f = var99;
1750 var100 = 0;
1751 var_i = var100;
1752 var101 = NULL;
1753 var_hfile = var101;
1754 var102 = 0;
1755 var_count = var102;
1756 var103 = NEW_array__Array(&type_array__Arraykernel__Object);
1757 var104 = 3;
1758 ((void (*)(val*, long))(var103->class->vft[COLOR_array__Array__with_capacity]))(var103, var104) /* with_capacity on <var103:Array[Object]>*/;
1759 CHECK_NEW_array__Array(var103);
1760 var_105 = var103;
1761 if (varonce106) {
1762 var107 = varonce106;
1763 } else {
1764 var108 = "";
1765 var109 = 0;
1766 var110 = string__NativeString__to_s_with_length(var108, var109);
1767 var107 = var110;
1768 varonce106 = var107;
1769 }
1770 ((void (*)(val*, val*))(var_105->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_105, var107) /* add on <var_105:Array[Object]>*/;
1771 var111 = ((val* (*)(val*))(var_f->class->vft[COLOR_abstract_compiler__CodeFile__name]))(var_f) /* name on <var_f:CodeFile>*/;
1772 ((void (*)(val*, val*))(var_105->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_105, var111) /* add on <var_105:Array[Object]>*/;
1773 if (varonce112) {
1774 var113 = varonce112;
1775 } else {
1776 var114 = ".0.h";
1777 var115 = 4;
1778 var116 = string__NativeString__to_s_with_length(var114, var115);
1779 var113 = var116;
1780 varonce112 = var113;
1781 }
1782 ((void (*)(val*, val*))(var_105->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_105, var113) /* add on <var_105:Array[Object]>*/;
1783 var117 = ((val* (*)(val*))(var_105->class->vft[COLOR_string__Object__to_s]))(var_105) /* to_s on <var_105:Array[Object]>*/;
1784 var_cfilename = var117;
1785 var118 = NEW_array__Array(&type_array__Arraykernel__Object);
1786 var119 = 5;
1787 ((void (*)(val*, long))(var118->class->vft[COLOR_array__Array__with_capacity]))(var118, var119) /* with_capacity on <var118:Array[Object]>*/;
1788 CHECK_NEW_array__Array(var118);
1789 var_120 = var118;
1790 if (varonce121) {
1791 var122 = varonce121;
1792 } else {
1793 var123 = "";
1794 var124 = 0;
1795 var125 = string__NativeString__to_s_with_length(var123, var124);
1796 var122 = var125;
1797 varonce121 = var122;
1798 }
1799 ((void (*)(val*, val*))(var_120->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_120, var122) /* add on <var_120:Array[Object]>*/;
1800 ((void (*)(val*, val*))(var_120->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_120, var_compile_dir) /* add on <var_120:Array[Object]>*/;
1801 if (varonce126) {
1802 var127 = varonce126;
1803 } else {
1804 var128 = "/";
1805 var129 = 1;
1806 var130 = string__NativeString__to_s_with_length(var128, var129);
1807 var127 = var130;
1808 varonce126 = var127;
1809 }
1810 ((void (*)(val*, val*))(var_120->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_120, var127) /* add on <var_120:Array[Object]>*/;
1811 ((void (*)(val*, val*))(var_120->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_120, var_cfilename) /* add on <var_120:Array[Object]>*/;
1812 if (varonce131) {
1813 var132 = varonce131;
1814 } else {
1815 var133 = "";
1816 var134 = 0;
1817 var135 = string__NativeString__to_s_with_length(var133, var134);
1818 var132 = var135;
1819 varonce131 = var132;
1820 }
1821 ((void (*)(val*, val*))(var_120->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_120, var132) /* add on <var_120:Array[Object]>*/;
1822 var136 = ((val* (*)(val*))(var_120->class->vft[COLOR_string__Object__to_s]))(var_120) /* to_s on <var_120:Array[Object]>*/;
1823 var_cfilepath = var136;
1824 var137 = NEW_file__OFStream(&type_file__OFStream);
1825 ((void (*)(val*, val*))(var137->class->vft[COLOR_file__OFStream__open]))(var137, var_cfilepath) /* open on <var137:OFStream>*/;
1826 CHECK_NEW_file__OFStream(var137);
1827 var_hfile = var137;
1828 if (varonce138) {
1829 var139 = varonce138;
1830 } else {
1831 var140 = "#include \"";
1832 var141 = 10;
1833 var142 = string__NativeString__to_s_with_length(var140, var141);
1834 var139 = var142;
1835 varonce138 = var139;
1836 }
1837 if (varonce143) {
1838 var144 = varonce143;
1839 } else {
1840 var145 = "\"\n";
1841 var146 = 2;
1842 var147 = string__NativeString__to_s_with_length(var145, var146);
1843 var144 = var147;
1844 varonce143 = var144;
1845 }
1846 var148 = NEW_array__Array(&type_array__Arraykernel__Object);
1847 { /* var148 = array_instance Array[Object] */
1848 var149 = 3;
1849 var150 = NEW_array__NativeArray(var149, &type_array__NativeArraykernel__Object);
1850 ((struct instance_array__NativeArray*)var150)->values[0] = (val*) var139;
1851 ((struct instance_array__NativeArray*)var150)->values[1] = (val*) var_hfilename;
1852 ((struct instance_array__NativeArray*)var150)->values[2] = (val*) var144;
1853 ((void (*)(val*, val*, long))(var148->class->vft[COLOR_array__Array__with_native]))(var148, var150, var149) /* with_native on <var148:Array[Object]>*/;
1854 CHECK_NEW_array__Array(var148);
1855 }
1856 var151 = ((val* (*)(val*))(var148->class->vft[COLOR_string__Object__to_s]))(var148) /* to_s on <var148:Array[Object]>*/;
1857 ((void (*)(val*, val*))(var_hfile->class->vft[COLOR_stream__OStream__write]))(var_hfile, var151) /* write on <var_hfile:nullable OFStream(OFStream)>*/;
1858 var152 = ((val* (*)(val*))(var_f->class->vft[COLOR_abstract_compiler__CodeFile__required_declarations]))(var_f) /* required_declarations on <var_f:CodeFile>*/;
1859 var153 = ((val* (*)(val*))(var152->class->vft[COLOR_abstract_collection__Collection__iterator]))(var152) /* iterator on <var152:HashSet[String]>*/;
1860 for(;;) {
1861 var154 = ((short int (*)(val*))(var153->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var153) /* is_ok on <var153:Iterator[nullable Object]>*/;
1862 if(!var154) break;
1863 var155 = ((val* (*)(val*))(var153->class->vft[COLOR_abstract_collection__Iterator__item]))(var153) /* item on <var153:Iterator[nullable Object]>*/;
1864 var_key = var155;
1865 var156 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__provided_declarations]))(var_compiler) /* provided_declarations on <var_compiler:AbstractCompiler>*/;
1866 var157 = ((short int (*)(val*, val*))(var156->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var156, var_key) /* has_key on <var156:HashMap[String, String]>*/;
1867 var158 = !var157;
1868 if (var158){
1869 if (varonce159) {
1870 var160 = varonce159;
1871 } else {
1872 var161 = "No provided declaration for ";
1873 var162 = 28;
1874 var163 = string__NativeString__to_s_with_length(var161, var162);
1875 var160 = var163;
1876 varonce159 = var160;
1877 }
1878 var164 = NEW_array__Array(&type_array__Arraykernel__Object);
1879 { /* var164 = array_instance Array[Object] */
1880 var165 = 2;
1881 var166 = NEW_array__NativeArray(var165, &type_array__NativeArraykernel__Object);
1882 ((struct instance_array__NativeArray*)var166)->values[0] = (val*) var160;
1883 ((struct instance_array__NativeArray*)var166)->values[1] = (val*) var_key;
1884 ((void (*)(val*, val*, long))(var164->class->vft[COLOR_array__Array__with_native]))(var164, var166, var165) /* with_native on <var164:Array[Object]>*/;
1885 CHECK_NEW_array__Array(var164);
1886 }
1887 var167 = ((val* (*)(val*))(var164->class->vft[COLOR_string__Object__to_s]))(var164) /* to_s on <var164:Array[Object]>*/;
1888 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var167) /* print on <self:ModelBuilder>*/;
1889 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/abstract_compiler.nit", 148);
1890 exit(1);
1891 } else {
1892 }
1893 var168 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__provided_declarations]))(var_compiler) /* provided_declarations on <var_compiler:AbstractCompiler>*/;
1894 var169 = ((val* (*)(val*, val*))(var168->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var168, var_key) /* [] on <var168:HashMap[String, String]>*/;
1895 ((void (*)(val*, val*))(var_hfile->class->vft[COLOR_stream__OStream__write]))(var_hfile, var169) /* write on <var_hfile:nullable OFStream(OFStream)>*/;
1896 if (varonce170) {
1897 var171 = varonce170;
1898 } else {
1899 var172 = "\n";
1900 var173 = 1;
1901 var174 = string__NativeString__to_s_with_length(var172, var173);
1902 var171 = var174;
1903 varonce170 = var171;
1904 }
1905 ((void (*)(val*, val*))(var_hfile->class->vft[COLOR_stream__OStream__write]))(var_hfile, var171) /* write on <var_hfile:nullable OFStream(OFStream)>*/;
1906 CONTINUE_label175: (void)0;
1907 ((void (*)(val*))(var153->class->vft[COLOR_abstract_collection__Iterator__next]))(var153) /* next on <var153:Iterator[nullable Object]>*/;
1908 }
1909 BREAK_label175: (void)0;
1910 ((void (*)(val*))(var_hfile->class->vft[COLOR_stream__IOS__close]))(var_hfile) /* close on <var_hfile:nullable OFStream(OFStream)>*/;
1911 var176 = NULL;
1912 var_file = var176;
1913 var177 = ((val* (*)(val*))(var_f->class->vft[COLOR_abstract_compiler__CodeFile__writers]))(var_f) /* writers on <var_f:CodeFile>*/;
1914 var178 = ((val* (*)(val*))(var177->class->vft[COLOR_abstract_collection__Collection__iterator]))(var177) /* iterator on <var177:Array[CodeWriter]>*/;
1915 for(;;) {
1916 var179 = ((short int (*)(val*))(var178->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var178) /* is_ok on <var178:Iterator[nullable Object]>*/;
1917 if(!var179) break;
1918 var180 = ((val* (*)(val*))(var178->class->vft[COLOR_abstract_collection__Iterator__item]))(var178) /* item on <var178:Iterator[nullable Object]>*/;
1919 var_vis = var180;
1920 var181 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(var_compiler) /* header on <var_compiler:AbstractCompiler>*/;
1921 var182 = ((short int (*)(val*, val*))(var_vis->class->vft[COLOR_kernel__Object___61d_61d]))(var_vis, var181) /* == on <var_vis:CodeWriter>*/;
1922 if (var182){
1923 goto CONTINUE_label183;
1924 } else {
1925 }
1926 var184 = ((val* (*)(val*))(var_vis->class->vft[COLOR_abstract_compiler__CodeWriter__lines]))(var_vis) /* lines on <var_vis:CodeWriter>*/;
1927 var185 = ((long (*)(val*))(var184->class->vft[COLOR_abstract_collection__Collection__length]))(var184) /* length on <var184:List[String]>*/;
1928 var186 = ((val* (*)(val*))(var_vis->class->vft[COLOR_abstract_compiler__CodeWriter__decl_lines]))(var_vis) /* decl_lines on <var_vis:CodeWriter>*/;
1929 var187 = ((long (*)(val*))(var186->class->vft[COLOR_abstract_collection__Collection__length]))(var186) /* length on <var186:List[String]>*/;
1930 { /* Inline kernel#Int#+ (var185,var187) */
1931 var190 = var185 + var187;
1932 var188 = var190;
1933 goto RET_LABEL189;
1934 RET_LABEL189:(void)0;
1935 }
1936 var_total_lines = var188;
1937 var191 = 0;
1938 { /* Inline kernel#Int#== (var_total_lines,var191) */
1939 var194 = var_total_lines == var191;
1940 var192 = var194;
1941 goto RET_LABEL193;
1942 RET_LABEL193:(void)0;
1943 }
1944 if (var192){
1945 goto CONTINUE_label183;
1946 } else {
1947 }
1948 { /* Inline kernel#Int#+ (var_count,var_total_lines) */
1949 var197 = var_count + var_total_lines;
1950 var195 = var197;
1951 goto RET_LABEL196;
1952 RET_LABEL196:(void)0;
1953 }
1954 var_count = var195;
1955 var199 = NULL;
1956 if (var_file == NULL) {
1957 var200 = 1; /* is null */
1958 } else {
1959 var200 = 0; /* arg is null but recv is not */
1960 }
1961 var_201 = var200;
1962 if (var200){
1963 var198 = var_201;
1964 } else {
1965 var202 = 10000;
1966 { /* Inline kernel#Int#> (var_count,var202) */
1967 /* Covariant cast for argument 0 (i) <var202:Int> isa OTHER */
1968 /* <var202:Int> isa OTHER */
1969 var205 = 1; /* easy <var202:Int> isa OTHER*/
1970 if (!var205) {
1971 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
1972 exit(1);
1973 }
1974 var206 = var_count > var202;
1975 var203 = var206;
1976 goto RET_LABEL204;
1977 RET_LABEL204:(void)0;
1978 }
1979 var198 = var203;
1980 }
1981 if (var198){
1982 var207 = 1;
1983 { /* Inline kernel#Int#+ (var_i,var207) */
1984 var210 = var_i + var207;
1985 var208 = var210;
1986 goto RET_LABEL209;
1987 RET_LABEL209:(void)0;
1988 }
1989 var_i = var208;
1990 var211 = NULL;
1991 if (var_file == NULL) {
1992 var212 = 0; /* is null */
1993 } else {
1994 var212 = 1; /* arg is null and recv is not */
1995 }
1996 if (var212){
1997 ((void (*)(val*))(var_file->class->vft[COLOR_stream__IOS__close]))(var_file) /* close on <var_file:nullable OFStream(OFStream)>*/;
1998 } else {
1999 }
2000 var213 = NEW_array__Array(&type_array__Arraykernel__Object);
2001 var214 = 5;
2002 ((void (*)(val*, long))(var213->class->vft[COLOR_array__Array__with_capacity]))(var213, var214) /* with_capacity on <var213:Array[Object]>*/;
2003 CHECK_NEW_array__Array(var213);
2004 var_215 = var213;
2005 if (varonce216) {
2006 var217 = varonce216;
2007 } else {
2008 var218 = "";
2009 var219 = 0;
2010 var220 = string__NativeString__to_s_with_length(var218, var219);
2011 var217 = var220;
2012 varonce216 = var217;
2013 }
2014 ((void (*)(val*, val*))(var_215->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_215, var217) /* add on <var_215:Array[Object]>*/;
2015 var221 = ((val* (*)(val*))(var_f->class->vft[COLOR_abstract_compiler__CodeFile__name]))(var_f) /* name on <var_f:CodeFile>*/;
2016 ((void (*)(val*, val*))(var_215->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_215, var221) /* add on <var_215:Array[Object]>*/;
2017 if (varonce222) {
2018 var223 = varonce222;
2019 } else {
2020 var224 = ".";
2021 var225 = 1;
2022 var226 = string__NativeString__to_s_with_length(var224, var225);
2023 var223 = var226;
2024 varonce222 = var223;
2025 }
2026 ((void (*)(val*, val*))(var_215->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_215, var223) /* add on <var_215:Array[Object]>*/;
2027 var227 = BOX_kernel__Int(var_i); /* autobox from Int to nullable Object */
2028 ((void (*)(val*, val*))(var_215->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_215, var227) /* add on <var_215:Array[Object]>*/;
2029 if (varonce228) {
2030 var229 = varonce228;
2031 } else {
2032 var230 = ".c";
2033 var231 = 2;
2034 var232 = string__NativeString__to_s_with_length(var230, var231);
2035 var229 = var232;
2036 varonce228 = var229;
2037 }
2038 ((void (*)(val*, val*))(var_215->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_215, var229) /* add on <var_215:Array[Object]>*/;
2039 var233 = ((val* (*)(val*))(var_215->class->vft[COLOR_string__Object__to_s]))(var_215) /* to_s on <var_215:Array[Object]>*/;
2040 var_cfilename = var233;
2041 var234 = NEW_array__Array(&type_array__Arraykernel__Object);
2042 var235 = 5;
2043 ((void (*)(val*, long))(var234->class->vft[COLOR_array__Array__with_capacity]))(var234, var235) /* with_capacity on <var234:Array[Object]>*/;
2044 CHECK_NEW_array__Array(var234);
2045 var_236 = var234;
2046 if (varonce237) {
2047 var238 = varonce237;
2048 } else {
2049 var239 = "";
2050 var240 = 0;
2051 var241 = string__NativeString__to_s_with_length(var239, var240);
2052 var238 = var241;
2053 varonce237 = var238;
2054 }
2055 ((void (*)(val*, val*))(var_236->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_236, var238) /* add on <var_236:Array[Object]>*/;
2056 ((void (*)(val*, val*))(var_236->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_236, var_compile_dir) /* add on <var_236:Array[Object]>*/;
2057 if (varonce242) {
2058 var243 = varonce242;
2059 } else {
2060 var244 = "/";
2061 var245 = 1;
2062 var246 = string__NativeString__to_s_with_length(var244, var245);
2063 var243 = var246;
2064 varonce242 = var243;
2065 }
2066 ((void (*)(val*, val*))(var_236->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_236, var243) /* add on <var_236:Array[Object]>*/;
2067 ((void (*)(val*, val*))(var_236->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_236, var_cfilename) /* add on <var_236:Array[Object]>*/;
2068 if (varonce247) {
2069 var248 = varonce247;
2070 } else {
2071 var249 = "";
2072 var250 = 0;
2073 var251 = string__NativeString__to_s_with_length(var249, var250);
2074 var248 = var251;
2075 varonce247 = var248;
2076 }
2077 ((void (*)(val*, val*))(var_236->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_236, var248) /* add on <var_236:Array[Object]>*/;
2078 var252 = ((val* (*)(val*))(var_236->class->vft[COLOR_string__Object__to_s]))(var_236) /* to_s on <var_236:Array[Object]>*/;
2079 var_cfilepath = var252;
2080 var253 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2081 if (varonce254) {
2082 var255 = varonce254;
2083 } else {
2084 var256 = "new C source files to compile: ";
2085 var257 = 31;
2086 var258 = string__NativeString__to_s_with_length(var256, var257);
2087 var255 = var258;
2088 varonce254 = var255;
2089 }
2090 var259 = NEW_array__Array(&type_array__Arraykernel__Object);
2091 { /* var259 = array_instance Array[Object] */
2092 var260 = 2;
2093 var261 = NEW_array__NativeArray(var260, &type_array__NativeArraykernel__Object);
2094 ((struct instance_array__NativeArray*)var261)->values[0] = (val*) var255;
2095 ((struct instance_array__NativeArray*)var261)->values[1] = (val*) var_cfilepath;
2096 ((void (*)(val*, val*, long))(var259->class->vft[COLOR_array__Array__with_native]))(var259, var261, var260) /* with_native on <var259:Array[Object]>*/;
2097 CHECK_NEW_array__Array(var259);
2098 }
2099 var262 = ((val* (*)(val*))(var259->class->vft[COLOR_string__Object__to_s]))(var259) /* to_s on <var259:Array[Object]>*/;
2100 var263 = 3;
2101 ((void (*)(val*, val*, long))(var253->class->vft[COLOR_toolcontext__ToolContext__info]))(var253, var262, var263) /* info on <var253:ToolContext>*/;
2102 ((void (*)(val*, val*))(var_cfiles->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_cfiles, var_cfilename) /* add on <var_cfiles:Array[String]>*/;
2103 var264 = NEW_file__OFStream(&type_file__OFStream);
2104 ((void (*)(val*, val*))(var264->class->vft[COLOR_file__OFStream__open]))(var264, var_cfilepath) /* open on <var264:OFStream>*/;
2105 CHECK_NEW_file__OFStream(var264);
2106 var_file = var264;
2107 if (varonce265) {
2108 var266 = varonce265;
2109 } else {
2110 var267 = "#include \"";
2111 var268 = 10;
2112 var269 = string__NativeString__to_s_with_length(var267, var268);
2113 var266 = var269;
2114 varonce265 = var266;
2115 }
2116 var270 = ((val* (*)(val*))(var_f->class->vft[COLOR_abstract_compiler__CodeFile__name]))(var_f) /* name on <var_f:CodeFile>*/;
2117 if (varonce271) {
2118 var272 = varonce271;
2119 } else {
2120 var273 = ".0.h\"\n";
2121 var274 = 6;
2122 var275 = string__NativeString__to_s_with_length(var273, var274);
2123 var272 = var275;
2124 varonce271 = var272;
2125 }
2126 var276 = NEW_array__Array(&type_array__Arraykernel__Object);
2127 { /* var276 = array_instance Array[Object] */
2128 var277 = 3;
2129 var278 = NEW_array__NativeArray(var277, &type_array__NativeArraykernel__Object);
2130 ((struct instance_array__NativeArray*)var278)->values[0] = (val*) var266;
2131 ((struct instance_array__NativeArray*)var278)->values[1] = (val*) var270;
2132 ((struct instance_array__NativeArray*)var278)->values[2] = (val*) var272;
2133 ((void (*)(val*, val*, long))(var276->class->vft[COLOR_array__Array__with_native]))(var276, var278, var277) /* with_native on <var276:Array[Object]>*/;
2134 CHECK_NEW_array__Array(var276);
2135 }
2136 var279 = ((val* (*)(val*))(var276->class->vft[COLOR_string__Object__to_s]))(var276) /* to_s on <var276:Array[Object]>*/;
2137 ((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var279) /* write on <var_file:nullable OFStream(OFStream)>*/;
2138 var_count = var_total_lines;
2139 } else {
2140 }
2141 var280 = ((val* (*)(val*))(var_vis->class->vft[COLOR_abstract_compiler__CodeWriter__decl_lines]))(var_vis) /* decl_lines on <var_vis:CodeWriter>*/;
2142 var281 = ((val* (*)(val*))(var280->class->vft[COLOR_abstract_collection__Collection__iterator]))(var280) /* iterator on <var280:List[String]>*/;
2143 for(;;) {
2144 var282 = ((short int (*)(val*))(var281->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var281) /* is_ok on <var281:Iterator[nullable Object]>*/;
2145 if(!var282) break;
2146 var283 = ((val* (*)(val*))(var281->class->vft[COLOR_abstract_collection__Iterator__item]))(var281) /* item on <var281:Iterator[nullable Object]>*/;
2147 var_l284 = var283;
2148 ((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var_l284) /* write on <var_file:nullable OFStream(OFStream)>*/;
2149 if (varonce285) {
2150 var286 = varonce285;
2151 } else {
2152 var287 = "\n";
2153 var288 = 1;
2154 var289 = string__NativeString__to_s_with_length(var287, var288);
2155 var286 = var289;
2156 varonce285 = var286;
2157 }
2158 ((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var286) /* write on <var_file:nullable OFStream(OFStream)>*/;
2159 CONTINUE_label290: (void)0;
2160 ((void (*)(val*))(var281->class->vft[COLOR_abstract_collection__Iterator__next]))(var281) /* next on <var281:Iterator[nullable Object]>*/;
2161 }
2162 BREAK_label290: (void)0;
2163 var291 = ((val* (*)(val*))(var_vis->class->vft[COLOR_abstract_compiler__CodeWriter__lines]))(var_vis) /* lines on <var_vis:CodeWriter>*/;
2164 var292 = ((val* (*)(val*))(var291->class->vft[COLOR_abstract_collection__Collection__iterator]))(var291) /* iterator on <var291:List[String]>*/;
2165 for(;;) {
2166 var293 = ((short int (*)(val*))(var292->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var292) /* is_ok on <var292:Iterator[nullable Object]>*/;
2167 if(!var293) break;
2168 var294 = ((val* (*)(val*))(var292->class->vft[COLOR_abstract_collection__Iterator__item]))(var292) /* item on <var292:Iterator[nullable Object]>*/;
2169 var_l295 = var294;
2170 ((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var_l295) /* write on <var_file:nullable OFStream(OFStream)>*/;
2171 if (varonce296) {
2172 var297 = varonce296;
2173 } else {
2174 var298 = "\n";
2175 var299 = 1;
2176 var300 = string__NativeString__to_s_with_length(var298, var299);
2177 var297 = var300;
2178 varonce296 = var297;
2179 }
2180 ((void (*)(val*, val*))(var_file->class->vft[COLOR_stream__OStream__write]))(var_file, var297) /* write on <var_file:nullable OFStream(OFStream)>*/;
2181 CONTINUE_label301: (void)0;
2182 ((void (*)(val*))(var292->class->vft[COLOR_abstract_collection__Iterator__next]))(var292) /* next on <var292:Iterator[nullable Object]>*/;
2183 }
2184 BREAK_label301: (void)0;
2185 CONTINUE_label183: (void)0;
2186 ((void (*)(val*))(var178->class->vft[COLOR_abstract_collection__Iterator__next]))(var178) /* next on <var178:Iterator[nullable Object]>*/;
2187 }
2188 BREAK_label183: (void)0;
2189 var302 = NULL;
2190 if (var_file == NULL) {
2191 var303 = 0; /* is null */
2192 } else {
2193 var303 = 1; /* arg is null and recv is not */
2194 }
2195 if (var303){
2196 ((void (*)(val*))(var_file->class->vft[COLOR_stream__IOS__close]))(var_file) /* close on <var_file:nullable OFStream(OFStream)>*/;
2197 } else {
2198 }
2199 CONTINUE_label304: (void)0;
2200 ((void (*)(val*))(var97->class->vft[COLOR_abstract_collection__Iterator__next]))(var97) /* next on <var97:Iterator[nullable Object]>*/;
2201 }
2202 BREAK_label304: (void)0;
2203 var305 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2204 if (varonce306) {
2205 var307 = varonce306;
2206 } else {
2207 var308 = "Total C source files to compile: ";
2208 var309 = 33;
2209 var310 = string__NativeString__to_s_with_length(var308, var309);
2210 var307 = var310;
2211 varonce306 = var307;
2212 }
2213 var311 = ((long (*)(val*))(var_cfiles->class->vft[COLOR_abstract_collection__Collection__length]))(var_cfiles) /* length on <var_cfiles:Array[String]>*/;
2214 var312 = NEW_array__Array(&type_array__Arraykernel__Object);
2215 { /* var312 = array_instance Array[Object] */
2216 var313 = 2;
2217 var314 = NEW_array__NativeArray(var313, &type_array__NativeArraykernel__Object);
2218 ((struct instance_array__NativeArray*)var314)->values[0] = (val*) var307;
2219 var315 = BOX_kernel__Int(var311); /* autobox from Int to Object */
2220 ((struct instance_array__NativeArray*)var314)->values[1] = (val*) var315;
2221 ((void (*)(val*, val*, long))(var312->class->vft[COLOR_array__Array__with_native]))(var312, var314, var313) /* with_native on <var312:Array[Object]>*/;
2222 CHECK_NEW_array__Array(var312);
2223 }
2224 var316 = ((val* (*)(val*))(var312->class->vft[COLOR_string__Object__to_s]))(var312) /* to_s on <var312:Array[Object]>*/;
2225 var317 = 2;
2226 ((void (*)(val*, val*, long))(var305->class->vft[COLOR_toolcontext__ToolContext__info]))(var305, var316, var317) /* info on <var305:ToolContext>*/;
2227 var318 = NEW_array__Array(&type_array__Arraykernel__Object);
2228 var319 = 3;
2229 ((void (*)(val*, long))(var318->class->vft[COLOR_array__Array__with_capacity]))(var318, var319) /* with_capacity on <var318:Array[Object]>*/;
2230 CHECK_NEW_array__Array(var318);
2231 var_320 = var318;
2232 if (varonce321) {
2233 var322 = varonce321;
2234 } else {
2235 var323 = "";
2236 var324 = 0;
2237 var325 = string__NativeString__to_s_with_length(var323, var324);
2238 var322 = var325;
2239 varonce321 = var322;
2240 }
2241 ((void (*)(val*, val*))(var_320->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_320, var322) /* add on <var_320:Array[Object]>*/;
2242 var326 = ((val* (*)(val*))(var_mainmodule->class->vft[COLOR_model_base__MModule__name]))(var_mainmodule) /* name on <var_mainmodule:MModule>*/;
2243 ((void (*)(val*, val*))(var_320->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_320, var326) /* add on <var_320:Array[Object]>*/;
2244 if (varonce327) {
2245 var328 = varonce327;
2246 } else {
2247 var329 = ".mk";
2248 var330 = 3;
2249 var331 = string__NativeString__to_s_with_length(var329, var330);
2250 var328 = var331;
2251 varonce327 = var328;
2252 }
2253 ((void (*)(val*, val*))(var_320->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_320, var328) /* add on <var_320:Array[Object]>*/;
2254 var332 = ((val* (*)(val*))(var_320->class->vft[COLOR_string__Object__to_s]))(var_320) /* to_s on <var_320:Array[Object]>*/;
2255 var_makename = var332;
2256 var333 = NEW_array__Array(&type_array__Arraykernel__Object);
2257 var334 = 5;
2258 ((void (*)(val*, long))(var333->class->vft[COLOR_array__Array__with_capacity]))(var333, var334) /* with_capacity on <var333:Array[Object]>*/;
2259 CHECK_NEW_array__Array(var333);
2260 var_335 = var333;
2261 if (varonce336) {
2262 var337 = varonce336;
2263 } else {
2264 var338 = "";
2265 var339 = 0;
2266 var340 = string__NativeString__to_s_with_length(var338, var339);
2267 var337 = var340;
2268 varonce336 = var337;
2269 }
2270 ((void (*)(val*, val*))(var_335->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_335, var337) /* add on <var_335:Array[Object]>*/;
2271 ((void (*)(val*, val*))(var_335->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_335, var_compile_dir) /* add on <var_335:Array[Object]>*/;
2272 if (varonce341) {
2273 var342 = varonce341;
2274 } else {
2275 var343 = "/";
2276 var344 = 1;
2277 var345 = string__NativeString__to_s_with_length(var343, var344);
2278 var342 = var345;
2279 varonce341 = var342;
2280 }
2281 ((void (*)(val*, val*))(var_335->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_335, var342) /* add on <var_335:Array[Object]>*/;
2282 ((void (*)(val*, val*))(var_335->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_335, var_makename) /* add on <var_335:Array[Object]>*/;
2283 if (varonce346) {
2284 var347 = varonce346;
2285 } else {
2286 var348 = "";
2287 var349 = 0;
2288 var350 = string__NativeString__to_s_with_length(var348, var349);
2289 var347 = var350;
2290 varonce346 = var347;
2291 }
2292 ((void (*)(val*, val*))(var_335->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_335, var347) /* add on <var_335:Array[Object]>*/;
2293 var351 = ((val* (*)(val*))(var_335->class->vft[COLOR_string__Object__to_s]))(var_335) /* to_s on <var_335:Array[Object]>*/;
2294 var_makepath = var351;
2295 var352 = NEW_file__OFStream(&type_file__OFStream);
2296 ((void (*)(val*, val*))(var352->class->vft[COLOR_file__OFStream__open]))(var352, var_makepath) /* open on <var352:OFStream>*/;
2297 CHECK_NEW_file__OFStream(var352);
2298 var_makefile = var352;
2299 if (varonce353) {
2300 var354 = varonce353;
2301 } else {
2302 var355 = "";
2303 var356 = 0;
2304 var357 = string__NativeString__to_s_with_length(var355, var356);
2305 var354 = var357;
2306 varonce353 = var354;
2307 }
2308 var_cc_includes = var354;
2309 var358 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ModelBuilder__cc_paths]))(self) /* cc_paths on <self:ModelBuilder>*/;
2310 var359 = ((val* (*)(val*))(var358->class->vft[COLOR_abstract_collection__Collection__iterator]))(var358) /* iterator on <var358:Array[String]>*/;
2311 for(;;) {
2312 var360 = ((short int (*)(val*))(var359->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var359) /* is_ok on <var359:Iterator[nullable Object]>*/;
2313 if(!var360) break;
2314 var361 = ((val* (*)(val*))(var359->class->vft[COLOR_abstract_collection__Iterator__item]))(var359) /* item on <var359:Iterator[nullable Object]>*/;
2315 var_p = var361;
2316 var362 = ((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>*/;
2317 var363 = ((val* (*)(val*))(var362->class->vft[COLOR_file__String__simplify_path]))(var362) /* simplify_path on <var362:String>*/;
2318 var_p = var363;
2319 if (varonce364) {
2320 var365 = varonce364;
2321 } else {
2322 var366 = " -I \"";
2323 var367 = 5;
2324 var368 = string__NativeString__to_s_with_length(var366, var367);
2325 var365 = var368;
2326 varonce364 = var365;
2327 }
2328 var369 = ((val* (*)(val*, val*))(var365->class->vft[COLOR_string__String___43d]))(var365, var_p) /* + on <var365:String>*/;
2329 if (varonce370) {
2330 var371 = varonce370;
2331 } else {
2332 var372 = "\"";
2333 var373 = 1;
2334 var374 = string__NativeString__to_s_with_length(var372, var373);
2335 var371 = var374;
2336 varonce370 = var371;
2337 }
2338 var375 = ((val* (*)(val*, val*))(var369->class->vft[COLOR_string__String___43d]))(var369, var371) /* + on <var369:String>*/;
2339 var376 = ((val* (*)(val*, val*))(var_cc_includes->class->vft[COLOR_string__String___43d]))(var_cc_includes, var375) /* + on <var_cc_includes:String>*/;
2340 var_cc_includes = var376;
2341 CONTINUE_label377: (void)0;
2342 ((void (*)(val*))(var359->class->vft[COLOR_abstract_collection__Iterator__next]))(var359) /* next on <var359:Iterator[nullable Object]>*/;
2343 }
2344 BREAK_label377: (void)0;
2345 if (varonce378) {
2346 var379 = varonce378;
2347 } else {
2348 var380 = "CC = ccache cc\nCFLAGS = -g -O2\nCINCL = ";
2349 var381 = 39;
2350 var382 = string__NativeString__to_s_with_length(var380, var381);
2351 var379 = var382;
2352 varonce378 = var379;
2353 }
2354 if (varonce383) {
2355 var384 = varonce383;
2356 } else {
2357 var385 = "\nLDFLAGS ?= \nLDLIBS ?= -lm -lgc\n\n";
2358 var386 = 34;
2359 var387 = string__NativeString__to_s_with_length(var385, var386);
2360 var384 = var387;
2361 varonce383 = var384;
2362 }
2363 var388 = NEW_array__Array(&type_array__Arraykernel__Object);
2364 { /* var388 = array_instance Array[Object] */
2365 var389 = 3;
2366 var390 = NEW_array__NativeArray(var389, &type_array__NativeArraykernel__Object);
2367 ((struct instance_array__NativeArray*)var390)->values[0] = (val*) var379;
2368 ((struct instance_array__NativeArray*)var390)->values[1] = (val*) var_cc_includes;
2369 ((struct instance_array__NativeArray*)var390)->values[2] = (val*) var384;
2370 ((void (*)(val*, val*, long))(var388->class->vft[COLOR_array__Array__with_native]))(var388, var390, var389) /* with_native on <var388:Array[Object]>*/;
2371 CHECK_NEW_array__Array(var388);
2372 }
2373 var391 = ((val* (*)(val*))(var388->class->vft[COLOR_string__Object__to_s]))(var388) /* to_s on <var388:Array[Object]>*/;
2374 ((void (*)(val*, val*))(var_makefile->class->vft[COLOR_stream__OStream__write]))(var_makefile, var391) /* write on <var_makefile:OFStream>*/;
2375 if (varonce392) {
2376 var393 = varonce392;
2377 } else {
2378 var394 = "all: ";
2379 var395 = 5;
2380 var396 = string__NativeString__to_s_with_length(var394, var395);
2381 var393 = var396;
2382 varonce392 = var393;
2383 }
2384 if (varonce397) {
2385 var398 = varonce397;
2386 } else {
2387 var399 = "\n\n";
2388 var400 = 2;
2389 var401 = string__NativeString__to_s_with_length(var399, var400);
2390 var398 = var401;
2391 varonce397 = var398;
2392 }
2393 var402 = NEW_array__Array(&type_array__Arraykernel__Object);
2394 { /* var402 = array_instance Array[Object] */
2395 var403 = 3;
2396 var404 = NEW_array__NativeArray(var403, &type_array__NativeArraykernel__Object);
2397 ((struct instance_array__NativeArray*)var404)->values[0] = (val*) var393;
2398 ((struct instance_array__NativeArray*)var404)->values[1] = (val*) var_outpath;
2399 ((struct instance_array__NativeArray*)var404)->values[2] = (val*) var398;
2400 ((void (*)(val*, val*, long))(var402->class->vft[COLOR_array__Array__with_native]))(var402, var404, var403) /* with_native on <var402:Array[Object]>*/;
2401 CHECK_NEW_array__Array(var402);
2402 }
2403 var405 = ((val* (*)(val*))(var402->class->vft[COLOR_string__Object__to_s]))(var402) /* to_s on <var402:Array[Object]>*/;
2404 ((void (*)(val*, val*))(var_makefile->class->vft[COLOR_stream__OStream__write]))(var_makefile, var405) /* write on <var_makefile:OFStream>*/;
2405 var406 = NEW_array__Array(&type_array__Arraystring__String);
2406 ((void (*)(val*))(var406->class->vft[COLOR_array__Array__init]))(var406) /* init on <var406:Array[String]>*/;
2407 CHECK_NEW_array__Array(var406);
2408 var_ofiles = var406;
2409 var407 = ((val* (*)(val*))(var_cfiles->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_cfiles) /* iterator on <var_cfiles:Array[String]>*/;
2410 for(;;) {
2411 var408 = ((short int (*)(val*))(var407->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var407) /* is_ok on <var407:Iterator[nullable Object]>*/;
2412 if(!var408) break;
2413 var409 = ((val* (*)(val*))(var407->class->vft[COLOR_abstract_collection__Iterator__item]))(var407) /* item on <var407:Iterator[nullable Object]>*/;
2414 var_f410 = var409;
2415 if (varonce411) {
2416 var412 = varonce411;
2417 } else {
2418 var413 = ".c";
2419 var414 = 2;
2420 var415 = string__NativeString__to_s_with_length(var413, var414);
2421 var412 = var415;
2422 varonce411 = var412;
2423 }
2424 var416 = ((val* (*)(val*, val*))(var_f410->class->vft[COLOR_file__String__strip_extension]))(var_f410, var412) /* strip_extension on <var_f410:String>*/;
2425 if (varonce417) {
2426 var418 = varonce417;
2427 } else {
2428 var419 = ".o";
2429 var420 = 2;
2430 var421 = string__NativeString__to_s_with_length(var419, var420);
2431 var418 = var421;
2432 varonce417 = var418;
2433 }
2434 var422 = ((val* (*)(val*, val*))(var416->class->vft[COLOR_string__String___43d]))(var416, var418) /* + on <var416:String>*/;
2435 var_o = var422;
2436 if (varonce423) {
2437 var424 = varonce423;
2438 } else {
2439 var425 = ": ";
2440 var426 = 2;
2441 var427 = string__NativeString__to_s_with_length(var425, var426);
2442 var424 = var427;
2443 varonce423 = var424;
2444 }
2445 if (varonce428) {
2446 var429 = varonce428;
2447 } else {
2448 var430 = "\n\11$(CC) $(CFLAGS) $(CINCL) -D NONITCNI -c -o ";
2449 var431 = 45;
2450 var432 = string__NativeString__to_s_with_length(var430, var431);
2451 var429 = var432;
2452 varonce428 = var429;
2453 }
2454 if (varonce433) {
2455 var434 = varonce433;
2456 } else {
2457 var435 = " ";
2458 var436 = 1;
2459 var437 = string__NativeString__to_s_with_length(var435, var436);
2460 var434 = var437;
2461 varonce433 = var434;
2462 }
2463 if (varonce438) {
2464 var439 = varonce438;
2465 } else {
2466 var440 = "\n\n";
2467 var441 = 2;
2468 var442 = string__NativeString__to_s_with_length(var440, var441);
2469 var439 = var442;
2470 varonce438 = var439;
2471 }
2472 var443 = NEW_array__Array(&type_array__Arraykernel__Object);
2473 { /* var443 = array_instance Array[Object] */
2474 var444 = 8;
2475 var445 = NEW_array__NativeArray(var444, &type_array__NativeArraykernel__Object);
2476 ((struct instance_array__NativeArray*)var445)->values[0] = (val*) var_o;
2477 ((struct instance_array__NativeArray*)var445)->values[1] = (val*) var424;
2478 ((struct instance_array__NativeArray*)var445)->values[2] = (val*) var_f410;
2479 ((struct instance_array__NativeArray*)var445)->values[3] = (val*) var429;
2480 ((struct instance_array__NativeArray*)var445)->values[4] = (val*) var_o;
2481 ((struct instance_array__NativeArray*)var445)->values[5] = (val*) var434;
2482 ((struct instance_array__NativeArray*)var445)->values[6] = (val*) var_f410;
2483 ((struct instance_array__NativeArray*)var445)->values[7] = (val*) var439;
2484 ((void (*)(val*, val*, long))(var443->class->vft[COLOR_array__Array__with_native]))(var443, var445, var444) /* with_native on <var443:Array[Object]>*/;
2485 CHECK_NEW_array__Array(var443);
2486 }
2487 var446 = ((val* (*)(val*))(var443->class->vft[COLOR_string__Object__to_s]))(var443) /* to_s on <var443:Array[Object]>*/;
2488 ((void (*)(val*, val*))(var_makefile->class->vft[COLOR_stream__OStream__write]))(var_makefile, var446) /* write on <var_makefile:OFStream>*/;
2489 ((void (*)(val*, val*))(var_ofiles->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_ofiles, var_o) /* add on <var_ofiles:Array[String]>*/;
2490 CONTINUE_label447: (void)0;
2491 ((void (*)(val*))(var407->class->vft[COLOR_abstract_collection__Iterator__next]))(var407) /* next on <var407:Iterator[nullable Object]>*/;
2492 }
2493 BREAK_label447: (void)0;
2494 var448 = NEW_abstract_compiler__ExternCFile(&type_abstract_compiler__ExternCFile);
2495 var449 = NEW_array__Array(&type_array__Arraykernel__Object);
2496 var450 = 3;
2497 ((void (*)(val*, long))(var449->class->vft[COLOR_array__Array__with_capacity]))(var449, var450) /* with_capacity on <var449:Array[Object]>*/;
2498 CHECK_NEW_array__Array(var449);
2499 var_451 = var449;
2500 if (varonce452) {
2501 var453 = varonce452;
2502 } else {
2503 var454 = "";
2504 var455 = 0;
2505 var456 = string__NativeString__to_s_with_length(var454, var455);
2506 var453 = var456;
2507 varonce452 = var453;
2508 }
2509 ((void (*)(val*, val*))(var_451->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_451, var453) /* add on <var_451:Array[Object]>*/;
2510 var457 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__ModelBuilder__cc_paths]))(self) /* cc_paths on <self:ModelBuilder>*/;
2511 var458 = ((val* (*)(val*))(var457->class->vft[COLOR_abstract_collection__Collection__first]))(var457) /* first on <var457:Array[String]>*/;
2512 ((void (*)(val*, val*))(var_451->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_451, var458) /* add on <var_451:Array[Object]>*/;
2513 if (varonce459) {
2514 var460 = varonce459;
2515 } else {
2516 var461 = "/gc_chooser.c";
2517 var462 = 13;
2518 var463 = string__NativeString__to_s_with_length(var461, var462);
2519 var460 = var463;
2520 varonce459 = var460;
2521 }
2522 ((void (*)(val*, val*))(var_451->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_451, var460) /* add on <var_451:Array[Object]>*/;
2523 var464 = ((val* (*)(val*))(var_451->class->vft[COLOR_string__Object__to_s]))(var_451) /* to_s on <var_451:Array[Object]>*/;
2524 if (varonce465) {
2525 var466 = varonce465;
2526 } else {
2527 var467 = "-DWITH_LIBGC";
2528 var468 = 12;
2529 var469 = string__NativeString__to_s_with_length(var467, var468);
2530 var466 = var469;
2531 varonce465 = var466;
2532 }
2533 ((void (*)(val*, val*, val*))(var448->class->vft[COLOR_abstract_compiler__ExternCFile__init]))(var448, var464, var466) /* init on <var448:ExternCFile>*/;
2534 CHECK_NEW_abstract_compiler__ExternCFile(var448);
2535 var_gc_chooser = var448;
2536 var470 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__extern_bodies]))(var_compiler) /* extern_bodies on <var_compiler:AbstractCompiler>*/;
2537 ((void (*)(val*, val*))(var470->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var470, var_gc_chooser) /* add on <var470:Array[ExternCFile]>*/;
2538 var471 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__extern_bodies]))(var_compiler) /* extern_bodies on <var_compiler:AbstractCompiler>*/;
2539 var472 = ((val* (*)(val*))(var471->class->vft[COLOR_abstract_collection__Collection__iterator]))(var471) /* iterator on <var471:Array[ExternCFile]>*/;
2540 for(;;) {
2541 var473 = ((short int (*)(val*))(var472->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var472) /* is_ok on <var472:Iterator[nullable Object]>*/;
2542 if(!var473) break;
2543 var474 = ((val* (*)(val*))(var472->class->vft[COLOR_abstract_collection__Iterator__item]))(var472) /* item on <var472:Iterator[nullable Object]>*/;
2544 var_f475 = var474;
2545 var476 = ((val* (*)(val*))(var_f475->class->vft[COLOR_abstract_compiler__ExternCFile__filename]))(var_f475) /* filename on <var_f475:ExternCFile>*/;
2546 if (varonce477) {
2547 var478 = varonce477;
2548 } else {
2549 var479 = ".c";
2550 var480 = 2;
2551 var481 = string__NativeString__to_s_with_length(var479, var480);
2552 var478 = var481;
2553 varonce477 = var478;
2554 }
2555 var482 = ((val* (*)(val*, val*))(var476->class->vft[COLOR_file__String__basename]))(var476, var478) /* basename on <var476:String>*/;
2556 var_basename = var482;
2557 var483 = NEW_array__Array(&type_array__Arraykernel__Object);
2558 var484 = 3;
2559 ((void (*)(val*, long))(var483->class->vft[COLOR_array__Array__with_capacity]))(var483, var484) /* with_capacity on <var483:Array[Object]>*/;
2560 CHECK_NEW_array__Array(var483);
2561 var_485 = var483;
2562 if (varonce486) {
2563 var487 = varonce486;
2564 } else {
2565 var488 = "";
2566 var489 = 0;
2567 var490 = string__NativeString__to_s_with_length(var488, var489);
2568 var487 = var490;
2569 varonce486 = var487;
2570 }
2571 ((void (*)(val*, val*))(var_485->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_485, var487) /* add on <var_485:Array[Object]>*/;
2572 ((void (*)(val*, val*))(var_485->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_485, var_basename) /* add on <var_485:Array[Object]>*/;
2573 if (varonce491) {
2574 var492 = varonce491;
2575 } else {
2576 var493 = ".extern.o";
2577 var494 = 9;
2578 var495 = string__NativeString__to_s_with_length(var493, var494);
2579 var492 = var495;
2580 varonce491 = var492;
2581 }
2582 ((void (*)(val*, val*))(var_485->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_485, var492) /* add on <var_485:Array[Object]>*/;
2583 var496 = ((val* (*)(val*))(var_485->class->vft[COLOR_string__Object__to_s]))(var_485) /* to_s on <var_485:Array[Object]>*/;
2584 var_o497 = var496;
2585 var498 = ((val* (*)(val*))(var_f475->class->vft[COLOR_abstract_compiler__ExternCFile__filename]))(var_f475) /* filename on <var_f475:ExternCFile>*/;
2586 var499 = ((val* (*)(val*, val*))(var_orig_dir->class->vft[COLOR_file__String__join_path]))(var_orig_dir, var498) /* join_path on <var_orig_dir:String>*/;
2587 var500 = ((val* (*)(val*))(var499->class->vft[COLOR_file__String__simplify_path]))(var499) /* simplify_path on <var499:String>*/;
2588 var_ff = var500;
2589 if (varonce501) {
2590 var502 = varonce501;
2591 } else {
2592 var503 = ": ";
2593 var504 = 2;
2594 var505 = string__NativeString__to_s_with_length(var503, var504);
2595 var502 = var505;
2596 varonce501 = var502;
2597 }
2598 if (varonce506) {
2599 var507 = varonce506;
2600 } else {
2601 var508 = "\n\11$(CC) $(CFLAGS) -D NONITCNI ";
2602 var509 = 30;
2603 var510 = string__NativeString__to_s_with_length(var508, var509);
2604 var507 = var510;
2605 varonce506 = var507;
2606 }
2607 var511 = ((val* (*)(val*))(var_f475->class->vft[COLOR_abstract_compiler__ExternCFile__cflags]))(var_f475) /* cflags on <var_f475:ExternCFile>*/;
2608 if (varonce512) {
2609 var513 = varonce512;
2610 } else {
2611 var514 = " -c -o ";
2612 var515 = 7;
2613 var516 = string__NativeString__to_s_with_length(var514, var515);
2614 var513 = var516;
2615 varonce512 = var513;
2616 }
2617 if (varonce517) {
2618 var518 = varonce517;
2619 } else {
2620 var519 = " ";
2621 var520 = 1;
2622 var521 = string__NativeString__to_s_with_length(var519, var520);
2623 var518 = var521;
2624 varonce517 = var518;
2625 }
2626 if (varonce522) {
2627 var523 = varonce522;
2628 } else {
2629 var524 = "\n\n";
2630 var525 = 2;
2631 var526 = string__NativeString__to_s_with_length(var524, var525);
2632 var523 = var526;
2633 varonce522 = var523;
2634 }
2635 var527 = NEW_array__Array(&type_array__Arraykernel__Object);
2636 { /* var527 = array_instance Array[Object] */
2637 var528 = 10;
2638 var529 = NEW_array__NativeArray(var528, &type_array__NativeArraykernel__Object);
2639 ((struct instance_array__NativeArray*)var529)->values[0] = (val*) var_o497;
2640 ((struct instance_array__NativeArray*)var529)->values[1] = (val*) var502;
2641 ((struct instance_array__NativeArray*)var529)->values[2] = (val*) var_ff;
2642 ((struct instance_array__NativeArray*)var529)->values[3] = (val*) var507;
2643 ((struct instance_array__NativeArray*)var529)->values[4] = (val*) var511;
2644 ((struct instance_array__NativeArray*)var529)->values[5] = (val*) var513;
2645 ((struct instance_array__NativeArray*)var529)->values[6] = (val*) var_o497;
2646 ((struct instance_array__NativeArray*)var529)->values[7] = (val*) var518;
2647 ((struct instance_array__NativeArray*)var529)->values[8] = (val*) var_ff;
2648 ((struct instance_array__NativeArray*)var529)->values[9] = (val*) var523;
2649 ((void (*)(val*, val*, long))(var527->class->vft[COLOR_array__Array__with_native]))(var527, var529, var528) /* with_native on <var527:Array[Object]>*/;
2650 CHECK_NEW_array__Array(var527);
2651 }
2652 var530 = ((val* (*)(val*))(var527->class->vft[COLOR_string__Object__to_s]))(var527) /* to_s on <var527:Array[Object]>*/;
2653 ((void (*)(val*, val*))(var_makefile->class->vft[COLOR_stream__OStream__write]))(var_makefile, var530) /* write on <var_makefile:OFStream>*/;
2654 ((void (*)(val*, val*))(var_ofiles->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_ofiles, var_o497) /* add on <var_ofiles:Array[String]>*/;
2655 CONTINUE_label531: (void)0;
2656 ((void (*)(val*))(var472->class->vft[COLOR_abstract_collection__Iterator__next]))(var472) /* next on <var472:Iterator[nullable Object]>*/;
2657 }
2658 BREAK_label531: (void)0;
2659 if (varonce532) {
2660 var533 = varonce532;
2661 } else {
2662 var534 = ": ";
2663 var535 = 2;
2664 var536 = string__NativeString__to_s_with_length(var534, var535);
2665 var533 = var536;
2666 varonce532 = var533;
2667 }
2668 if (varonce537) {
2669 var538 = varonce537;
2670 } else {
2671 var539 = " ";
2672 var540 = 1;
2673 var541 = string__NativeString__to_s_with_length(var539, var540);
2674 var538 = var541;
2675 varonce537 = var538;
2676 }
2677 var542 = ((val* (*)(val*, val*))(var_ofiles->class->vft[COLOR_string__Collection__join]))(var_ofiles, var538) /* join on <var_ofiles:Array[String]>*/;
2678 if (varonce543) {
2679 var544 = varonce543;
2680 } else {
2681 var545 = "\n\11$(CC) $(LDFLAGS) -o ";
2682 var546 = 22;
2683 var547 = string__NativeString__to_s_with_length(var545, var546);
2684 var544 = var547;
2685 varonce543 = var544;
2686 }
2687 if (varonce548) {
2688 var549 = varonce548;
2689 } else {
2690 var550 = " ";
2691 var551 = 1;
2692 var552 = string__NativeString__to_s_with_length(var550, var551);
2693 var549 = var552;
2694 varonce548 = var549;
2695 }
2696 if (varonce553) {
2697 var554 = varonce553;
2698 } else {
2699 var555 = " ";
2700 var556 = 1;
2701 var557 = string__NativeString__to_s_with_length(var555, var556);
2702 var554 = var557;
2703 varonce553 = var554;
2704 }
2705 var558 = ((val* (*)(val*, val*))(var_ofiles->class->vft[COLOR_string__Collection__join]))(var_ofiles, var554) /* join on <var_ofiles:Array[String]>*/;
2706 if (varonce559) {
2707 var560 = varonce559;
2708 } else {
2709 var561 = " $(LDLIBS)\n\n";
2710 var562 = 12;
2711 var563 = string__NativeString__to_s_with_length(var561, var562);
2712 var560 = var563;
2713 varonce559 = var560;
2714 }
2715 var564 = NEW_array__Array(&type_array__Arraykernel__Object);
2716 { /* var564 = array_instance Array[Object] */
2717 var565 = 8;
2718 var566 = NEW_array__NativeArray(var565, &type_array__NativeArraykernel__Object);
2719 ((struct instance_array__NativeArray*)var566)->values[0] = (val*) var_outpath;
2720 ((struct instance_array__NativeArray*)var566)->values[1] = (val*) var533;
2721 ((struct instance_array__NativeArray*)var566)->values[2] = (val*) var542;
2722 ((struct instance_array__NativeArray*)var566)->values[3] = (val*) var544;
2723 ((struct instance_array__NativeArray*)var566)->values[4] = (val*) var_outpath;
2724 ((struct instance_array__NativeArray*)var566)->values[5] = (val*) var549;
2725 ((struct instance_array__NativeArray*)var566)->values[6] = (val*) var558;
2726 ((struct instance_array__NativeArray*)var566)->values[7] = (val*) var560;
2727 ((void (*)(val*, val*, long))(var564->class->vft[COLOR_array__Array__with_native]))(var564, var566, var565) /* with_native on <var564:Array[Object]>*/;
2728 CHECK_NEW_array__Array(var564);
2729 }
2730 var567 = ((val* (*)(val*))(var564->class->vft[COLOR_string__Object__to_s]))(var564) /* to_s on <var564:Array[Object]>*/;
2731 ((void (*)(val*, val*))(var_makefile->class->vft[COLOR_stream__OStream__write]))(var_makefile, var567) /* write on <var_makefile:OFStream>*/;
2732 if (varonce568) {
2733 var569 = varonce568;
2734 } else {
2735 var570 = "clean:\n\11rm ";
2736 var571 = 11;
2737 var572 = string__NativeString__to_s_with_length(var570, var571);
2738 var569 = var572;
2739 varonce568 = var569;
2740 }
2741 if (varonce573) {
2742 var574 = varonce573;
2743 } else {
2744 var575 = " ";
2745 var576 = 1;
2746 var577 = string__NativeString__to_s_with_length(var575, var576);
2747 var574 = var577;
2748 varonce573 = var574;
2749 }
2750 var578 = ((val* (*)(val*, val*))(var_ofiles->class->vft[COLOR_string__Collection__join]))(var_ofiles, var574) /* join on <var_ofiles:Array[String]>*/;
2751 if (varonce579) {
2752 var580 = varonce579;
2753 } else {
2754 var581 = " 2>/dev/null\n\n";
2755 var582 = 14;
2756 var583 = string__NativeString__to_s_with_length(var581, var582);
2757 var580 = var583;
2758 varonce579 = var580;
2759 }
2760 var584 = NEW_array__Array(&type_array__Arraykernel__Object);
2761 { /* var584 = array_instance Array[Object] */
2762 var585 = 3;
2763 var586 = NEW_array__NativeArray(var585, &type_array__NativeArraykernel__Object);
2764 ((struct instance_array__NativeArray*)var586)->values[0] = (val*) var569;
2765 ((struct instance_array__NativeArray*)var586)->values[1] = (val*) var578;
2766 ((struct instance_array__NativeArray*)var586)->values[2] = (val*) var580;
2767 ((void (*)(val*, val*, long))(var584->class->vft[COLOR_array__Array__with_native]))(var584, var586, var585) /* with_native on <var584:Array[Object]>*/;
2768 CHECK_NEW_array__Array(var584);
2769 }
2770 var587 = ((val* (*)(val*))(var584->class->vft[COLOR_string__Object__to_s]))(var584) /* to_s on <var584:Array[Object]>*/;
2771 ((void (*)(val*, val*))(var_makefile->class->vft[COLOR_stream__OStream__write]))(var_makefile, var587) /* write on <var_makefile:OFStream>*/;
2772 ((void (*)(val*))(var_makefile->class->vft[COLOR_stream__IOS__close]))(var_makefile) /* close on <var_makefile:OFStream>*/;
2773 var588 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2774 if (varonce589) {
2775 var590 = varonce589;
2776 } else {
2777 var591 = "Generated makefile: ";
2778 var592 = 20;
2779 var593 = string__NativeString__to_s_with_length(var591, var592);
2780 var590 = var593;
2781 varonce589 = var590;
2782 }
2783 var594 = NEW_array__Array(&type_array__Arraykernel__Object);
2784 { /* var594 = array_instance Array[Object] */
2785 var595 = 2;
2786 var596 = NEW_array__NativeArray(var595, &type_array__NativeArraykernel__Object);
2787 ((struct instance_array__NativeArray*)var596)->values[0] = (val*) var590;
2788 ((struct instance_array__NativeArray*)var596)->values[1] = (val*) var_makepath;
2789 ((void (*)(val*, val*, long))(var594->class->vft[COLOR_array__Array__with_native]))(var594, var596, var595) /* with_native on <var594:Array[Object]>*/;
2790 CHECK_NEW_array__Array(var594);
2791 }
2792 var597 = ((val* (*)(val*))(var594->class->vft[COLOR_string__Object__to_s]))(var594) /* to_s on <var594:Array[Object]>*/;
2793 var598 = 2;
2794 ((void (*)(val*, val*, long))(var588->class->vft[COLOR_toolcontext__ToolContext__info]))(var588, var597, var598) /* info on <var588:ToolContext>*/;
2795 var599 = ((long (*)(val*))(self->class->vft[COLOR_time__Object__get_time]))(self) /* get_time on <self:ModelBuilder>*/;
2796 var_time1 = var599;
2797 var600 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2798 if (varonce601) {
2799 var602 = varonce601;
2800 } else {
2801 var603 = "*** END WRITING C: ";
2802 var604 = 19;
2803 var605 = string__NativeString__to_s_with_length(var603, var604);
2804 var602 = var605;
2805 varonce601 = var602;
2806 }
2807 { /* Inline kernel#Int#- (var_time1,var_time0) */
2808 var608 = var_time1 - var_time0;
2809 var606 = var608;
2810 goto RET_LABEL607;
2811 RET_LABEL607:(void)0;
2812 }
2813 if (varonce609) {
2814 var610 = varonce609;
2815 } else {
2816 var611 = " ***";
2817 var612 = 4;
2818 var613 = string__NativeString__to_s_with_length(var611, var612);
2819 var610 = var613;
2820 varonce609 = var610;
2821 }
2822 var614 = NEW_array__Array(&type_array__Arraykernel__Object);
2823 { /* var614 = array_instance Array[Object] */
2824 var615 = 3;
2825 var616 = NEW_array__NativeArray(var615, &type_array__NativeArraykernel__Object);
2826 ((struct instance_array__NativeArray*)var616)->values[0] = (val*) var602;
2827 var617 = BOX_kernel__Int(var606); /* autobox from Int to Object */
2828 ((struct instance_array__NativeArray*)var616)->values[1] = (val*) var617;
2829 ((struct instance_array__NativeArray*)var616)->values[2] = (val*) var610;
2830 ((void (*)(val*, val*, long))(var614->class->vft[COLOR_array__Array__with_native]))(var614, var616, var615) /* with_native on <var614:Array[Object]>*/;
2831 CHECK_NEW_array__Array(var614);
2832 }
2833 var618 = ((val* (*)(val*))(var614->class->vft[COLOR_string__Object__to_s]))(var614) /* to_s on <var614:Array[Object]>*/;
2834 var619 = 2;
2835 ((void (*)(val*, val*, long))(var600->class->vft[COLOR_toolcontext__ToolContext__info]))(var600, var618, var619) /* info on <var600:ToolContext>*/;
2836 var620 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2837 var621 = ((val* (*)(val*))(var620->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_cc]))(var620) /* opt_no_cc on <var620:ToolContext>*/;
2838 var622 = ((val* (*)(val*))(var621->class->vft[COLOR_opts__Option__value]))(var621) /* value on <var621:OptionBool>*/;
2839 var623 = ((struct instance_kernel__Bool*)var622)->value; /* autounbox from nullable Object to Bool */;
2840 if (var623){
2841 goto RET_LABEL;
2842 } else {
2843 }
2844 var_time0 = var_time1;
2845 var624 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2846 if (varonce625) {
2847 var626 = varonce625;
2848 } else {
2849 var627 = "*** COMPILING C ***";
2850 var628 = 19;
2851 var629 = string__NativeString__to_s_with_length(var627, var628);
2852 var626 = var629;
2853 varonce625 = var626;
2854 }
2855 var630 = 1;
2856 ((void (*)(val*, val*, long))(var624->class->vft[COLOR_toolcontext__ToolContext__info]))(var624, var626, var630) /* info on <var624:ToolContext>*/;
2857 var631 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2858 var632 = ((val* (*)(val*))(var631->class->vft[COLOR_abstract_compiler__ToolContext__opt_make_flags]))(var631) /* opt_make_flags on <var631:ToolContext>*/;
2859 var633 = ((val* (*)(val*))(var632->class->vft[COLOR_opts__Option__value]))(var632) /* value on <var632:OptionString>*/;
2860 var_makeflags = var633;
2861 var634 = NULL;
2862 if (var_makeflags == NULL) {
2863 var635 = 1; /* is null */
2864 } else {
2865 var635 = 0; /* arg is null but recv is not */
2866 }
2867 if (var635){
2868 if (varonce636) {
2869 var637 = varonce636;
2870 } else {
2871 var638 = "";
2872 var639 = 0;
2873 var640 = string__NativeString__to_s_with_length(var638, var639);
2874 var637 = var640;
2875 varonce636 = var637;
2876 }
2877 var_makeflags = var637;
2878 } else {
2879 }
2880 var641 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2881 if (varonce642) {
2882 var643 = varonce642;
2883 } else {
2884 var644 = "make -B -C ";
2885 var645 = 11;
2886 var646 = string__NativeString__to_s_with_length(var644, var645);
2887 var643 = var646;
2888 varonce642 = var643;
2889 }
2890 if (varonce647) {
2891 var648 = varonce647;
2892 } else {
2893 var649 = " -f ";
2894 var650 = 4;
2895 var651 = string__NativeString__to_s_with_length(var649, var650);
2896 var648 = var651;
2897 varonce647 = var648;
2898 }
2899 if (varonce652) {
2900 var653 = varonce652;
2901 } else {
2902 var654 = " -j 4 ";
2903 var655 = 6;
2904 var656 = string__NativeString__to_s_with_length(var654, var655);
2905 var653 = var656;
2906 varonce652 = var653;
2907 }
2908 var657 = NEW_array__Array(&type_array__Arraykernel__Object);
2909 { /* var657 = array_instance Array[Object] */
2910 var658 = 6;
2911 var659 = NEW_array__NativeArray(var658, &type_array__NativeArraykernel__Object);
2912 ((struct instance_array__NativeArray*)var659)->values[0] = (val*) var643;
2913 ((struct instance_array__NativeArray*)var659)->values[1] = (val*) var_compile_dir;
2914 ((struct instance_array__NativeArray*)var659)->values[2] = (val*) var648;
2915 ((struct instance_array__NativeArray*)var659)->values[3] = (val*) var_makename;
2916 ((struct instance_array__NativeArray*)var659)->values[4] = (val*) var653;
2917 ((struct instance_array__NativeArray*)var659)->values[5] = (val*) var_makeflags;
2918 ((void (*)(val*, val*, long))(var657->class->vft[COLOR_array__Array__with_native]))(var657, var659, var658) /* with_native on <var657:Array[Object]>*/;
2919 CHECK_NEW_array__Array(var657);
2920 }
2921 var660 = ((val* (*)(val*))(var657->class->vft[COLOR_string__Object__to_s]))(var657) /* to_s on <var657:Array[Object]>*/;
2922 var661 = 2;
2923 ((void (*)(val*, val*, long))(var641->class->vft[COLOR_toolcontext__ToolContext__info]))(var641, var660, var661) /* info on <var641:ToolContext>*/;
2924 var662 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
2925 var663 = ((long (*)(val*))(var662->class->vft[COLOR_toolcontext__ToolContext__verbose_level]))(var662) /* verbose_level on <var662:ToolContext>*/;
2926 var664 = 3;
2927 { /* Inline kernel#Int#>= (var663,var664) */
2928 /* Covariant cast for argument 0 (i) <var664:Int> isa OTHER */
2929 /* <var664:Int> isa OTHER */
2930 var667 = 1; /* easy <var664:Int> isa OTHER*/
2931 if (!var667) {
2932 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 258);
2933 exit(1);
2934 }
2935 var670 = var663 >= var664;
2936 var665 = var670;
2937 goto RET_LABEL666;
2938 RET_LABEL666:(void)0;
2939 }
2940 if (var665){
2941 var671 = ((val* (*)(val*))(self->class->vft[COLOR_kernel__Object__sys]))(self) /* sys on <self:ModelBuilder>*/;
2942 if (varonce672) {
2943 var673 = varonce672;
2944 } else {
2945 var674 = "make -B -C ";
2946 var675 = 11;
2947 var676 = string__NativeString__to_s_with_length(var674, var675);
2948 var673 = var676;
2949 varonce672 = var673;
2950 }
2951 if (varonce677) {
2952 var678 = varonce677;
2953 } else {
2954 var679 = " -f ";
2955 var680 = 4;
2956 var681 = string__NativeString__to_s_with_length(var679, var680);
2957 var678 = var681;
2958 varonce677 = var678;
2959 }
2960 if (varonce682) {
2961 var683 = varonce682;
2962 } else {
2963 var684 = " -j 4 ";
2964 var685 = 6;
2965 var686 = string__NativeString__to_s_with_length(var684, var685);
2966 var683 = var686;
2967 varonce682 = var683;
2968 }
2969 if (varonce687) {
2970 var688 = varonce687;
2971 } else {
2972 var689 = " 2>&1";
2973 var690 = 5;
2974 var691 = string__NativeString__to_s_with_length(var689, var690);
2975 var688 = var691;
2976 varonce687 = var688;
2977 }
2978 var692 = NEW_array__Array(&type_array__Arraykernel__Object);
2979 { /* var692 = array_instance Array[Object] */
2980 var693 = 7;
2981 var694 = NEW_array__NativeArray(var693, &type_array__NativeArraykernel__Object);
2982 ((struct instance_array__NativeArray*)var694)->values[0] = (val*) var673;
2983 ((struct instance_array__NativeArray*)var694)->values[1] = (val*) var_compile_dir;
2984 ((struct instance_array__NativeArray*)var694)->values[2] = (val*) var678;
2985 ((struct instance_array__NativeArray*)var694)->values[3] = (val*) var_makename;
2986 ((struct instance_array__NativeArray*)var694)->values[4] = (val*) var683;
2987 ((struct instance_array__NativeArray*)var694)->values[5] = (val*) var_makeflags;
2988 ((struct instance_array__NativeArray*)var694)->values[6] = (val*) var688;
2989 ((void (*)(val*, val*, long))(var692->class->vft[COLOR_array__Array__with_native]))(var692, var694, var693) /* with_native on <var692:Array[Object]>*/;
2990 CHECK_NEW_array__Array(var692);
2991 }
2992 var695 = ((val* (*)(val*))(var692->class->vft[COLOR_string__Object__to_s]))(var692) /* to_s on <var692:Array[Object]>*/;
2993 var696 = ((long (*)(val*, val*))(var671->class->vft[COLOR_exec__Sys__system]))(var671, var695) /* system on <var671:Sys>*/;
2994 var697 = BOX_kernel__Int(var696); /* autobox from Int to nullable Object */
2995 var_res = var697;
2996 } else {
2997 var698 = ((val* (*)(val*))(self->class->vft[COLOR_kernel__Object__sys]))(self) /* sys on <self:ModelBuilder>*/;
2998 if (varonce699) {
2999 var700 = varonce699;
3000 } else {
3001 var701 = "make -B -C ";
3002 var702 = 11;
3003 var703 = string__NativeString__to_s_with_length(var701, var702);
3004 var700 = var703;
3005 varonce699 = var700;
3006 }
3007 if (varonce704) {
3008 var705 = varonce704;
3009 } else {
3010 var706 = " -f ";
3011 var707 = 4;
3012 var708 = string__NativeString__to_s_with_length(var706, var707);
3013 var705 = var708;
3014 varonce704 = var705;
3015 }
3016 if (varonce709) {
3017 var710 = varonce709;
3018 } else {
3019 var711 = " -j 4 ";
3020 var712 = 6;
3021 var713 = string__NativeString__to_s_with_length(var711, var712);
3022 var710 = var713;
3023 varonce709 = var710;
3024 }
3025 if (varonce714) {
3026 var715 = varonce714;
3027 } else {
3028 var716 = " 2>&1 >/dev/null";
3029 var717 = 16;
3030 var718 = string__NativeString__to_s_with_length(var716, var717);
3031 var715 = var718;
3032 varonce714 = var715;
3033 }
3034 var719 = NEW_array__Array(&type_array__Arraykernel__Object);
3035 { /* var719 = array_instance Array[Object] */
3036 var720 = 7;
3037 var721 = NEW_array__NativeArray(var720, &type_array__NativeArraykernel__Object);
3038 ((struct instance_array__NativeArray*)var721)->values[0] = (val*) var700;
3039 ((struct instance_array__NativeArray*)var721)->values[1] = (val*) var_compile_dir;
3040 ((struct instance_array__NativeArray*)var721)->values[2] = (val*) var705;
3041 ((struct instance_array__NativeArray*)var721)->values[3] = (val*) var_makename;
3042 ((struct instance_array__NativeArray*)var721)->values[4] = (val*) var710;
3043 ((struct instance_array__NativeArray*)var721)->values[5] = (val*) var_makeflags;
3044 ((struct instance_array__NativeArray*)var721)->values[6] = (val*) var715;
3045 ((void (*)(val*, val*, long))(var719->class->vft[COLOR_array__Array__with_native]))(var719, var721, var720) /* with_native on <var719:Array[Object]>*/;
3046 CHECK_NEW_array__Array(var719);
3047 }
3048 var722 = ((val* (*)(val*))(var719->class->vft[COLOR_string__Object__to_s]))(var719) /* to_s on <var719:Array[Object]>*/;
3049 var723 = ((long (*)(val*, val*))(var698->class->vft[COLOR_exec__Sys__system]))(var698, var722) /* system on <var698:Sys>*/;
3050 var724 = BOX_kernel__Int(var723); /* autobox from Int to nullable Object */
3051 var_res = var724;
3052 }
3053 var725 = 0;
3054 { /* Inline kernel#Int#!= (var_res,var725) */
3055 var728 = (var_res != NULL) && (var_res->class == &class_kernel__Int);
3056 if (var728) {
3057 var729 = ((struct instance_kernel__Int*)var_res)->value; /* autounbox from nullable Object to Int */;
3058 var728 = (var729 == var725);
3059 }
3060 var730 = !var728;
3061 var726 = var730;
3062 goto RET_LABEL727;
3063 RET_LABEL727:(void)0;
3064 }
3065 if (var726){
3066 var731 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
3067 var732 = NULL;
3068 if (varonce733) {
3069 var734 = varonce733;
3070 } else {
3071 var735 = "make failed! Error code: ";
3072 var736 = 25;
3073 var737 = string__NativeString__to_s_with_length(var735, var736);
3074 var734 = var737;
3075 varonce733 = var734;
3076 }
3077 if (varonce738) {
3078 var739 = varonce738;
3079 } else {
3080 var740 = ".";
3081 var741 = 1;
3082 var742 = string__NativeString__to_s_with_length(var740, var741);
3083 var739 = var742;
3084 varonce738 = var739;
3085 }
3086 var743 = NEW_array__Array(&type_array__Arraykernel__Object);
3087 { /* var743 = array_instance Array[Object] */
3088 var744 = 3;
3089 var745 = NEW_array__NativeArray(var744, &type_array__NativeArraykernel__Object);
3090 ((struct instance_array__NativeArray*)var745)->values[0] = (val*) var734;
3091 ((struct instance_array__NativeArray*)var745)->values[1] = (val*) var_res;
3092 ((struct instance_array__NativeArray*)var745)->values[2] = (val*) var739;
3093 ((void (*)(val*, val*, long))(var743->class->vft[COLOR_array__Array__with_native]))(var743, var745, var744) /* with_native on <var743:Array[Object]>*/;
3094 CHECK_NEW_array__Array(var743);
3095 }
3096 var746 = ((val* (*)(val*))(var743->class->vft[COLOR_string__Object__to_s]))(var743) /* to_s on <var743:Array[Object]>*/;
3097 ((void (*)(val*, val*, val*))(var731->class->vft[COLOR_toolcontext__ToolContext__error]))(var731, var732, var746) /* error on <var731:ToolContext>*/;
3098 } else {
3099 }
3100 var747 = ((long (*)(val*))(self->class->vft[COLOR_time__Object__get_time]))(self) /* get_time on <self:ModelBuilder>*/;
3101 var_time1 = var747;
3102 var748 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
3103 if (varonce749) {
3104 var750 = varonce749;
3105 } else {
3106 var751 = "*** END COMPILING C: ";
3107 var752 = 21;
3108 var753 = string__NativeString__to_s_with_length(var751, var752);
3109 var750 = var753;
3110 varonce749 = var750;
3111 }
3112 { /* Inline kernel#Int#- (var_time1,var_time0) */
3113 var756 = var_time1 - var_time0;
3114 var754 = var756;
3115 goto RET_LABEL755;
3116 RET_LABEL755:(void)0;
3117 }
3118 if (varonce757) {
3119 var758 = varonce757;
3120 } else {
3121 var759 = " ***";
3122 var760 = 4;
3123 var761 = string__NativeString__to_s_with_length(var759, var760);
3124 var758 = var761;
3125 varonce757 = var758;
3126 }
3127 var762 = NEW_array__Array(&type_array__Arraykernel__Object);
3128 { /* var762 = array_instance Array[Object] */
3129 var763 = 3;
3130 var764 = NEW_array__NativeArray(var763, &type_array__NativeArraykernel__Object);
3131 ((struct instance_array__NativeArray*)var764)->values[0] = (val*) var750;
3132 var765 = BOX_kernel__Int(var754); /* autobox from Int to Object */
3133 ((struct instance_array__NativeArray*)var764)->values[1] = (val*) var765;
3134 ((struct instance_array__NativeArray*)var764)->values[2] = (val*) var758;
3135 ((void (*)(val*, val*, long))(var762->class->vft[COLOR_array__Array__with_native]))(var762, var764, var763) /* with_native on <var762:Array[Object]>*/;
3136 CHECK_NEW_array__Array(var762);
3137 }
3138 var766 = ((val* (*)(val*))(var762->class->vft[COLOR_string__Object__to_s]))(var762) /* to_s on <var762:Array[Object]>*/;
3139 var767 = 2;
3140 ((void (*)(val*, val*, long))(var748->class->vft[COLOR_toolcontext__ToolContext__info]))(var748, var766, var767) /* info on <var748:ToolContext>*/;
3141 RET_LABEL:;
3142 }
3143 /* method abstract_compiler#ModelBuilder#write_and_make for (self: Object, AbstractCompiler) */
3144 void VIRTUAL_abstract_compiler__ModelBuilder__write_and_make(val* self, val* p0) {
3145 abstract_compiler__ModelBuilder__write_and_make(self, p0);
3146 RET_LABEL:;
3147 }
3148 /* method abstract_compiler#AbstractCompiler#mainmodule for (self: AbstractCompiler): MModule */
3149 val* abstract_compiler__AbstractCompiler__mainmodule(val* self) {
3150 val* var /* : MModule */;
3151 val* var1 /* : MModule */;
3152 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dmainmodule].val; /* @mainmodule on <self:AbstractCompiler> */
3153 if (var1 == NULL) {
3154 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mainmodule", "src/abstract_compiler.nit", 259);
3155 exit(1);
3156 }
3157 var = var1;
3158 RET_LABEL:;
3159 return var;
3160 }
3161 /* method abstract_compiler#AbstractCompiler#mainmodule for (self: Object): MModule */
3162 val* VIRTUAL_abstract_compiler__AbstractCompiler__mainmodule(val* self) {
3163 val* var /* : MModule */;
3164 val* var1 /* : MModule */;
3165 var1 = abstract_compiler__AbstractCompiler__mainmodule(self);
3166 var = var1;
3167 RET_LABEL:;
3168 return var;
3169 }
3170 /* method abstract_compiler#AbstractCompiler#mainmodule= for (self: AbstractCompiler, MModule) */
3171 void abstract_compiler__AbstractCompiler__mainmodule_61d(val* self, val* p0) {
3172 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dmainmodule].val = p0; /* @mainmodule on <self:AbstractCompiler> */
3173 RET_LABEL:;
3174 }
3175 /* method abstract_compiler#AbstractCompiler#mainmodule= for (self: Object, MModule) */
3176 void VIRTUAL_abstract_compiler__AbstractCompiler__mainmodule_61d(val* self, val* p0) {
3177 abstract_compiler__AbstractCompiler__mainmodule_61d(self, p0);
3178 RET_LABEL:;
3179 }
3180 /* method abstract_compiler#AbstractCompiler#realmainmodule for (self: AbstractCompiler): MModule */
3181 val* abstract_compiler__AbstractCompiler__realmainmodule(val* self) {
3182 val* var /* : MModule */;
3183 val* var1 /* : MModule */;
3184 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64drealmainmodule].val; /* @realmainmodule on <self:AbstractCompiler> */
3185 if (var1 == NULL) {
3186 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @realmainmodule", "src/abstract_compiler.nit", 263);
3187 exit(1);
3188 }
3189 var = var1;
3190 RET_LABEL:;
3191 return var;
3192 }
3193 /* method abstract_compiler#AbstractCompiler#realmainmodule for (self: Object): MModule */
3194 val* VIRTUAL_abstract_compiler__AbstractCompiler__realmainmodule(val* self) {
3195 val* var /* : MModule */;
3196 val* var1 /* : MModule */;
3197 var1 = abstract_compiler__AbstractCompiler__realmainmodule(self);
3198 var = var1;
3199 RET_LABEL:;
3200 return var;
3201 }
3202 /* method abstract_compiler#AbstractCompiler#realmainmodule= for (self: AbstractCompiler, MModule) */
3203 void abstract_compiler__AbstractCompiler__realmainmodule_61d(val* self, val* p0) {
3204 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64drealmainmodule].val = p0; /* @realmainmodule on <self:AbstractCompiler> */
3205 RET_LABEL:;
3206 }
3207 /* method abstract_compiler#AbstractCompiler#realmainmodule= for (self: Object, MModule) */
3208 void VIRTUAL_abstract_compiler__AbstractCompiler__realmainmodule_61d(val* self, val* p0) {
3209 abstract_compiler__AbstractCompiler__realmainmodule_61d(self, p0);
3210 RET_LABEL:;
3211 }
3212 /* method abstract_compiler#AbstractCompiler#modelbuilder for (self: AbstractCompiler): ModelBuilder */
3213 val* abstract_compiler__AbstractCompiler__modelbuilder(val* self) {
3214 val* var /* : ModelBuilder */;
3215 val* var1 /* : ModelBuilder */;
3216 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dmodelbuilder].val; /* @modelbuilder on <self:AbstractCompiler> */
3217 if (var1 == NULL) {
3218 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @modelbuilder", "src/abstract_compiler.nit", 266);
3219 exit(1);
3220 }
3221 var = var1;
3222 RET_LABEL:;
3223 return var;
3224 }
3225 /* method abstract_compiler#AbstractCompiler#modelbuilder for (self: Object): ModelBuilder */
3226 val* VIRTUAL_abstract_compiler__AbstractCompiler__modelbuilder(val* self) {
3227 val* var /* : ModelBuilder */;
3228 val* var1 /* : ModelBuilder */;
3229 var1 = abstract_compiler__AbstractCompiler__modelbuilder(self);
3230 var = var1;
3231 RET_LABEL:;
3232 return var;
3233 }
3234 /* method abstract_compiler#AbstractCompiler#modelbuilder= for (self: AbstractCompiler, ModelBuilder) */
3235 void abstract_compiler__AbstractCompiler__modelbuilder_61d(val* self, val* p0) {
3236 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dmodelbuilder].val = p0; /* @modelbuilder on <self:AbstractCompiler> */
3237 RET_LABEL:;
3238 }
3239 /* method abstract_compiler#AbstractCompiler#modelbuilder= for (self: Object, ModelBuilder) */
3240 void VIRTUAL_abstract_compiler__AbstractCompiler__modelbuilder_61d(val* self, val* p0) {
3241 abstract_compiler__AbstractCompiler__modelbuilder_61d(self, p0);
3242 RET_LABEL:;
3243 }
3244 /* method abstract_compiler#AbstractCompiler#hardening for (self: AbstractCompiler): Bool */
3245 short int abstract_compiler__AbstractCompiler__hardening(val* self) {
3246 short int var /* : Bool */;
3247 val* var1 /* : ModelBuilder */;
3248 val* var2 /* : ToolContext */;
3249 val* var3 /* : OptionBool */;
3250 val* var4 /* : nullable Object */;
3251 short int var5 /* : Bool */;
3252 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
3253 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var1) /* toolcontext on <var1:ModelBuilder>*/;
3254 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__ToolContext__opt_hardening]))(var2) /* opt_hardening on <var2:ToolContext>*/;
3255 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_opts__Option__value]))(var3) /* value on <var3:OptionBool>*/;
3256 var5 = ((struct instance_kernel__Bool*)var4)->value; /* autounbox from nullable Object to Bool */;
3257 var = var5;
3258 goto RET_LABEL;
3259 RET_LABEL:;
3260 return var;
3261 }
3262 /* method abstract_compiler#AbstractCompiler#hardening for (self: Object): Bool */
3263 short int VIRTUAL_abstract_compiler__AbstractCompiler__hardening(val* self) {
3264 short int var /* : Bool */;
3265 short int var1 /* : Bool */;
3266 var1 = abstract_compiler__AbstractCompiler__hardening(self);
3267 var = var1;
3268 RET_LABEL:;
3269 return var;
3270 }
3271 /* method abstract_compiler#AbstractCompiler#init for (self: AbstractCompiler, MModule, ModelBuilder) */
3272 void abstract_compiler__AbstractCompiler__init(val* self, val* p0, val* p1) {
3273 val* var_mainmodule /* var mainmodule: MModule */;
3274 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
3275 var_mainmodule = p0;
3276 var_modelbuilder = p1;
3277 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule_61d]))(self, var_mainmodule) /* mainmodule= on <self:AbstractCompiler>*/;
3278 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__realmainmodule_61d]))(self, var_mainmodule) /* realmainmodule= on <self:AbstractCompiler>*/;
3279 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder_61d]))(self, var_modelbuilder) /* modelbuilder= on <self:AbstractCompiler>*/;
3280 RET_LABEL:;
3281 }
3282 /* method abstract_compiler#AbstractCompiler#init for (self: Object, MModule, ModelBuilder) */
3283 void VIRTUAL_abstract_compiler__AbstractCompiler__init(val* self, val* p0, val* p1) {
3284 abstract_compiler__AbstractCompiler__init(self, p0, p1);
3285 RET_LABEL:;
3286 }
3287 /* method abstract_compiler#AbstractCompiler#new_file for (self: AbstractCompiler, String): CodeFile */
3288 val* abstract_compiler__AbstractCompiler__new_file(val* self, val* p0) {
3289 val* var /* : CodeFile */;
3290 val* var_name /* var name: String */;
3291 val* var1 /* : CodeFile */;
3292 val* var_f /* var f: CodeFile */;
3293 val* var2 /* : List[CodeFile] */;
3294 var_name = p0;
3295 var1 = NEW_abstract_compiler__CodeFile(&type_abstract_compiler__CodeFile);
3296 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_compiler__CodeFile__init]))(var1, var_name) /* init on <var1:CodeFile>*/;
3297 CHECK_NEW_abstract_compiler__CodeFile(var1);
3298 var_f = var1;
3299 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__files]))(self) /* files on <self:AbstractCompiler>*/;
3300 ((void (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var2, var_f) /* add on <var2:List[CodeFile]>*/;
3301 var = var_f;
3302 goto RET_LABEL;
3303 RET_LABEL:;
3304 return var;
3305 }
3306 /* method abstract_compiler#AbstractCompiler#new_file for (self: Object, String): CodeFile */
3307 val* VIRTUAL_abstract_compiler__AbstractCompiler__new_file(val* self, val* p0) {
3308 val* var /* : CodeFile */;
3309 val* var1 /* : CodeFile */;
3310 var1 = abstract_compiler__AbstractCompiler__new_file(self, p0);
3311 var = var1;
3312 RET_LABEL:;
3313 return var;
3314 }
3315 /* method abstract_compiler#AbstractCompiler#files for (self: AbstractCompiler): List[CodeFile] */
3316 val* abstract_compiler__AbstractCompiler__files(val* self) {
3317 val* var /* : List[CodeFile] */;
3318 val* var1 /* : List[CodeFile] */;
3319 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dfiles].val; /* @files on <self:AbstractCompiler> */
3320 if (var1 == NULL) {
3321 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @files", "src/abstract_compiler.nit", 288);
3322 exit(1);
3323 }
3324 var = var1;
3325 RET_LABEL:;
3326 return var;
3327 }
3328 /* method abstract_compiler#AbstractCompiler#files for (self: Object): List[CodeFile] */
3329 val* VIRTUAL_abstract_compiler__AbstractCompiler__files(val* self) {
3330 val* var /* : List[CodeFile] */;
3331 val* var1 /* : List[CodeFile] */;
3332 var1 = abstract_compiler__AbstractCompiler__files(self);
3333 var = var1;
3334 RET_LABEL:;
3335 return var;
3336 }
3337 /* method abstract_compiler#AbstractCompiler#files= for (self: AbstractCompiler, List[CodeFile]) */
3338 void abstract_compiler__AbstractCompiler__files_61d(val* self, val* p0) {
3339 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dfiles].val = p0; /* @files on <self:AbstractCompiler> */
3340 RET_LABEL:;
3341 }
3342 /* method abstract_compiler#AbstractCompiler#files= for (self: Object, List[CodeFile]) */
3343 void VIRTUAL_abstract_compiler__AbstractCompiler__files_61d(val* self, val* p0) {
3344 abstract_compiler__AbstractCompiler__files_61d(self, p0);
3345 RET_LABEL:;
3346 }
3347 /* method abstract_compiler#AbstractCompiler#new_visitor for (self: AbstractCompiler): AbstractCompilerVisitor */
3348 val* abstract_compiler__AbstractCompiler__new_visitor(val* self) {
3349 val* var /* : AbstractCompilerVisitor */;
3350 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/abstract_compiler.nit", 292);
3351 exit(1);
3352 RET_LABEL:;
3353 return var;
3354 }
3355 /* method abstract_compiler#AbstractCompiler#new_visitor for (self: Object): AbstractCompilerVisitor */
3356 val* VIRTUAL_abstract_compiler__AbstractCompiler__new_visitor(val* self) {
3357 val* var /* : AbstractCompilerVisitor */;
3358 val* var1 /* : AbstractCompilerVisitor */;
3359 var1 = abstract_compiler__AbstractCompiler__new_visitor(self);
3360 var = var1;
3361 RET_LABEL:;
3362 return var;
3363 }
3364 /* method abstract_compiler#AbstractCompiler#header for (self: AbstractCompiler): CodeWriter */
3365 val* abstract_compiler__AbstractCompiler__header(val* self) {
3366 val* var /* : CodeWriter */;
3367 val* var1 /* : CodeWriter */;
3368 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dheader].val; /* @header on <self:AbstractCompiler> */
3369 if (var1 == NULL) {
3370 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @header", "src/abstract_compiler.nit", 295);
3371 exit(1);
3372 }
3373 var = var1;
3374 RET_LABEL:;
3375 return var;
3376 }
3377 /* method abstract_compiler#AbstractCompiler#header for (self: Object): CodeWriter */
3378 val* VIRTUAL_abstract_compiler__AbstractCompiler__header(val* self) {
3379 val* var /* : CodeWriter */;
3380 val* var1 /* : CodeWriter */;
3381 var1 = abstract_compiler__AbstractCompiler__header(self);
3382 var = var1;
3383 RET_LABEL:;
3384 return var;
3385 }
3386 /* method abstract_compiler#AbstractCompiler#header= for (self: AbstractCompiler, CodeWriter) */
3387 void abstract_compiler__AbstractCompiler__header_61d(val* self, val* p0) {
3388 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dheader].val = p0; /* @header on <self:AbstractCompiler> */
3389 RET_LABEL:;
3390 }
3391 /* method abstract_compiler#AbstractCompiler#header= for (self: Object, CodeWriter) */
3392 void VIRTUAL_abstract_compiler__AbstractCompiler__header_61d(val* self, val* p0) {
3393 abstract_compiler__AbstractCompiler__header_61d(self, p0);
3394 RET_LABEL:;
3395 }
3396 /* method abstract_compiler#AbstractCompiler#provide_declaration for (self: AbstractCompiler, String, String) */
3397 void abstract_compiler__AbstractCompiler__provide_declaration(val* self, val* p0, val* p1) {
3398 val* var_key /* var key: String */;
3399 val* var_s /* var s: String */;
3400 val* var /* : HashMap[String, String] */;
3401 short int var1 /* : Bool */;
3402 val* var2 /* : HashMap[String, String] */;
3403 val* var3 /* : nullable Object */;
3404 short int var4 /* : Bool */;
3405 val* var5 /* : HashMap[String, String] */;
3406 var_key = p0;
3407 var_s = p1;
3408 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provided_declarations]))(self) /* provided_declarations on <self:AbstractCompiler>*/;
3409 var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var, var_key) /* has_key on <var:HashMap[String, String]>*/;
3410 if (var1){
3411 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provided_declarations]))(self) /* provided_declarations on <self:AbstractCompiler>*/;
3412 var3 = ((val* (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var2, var_key) /* [] on <var2:HashMap[String, String]>*/;
3413 var4 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_kernel__Object___61d_61d]))(var3, var_s) /* == on <var3:nullable Object(String)>*/;
3414 if (!var4) {
3415 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/abstract_compiler.nit", 302);
3416 exit(1);
3417 }
3418 } else {
3419 }
3420 var5 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provided_declarations]))(self) /* provided_declarations on <self:AbstractCompiler>*/;
3421 ((void (*)(val*, val*, val*))(var5->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var5, var_key, var_s) /* []= on <var5:HashMap[String, String]>*/;
3422 RET_LABEL:;
3423 }
3424 /* method abstract_compiler#AbstractCompiler#provide_declaration for (self: Object, String, String) */
3425 void VIRTUAL_abstract_compiler__AbstractCompiler__provide_declaration(val* self, val* p0, val* p1) {
3426 abstract_compiler__AbstractCompiler__provide_declaration(self, p0, p1);
3427 RET_LABEL:;
3428 }
3429 /* method abstract_compiler#AbstractCompiler#provided_declarations for (self: AbstractCompiler): HashMap[String, String] */
3430 val* abstract_compiler__AbstractCompiler__provided_declarations(val* self) {
3431 val* var /* : HashMap[String, String] */;
3432 val* var1 /* : HashMap[String, String] */;
3433 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dprovided_declarations].val; /* @provided_declarations on <self:AbstractCompiler> */
3434 if (var1 == NULL) {
3435 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @provided_declarations", "src/abstract_compiler.nit", 307);
3436 exit(1);
3437 }
3438 var = var1;
3439 RET_LABEL:;
3440 return var;
3441 }
3442 /* method abstract_compiler#AbstractCompiler#provided_declarations for (self: Object): HashMap[String, String] */
3443 val* VIRTUAL_abstract_compiler__AbstractCompiler__provided_declarations(val* self) {
3444 val* var /* : HashMap[String, String] */;
3445 val* var1 /* : HashMap[String, String] */;
3446 var1 = abstract_compiler__AbstractCompiler__provided_declarations(self);
3447 var = var1;
3448 RET_LABEL:;
3449 return var;
3450 }
3451 /* method abstract_compiler#AbstractCompiler#provided_declarations= for (self: AbstractCompiler, HashMap[String, String]) */
3452 void abstract_compiler__AbstractCompiler__provided_declarations_61d(val* self, val* p0) {
3453 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dprovided_declarations].val = p0; /* @provided_declarations on <self:AbstractCompiler> */
3454 RET_LABEL:;
3455 }
3456 /* method abstract_compiler#AbstractCompiler#provided_declarations= for (self: Object, HashMap[String, String]) */
3457 void VIRTUAL_abstract_compiler__AbstractCompiler__provided_declarations_61d(val* self, val* p0) {
3458 abstract_compiler__AbstractCompiler__provided_declarations_61d(self, p0);
3459 RET_LABEL:;
3460 }
3461 /* method abstract_compiler#AbstractCompiler#compile_header for (self: AbstractCompiler) */
3462 void abstract_compiler__AbstractCompiler__compile_header(val* self) {
3463 val* var /* : CodeWriter */;
3464 val* var_v /* var v: CodeWriter */;
3465 val* var1 /* : CodeWriter */;
3466 static val* varonce;
3467 val* var2 /* : String */;
3468 char* var3 /* : NativeString */;
3469 long var4 /* : Int */;
3470 val* var5 /* : String */;
3471 val* var6 /* : CodeWriter */;
3472 static val* varonce7;
3473 val* var8 /* : String */;
3474 char* var9 /* : NativeString */;
3475 long var10 /* : Int */;
3476 val* var11 /* : String */;
3477 val* var12 /* : CodeWriter */;
3478 static val* varonce13;
3479 val* var14 /* : String */;
3480 char* var15 /* : NativeString */;
3481 long var16 /* : Int */;
3482 val* var17 /* : String */;
3483 val* var18 /* : CodeWriter */;
3484 static val* varonce19;
3485 val* var20 /* : String */;
3486 char* var21 /* : NativeString */;
3487 long var22 /* : Int */;
3488 val* var23 /* : String */;
3489 val* var24 /* : CodeWriter */;
3490 static val* varonce25;
3491 val* var26 /* : String */;
3492 char* var27 /* : NativeString */;
3493 long var28 /* : Int */;
3494 val* var29 /* : String */;
3495 val* var30 /* : CodeWriter */;
3496 static val* varonce31;
3497 val* var32 /* : String */;
3498 char* var33 /* : NativeString */;
3499 long var34 /* : Int */;
3500 val* var35 /* : String */;
3501 val* var36 /* : CodeWriter */;
3502 static val* varonce37;
3503 val* var38 /* : String */;
3504 char* var39 /* : NativeString */;
3505 long var40 /* : Int */;
3506 val* var41 /* : String */;
3507 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
3508 var_v = var;
3509 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
3510 if (varonce) {
3511 var2 = varonce;
3512 } else {
3513 var3 = "#include <stdlib.h>";
3514 var4 = 19;
3515 var5 = string__NativeString__to_s_with_length(var3, var4);
3516 var2 = var5;
3517 varonce = var2;
3518 }
3519 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var1, var2) /* add_decl on <var1:CodeWriter>*/;
3520 var6 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
3521 if (varonce7) {
3522 var8 = varonce7;
3523 } else {
3524 var9 = "#include <stdio.h>";
3525 var10 = 18;
3526 var11 = string__NativeString__to_s_with_length(var9, var10);
3527 var8 = var11;
3528 varonce7 = var8;
3529 }
3530 ((void (*)(val*, val*))(var6->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var6, var8) /* add_decl on <var6:CodeWriter>*/;
3531 var12 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
3532 if (varonce13) {
3533 var14 = varonce13;
3534 } else {
3535 var15 = "#include <string.h>";
3536 var16 = 19;
3537 var17 = string__NativeString__to_s_with_length(var15, var16);
3538 var14 = var17;
3539 varonce13 = var14;
3540 }
3541 ((void (*)(val*, val*))(var12->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var12, var14) /* add_decl on <var12:CodeWriter>*/;
3542 var18 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
3543 if (varonce19) {
3544 var20 = varonce19;
3545 } else {
3546 var21 = "#include <gc_chooser.h>";
3547 var22 = 23;
3548 var23 = string__NativeString__to_s_with_length(var21, var22);
3549 var20 = var23;
3550 varonce19 = var20;
3551 }
3552 ((void (*)(val*, val*))(var18->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var18, var20) /* add_decl on <var18:CodeWriter>*/;
3553 ((void (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__compile_header_structs]))(self) /* compile_header_structs on <self:AbstractCompiler>*/;
3554 var24 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
3555 if (varonce25) {
3556 var26 = varonce25;
3557 } else {
3558 var27 = "extern int glob_argc;";
3559 var28 = 21;
3560 var29 = string__NativeString__to_s_with_length(var27, var28);
3561 var26 = var29;
3562 varonce25 = var26;
3563 }
3564 ((void (*)(val*, val*))(var24->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var24, var26) /* add_decl on <var24:CodeWriter>*/;
3565 var30 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
3566 if (varonce31) {
3567 var32 = varonce31;
3568 } else {
3569 var33 = "extern char **glob_argv;";
3570 var34 = 24;
3571 var35 = string__NativeString__to_s_with_length(var33, var34);
3572 var32 = var35;
3573 varonce31 = var32;
3574 }
3575 ((void (*)(val*, val*))(var30->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var30, var32) /* add_decl on <var30:CodeWriter>*/;
3576 var36 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:AbstractCompiler>*/;
3577 if (varonce37) {
3578 var38 = varonce37;
3579 } else {
3580 var39 = "extern val *glob_sys;";
3581 var40 = 21;
3582 var41 = string__NativeString__to_s_with_length(var39, var40);
3583 var38 = var41;
3584 varonce37 = var38;
3585 }
3586 ((void (*)(val*, val*))(var36->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var36, var38) /* add_decl on <var36:CodeWriter>*/;
3587 RET_LABEL:;
3588 }
3589 /* method abstract_compiler#AbstractCompiler#compile_header for (self: Object) */
3590 void VIRTUAL_abstract_compiler__AbstractCompiler__compile_header(val* self) {
3591 abstract_compiler__AbstractCompiler__compile_header(self);
3592 RET_LABEL:;
3593 }
3594 /* method abstract_compiler#AbstractCompiler#compile_header_structs for (self: AbstractCompiler) */
3595 void abstract_compiler__AbstractCompiler__compile_header_structs(val* self) {
3596 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/abstract_compiler.nit", 326);
3597 exit(1);
3598 RET_LABEL:;
3599 }
3600 /* method abstract_compiler#AbstractCompiler#compile_header_structs for (self: Object) */
3601 void VIRTUAL_abstract_compiler__AbstractCompiler__compile_header_structs(val* self) {
3602 abstract_compiler__AbstractCompiler__compile_header_structs(self);
3603 RET_LABEL:;
3604 }
3605 /* method abstract_compiler#AbstractCompiler#compile_main_function for (self: AbstractCompiler) */
3606 void abstract_compiler__AbstractCompiler__compile_main_function(val* self) {
3607 val* var /* : AbstractCompilerVisitor */;
3608 val* var_v /* var v: AbstractCompilerVisitor */;
3609 static val* varonce;
3610 val* var1 /* : String */;
3611 char* var2 /* : NativeString */;
3612 long var3 /* : Int */;
3613 val* var4 /* : String */;
3614 static val* varonce5;
3615 val* var6 /* : String */;
3616 char* var7 /* : NativeString */;
3617 long var8 /* : Int */;
3618 val* var9 /* : String */;
3619 static val* varonce10;
3620 val* var11 /* : String */;
3621 char* var12 /* : NativeString */;
3622 long var13 /* : Int */;
3623 val* var14 /* : String */;
3624 val* var15 /* : ModelBuilder */;
3625 val* var16 /* : ToolContext */;
3626 val* var17 /* : OptionBool */;
3627 val* var18 /* : nullable Object */;
3628 short int var19 /* : Bool */;
3629 val* var20 /* : Array[String] */;
3630 val* var21 /* : Iterator[nullable Object] */;
3631 short int var22 /* : Bool */;
3632 val* var23 /* : nullable Object */;
3633 val* var_tag /* var tag: String */;
3634 static val* varonce24;
3635 val* var25 /* : String */;
3636 char* var26 /* : NativeString */;
3637 long var27 /* : Int */;
3638 val* var28 /* : String */;
3639 static val* varonce29;
3640 val* var30 /* : String */;
3641 char* var31 /* : NativeString */;
3642 long var32 /* : Int */;
3643 val* var33 /* : String */;
3644 val* var34 /* : Array[Object] */;
3645 long var35 /* : Int */;
3646 val* var36 /* : NativeArray[Object] */;
3647 val* var37 /* : String */;
3648 static val* varonce38;
3649 val* var39 /* : String */;
3650 char* var40 /* : NativeString */;
3651 long var41 /* : Int */;
3652 val* var42 /* : String */;
3653 static val* varonce43;
3654 val* var44 /* : String */;
3655 char* var45 /* : NativeString */;
3656 long var46 /* : Int */;
3657 val* var47 /* : String */;
3658 val* var48 /* : Array[Object] */;
3659 long var49 /* : Int */;
3660 val* var50 /* : NativeArray[Object] */;
3661 val* var51 /* : String */;
3662 static val* varonce52;
3663 val* var53 /* : String */;
3664 char* var54 /* : NativeString */;
3665 long var55 /* : Int */;
3666 val* var56 /* : String */;
3667 static val* varonce57;
3668 val* var58 /* : String */;
3669 char* var59 /* : NativeString */;
3670 long var60 /* : Int */;
3671 val* var61 /* : String */;
3672 val* var62 /* : Array[Object] */;
3673 long var63 /* : Int */;
3674 val* var64 /* : NativeArray[Object] */;
3675 val* var65 /* : String */;
3676 val* var66 /* : AbstractCompiler */;
3677 val* var67 /* : CodeWriter */;
3678 static val* varonce68;
3679 val* var69 /* : String */;
3680 char* var70 /* : NativeString */;
3681 long var71 /* : Int */;
3682 val* var72 /* : String */;
3683 static val* varonce73;
3684 val* var74 /* : String */;
3685 char* var75 /* : NativeString */;
3686 long var76 /* : Int */;
3687 val* var77 /* : String */;
3688 val* var78 /* : Array[Object] */;
3689 long var79 /* : Int */;
3690 val* var80 /* : NativeArray[Object] */;
3691 val* var81 /* : String */;
3692 val* var82 /* : AbstractCompiler */;
3693 val* var83 /* : CodeWriter */;
3694 static val* varonce84;
3695 val* var85 /* : String */;
3696 char* var86 /* : NativeString */;
3697 long var87 /* : Int */;
3698 val* var88 /* : String */;
3699 static val* varonce89;
3700 val* var90 /* : String */;
3701 char* var91 /* : NativeString */;
3702 long var92 /* : Int */;
3703 val* var93 /* : String */;
3704 val* var94 /* : Array[Object] */;
3705 long var95 /* : Int */;
3706 val* var96 /* : NativeArray[Object] */;
3707 val* var97 /* : String */;
3708 val* var98 /* : AbstractCompiler */;
3709 val* var99 /* : CodeWriter */;
3710 static val* varonce100;
3711 val* var101 /* : String */;
3712 char* var102 /* : NativeString */;
3713 long var103 /* : Int */;
3714 val* var104 /* : String */;
3715 static val* varonce105;
3716 val* var106 /* : String */;
3717 char* var107 /* : NativeString */;
3718 long var108 /* : Int */;
3719 val* var109 /* : String */;
3720 val* var110 /* : Array[Object] */;
3721 long var111 /* : Int */;
3722 val* var112 /* : NativeArray[Object] */;
3723 val* var113 /* : String */;
3724 static val* varonce114;
3725 val* var115 /* : String */;
3726 char* var116 /* : NativeString */;
3727 long var117 /* : Int */;
3728 val* var118 /* : String */;
3729 static val* varonce119;
3730 val* var120 /* : String */;
3731 char* var121 /* : NativeString */;
3732 long var122 /* : Int */;
3733 val* var123 /* : String */;
3734 static val* varonce124;
3735 val* var125 /* : String */;
3736 char* var126 /* : NativeString */;
3737 long var127 /* : Int */;
3738 val* var128 /* : String */;
3739 val* var129 /* : MModule */;
3740 val* var130 /* : nullable MClassType */;
3741 val* var_main_type /* var main_type: nullable MClassType */;
3742 val* var131 /* : null */;
3743 short int var132 /* : Bool */;
3744 val* var133 /* : AbstractCompiler */;
3745 val* var134 /* : MModule */;
3746 val* var_mainmodule /* var mainmodule: MModule */;
3747 val* var135 /* : RuntimeVariable */;
3748 val* var_glob_sys /* var glob_sys: RuntimeVariable */;
3749 static val* varonce136;
3750 val* var137 /* : String */;
3751 char* var138 /* : NativeString */;
3752 long var139 /* : Int */;
3753 val* var140 /* : String */;
3754 static val* varonce141;
3755 val* var142 /* : String */;
3756 char* var143 /* : NativeString */;
3757 long var144 /* : Int */;
3758 val* var145 /* : String */;
3759 val* var146 /* : Array[Object] */;
3760 long var147 /* : Int */;
3761 val* var148 /* : NativeArray[Object] */;
3762 val* var149 /* : String */;
3763 static val* varonce150;
3764 val* var151 /* : String */;
3765 char* var152 /* : NativeString */;
3766 long var153 /* : Int */;
3767 val* var154 /* : String */;
3768 val* var155 /* : MClass */;
3769 val* var156 /* : nullable MMethod */;
3770 val* var_main_init /* var main_init: nullable MMethod */;
3771 val* var157 /* : null */;
3772 short int var158 /* : Bool */;
3773 val* var159 /* : Array[RuntimeVariable] */;
3774 long var160 /* : Int */;
3775 val* var161 /* : NativeArray[RuntimeVariable] */;
3776 val* var162 /* : nullable RuntimeVariable */;
3777 static val* varonce163;
3778 val* var164 /* : String */;
3779 char* var165 /* : NativeString */;
3780 long var166 /* : Int */;
3781 val* var167 /* : String */;
3782 val* var168 /* : MClass */;
3783 val* var169 /* : nullable MMethod */;
3784 val* var_main_method /* var main_method: nullable MMethod */;
3785 val* var170 /* : null */;
3786 short int var171 /* : Bool */;
3787 val* var172 /* : Array[RuntimeVariable] */;
3788 long var173 /* : Int */;
3789 val* var174 /* : NativeArray[RuntimeVariable] */;
3790 val* var175 /* : nullable RuntimeVariable */;
3791 val* var176 /* : ModelBuilder */;
3792 val* var177 /* : ToolContext */;
3793 val* var178 /* : OptionBool */;
3794 val* var179 /* : nullable Object */;
3795 short int var180 /* : Bool */;
3796 static val* varonce181;
3797 val* var182 /* : String */;
3798 char* var183 /* : NativeString */;
3799 long var184 /* : Int */;
3800 val* var185 /* : String */;
3801 static val* varonce186;
3802 val* var187 /* : String */;
3803 char* var188 /* : NativeString */;
3804 long var189 /* : Int */;
3805 val* var190 /* : String */;
3806 static val* varonce191;
3807 val* var192 /* : String */;
3808 char* var193 /* : NativeString */;
3809 long var194 /* : Int */;
3810 val* var195 /* : String */;
3811 static val* varonce196;
3812 val* var197 /* : String */;
3813 char* var198 /* : NativeString */;
3814 long var199 /* : Int */;
3815 val* var200 /* : String */;
3816 val* var201 /* : Array[String] */;
3817 val* var202 /* : Iterator[nullable Object] */;
3818 short int var203 /* : Bool */;
3819 val* var204 /* : nullable Object */;
3820 val* var_tag205 /* var tag: String */;
3821 static val* varonce206;
3822 val* var207 /* : String */;
3823 char* var208 /* : NativeString */;
3824 long var209 /* : Int */;
3825 val* var210 /* : String */;
3826 static val* varonce211;
3827 val* var212 /* : String */;
3828 char* var213 /* : NativeString */;
3829 long var214 /* : Int */;
3830 val* var215 /* : String */;
3831 val* var216 /* : Array[Object] */;
3832 long var217 /* : Int */;
3833 val* var218 /* : NativeArray[Object] */;
3834 val* var219 /* : String */;
3835 static val* varonce220;
3836 val* var221 /* : String */;
3837 char* var222 /* : NativeString */;
3838 long var223 /* : Int */;
3839 val* var224 /* : String */;
3840 static val* varonce225;
3841 val* var226 /* : String */;
3842 char* var227 /* : NativeString */;
3843 long var228 /* : Int */;
3844 val* var229 /* : String */;
3845 static val* varonce230;
3846 val* var231 /* : String */;
3847 char* var232 /* : NativeString */;
3848 long var233 /* : Int */;
3849 val* var234 /* : String */;
3850 static val* varonce235;
3851 val* var236 /* : String */;
3852 char* var237 /* : NativeString */;
3853 long var238 /* : Int */;
3854 val* var239 /* : String */;
3855 static val* varonce240;
3856 val* var241 /* : String */;
3857 char* var242 /* : NativeString */;
3858 long var243 /* : Int */;
3859 val* var244 /* : String */;
3860 val* var245 /* : Array[Object] */;
3861 long var246 /* : Int */;
3862 val* var247 /* : NativeArray[Object] */;
3863 val* var248 /* : String */;
3864 static val* varonce249;
3865 val* var250 /* : String */;
3866 char* var251 /* : NativeString */;
3867 long var252 /* : Int */;
3868 val* var253 /* : String */;
3869 static val* varonce254;
3870 val* var255 /* : String */;
3871 char* var256 /* : NativeString */;
3872 long var257 /* : Int */;
3873 val* var258 /* : String */;
3874 val* var259 /* : Array[Object] */;
3875 long var260 /* : Int */;
3876 val* var261 /* : NativeArray[Object] */;
3877 val* var262 /* : String */;
3878 static val* varonce263;
3879 val* var264 /* : String */;
3880 char* var265 /* : NativeString */;
3881 long var266 /* : Int */;
3882 val* var267 /* : String */;
3883 static val* varonce268;
3884 val* var269 /* : String */;
3885 char* var270 /* : NativeString */;
3886 long var271 /* : Int */;
3887 val* var272 /* : String */;
3888 val* var273 /* : Array[Object] */;
3889 long var274 /* : Int */;
3890 val* var275 /* : NativeArray[Object] */;
3891 val* var276 /* : String */;
3892 static val* varonce277;
3893 val* var278 /* : String */;
3894 char* var279 /* : NativeString */;
3895 long var280 /* : Int */;
3896 val* var281 /* : String */;
3897 static val* varonce282;
3898 val* var283 /* : String */;
3899 char* var284 /* : NativeString */;
3900 long var285 /* : Int */;
3901 val* var286 /* : String */;
3902 val* var287 /* : Array[Object] */;
3903 long var288 /* : Int */;
3904 val* var289 /* : NativeArray[Object] */;
3905 val* var290 /* : String */;
3906 static val* varonce291;
3907 val* var292 /* : String */;
3908 char* var293 /* : NativeString */;
3909 long var294 /* : Int */;
3910 val* var295 /* : String */;
3911 static val* varonce296;
3912 val* var297 /* : String */;
3913 char* var298 /* : NativeString */;
3914 long var299 /* : Int */;
3915 val* var300 /* : String */;
3916 val* var301 /* : Array[Object] */;
3917 long var302 /* : Int */;
3918 val* var303 /* : NativeArray[Object] */;
3919 val* var304 /* : String */;
3920 static val* varonce306;
3921 val* var307 /* : String */;
3922 char* var308 /* : NativeString */;
3923 long var309 /* : Int */;
3924 val* var310 /* : String */;
3925 static val* varonce311;
3926 val* var312 /* : String */;
3927 char* var313 /* : NativeString */;
3928 long var314 /* : Int */;
3929 val* var315 /* : String */;
3930 val* var316 /* : Array[String] */;
3931 val* var317 /* : Array[nullable Object] */;
3932 val* var_tags /* var tags: Array[String] */;
3933 static val* varonce318;
3934 val* var319 /* : String */;
3935 char* var320 /* : NativeString */;
3936 long var321 /* : Int */;
3937 val* var322 /* : String */;
3938 val* var323 /* : Iterator[nullable Object] */;
3939 short int var324 /* : Bool */;
3940 val* var325 /* : nullable Object */;
3941 val* var_tag326 /* var tag: String */;
3942 static val* varonce327;
3943 val* var328 /* : String */;
3944 char* var329 /* : NativeString */;
3945 long var330 /* : Int */;
3946 val* var331 /* : String */;
3947 static val* varonce332;
3948 val* var333 /* : String */;
3949 char* var334 /* : NativeString */;
3950 long var335 /* : Int */;
3951 val* var336 /* : String */;
3952 val* var337 /* : Array[Object] */;
3953 long var338 /* : Int */;
3954 val* var339 /* : NativeArray[Object] */;
3955 val* var340 /* : String */;
3956 static val* varonce341;
3957 val* var342 /* : String */;
3958 char* var343 /* : NativeString */;
3959 long var344 /* : Int */;
3960 val* var345 /* : String */;
3961 static val* varonce346;
3962 val* var347 /* : String */;
3963 char* var348 /* : NativeString */;
3964 long var349 /* : Int */;
3965 val* var350 /* : String */;
3966 static val* varonce351;
3967 val* var352 /* : String */;
3968 char* var353 /* : NativeString */;
3969 long var354 /* : Int */;
3970 val* var355 /* : String */;
3971 val* var356 /* : Array[Object] */;
3972 long var357 /* : Int */;
3973 val* var358 /* : NativeArray[Object] */;
3974 val* var359 /* : String */;
3975 static val* varonce360;
3976 val* var361 /* : String */;
3977 char* var362 /* : NativeString */;
3978 long var363 /* : Int */;
3979 val* var364 /* : String */;
3980 static val* varonce365;
3981 val* var366 /* : String */;
3982 char* var367 /* : NativeString */;
3983 long var368 /* : Int */;
3984 val* var369 /* : String */;
3985 static val* varonce370;
3986 val* var371 /* : String */;
3987 char* var372 /* : NativeString */;
3988 long var373 /* : Int */;
3989 val* var374 /* : String */;
3990 val* var375 /* : Array[Object] */;
3991 long var376 /* : Int */;
3992 val* var377 /* : NativeArray[Object] */;
3993 val* var378 /* : String */;
3994 static val* varonce379;
3995 val* var380 /* : String */;
3996 char* var381 /* : NativeString */;
3997 long var382 /* : Int */;
3998 val* var383 /* : String */;
3999 static val* varonce384;
4000 val* var385 /* : String */;
4001 char* var386 /* : NativeString */;
4002 long var387 /* : Int */;
4003 val* var388 /* : String */;
4004 static val* varonce389;
4005 val* var390 /* : String */;
4006 char* var391 /* : NativeString */;
4007 long var392 /* : Int */;
4008 val* var393 /* : String */;
4009 val* var394 /* : Array[Object] */;
4010 long var395 /* : Int */;
4011 val* var396 /* : NativeArray[Object] */;
4012 val* var397 /* : String */;
4013 static val* varonce398;
4014 val* var399 /* : String */;
4015 char* var400 /* : NativeString */;
4016 long var401 /* : Int */;
4017 val* var402 /* : String */;
4018 static val* varonce403;
4019 val* var404 /* : String */;
4020 char* var405 /* : NativeString */;
4021 long var406 /* : Int */;
4022 val* var407 /* : String */;
4023 static val* varonce408;
4024 val* var409 /* : String */;
4025 char* var410 /* : NativeString */;
4026 long var411 /* : Int */;
4027 val* var412 /* : String */;
4028 val* var413 /* : Array[Object] */;
4029 long var414 /* : Int */;
4030 val* var415 /* : NativeArray[Object] */;
4031 val* var416 /* : String */;
4032 static val* varonce418;
4033 val* var419 /* : String */;
4034 char* var420 /* : NativeString */;
4035 long var421 /* : Int */;
4036 val* var422 /* : String */;
4037 static val* varonce423;
4038 val* var424 /* : String */;
4039 char* var425 /* : NativeString */;
4040 long var426 /* : Int */;
4041 val* var427 /* : String */;
4042 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_visitor]))(self) /* new_visitor on <self:AbstractCompiler>*/;
4043 var_v = var;
4044 if (varonce) {
4045 var1 = varonce;
4046 } else {
4047 var2 = "int glob_argc;";
4048 var3 = 14;
4049 var4 = string__NativeString__to_s_with_length(var2, var3);
4050 var1 = var4;
4051 varonce = var1;
4052 }
4053 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var1) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
4054 if (varonce5) {
4055 var6 = varonce5;
4056 } else {
4057 var7 = "char **glob_argv;";
4058 var8 = 17;
4059 var9 = string__NativeString__to_s_with_length(var7, var8);
4060 var6 = var9;
4061 varonce5 = var6;
4062 }
4063 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var6) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
4064 if (varonce10) {
4065 var11 = varonce10;
4066 } else {
4067 var12 = "val *glob_sys;";
4068 var13 = 14;
4069 var14 = string__NativeString__to_s_with_length(var12, var13);
4070 var11 = var14;
4071 varonce10 = var11;
4072 }
4073 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var11) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
4074 var15 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
4075 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var15) /* toolcontext on <var15:ModelBuilder>*/;
4076 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_abstract_compiler__ToolContext__opt_typing_test_metrics]))(var16) /* opt_typing_test_metrics on <var16:ToolContext>*/;
4077 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_opts__Option__value]))(var17) /* value on <var17:OptionBool>*/;
4078 var19 = ((struct instance_kernel__Bool*)var18)->value; /* autounbox from nullable Object to Bool */;
4079 if (var19){
4080 var20 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_tags]))(self) /* count_type_test_tags on <self:AbstractCompiler>*/;
4081 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_abstract_collection__Collection__iterator]))(var20) /* iterator on <var20:Array[String]>*/;
4082 for(;;) {
4083 var22 = ((short int (*)(val*))(var21->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var21) /* is_ok on <var21:Iterator[nullable Object]>*/;
4084 if(!var22) break;
4085 var23 = ((val* (*)(val*))(var21->class->vft[COLOR_abstract_collection__Iterator__item]))(var21) /* item on <var21:Iterator[nullable Object]>*/;
4086 var_tag = var23;
4087 if (varonce24) {
4088 var25 = varonce24;
4089 } else {
4090 var26 = "long count_type_test_resolved_";
4091 var27 = 30;
4092 var28 = string__NativeString__to_s_with_length(var26, var27);
4093 var25 = var28;
4094 varonce24 = var25;
4095 }
4096 if (varonce29) {
4097 var30 = varonce29;
4098 } else {
4099 var31 = ";";
4100 var32 = 1;
4101 var33 = string__NativeString__to_s_with_length(var31, var32);
4102 var30 = var33;
4103 varonce29 = var30;
4104 }
4105 var34 = NEW_array__Array(&type_array__Arraykernel__Object);
4106 { /* var34 = array_instance Array[Object] */
4107 var35 = 3;
4108 var36 = NEW_array__NativeArray(var35, &type_array__NativeArraykernel__Object);
4109 ((struct instance_array__NativeArray*)var36)->values[0] = (val*) var25;
4110 ((struct instance_array__NativeArray*)var36)->values[1] = (val*) var_tag;
4111 ((struct instance_array__NativeArray*)var36)->values[2] = (val*) var30;
4112 ((void (*)(val*, val*, long))(var34->class->vft[COLOR_array__Array__with_native]))(var34, var36, var35) /* with_native on <var34:Array[Object]>*/;
4113 CHECK_NEW_array__Array(var34);
4114 }
4115 var37 = ((val* (*)(val*))(var34->class->vft[COLOR_string__Object__to_s]))(var34) /* to_s on <var34:Array[Object]>*/;
4116 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var37) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
4117 if (varonce38) {
4118 var39 = varonce38;
4119 } else {
4120 var40 = "long count_type_test_unresolved_";
4121 var41 = 32;
4122 var42 = string__NativeString__to_s_with_length(var40, var41);
4123 var39 = var42;
4124 varonce38 = var39;
4125 }
4126 if (varonce43) {
4127 var44 = varonce43;
4128 } else {
4129 var45 = ";";
4130 var46 = 1;
4131 var47 = string__NativeString__to_s_with_length(var45, var46);
4132 var44 = var47;
4133 varonce43 = var44;
4134 }
4135 var48 = NEW_array__Array(&type_array__Arraykernel__Object);
4136 { /* var48 = array_instance Array[Object] */
4137 var49 = 3;
4138 var50 = NEW_array__NativeArray(var49, &type_array__NativeArraykernel__Object);
4139 ((struct instance_array__NativeArray*)var50)->values[0] = (val*) var39;
4140 ((struct instance_array__NativeArray*)var50)->values[1] = (val*) var_tag;
4141 ((struct instance_array__NativeArray*)var50)->values[2] = (val*) var44;
4142 ((void (*)(val*, val*, long))(var48->class->vft[COLOR_array__Array__with_native]))(var48, var50, var49) /* with_native on <var48:Array[Object]>*/;
4143 CHECK_NEW_array__Array(var48);
4144 }
4145 var51 = ((val* (*)(val*))(var48->class->vft[COLOR_string__Object__to_s]))(var48) /* to_s on <var48:Array[Object]>*/;
4146 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var51) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
4147 if (varonce52) {
4148 var53 = varonce52;
4149 } else {
4150 var54 = "long count_type_test_skipped_";
4151 var55 = 29;
4152 var56 = string__NativeString__to_s_with_length(var54, var55);
4153 var53 = var56;
4154 varonce52 = var53;
4155 }
4156 if (varonce57) {
4157 var58 = varonce57;
4158 } else {
4159 var59 = ";";
4160 var60 = 1;
4161 var61 = string__NativeString__to_s_with_length(var59, var60);
4162 var58 = var61;
4163 varonce57 = var58;
4164 }
4165 var62 = NEW_array__Array(&type_array__Arraykernel__Object);
4166 { /* var62 = array_instance Array[Object] */
4167 var63 = 3;
4168 var64 = NEW_array__NativeArray(var63, &type_array__NativeArraykernel__Object);
4169 ((struct instance_array__NativeArray*)var64)->values[0] = (val*) var53;
4170 ((struct instance_array__NativeArray*)var64)->values[1] = (val*) var_tag;
4171 ((struct instance_array__NativeArray*)var64)->values[2] = (val*) var58;
4172 ((void (*)(val*, val*, long))(var62->class->vft[COLOR_array__Array__with_native]))(var62, var64, var63) /* with_native on <var62:Array[Object]>*/;
4173 CHECK_NEW_array__Array(var62);
4174 }
4175 var65 = ((val* (*)(val*))(var62->class->vft[COLOR_string__Object__to_s]))(var62) /* to_s on <var62:Array[Object]>*/;
4176 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var65) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
4177 var66 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(var_v) /* compiler on <var_v:AbstractCompilerVisitor>*/;
4178 var67 = ((val* (*)(val*))(var66->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(var66) /* header on <var66:AbstractCompiler>*/;
4179 if (varonce68) {
4180 var69 = varonce68;
4181 } else {
4182 var70 = "extern long count_type_test_resolved_";
4183 var71 = 37;
4184 var72 = string__NativeString__to_s_with_length(var70, var71);
4185 var69 = var72;
4186 varonce68 = var69;
4187 }
4188 if (varonce73) {
4189 var74 = varonce73;
4190 } else {
4191 var75 = ";";
4192 var76 = 1;
4193 var77 = string__NativeString__to_s_with_length(var75, var76);
4194 var74 = var77;
4195 varonce73 = var74;
4196 }
4197 var78 = NEW_array__Array(&type_array__Arraykernel__Object);
4198 { /* var78 = array_instance Array[Object] */
4199 var79 = 3;
4200 var80 = NEW_array__NativeArray(var79, &type_array__NativeArraykernel__Object);
4201 ((struct instance_array__NativeArray*)var80)->values[0] = (val*) var69;
4202 ((struct instance_array__NativeArray*)var80)->values[1] = (val*) var_tag;
4203 ((struct instance_array__NativeArray*)var80)->values[2] = (val*) var74;
4204 ((void (*)(val*, val*, long))(var78->class->vft[COLOR_array__Array__with_native]))(var78, var80, var79) /* with_native on <var78:Array[Object]>*/;
4205 CHECK_NEW_array__Array(var78);
4206 }
4207 var81 = ((val* (*)(val*))(var78->class->vft[COLOR_string__Object__to_s]))(var78) /* to_s on <var78:Array[Object]>*/;
4208 ((void (*)(val*, val*))(var67->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var67, var81) /* add_decl on <var67:CodeWriter>*/;
4209 var82 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(var_v) /* compiler on <var_v:AbstractCompilerVisitor>*/;
4210 var83 = ((val* (*)(val*))(var82->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(var82) /* header on <var82:AbstractCompiler>*/;
4211 if (varonce84) {
4212 var85 = varonce84;
4213 } else {
4214 var86 = "extern long count_type_test_unresolved_";
4215 var87 = 39;
4216 var88 = string__NativeString__to_s_with_length(var86, var87);
4217 var85 = var88;
4218 varonce84 = var85;
4219 }
4220 if (varonce89) {
4221 var90 = varonce89;
4222 } else {
4223 var91 = ";";
4224 var92 = 1;
4225 var93 = string__NativeString__to_s_with_length(var91, var92);
4226 var90 = var93;
4227 varonce89 = var90;
4228 }
4229 var94 = NEW_array__Array(&type_array__Arraykernel__Object);
4230 { /* var94 = array_instance Array[Object] */
4231 var95 = 3;
4232 var96 = NEW_array__NativeArray(var95, &type_array__NativeArraykernel__Object);
4233 ((struct instance_array__NativeArray*)var96)->values[0] = (val*) var85;
4234 ((struct instance_array__NativeArray*)var96)->values[1] = (val*) var_tag;
4235 ((struct instance_array__NativeArray*)var96)->values[2] = (val*) var90;
4236 ((void (*)(val*, val*, long))(var94->class->vft[COLOR_array__Array__with_native]))(var94, var96, var95) /* with_native on <var94:Array[Object]>*/;
4237 CHECK_NEW_array__Array(var94);
4238 }
4239 var97 = ((val* (*)(val*))(var94->class->vft[COLOR_string__Object__to_s]))(var94) /* to_s on <var94:Array[Object]>*/;
4240 ((void (*)(val*, val*))(var83->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var83, var97) /* add_decl on <var83:CodeWriter>*/;
4241 var98 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(var_v) /* compiler on <var_v:AbstractCompilerVisitor>*/;
4242 var99 = ((val* (*)(val*))(var98->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(var98) /* header on <var98:AbstractCompiler>*/;
4243 if (varonce100) {
4244 var101 = varonce100;
4245 } else {
4246 var102 = "extern long count_type_test_skipped_";
4247 var103 = 36;
4248 var104 = string__NativeString__to_s_with_length(var102, var103);
4249 var101 = var104;
4250 varonce100 = var101;
4251 }
4252 if (varonce105) {
4253 var106 = varonce105;
4254 } else {
4255 var107 = ";";
4256 var108 = 1;
4257 var109 = string__NativeString__to_s_with_length(var107, var108);
4258 var106 = var109;
4259 varonce105 = var106;
4260 }
4261 var110 = NEW_array__Array(&type_array__Arraykernel__Object);
4262 { /* var110 = array_instance Array[Object] */
4263 var111 = 3;
4264 var112 = NEW_array__NativeArray(var111, &type_array__NativeArraykernel__Object);
4265 ((struct instance_array__NativeArray*)var112)->values[0] = (val*) var101;
4266 ((struct instance_array__NativeArray*)var112)->values[1] = (val*) var_tag;
4267 ((struct instance_array__NativeArray*)var112)->values[2] = (val*) var106;
4268 ((void (*)(val*, val*, long))(var110->class->vft[COLOR_array__Array__with_native]))(var110, var112, var111) /* with_native on <var110:Array[Object]>*/;
4269 CHECK_NEW_array__Array(var110);
4270 }
4271 var113 = ((val* (*)(val*))(var110->class->vft[COLOR_string__Object__to_s]))(var110) /* to_s on <var110:Array[Object]>*/;
4272 ((void (*)(val*, val*))(var99->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var99, var113) /* add_decl on <var99:CodeWriter>*/;
4273 CONTINUE_label: (void)0;
4274 ((void (*)(val*))(var21->class->vft[COLOR_abstract_collection__Iterator__next]))(var21) /* next on <var21:Iterator[nullable Object]>*/;
4275 }
4276 BREAK_label: (void)0;
4277 } else {
4278 }
4279 if (varonce114) {
4280 var115 = varonce114;
4281 } else {
4282 var116 = "int main(int argc, char** argv) {";
4283 var117 = 33;
4284 var118 = string__NativeString__to_s_with_length(var116, var117);
4285 var115 = var118;
4286 varonce114 = var115;
4287 }
4288 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var115) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
4289 if (varonce119) {
4290 var120 = varonce119;
4291 } else {
4292 var121 = "glob_argc = argc; glob_argv = argv;";
4293 var122 = 35;
4294 var123 = string__NativeString__to_s_with_length(var121, var122);
4295 var120 = var123;
4296 varonce119 = var120;
4297 }
4298 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var120) /* add on <var_v:AbstractCompilerVisitor>*/;
4299 if (varonce124) {
4300 var125 = varonce124;
4301 } else {
4302 var126 = "initialize_gc_option();";
4303 var127 = 23;
4304 var128 = string__NativeString__to_s_with_length(var126, var127);
4305 var125 = var128;
4306 varonce124 = var125;
4307 }
4308 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var125) /* add on <var_v:AbstractCompilerVisitor>*/;
4309 var129 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:AbstractCompiler>*/;
4310 var130 = ((val* (*)(val*))(var129->class->vft[COLOR_model__MModule__sys_type]))(var129) /* sys_type on <var129:MModule>*/;
4311 var_main_type = var130;
4312 var131 = NULL;
4313 if (var_main_type == NULL) {
4314 var132 = 0; /* is null */
4315 } else {
4316 var132 = 1; /* arg is null and recv is not */
4317 }
4318 if (var132){
4319 var133 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(var_v) /* compiler on <var_v:AbstractCompilerVisitor>*/;
4320 var134 = ((val* (*)(val*))(var133->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var133) /* mainmodule on <var133:AbstractCompiler>*/;
4321 var_mainmodule = var134;
4322 var135 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__init_instance]))(var_v, var_main_type) /* init_instance on <var_v:AbstractCompilerVisitor>*/;
4323 var_glob_sys = var135;
4324 if (varonce136) {
4325 var137 = varonce136;
4326 } else {
4327 var138 = "glob_sys = ";
4328 var139 = 11;
4329 var140 = string__NativeString__to_s_with_length(var138, var139);
4330 var137 = var140;
4331 varonce136 = var137;
4332 }
4333 if (varonce141) {
4334 var142 = varonce141;
4335 } else {
4336 var143 = ";";
4337 var144 = 1;
4338 var145 = string__NativeString__to_s_with_length(var143, var144);
4339 var142 = var145;
4340 varonce141 = var142;
4341 }
4342 var146 = NEW_array__Array(&type_array__Arraykernel__Object);
4343 { /* var146 = array_instance Array[Object] */
4344 var147 = 3;
4345 var148 = NEW_array__NativeArray(var147, &type_array__NativeArraykernel__Object);
4346 ((struct instance_array__NativeArray*)var148)->values[0] = (val*) var137;
4347 ((struct instance_array__NativeArray*)var148)->values[1] = (val*) var_glob_sys;
4348 ((struct instance_array__NativeArray*)var148)->values[2] = (val*) var142;
4349 ((void (*)(val*, val*, long))(var146->class->vft[COLOR_array__Array__with_native]))(var146, var148, var147) /* with_native on <var146:Array[Object]>*/;
4350 CHECK_NEW_array__Array(var146);
4351 }
4352 var149 = ((val* (*)(val*))(var146->class->vft[COLOR_string__Object__to_s]))(var146) /* to_s on <var146:Array[Object]>*/;
4353 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var149) /* add on <var_v:AbstractCompilerVisitor>*/;
4354 if (varonce150) {
4355 var151 = varonce150;
4356 } else {
4357 var152 = "init";
4358 var153 = 4;
4359 var154 = string__NativeString__to_s_with_length(var152, var153);
4360 var151 = var154;
4361 varonce150 = var151;
4362 }
4363 var155 = ((val* (*)(val*))(var_main_type->class->vft[COLOR_model__MClassType__mclass]))(var_main_type) /* mclass on <var_main_type:nullable MClassType(MClassType)>*/;
4364 var156 = ((val* (*)(val*, val*, val*))(var_mainmodule->class->vft[COLOR_model__MModule__try_get_primitive_method]))(var_mainmodule, var151, var155) /* try_get_primitive_method on <var_mainmodule:MModule>*/;
4365 var_main_init = var156;
4366 var157 = NULL;
4367 if (var_main_init == NULL) {
4368 var158 = 0; /* is null */
4369 } else {
4370 var158 = 1; /* arg is null and recv is not */
4371 }
4372 if (var158){
4373 var159 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
4374 { /* var159 = array_instance Array[RuntimeVariable] */
4375 var160 = 1;
4376 var161 = NEW_array__NativeArray(var160, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
4377 ((struct instance_array__NativeArray*)var161)->values[0] = (val*) var_glob_sys;
4378 ((void (*)(val*, val*, long))(var159->class->vft[COLOR_array__Array__with_native]))(var159, var161, var160) /* with_native on <var159:Array[RuntimeVariable]>*/;
4379 CHECK_NEW_array__Array(var159);
4380 }
4381 var162 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(var_v, var_main_init, var159) /* send on <var_v:AbstractCompilerVisitor>*/;
4382 var162;
4383 } else {
4384 }
4385 if (varonce163) {
4386 var164 = varonce163;
4387 } else {
4388 var165 = "main";
4389 var166 = 4;
4390 var167 = string__NativeString__to_s_with_length(var165, var166);
4391 var164 = var167;
4392 varonce163 = var164;
4393 }
4394 var168 = ((val* (*)(val*))(var_main_type->class->vft[COLOR_model__MClassType__mclass]))(var_main_type) /* mclass on <var_main_type:nullable MClassType(MClassType)>*/;
4395 var169 = ((val* (*)(val*, val*, val*))(var_mainmodule->class->vft[COLOR_model__MModule__try_get_primitive_method]))(var_mainmodule, var164, var168) /* try_get_primitive_method on <var_mainmodule:MModule>*/;
4396 var_main_method = var169;
4397 var170 = NULL;
4398 if (var_main_method == NULL) {
4399 var171 = 0; /* is null */
4400 } else {
4401 var171 = 1; /* arg is null and recv is not */
4402 }
4403 if (var171){
4404 var172 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
4405 { /* var172 = array_instance Array[RuntimeVariable] */
4406 var173 = 1;
4407 var174 = NEW_array__NativeArray(var173, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
4408 ((struct instance_array__NativeArray*)var174)->values[0] = (val*) var_glob_sys;
4409 ((void (*)(val*, val*, long))(var172->class->vft[COLOR_array__Array__with_native]))(var172, var174, var173) /* with_native on <var172:Array[RuntimeVariable]>*/;
4410 CHECK_NEW_array__Array(var172);
4411 }
4412 var175 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(var_v, var_main_method, var172) /* send on <var_v:AbstractCompilerVisitor>*/;
4413 var175;
4414 } else {
4415 }
4416 } else {
4417 }
4418 var176 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
4419 var177 = ((val* (*)(val*))(var176->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var176) /* toolcontext on <var176:ModelBuilder>*/;
4420 var178 = ((val* (*)(val*))(var177->class->vft[COLOR_abstract_compiler__ToolContext__opt_typing_test_metrics]))(var177) /* opt_typing_test_metrics on <var177:ToolContext>*/;
4421 var179 = ((val* (*)(val*))(var178->class->vft[COLOR_opts__Option__value]))(var178) /* value on <var178:OptionBool>*/;
4422 var180 = ((struct instance_kernel__Bool*)var179)->value; /* autounbox from nullable Object to Bool */;
4423 if (var180){
4424 if (varonce181) {
4425 var182 = varonce181;
4426 } else {
4427 var183 = "long count_type_test_resolved_total = 0;";
4428 var184 = 40;
4429 var185 = string__NativeString__to_s_with_length(var183, var184);
4430 var182 = var185;
4431 varonce181 = var182;
4432 }
4433 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var182) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
4434 if (varonce186) {
4435 var187 = varonce186;
4436 } else {
4437 var188 = "long count_type_test_unresolved_total = 0;";
4438 var189 = 42;
4439 var190 = string__NativeString__to_s_with_length(var188, var189);
4440 var187 = var190;
4441 varonce186 = var187;
4442 }
4443 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var187) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
4444 if (varonce191) {
4445 var192 = varonce191;
4446 } else {
4447 var193 = "long count_type_test_skipped_total = 0;";
4448 var194 = 39;
4449 var195 = string__NativeString__to_s_with_length(var193, var194);
4450 var192 = var195;
4451 varonce191 = var192;
4452 }
4453 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var192) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
4454 if (varonce196) {
4455 var197 = varonce196;
4456 } else {
4457 var198 = "long count_type_test_total_total = 0;";
4458 var199 = 37;
4459 var200 = string__NativeString__to_s_with_length(var198, var199);
4460 var197 = var200;
4461 varonce196 = var197;
4462 }
4463 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var197) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
4464 var201 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_tags]))(self) /* count_type_test_tags on <self:AbstractCompiler>*/;
4465 var202 = ((val* (*)(val*))(var201->class->vft[COLOR_abstract_collection__Collection__iterator]))(var201) /* iterator on <var201:Array[String]>*/;
4466 for(;;) {
4467 var203 = ((short int (*)(val*))(var202->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var202) /* is_ok on <var202:Iterator[nullable Object]>*/;
4468 if(!var203) break;
4469 var204 = ((val* (*)(val*))(var202->class->vft[COLOR_abstract_collection__Iterator__item]))(var202) /* item on <var202:Iterator[nullable Object]>*/;
4470 var_tag205 = var204;
4471 if (varonce206) {
4472 var207 = varonce206;
4473 } else {
4474 var208 = "long count_type_test_total_";
4475 var209 = 27;
4476 var210 = string__NativeString__to_s_with_length(var208, var209);
4477 var207 = var210;
4478 varonce206 = var207;
4479 }
4480 if (varonce211) {
4481 var212 = varonce211;
4482 } else {
4483 var213 = ";";
4484 var214 = 1;
4485 var215 = string__NativeString__to_s_with_length(var213, var214);
4486 var212 = var215;
4487 varonce211 = var212;
4488 }
4489 var216 = NEW_array__Array(&type_array__Arraykernel__Object);
4490 { /* var216 = array_instance Array[Object] */
4491 var217 = 3;
4492 var218 = NEW_array__NativeArray(var217, &type_array__NativeArraykernel__Object);
4493 ((struct instance_array__NativeArray*)var218)->values[0] = (val*) var207;
4494 ((struct instance_array__NativeArray*)var218)->values[1] = (val*) var_tag205;
4495 ((struct instance_array__NativeArray*)var218)->values[2] = (val*) var212;
4496 ((void (*)(val*, val*, long))(var216->class->vft[COLOR_array__Array__with_native]))(var216, var218, var217) /* with_native on <var216:Array[Object]>*/;
4497 CHECK_NEW_array__Array(var216);
4498 }
4499 var219 = ((val* (*)(val*))(var216->class->vft[COLOR_string__Object__to_s]))(var216) /* to_s on <var216:Array[Object]>*/;
4500 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var219) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
4501 if (varonce220) {
4502 var221 = varonce220;
4503 } else {
4504 var222 = "count_type_test_total_";
4505 var223 = 22;
4506 var224 = string__NativeString__to_s_with_length(var222, var223);
4507 var221 = var224;
4508 varonce220 = var221;
4509 }
4510 if (varonce225) {
4511 var226 = varonce225;
4512 } else {
4513 var227 = " = count_type_test_resolved_";
4514 var228 = 28;
4515 var229 = string__NativeString__to_s_with_length(var227, var228);
4516 var226 = var229;
4517 varonce225 = var226;
4518 }
4519 if (varonce230) {
4520 var231 = varonce230;
4521 } else {
4522 var232 = " + count_type_test_unresolved_";
4523 var233 = 30;
4524 var234 = string__NativeString__to_s_with_length(var232, var233);
4525 var231 = var234;
4526 varonce230 = var231;
4527 }
4528 if (varonce235) {
4529 var236 = varonce235;
4530 } else {
4531 var237 = " + count_type_test_skipped_";
4532 var238 = 27;
4533 var239 = string__NativeString__to_s_with_length(var237, var238);
4534 var236 = var239;
4535 varonce235 = var236;
4536 }
4537 if (varonce240) {
4538 var241 = varonce240;
4539 } else {
4540 var242 = ";";
4541 var243 = 1;
4542 var244 = string__NativeString__to_s_with_length(var242, var243);
4543 var241 = var244;
4544 varonce240 = var241;
4545 }
4546 var245 = NEW_array__Array(&type_array__Arraykernel__Object);
4547 { /* var245 = array_instance Array[Object] */
4548 var246 = 9;
4549 var247 = NEW_array__NativeArray(var246, &type_array__NativeArraykernel__Object);
4550 ((struct instance_array__NativeArray*)var247)->values[0] = (val*) var221;
4551 ((struct instance_array__NativeArray*)var247)->values[1] = (val*) var_tag205;
4552 ((struct instance_array__NativeArray*)var247)->values[2] = (val*) var226;
4553 ((struct instance_array__NativeArray*)var247)->values[3] = (val*) var_tag205;
4554 ((struct instance_array__NativeArray*)var247)->values[4] = (val*) var231;
4555 ((struct instance_array__NativeArray*)var247)->values[5] = (val*) var_tag205;
4556 ((struct instance_array__NativeArray*)var247)->values[6] = (val*) var236;
4557 ((struct instance_array__NativeArray*)var247)->values[7] = (val*) var_tag205;
4558 ((struct instance_array__NativeArray*)var247)->values[8] = (val*) var241;
4559 ((void (*)(val*, val*, long))(var245->class->vft[COLOR_array__Array__with_native]))(var245, var247, var246) /* with_native on <var245:Array[Object]>*/;
4560 CHECK_NEW_array__Array(var245);
4561 }
4562 var248 = ((val* (*)(val*))(var245->class->vft[COLOR_string__Object__to_s]))(var245) /* to_s on <var245:Array[Object]>*/;
4563 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var248) /* add on <var_v:AbstractCompilerVisitor>*/;
4564 if (varonce249) {
4565 var250 = varonce249;
4566 } else {
4567 var251 = "count_type_test_resolved_total += count_type_test_resolved_";
4568 var252 = 59;
4569 var253 = string__NativeString__to_s_with_length(var251, var252);
4570 var250 = var253;
4571 varonce249 = var250;
4572 }
4573 if (varonce254) {
4574 var255 = varonce254;
4575 } else {
4576 var256 = ";";
4577 var257 = 1;
4578 var258 = string__NativeString__to_s_with_length(var256, var257);
4579 var255 = var258;
4580 varonce254 = var255;
4581 }
4582 var259 = NEW_array__Array(&type_array__Arraykernel__Object);
4583 { /* var259 = array_instance Array[Object] */
4584 var260 = 3;
4585 var261 = NEW_array__NativeArray(var260, &type_array__NativeArraykernel__Object);
4586 ((struct instance_array__NativeArray*)var261)->values[0] = (val*) var250;
4587 ((struct instance_array__NativeArray*)var261)->values[1] = (val*) var_tag205;
4588 ((struct instance_array__NativeArray*)var261)->values[2] = (val*) var255;
4589 ((void (*)(val*, val*, long))(var259->class->vft[COLOR_array__Array__with_native]))(var259, var261, var260) /* with_native on <var259:Array[Object]>*/;
4590 CHECK_NEW_array__Array(var259);
4591 }
4592 var262 = ((val* (*)(val*))(var259->class->vft[COLOR_string__Object__to_s]))(var259) /* to_s on <var259:Array[Object]>*/;
4593 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var262) /* add on <var_v:AbstractCompilerVisitor>*/;
4594 if (varonce263) {
4595 var264 = varonce263;
4596 } else {
4597 var265 = "count_type_test_unresolved_total += count_type_test_unresolved_";
4598 var266 = 63;
4599 var267 = string__NativeString__to_s_with_length(var265, var266);
4600 var264 = var267;
4601 varonce263 = var264;
4602 }
4603 if (varonce268) {
4604 var269 = varonce268;
4605 } else {
4606 var270 = ";";
4607 var271 = 1;
4608 var272 = string__NativeString__to_s_with_length(var270, var271);
4609 var269 = var272;
4610 varonce268 = var269;
4611 }
4612 var273 = NEW_array__Array(&type_array__Arraykernel__Object);
4613 { /* var273 = array_instance Array[Object] */
4614 var274 = 3;
4615 var275 = NEW_array__NativeArray(var274, &type_array__NativeArraykernel__Object);
4616 ((struct instance_array__NativeArray*)var275)->values[0] = (val*) var264;
4617 ((struct instance_array__NativeArray*)var275)->values[1] = (val*) var_tag205;
4618 ((struct instance_array__NativeArray*)var275)->values[2] = (val*) var269;
4619 ((void (*)(val*, val*, long))(var273->class->vft[COLOR_array__Array__with_native]))(var273, var275, var274) /* with_native on <var273:Array[Object]>*/;
4620 CHECK_NEW_array__Array(var273);
4621 }
4622 var276 = ((val* (*)(val*))(var273->class->vft[COLOR_string__Object__to_s]))(var273) /* to_s on <var273:Array[Object]>*/;
4623 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var276) /* add on <var_v:AbstractCompilerVisitor>*/;
4624 if (varonce277) {
4625 var278 = varonce277;
4626 } else {
4627 var279 = "count_type_test_skipped_total += count_type_test_skipped_";
4628 var280 = 57;
4629 var281 = string__NativeString__to_s_with_length(var279, var280);
4630 var278 = var281;
4631 varonce277 = var278;
4632 }
4633 if (varonce282) {
4634 var283 = varonce282;
4635 } else {
4636 var284 = ";";
4637 var285 = 1;
4638 var286 = string__NativeString__to_s_with_length(var284, var285);
4639 var283 = var286;
4640 varonce282 = var283;
4641 }
4642 var287 = NEW_array__Array(&type_array__Arraykernel__Object);
4643 { /* var287 = array_instance Array[Object] */
4644 var288 = 3;
4645 var289 = NEW_array__NativeArray(var288, &type_array__NativeArraykernel__Object);
4646 ((struct instance_array__NativeArray*)var289)->values[0] = (val*) var278;
4647 ((struct instance_array__NativeArray*)var289)->values[1] = (val*) var_tag205;
4648 ((struct instance_array__NativeArray*)var289)->values[2] = (val*) var283;
4649 ((void (*)(val*, val*, long))(var287->class->vft[COLOR_array__Array__with_native]))(var287, var289, var288) /* with_native on <var287:Array[Object]>*/;
4650 CHECK_NEW_array__Array(var287);
4651 }
4652 var290 = ((val* (*)(val*))(var287->class->vft[COLOR_string__Object__to_s]))(var287) /* to_s on <var287:Array[Object]>*/;
4653 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var290) /* add on <var_v:AbstractCompilerVisitor>*/;
4654 if (varonce291) {
4655 var292 = varonce291;
4656 } else {
4657 var293 = "count_type_test_total_total += count_type_test_total_";
4658 var294 = 53;
4659 var295 = string__NativeString__to_s_with_length(var293, var294);
4660 var292 = var295;
4661 varonce291 = var292;
4662 }
4663 if (varonce296) {
4664 var297 = varonce296;
4665 } else {
4666 var298 = ";";
4667 var299 = 1;
4668 var300 = string__NativeString__to_s_with_length(var298, var299);
4669 var297 = var300;
4670 varonce296 = var297;
4671 }
4672 var301 = NEW_array__Array(&type_array__Arraykernel__Object);
4673 { /* var301 = array_instance Array[Object] */
4674 var302 = 3;
4675 var303 = NEW_array__NativeArray(var302, &type_array__NativeArraykernel__Object);
4676 ((struct instance_array__NativeArray*)var303)->values[0] = (val*) var292;
4677 ((struct instance_array__NativeArray*)var303)->values[1] = (val*) var_tag205;
4678 ((struct instance_array__NativeArray*)var303)->values[2] = (val*) var297;
4679 ((void (*)(val*, val*, long))(var301->class->vft[COLOR_array__Array__with_native]))(var301, var303, var302) /* with_native on <var301:Array[Object]>*/;
4680 CHECK_NEW_array__Array(var301);
4681 }
4682 var304 = ((val* (*)(val*))(var301->class->vft[COLOR_string__Object__to_s]))(var301) /* to_s on <var301:Array[Object]>*/;
4683 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var304) /* add on <var_v:AbstractCompilerVisitor>*/;
4684 CONTINUE_label305: (void)0;
4685 ((void (*)(val*))(var202->class->vft[COLOR_abstract_collection__Iterator__next]))(var202) /* next on <var202:Iterator[nullable Object]>*/;
4686 }
4687 BREAK_label305: (void)0;
4688 if (varonce306) {
4689 var307 = varonce306;
4690 } else {
4691 var308 = "printf(\"# dynamic count_type_test: total %l\\n\");";
4692 var309 = 48;
4693 var310 = string__NativeString__to_s_with_length(var308, var309);
4694 var307 = var310;
4695 varonce306 = var307;
4696 }
4697 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var307) /* add on <var_v:AbstractCompilerVisitor>*/;
4698 if (varonce311) {
4699 var312 = varonce311;
4700 } else {
4701 var313 = "printf(\"\\tresolved\\tunresolved\\tskipped\\ttotal\\n\");";
4702 var314 = 51;
4703 var315 = string__NativeString__to_s_with_length(var313, var314);
4704 var312 = var315;
4705 varonce311 = var312;
4706 }
4707 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var312) /* add on <var_v:AbstractCompilerVisitor>*/;
4708 var316 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_tags]))(self) /* count_type_test_tags on <self:AbstractCompiler>*/;
4709 var317 = ((val* (*)(val*))(var316->class->vft[COLOR_array__Collection__to_a]))(var316) /* to_a on <var316:Array[String]>*/;
4710 var_tags = var317;
4711 if (varonce318) {
4712 var319 = varonce318;
4713 } else {
4714 var320 = "total";
4715 var321 = 5;
4716 var322 = string__NativeString__to_s_with_length(var320, var321);
4717 var319 = var322;
4718 varonce318 = var319;
4719 }
4720 ((void (*)(val*, val*))(var_tags->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_tags, var319) /* add on <var_tags:Array[String]>*/;
4721 var323 = ((val* (*)(val*))(var_tags->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_tags) /* iterator on <var_tags:Array[String]>*/;
4722 for(;;) {
4723 var324 = ((short int (*)(val*))(var323->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var323) /* is_ok on <var323:Iterator[nullable Object]>*/;
4724 if(!var324) break;
4725 var325 = ((val* (*)(val*))(var323->class->vft[COLOR_abstract_collection__Iterator__item]))(var323) /* item on <var323:Iterator[nullable Object]>*/;
4726 var_tag326 = var325;
4727 if (varonce327) {
4728 var328 = varonce327;
4729 } else {
4730 var329 = "printf(\"";
4731 var330 = 8;
4732 var331 = string__NativeString__to_s_with_length(var329, var330);
4733 var328 = var331;
4734 varonce327 = var328;
4735 }
4736 if (varonce332) {
4737 var333 = varonce332;
4738 } else {
4739 var334 = "\");";
4740 var335 = 3;
4741 var336 = string__NativeString__to_s_with_length(var334, var335);
4742 var333 = var336;
4743 varonce332 = var333;
4744 }
4745 var337 = NEW_array__Array(&type_array__Arraykernel__Object);
4746 { /* var337 = array_instance Array[Object] */
4747 var338 = 3;
4748 var339 = NEW_array__NativeArray(var338, &type_array__NativeArraykernel__Object);
4749 ((struct instance_array__NativeArray*)var339)->values[0] = (val*) var328;
4750 ((struct instance_array__NativeArray*)var339)->values[1] = (val*) var_tag326;
4751 ((struct instance_array__NativeArray*)var339)->values[2] = (val*) var333;
4752 ((void (*)(val*, val*, long))(var337->class->vft[COLOR_array__Array__with_native]))(var337, var339, var338) /* with_native on <var337:Array[Object]>*/;
4753 CHECK_NEW_array__Array(var337);
4754 }
4755 var340 = ((val* (*)(val*))(var337->class->vft[COLOR_string__Object__to_s]))(var337) /* to_s on <var337:Array[Object]>*/;
4756 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var340) /* add on <var_v:AbstractCompilerVisitor>*/;
4757 if (varonce341) {
4758 var342 = varonce341;
4759 } else {
4760 var343 = "printf(\"\\t%ld (%.2f%%)\", count_type_test_resolved_";
4761 var344 = 50;
4762 var345 = string__NativeString__to_s_with_length(var343, var344);
4763 var342 = var345;
4764 varonce341 = var342;
4765 }
4766 if (varonce346) {
4767 var347 = varonce346;
4768 } else {
4769 var348 = ", 100.0*count_type_test_resolved_";
4770 var349 = 33;
4771 var350 = string__NativeString__to_s_with_length(var348, var349);
4772 var347 = var350;
4773 varonce346 = var347;
4774 }
4775 if (varonce351) {
4776 var352 = varonce351;
4777 } else {
4778 var353 = "/count_type_test_total_total);";
4779 var354 = 30;
4780 var355 = string__NativeString__to_s_with_length(var353, var354);
4781 var352 = var355;
4782 varonce351 = var352;
4783 }
4784 var356 = NEW_array__Array(&type_array__Arraykernel__Object);
4785 { /* var356 = array_instance Array[Object] */
4786 var357 = 5;
4787 var358 = NEW_array__NativeArray(var357, &type_array__NativeArraykernel__Object);
4788 ((struct instance_array__NativeArray*)var358)->values[0] = (val*) var342;
4789 ((struct instance_array__NativeArray*)var358)->values[1] = (val*) var_tag326;
4790 ((struct instance_array__NativeArray*)var358)->values[2] = (val*) var347;
4791 ((struct instance_array__NativeArray*)var358)->values[3] = (val*) var_tag326;
4792 ((struct instance_array__NativeArray*)var358)->values[4] = (val*) var352;
4793 ((void (*)(val*, val*, long))(var356->class->vft[COLOR_array__Array__with_native]))(var356, var358, var357) /* with_native on <var356:Array[Object]>*/;
4794 CHECK_NEW_array__Array(var356);
4795 }
4796 var359 = ((val* (*)(val*))(var356->class->vft[COLOR_string__Object__to_s]))(var356) /* to_s on <var356:Array[Object]>*/;
4797 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var359) /* add on <var_v:AbstractCompilerVisitor>*/;
4798 if (varonce360) {
4799 var361 = varonce360;
4800 } else {
4801 var362 = "printf(\"\\t%ld (%.2f%%)\", count_type_test_unresolved_";
4802 var363 = 52;
4803 var364 = string__NativeString__to_s_with_length(var362, var363);
4804 var361 = var364;
4805 varonce360 = var361;
4806 }
4807 if (varonce365) {
4808 var366 = varonce365;
4809 } else {
4810 var367 = ", 100.0*count_type_test_unresolved_";
4811 var368 = 35;
4812 var369 = string__NativeString__to_s_with_length(var367, var368);
4813 var366 = var369;
4814 varonce365 = var366;
4815 }
4816 if (varonce370) {
4817 var371 = varonce370;
4818 } else {
4819 var372 = "/count_type_test_total_total);";
4820 var373 = 30;
4821 var374 = string__NativeString__to_s_with_length(var372, var373);
4822 var371 = var374;
4823 varonce370 = var371;
4824 }
4825 var375 = NEW_array__Array(&type_array__Arraykernel__Object);
4826 { /* var375 = array_instance Array[Object] */
4827 var376 = 5;
4828 var377 = NEW_array__NativeArray(var376, &type_array__NativeArraykernel__Object);
4829 ((struct instance_array__NativeArray*)var377)->values[0] = (val*) var361;
4830 ((struct instance_array__NativeArray*)var377)->values[1] = (val*) var_tag326;
4831 ((struct instance_array__NativeArray*)var377)->values[2] = (val*) var366;
4832 ((struct instance_array__NativeArray*)var377)->values[3] = (val*) var_tag326;
4833 ((struct instance_array__NativeArray*)var377)->values[4] = (val*) var371;
4834 ((void (*)(val*, val*, long))(var375->class->vft[COLOR_array__Array__with_native]))(var375, var377, var376) /* with_native on <var375:Array[Object]>*/;
4835 CHECK_NEW_array__Array(var375);
4836 }
4837 var378 = ((val* (*)(val*))(var375->class->vft[COLOR_string__Object__to_s]))(var375) /* to_s on <var375:Array[Object]>*/;
4838 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var378) /* add on <var_v:AbstractCompilerVisitor>*/;
4839 if (varonce379) {
4840 var380 = varonce379;
4841 } else {
4842 var381 = "printf(\"\\t%ld (%.2f%%)\", count_type_test_skipped_";
4843 var382 = 49;
4844 var383 = string__NativeString__to_s_with_length(var381, var382);
4845 var380 = var383;
4846 varonce379 = var380;
4847 }
4848 if (varonce384) {
4849 var385 = varonce384;
4850 } else {
4851 var386 = ", 100.0*count_type_test_skipped_";
4852 var387 = 32;
4853 var388 = string__NativeString__to_s_with_length(var386, var387);
4854 var385 = var388;
4855 varonce384 = var385;
4856 }
4857 if (varonce389) {
4858 var390 = varonce389;
4859 } else {
4860 var391 = "/count_type_test_total_total);";
4861 var392 = 30;
4862 var393 = string__NativeString__to_s_with_length(var391, var392);
4863 var390 = var393;
4864 varonce389 = var390;
4865 }
4866 var394 = NEW_array__Array(&type_array__Arraykernel__Object);
4867 { /* var394 = array_instance Array[Object] */
4868 var395 = 5;
4869 var396 = NEW_array__NativeArray(var395, &type_array__NativeArraykernel__Object);
4870 ((struct instance_array__NativeArray*)var396)->values[0] = (val*) var380;
4871 ((struct instance_array__NativeArray*)var396)->values[1] = (val*) var_tag326;
4872 ((struct instance_array__NativeArray*)var396)->values[2] = (val*) var385;
4873 ((struct instance_array__NativeArray*)var396)->values[3] = (val*) var_tag326;
4874 ((struct instance_array__NativeArray*)var396)->values[4] = (val*) var390;
4875 ((void (*)(val*, val*, long))(var394->class->vft[COLOR_array__Array__with_native]))(var394, var396, var395) /* with_native on <var394:Array[Object]>*/;
4876 CHECK_NEW_array__Array(var394);
4877 }
4878 var397 = ((val* (*)(val*))(var394->class->vft[COLOR_string__Object__to_s]))(var394) /* to_s on <var394:Array[Object]>*/;
4879 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var397) /* add on <var_v:AbstractCompilerVisitor>*/;
4880 if (varonce398) {
4881 var399 = varonce398;
4882 } else {
4883 var400 = "printf(\"\\t%ld (%.2f%%)\\n\", count_type_test_total_";
4884 var401 = 49;
4885 var402 = string__NativeString__to_s_with_length(var400, var401);
4886 var399 = var402;
4887 varonce398 = var399;
4888 }
4889 if (varonce403) {
4890 var404 = varonce403;
4891 } else {
4892 var405 = ", 100.0*count_type_test_total_";
4893 var406 = 30;
4894 var407 = string__NativeString__to_s_with_length(var405, var406);
4895 var404 = var407;
4896 varonce403 = var404;
4897 }
4898 if (varonce408) {
4899 var409 = varonce408;
4900 } else {
4901 var410 = "/count_type_test_total_total);";
4902 var411 = 30;
4903 var412 = string__NativeString__to_s_with_length(var410, var411);
4904 var409 = var412;
4905 varonce408 = var409;
4906 }
4907 var413 = NEW_array__Array(&type_array__Arraykernel__Object);
4908 { /* var413 = array_instance Array[Object] */
4909 var414 = 5;
4910 var415 = NEW_array__NativeArray(var414, &type_array__NativeArraykernel__Object);
4911 ((struct instance_array__NativeArray*)var415)->values[0] = (val*) var399;
4912 ((struct instance_array__NativeArray*)var415)->values[1] = (val*) var_tag326;
4913 ((struct instance_array__NativeArray*)var415)->values[2] = (val*) var404;
4914 ((struct instance_array__NativeArray*)var415)->values[3] = (val*) var_tag326;
4915 ((struct instance_array__NativeArray*)var415)->values[4] = (val*) var409;
4916 ((void (*)(val*, val*, long))(var413->class->vft[COLOR_array__Array__with_native]))(var413, var415, var414) /* with_native on <var413:Array[Object]>*/;
4917 CHECK_NEW_array__Array(var413);
4918 }
4919 var416 = ((val* (*)(val*))(var413->class->vft[COLOR_string__Object__to_s]))(var413) /* to_s on <var413:Array[Object]>*/;
4920 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var416) /* add on <var_v:AbstractCompilerVisitor>*/;
4921 CONTINUE_label417: (void)0;
4922 ((void (*)(val*))(var323->class->vft[COLOR_abstract_collection__Iterator__next]))(var323) /* next on <var323:Iterator[nullable Object]>*/;
4923 }
4924 BREAK_label417: (void)0;
4925 } else {
4926 }
4927 if (varonce418) {
4928 var419 = varonce418;
4929 } else {
4930 var420 = "return 0;";
4931 var421 = 9;
4932 var422 = string__NativeString__to_s_with_length(var420, var421);
4933 var419 = var422;
4934 varonce418 = var419;
4935 }
4936 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var419) /* add on <var_v:AbstractCompilerVisitor>*/;
4937 if (varonce423) {
4938 var424 = varonce423;
4939 } else {
4940 var425 = "}";
4941 var426 = 1;
4942 var427 = string__NativeString__to_s_with_length(var425, var426);
4943 var424 = var427;
4944 varonce423 = var424;
4945 }
4946 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var424) /* add on <var_v:AbstractCompilerVisitor>*/;
4947 RET_LABEL:;
4948 }
4949 /* method abstract_compiler#AbstractCompiler#compile_main_function for (self: Object) */
4950 void VIRTUAL_abstract_compiler__AbstractCompiler__compile_main_function(val* self) {
4951 abstract_compiler__AbstractCompiler__compile_main_function(self);
4952 RET_LABEL:;
4953 }
4954 /* method abstract_compiler#AbstractCompiler#extern_bodies for (self: AbstractCompiler): Array[ExternCFile] */
4955 val* abstract_compiler__AbstractCompiler__extern_bodies(val* self) {
4956 val* var /* : Array[ExternCFile] */;
4957 val* var1 /* : Array[ExternCFile] */;
4958 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dextern_bodies].val; /* @extern_bodies on <self:AbstractCompiler> */
4959 if (var1 == NULL) {
4960 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @extern_bodies", "src/abstract_compiler.nit", 398);
4961 exit(1);
4962 }
4963 var = var1;
4964 RET_LABEL:;
4965 return var;
4966 }
4967 /* method abstract_compiler#AbstractCompiler#extern_bodies for (self: Object): Array[ExternCFile] */
4968 val* VIRTUAL_abstract_compiler__AbstractCompiler__extern_bodies(val* self) {
4969 val* var /* : Array[ExternCFile] */;
4970 val* var1 /* : Array[ExternCFile] */;
4971 var1 = abstract_compiler__AbstractCompiler__extern_bodies(self);
4972 var = var1;
4973 RET_LABEL:;
4974 return var;
4975 }
4976 /* method abstract_compiler#AbstractCompiler#extern_bodies= for (self: AbstractCompiler, Array[ExternCFile]) */
4977 void abstract_compiler__AbstractCompiler__extern_bodies_61d(val* self, val* p0) {
4978 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dextern_bodies].val = p0; /* @extern_bodies on <self:AbstractCompiler> */
4979 RET_LABEL:;
4980 }
4981 /* method abstract_compiler#AbstractCompiler#extern_bodies= for (self: Object, Array[ExternCFile]) */
4982 void VIRTUAL_abstract_compiler__AbstractCompiler__extern_bodies_61d(val* self, val* p0) {
4983 abstract_compiler__AbstractCompiler__extern_bodies_61d(self, p0);
4984 RET_LABEL:;
4985 }
4986 /* method abstract_compiler#AbstractCompiler#seen_extern for (self: AbstractCompiler): ArraySet[String] */
4987 val* abstract_compiler__AbstractCompiler__seen_extern(val* self) {
4988 val* var /* : ArraySet[String] */;
4989 val* var1 /* : ArraySet[String] */;
4990 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dseen_extern].val; /* @seen_extern on <self:AbstractCompiler> */
4991 if (var1 == NULL) {
4992 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @seen_extern", "src/abstract_compiler.nit", 401);
4993 exit(1);
4994 }
4995 var = var1;
4996 RET_LABEL:;
4997 return var;
4998 }
4999 /* method abstract_compiler#AbstractCompiler#seen_extern for (self: Object): ArraySet[String] */
5000 val* VIRTUAL_abstract_compiler__AbstractCompiler__seen_extern(val* self) {
5001 val* var /* : ArraySet[String] */;
5002 val* var1 /* : ArraySet[String] */;
5003 var1 = abstract_compiler__AbstractCompiler__seen_extern(self);
5004 var = var1;
5005 RET_LABEL:;
5006 return var;
5007 }
5008 /* method abstract_compiler#AbstractCompiler#seen_extern= for (self: AbstractCompiler, ArraySet[String]) */
5009 void abstract_compiler__AbstractCompiler__seen_extern_61d(val* self, val* p0) {
5010 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dseen_extern].val = p0; /* @seen_extern on <self:AbstractCompiler> */
5011 RET_LABEL:;
5012 }
5013 /* method abstract_compiler#AbstractCompiler#seen_extern= for (self: Object, ArraySet[String]) */
5014 void VIRTUAL_abstract_compiler__AbstractCompiler__seen_extern_61d(val* self, val* p0) {
5015 abstract_compiler__AbstractCompiler__seen_extern_61d(self, p0);
5016 RET_LABEL:;
5017 }
5018 /* method abstract_compiler#AbstractCompiler#generate_check_init_instance for (self: AbstractCompiler, MClassType) */
5019 void abstract_compiler__AbstractCompiler__generate_check_init_instance(val* self, val* p0) {
5020 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/abstract_compiler.nit", 404);
5021 exit(1);
5022 RET_LABEL:;
5023 }
5024 /* method abstract_compiler#AbstractCompiler#generate_check_init_instance for (self: Object, MClassType) */
5025 void VIRTUAL_abstract_compiler__AbstractCompiler__generate_check_init_instance(val* self, val* p0) {
5026 abstract_compiler__AbstractCompiler__generate_check_init_instance(self, p0);
5027 RET_LABEL:;
5028 }
5029 /* method abstract_compiler#AbstractCompiler#generate_init_attr for (self: AbstractCompiler, AbstractCompilerVisitor, RuntimeVariable, MClassType) */
5030 void abstract_compiler__AbstractCompiler__generate_init_attr(val* self, val* p0, val* p1, val* p2) {
5031 short int var /* : Bool */;
5032 int cltype;
5033 int idtype;
5034 const struct type* type_struct;
5035 val* var_v /* var v: AbstractCompilerVisitor */;
5036 val* var_recv /* var recv: RuntimeVariable */;
5037 val* var_mtype /* var mtype: MClassType */;
5038 val* var1 /* : MModule */;
5039 val* var2 /* : Set[MClassDef] */;
5040 val* var3 /* : Array[nullable Object] */;
5041 val* var_cds /* var cds: Array[MClassDef] */;
5042 val* var4 /* : MModule */;
5043 val* var5 /* : Iterator[nullable Object] */;
5044 short int var6 /* : Bool */;
5045 val* var7 /* : nullable Object */;
5046 val* var_cd /* var cd: MClassDef */;
5047 val* var8 /* : ModelBuilder */;
5048 val* var9 /* : HashMap[MClassDef, AClassdef] */;
5049 val* var10 /* : nullable Object */;
5050 val* var_n /* var n: AClassdef */;
5051 val* var11 /* : ANodes[APropdef] */;
5052 val* var12 /* : Iterator[nullable Object] */;
5053 short int var13 /* : Bool */;
5054 val* var14 /* : nullable Object */;
5055 val* var_npropdef /* var npropdef: APropdef */;
5056 short int var15 /* : Bool */;
5057 int cltype16;
5058 int idtype17;
5059 /* Covariant cast for argument 0 (v) <p0:AbstractCompilerVisitor> isa VISITOR */
5060 /* <p0:AbstractCompilerVisitor> isa VISITOR */
5061 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractCompiler_VTVISITOR];
5062 cltype = type_struct->color;
5063 idtype = type_struct->id;
5064 if(cltype >= p0->type->table_size) {
5065 var = 0;
5066 } else {
5067 var = p0->type->type_table[cltype] == idtype;
5068 }
5069 if (!var) {
5070 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 407);
5071 exit(1);
5072 }
5073 var_v = p0;
5074 var_recv = p1;
5075 var_mtype = p2;
5076 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:AbstractCompiler>*/;
5077 var2 = ((val* (*)(val*, val*))(var_mtype->class->vft[COLOR_model__MType__collect_mclassdefs]))(var_mtype, var1) /* collect_mclassdefs on <var_mtype:MClassType>*/;
5078 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_array__Collection__to_a]))(var2) /* to_a on <var2:Set[MClassDef]>*/;
5079 var_cds = var3;
5080 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:AbstractCompiler>*/;
5081 ((void (*)(val*, val*))(var4->class->vft[COLOR_model__MModule__linearize_mclassdefs]))(var4, var_cds) /* linearize_mclassdefs on <var4:MModule>*/;
5082 var5 = ((val* (*)(val*))(var_cds->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_cds) /* iterator on <var_cds:Array[MClassDef]>*/;
5083 for(;;) {
5084 var6 = ((short int (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var5) /* is_ok on <var5:Iterator[nullable Object]>*/;
5085 if(!var6) break;
5086 var7 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__item]))(var5) /* item on <var5:Iterator[nullable Object]>*/;
5087 var_cd = var7;
5088 var8 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
5089 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_modelize_class__ModelBuilder__mclassdef2nclassdef]))(var8) /* mclassdef2nclassdef on <var8:ModelBuilder>*/;
5090 var10 = ((val* (*)(val*, val*))(var9->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var9, var_cd) /* [] on <var9:HashMap[MClassDef, AClassdef]>*/;
5091 var_n = var10;
5092 var11 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__AClassdef__n_propdefs]))(var_n) /* n_propdefs on <var_n:AClassdef>*/;
5093 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__Collection__iterator]))(var11) /* iterator on <var11:ANodes[APropdef]>*/;
5094 for(;;) {
5095 var13 = ((short int (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var12) /* is_ok on <var12:Iterator[nullable Object]>*/;
5096 if(!var13) break;
5097 var14 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__item]))(var12) /* item on <var12:Iterator[nullable Object]>*/;
5098 var_npropdef = var14;
5099 /* <var_npropdef:APropdef> isa AAttrPropdef */
5100 cltype16 = type_parser_nodes__AAttrPropdef.color;
5101 idtype17 = type_parser_nodes__AAttrPropdef.id;
5102 if(cltype16 >= var_npropdef->type->table_size) {
5103 var15 = 0;
5104 } else {
5105 var15 = var_npropdef->type->type_table[cltype16] == idtype17;
5106 }
5107 if (var15){
5108 ((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)>*/;
5109 } else {
5110 }
5111 CONTINUE_label: (void)0;
5112 ((void (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__next]))(var12) /* next on <var12:Iterator[nullable Object]>*/;
5113 }
5114 BREAK_label: (void)0;
5115 CONTINUE_label18: (void)0;
5116 ((void (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__next]))(var5) /* next on <var5:Iterator[nullable Object]>*/;
5117 }
5118 BREAK_label18: (void)0;
5119 RET_LABEL:;
5120 }
5121 /* method abstract_compiler#AbstractCompiler#generate_init_attr for (self: Object, AbstractCompilerVisitor, RuntimeVariable, MClassType) */
5122 void VIRTUAL_abstract_compiler__AbstractCompiler__generate_init_attr(val* self, val* p0, val* p1, val* p2) {
5123 abstract_compiler__AbstractCompiler__generate_init_attr(self, p0, p1, p2);
5124 RET_LABEL:;
5125 }
5126 /* method abstract_compiler#AbstractCompiler#generate_check_attr for (self: AbstractCompiler, AbstractCompilerVisitor, RuntimeVariable, MClassType) */
5127 void abstract_compiler__AbstractCompiler__generate_check_attr(val* self, val* p0, val* p1, val* p2) {
5128 short int var /* : Bool */;
5129 int cltype;
5130 int idtype;
5131 const struct type* type_struct;
5132 val* var_v /* var v: AbstractCompilerVisitor */;
5133 val* var_recv /* var recv: RuntimeVariable */;
5134 val* var_mtype /* var mtype: MClassType */;
5135 val* var1 /* : MModule */;
5136 val* var2 /* : Set[MClassDef] */;
5137 val* var3 /* : Array[nullable Object] */;
5138 val* var_cds /* var cds: Array[MClassDef] */;
5139 val* var4 /* : MModule */;
5140 val* var5 /* : Iterator[nullable Object] */;
5141 short int var6 /* : Bool */;
5142 val* var7 /* : nullable Object */;
5143 val* var_cd /* var cd: MClassDef */;
5144 val* var8 /* : ModelBuilder */;
5145 val* var9 /* : HashMap[MClassDef, AClassdef] */;
5146 val* var10 /* : nullable Object */;
5147 val* var_n /* var n: AClassdef */;
5148 val* var11 /* : ANodes[APropdef] */;
5149 val* var12 /* : Iterator[nullable Object] */;
5150 short int var13 /* : Bool */;
5151 val* var14 /* : nullable Object */;
5152 val* var_npropdef /* var npropdef: APropdef */;
5153 short int var15 /* : Bool */;
5154 int cltype16;
5155 int idtype17;
5156 /* Covariant cast for argument 0 (v) <p0:AbstractCompilerVisitor> isa VISITOR */
5157 /* <p0:AbstractCompilerVisitor> isa VISITOR */
5158 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractCompiler_VTVISITOR];
5159 cltype = type_struct->color;
5160 idtype = type_struct->id;
5161 if(cltype >= p0->type->table_size) {
5162 var = 0;
5163 } else {
5164 var = p0->type->type_table[cltype] == idtype;
5165 }
5166 if (!var) {
5167 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 422);
5168 exit(1);
5169 }
5170 var_v = p0;
5171 var_recv = p1;
5172 var_mtype = p2;
5173 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:AbstractCompiler>*/;
5174 var2 = ((val* (*)(val*, val*))(var_mtype->class->vft[COLOR_model__MType__collect_mclassdefs]))(var_mtype, var1) /* collect_mclassdefs on <var_mtype:MClassType>*/;
5175 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_array__Collection__to_a]))(var2) /* to_a on <var2:Set[MClassDef]>*/;
5176 var_cds = var3;
5177 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:AbstractCompiler>*/;
5178 ((void (*)(val*, val*))(var4->class->vft[COLOR_model__MModule__linearize_mclassdefs]))(var4, var_cds) /* linearize_mclassdefs on <var4:MModule>*/;
5179 var5 = ((val* (*)(val*))(var_cds->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_cds) /* iterator on <var_cds:Array[MClassDef]>*/;
5180 for(;;) {
5181 var6 = ((short int (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var5) /* is_ok on <var5:Iterator[nullable Object]>*/;
5182 if(!var6) break;
5183 var7 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__item]))(var5) /* item on <var5:Iterator[nullable Object]>*/;
5184 var_cd = var7;
5185 var8 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
5186 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_modelize_class__ModelBuilder__mclassdef2nclassdef]))(var8) /* mclassdef2nclassdef on <var8:ModelBuilder>*/;
5187 var10 = ((val* (*)(val*, val*))(var9->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var9, var_cd) /* [] on <var9:HashMap[MClassDef, AClassdef]>*/;
5188 var_n = var10;
5189 var11 = ((val* (*)(val*))(var_n->class->vft[COLOR_parser_nodes__AClassdef__n_propdefs]))(var_n) /* n_propdefs on <var_n:AClassdef>*/;
5190 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__Collection__iterator]))(var11) /* iterator on <var11:ANodes[APropdef]>*/;
5191 for(;;) {
5192 var13 = ((short int (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var12) /* is_ok on <var12:Iterator[nullable Object]>*/;
5193 if(!var13) break;
5194 var14 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__item]))(var12) /* item on <var12:Iterator[nullable Object]>*/;
5195 var_npropdef = var14;
5196 /* <var_npropdef:APropdef> isa AAttrPropdef */
5197 cltype16 = type_parser_nodes__AAttrPropdef.color;
5198 idtype17 = type_parser_nodes__AAttrPropdef.id;
5199 if(cltype16 >= var_npropdef->type->table_size) {
5200 var15 = 0;
5201 } else {
5202 var15 = var_npropdef->type->type_table[cltype16] == idtype17;
5203 }
5204 if (var15){
5205 ((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)>*/;
5206 } else {
5207 }
5208 CONTINUE_label: (void)0;
5209 ((void (*)(val*))(var12->class->vft[COLOR_abstract_collection__Iterator__next]))(var12) /* next on <var12:Iterator[nullable Object]>*/;
5210 }
5211 BREAK_label: (void)0;
5212 CONTINUE_label18: (void)0;
5213 ((void (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__next]))(var5) /* next on <var5:Iterator[nullable Object]>*/;
5214 }
5215 BREAK_label18: (void)0;
5216 RET_LABEL:;
5217 }
5218 /* method abstract_compiler#AbstractCompiler#generate_check_attr for (self: Object, AbstractCompilerVisitor, RuntimeVariable, MClassType) */
5219 void VIRTUAL_abstract_compiler__AbstractCompiler__generate_check_attr(val* self, val* p0, val* p1, val* p2) {
5220 abstract_compiler__AbstractCompiler__generate_check_attr(self, p0, p1, p2);
5221 RET_LABEL:;
5222 }
5223 /* method abstract_compiler#AbstractCompiler#count_type_test_tags for (self: AbstractCompiler): Array[String] */
5224 val* abstract_compiler__AbstractCompiler__count_type_test_tags(val* self) {
5225 val* var /* : Array[String] */;
5226 val* var1 /* : Array[String] */;
5227 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_tags].val; /* @count_type_test_tags on <self:AbstractCompiler> */
5228 if (var1 == NULL) {
5229 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @count_type_test_tags", "src/abstract_compiler.nit", 439);
5230 exit(1);
5231 }
5232 var = var1;
5233 RET_LABEL:;
5234 return var;
5235 }
5236 /* method abstract_compiler#AbstractCompiler#count_type_test_tags for (self: Object): Array[String] */
5237 val* VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_tags(val* self) {
5238 val* var /* : Array[String] */;
5239 val* var1 /* : Array[String] */;
5240 var1 = abstract_compiler__AbstractCompiler__count_type_test_tags(self);
5241 var = var1;
5242 RET_LABEL:;
5243 return var;
5244 }
5245 /* method abstract_compiler#AbstractCompiler#count_type_test_tags= for (self: AbstractCompiler, Array[String]) */
5246 void abstract_compiler__AbstractCompiler__count_type_test_tags_61d(val* self, val* p0) {
5247 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_tags].val = p0; /* @count_type_test_tags on <self:AbstractCompiler> */
5248 RET_LABEL:;
5249 }
5250 /* method abstract_compiler#AbstractCompiler#count_type_test_tags= for (self: Object, Array[String]) */
5251 void VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_tags_61d(val* self, val* p0) {
5252 abstract_compiler__AbstractCompiler__count_type_test_tags_61d(self, p0);
5253 RET_LABEL:;
5254 }
5255 /* method abstract_compiler#AbstractCompiler#count_type_test_resolved for (self: AbstractCompiler): HashMap[String, Int] */
5256 val* abstract_compiler__AbstractCompiler__count_type_test_resolved(val* self) {
5257 val* var /* : HashMap[String, Int] */;
5258 val* var1 /* : HashMap[String, Int] */;
5259 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_resolved].val; /* @count_type_test_resolved on <self:AbstractCompiler> */
5260 if (var1 == NULL) {
5261 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @count_type_test_resolved", "src/abstract_compiler.nit", 440);
5262 exit(1);
5263 }
5264 var = var1;
5265 RET_LABEL:;
5266 return var;
5267 }
5268 /* method abstract_compiler#AbstractCompiler#count_type_test_resolved for (self: Object): HashMap[String, Int] */
5269 val* VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_resolved(val* self) {
5270 val* var /* : HashMap[String, Int] */;
5271 val* var1 /* : HashMap[String, Int] */;
5272 var1 = abstract_compiler__AbstractCompiler__count_type_test_resolved(self);
5273 var = var1;
5274 RET_LABEL:;
5275 return var;
5276 }
5277 /* method abstract_compiler#AbstractCompiler#count_type_test_resolved= for (self: AbstractCompiler, HashMap[String, Int]) */
5278 void abstract_compiler__AbstractCompiler__count_type_test_resolved_61d(val* self, val* p0) {
5279 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_resolved].val = p0; /* @count_type_test_resolved on <self:AbstractCompiler> */
5280 RET_LABEL:;
5281 }
5282 /* method abstract_compiler#AbstractCompiler#count_type_test_resolved= for (self: Object, HashMap[String, Int]) */
5283 void VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_resolved_61d(val* self, val* p0) {
5284 abstract_compiler__AbstractCompiler__count_type_test_resolved_61d(self, p0);
5285 RET_LABEL:;
5286 }
5287 /* method abstract_compiler#AbstractCompiler#count_type_test_unresolved for (self: AbstractCompiler): HashMap[String, Int] */
5288 val* abstract_compiler__AbstractCompiler__count_type_test_unresolved(val* self) {
5289 val* var /* : HashMap[String, Int] */;
5290 val* var1 /* : HashMap[String, Int] */;
5291 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_unresolved].val; /* @count_type_test_unresolved on <self:AbstractCompiler> */
5292 if (var1 == NULL) {
5293 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @count_type_test_unresolved", "src/abstract_compiler.nit", 441);
5294 exit(1);
5295 }
5296 var = var1;
5297 RET_LABEL:;
5298 return var;
5299 }
5300 /* method abstract_compiler#AbstractCompiler#count_type_test_unresolved for (self: Object): HashMap[String, Int] */
5301 val* VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_unresolved(val* self) {
5302 val* var /* : HashMap[String, Int] */;
5303 val* var1 /* : HashMap[String, Int] */;
5304 var1 = abstract_compiler__AbstractCompiler__count_type_test_unresolved(self);
5305 var = var1;
5306 RET_LABEL:;
5307 return var;
5308 }
5309 /* method abstract_compiler#AbstractCompiler#count_type_test_unresolved= for (self: AbstractCompiler, HashMap[String, Int]) */
5310 void abstract_compiler__AbstractCompiler__count_type_test_unresolved_61d(val* self, val* p0) {
5311 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_unresolved].val = p0; /* @count_type_test_unresolved on <self:AbstractCompiler> */
5312 RET_LABEL:;
5313 }
5314 /* method abstract_compiler#AbstractCompiler#count_type_test_unresolved= for (self: Object, HashMap[String, Int]) */
5315 void VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_unresolved_61d(val* self, val* p0) {
5316 abstract_compiler__AbstractCompiler__count_type_test_unresolved_61d(self, p0);
5317 RET_LABEL:;
5318 }
5319 /* method abstract_compiler#AbstractCompiler#count_type_test_skipped for (self: AbstractCompiler): HashMap[String, Int] */
5320 val* abstract_compiler__AbstractCompiler__count_type_test_skipped(val* self) {
5321 val* var /* : HashMap[String, Int] */;
5322 val* var1 /* : HashMap[String, Int] */;
5323 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_skipped].val; /* @count_type_test_skipped on <self:AbstractCompiler> */
5324 if (var1 == NULL) {
5325 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @count_type_test_skipped", "src/abstract_compiler.nit", 442);
5326 exit(1);
5327 }
5328 var = var1;
5329 RET_LABEL:;
5330 return var;
5331 }
5332 /* method abstract_compiler#AbstractCompiler#count_type_test_skipped for (self: Object): HashMap[String, Int] */
5333 val* VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_skipped(val* self) {
5334 val* var /* : HashMap[String, Int] */;
5335 val* var1 /* : HashMap[String, Int] */;
5336 var1 = abstract_compiler__AbstractCompiler__count_type_test_skipped(self);
5337 var = var1;
5338 RET_LABEL:;
5339 return var;
5340 }
5341 /* method abstract_compiler#AbstractCompiler#count_type_test_skipped= for (self: AbstractCompiler, HashMap[String, Int]) */
5342 void abstract_compiler__AbstractCompiler__count_type_test_skipped_61d(val* self, val* p0) {
5343 self->attrs[COLOR_abstract_compiler__AbstractCompiler___64dcount_type_test_skipped].val = p0; /* @count_type_test_skipped on <self:AbstractCompiler> */
5344 RET_LABEL:;
5345 }
5346 /* method abstract_compiler#AbstractCompiler#count_type_test_skipped= for (self: Object, HashMap[String, Int]) */
5347 void VIRTUAL_abstract_compiler__AbstractCompiler__count_type_test_skipped_61d(val* self, val* p0) {
5348 abstract_compiler__AbstractCompiler__count_type_test_skipped_61d(self, p0);
5349 RET_LABEL:;
5350 }
5351 /* method abstract_compiler#AbstractCompiler#init_count_type_test_tags for (self: AbstractCompiler): HashMap[String, Int] */
5352 val* abstract_compiler__AbstractCompiler__init_count_type_test_tags(val* self) {
5353 val* var /* : HashMap[String, Int] */;
5354 val* var1 /* : HashMap[String, Int] */;
5355 val* var_res /* var res: HashMap[String, Int] */;
5356 val* var2 /* : Array[String] */;
5357 val* var3 /* : Iterator[nullable Object] */;
5358 short int var4 /* : Bool */;
5359 val* var5 /* : nullable Object */;
5360 val* var_tag /* var tag: String */;
5361 long var6 /* : Int */;
5362 val* var7 /* : nullable Object */;
5363 var1 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapstring__Stringkernel__Int);
5364 ((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashMap__init]))(var1) /* init on <var1:HashMap[String, Int]>*/;
5365 CHECK_NEW_hash_collection__HashMap(var1);
5366 var_res = var1;
5367 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_tags]))(self) /* count_type_test_tags on <self:AbstractCompiler>*/;
5368 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:Array[String]>*/;
5369 for(;;) {
5370 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
5371 if(!var4) break;
5372 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
5373 var_tag = var5;
5374 var6 = 0;
5375 var7 = BOX_kernel__Int(var6); /* autobox from Int to nullable Object */
5376 ((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]>*/;
5377 CONTINUE_label: (void)0;
5378 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
5379 }
5380 BREAK_label: (void)0;
5381 var = var_res;
5382 goto RET_LABEL;
5383 RET_LABEL:;
5384 return var;
5385 }
5386 /* method abstract_compiler#AbstractCompiler#init_count_type_test_tags for (self: Object): HashMap[String, Int] */
5387 val* VIRTUAL_abstract_compiler__AbstractCompiler__init_count_type_test_tags(val* self) {
5388 val* var /* : HashMap[String, Int] */;
5389 val* var1 /* : HashMap[String, Int] */;
5390 var1 = abstract_compiler__AbstractCompiler__init_count_type_test_tags(self);
5391 var = var1;
5392 RET_LABEL:;
5393 return var;
5394 }
5395 /* method abstract_compiler#AbstractCompiler#display_stats for (self: AbstractCompiler) */
5396 void abstract_compiler__AbstractCompiler__display_stats(val* self) {
5397 val* var /* : ModelBuilder */;
5398 val* var1 /* : ToolContext */;
5399 val* var2 /* : OptionBool */;
5400 val* var3 /* : nullable Object */;
5401 short int var4 /* : Bool */;
5402 static val* varonce;
5403 val* var5 /* : String */;
5404 char* var6 /* : NativeString */;
5405 long var7 /* : Int */;
5406 val* var8 /* : String */;
5407 static val* varonce9;
5408 val* var10 /* : String */;
5409 char* var11 /* : NativeString */;
5410 long var12 /* : Int */;
5411 val* var13 /* : String */;
5412 val* var14 /* : HashMap[String, Int] */;
5413 val* var_count_type_test_total /* var count_type_test_total: HashMap[String, Int] */;
5414 val* var15 /* : HashMap[String, Int] */;
5415 static val* varonce16;
5416 val* var17 /* : String */;
5417 char* var18 /* : NativeString */;
5418 long var19 /* : Int */;
5419 val* var20 /* : String */;
5420 long var21 /* : Int */;
5421 val* var22 /* : nullable Object */;
5422 val* var23 /* : HashMap[String, Int] */;
5423 static val* varonce24;
5424 val* var25 /* : String */;
5425 char* var26 /* : NativeString */;
5426 long var27 /* : Int */;
5427 val* var28 /* : String */;
5428 long var29 /* : Int */;
5429 val* var30 /* : nullable Object */;
5430 val* var31 /* : HashMap[String, Int] */;
5431 static val* varonce32;
5432 val* var33 /* : String */;
5433 char* var34 /* : NativeString */;
5434 long var35 /* : Int */;
5435 val* var36 /* : String */;
5436 long var37 /* : Int */;
5437 val* var38 /* : nullable Object */;
5438 static val* varonce39;
5439 val* var40 /* : String */;
5440 char* var41 /* : NativeString */;
5441 long var42 /* : Int */;
5442 val* var43 /* : String */;
5443 long var44 /* : Int */;
5444 val* var45 /* : nullable Object */;
5445 val* var46 /* : Array[String] */;
5446 val* var47 /* : Iterator[nullable Object] */;
5447 short int var48 /* : Bool */;
5448 val* var49 /* : nullable Object */;
5449 val* var_tag /* var tag: String */;
5450 val* var50 /* : HashMap[String, Int] */;
5451 val* var51 /* : nullable Object */;
5452 val* var52 /* : HashMap[String, Int] */;
5453 val* var53 /* : nullable Object */;
5454 long var54 /* : Int */;
5455 long var56 /* : Int */;
5456 long var57 /* : Int */;
5457 long var58 /* : Int */;
5458 val* var59 /* : HashMap[String, Int] */;
5459 val* var60 /* : nullable Object */;
5460 long var61 /* : Int */;
5461 long var63 /* : Int */;
5462 long var64 /* : Int */;
5463 val* var65 /* : nullable Object */;
5464 val* var66 /* : HashMap[String, Int] */;
5465 val* var_ /* var : HashMap[String, Int] */;
5466 static val* varonce67;
5467 val* var68 /* : String */;
5468 char* var69 /* : NativeString */;
5469 long var70 /* : Int */;
5470 val* var71 /* : String */;
5471 val* var_72 /* var : String */;
5472 val* var73 /* : nullable Object */;
5473 val* var74 /* : HashMap[String, Int] */;
5474 val* var75 /* : nullable Object */;
5475 long var76 /* : Int */;
5476 long var78 /* : Int */;
5477 long var79 /* : Int */;
5478 long var80 /* : Int */;
5479 val* var81 /* : nullable Object */;
5480 val* var82 /* : HashMap[String, Int] */;
5481 val* var_83 /* var : HashMap[String, Int] */;
5482 static val* varonce84;
5483 val* var85 /* : String */;
5484 char* var86 /* : NativeString */;
5485 long var87 /* : Int */;
5486 val* var88 /* : String */;
5487 val* var_89 /* var : String */;
5488 val* var90 /* : nullable Object */;
5489 val* var91 /* : HashMap[String, Int] */;
5490 val* var92 /* : nullable Object */;
5491 long var93 /* : Int */;
5492 long var95 /* : Int */;
5493 long var96 /* : Int */;
5494 long var97 /* : Int */;
5495 val* var98 /* : nullable Object */;
5496 val* var99 /* : HashMap[String, Int] */;
5497 val* var_100 /* var : HashMap[String, Int] */;
5498 static val* varonce101;
5499 val* var102 /* : String */;
5500 char* var103 /* : NativeString */;
5501 long var104 /* : Int */;
5502 val* var105 /* : String */;
5503 val* var_106 /* var : String */;
5504 val* var107 /* : nullable Object */;
5505 val* var108 /* : HashMap[String, Int] */;
5506 val* var109 /* : nullable Object */;
5507 long var110 /* : Int */;
5508 long var112 /* : Int */;
5509 long var113 /* : Int */;
5510 long var114 /* : Int */;
5511 val* var115 /* : nullable Object */;
5512 val* var_116 /* var : HashMap[String, Int] */;
5513 static val* varonce117;
5514 val* var118 /* : String */;
5515 char* var119 /* : NativeString */;
5516 long var120 /* : Int */;
5517 val* var121 /* : String */;
5518 val* var_122 /* var : String */;
5519 val* var123 /* : nullable Object */;
5520 val* var124 /* : nullable Object */;
5521 long var125 /* : Int */;
5522 long var127 /* : Int */;
5523 long var128 /* : Int */;
5524 long var129 /* : Int */;
5525 val* var130 /* : nullable Object */;
5526 static val* varonce131;
5527 val* var132 /* : String */;
5528 char* var133 /* : NativeString */;
5529 long var134 /* : Int */;
5530 val* var135 /* : String */;
5531 val* var136 /* : nullable Object */;
5532 long var137 /* : Int */;
5533 long var_count_type_test /* var count_type_test: Int */;
5534 val* var138 /* : Array[String] */;
5535 val* var139 /* : Array[nullable Object] */;
5536 val* var_tags /* var tags: Array[String] */;
5537 static val* varonce140;
5538 val* var141 /* : String */;
5539 char* var142 /* : NativeString */;
5540 long var143 /* : Int */;
5541 val* var144 /* : String */;
5542 val* var145 /* : Iterator[nullable Object] */;
5543 short int var146 /* : Bool */;
5544 val* var147 /* : nullable Object */;
5545 val* var_tag148 /* var tag: String */;
5546 val* var149 /* : Array[Object] */;
5547 long var150 /* : Int */;
5548 val* var151 /* : NativeArray[Object] */;
5549 static val* varonce152;
5550 val* var153 /* : String */;
5551 char* var154 /* : NativeString */;
5552 long var155 /* : Int */;
5553 val* var156 /* : String */;
5554 val* var157 /* : HashMap[String, Int] */;
5555 val* var158 /* : nullable Object */;
5556 static val* varonce159;
5557 val* var160 /* : String */;
5558 char* var161 /* : NativeString */;
5559 long var162 /* : Int */;
5560 val* var163 /* : String */;
5561 val* var164 /* : HashMap[String, Int] */;
5562 val* var165 /* : nullable Object */;
5563 val* var166 /* : String */;
5564 long var167 /* : Int */;
5565 static val* varonce168;
5566 val* var169 /* : String */;
5567 char* var170 /* : NativeString */;
5568 long var171 /* : Int */;
5569 val* var172 /* : String */;
5570 val* var173 /* : Array[Object] */;
5571 long var174 /* : Int */;
5572 val* var175 /* : NativeArray[Object] */;
5573 val* var176 /* : String */;
5574 val* var177 /* : Array[Object] */;
5575 long var178 /* : Int */;
5576 val* var179 /* : NativeArray[Object] */;
5577 static val* varonce180;
5578 val* var181 /* : String */;
5579 char* var182 /* : NativeString */;
5580 long var183 /* : Int */;
5581 val* var184 /* : String */;
5582 val* var185 /* : HashMap[String, Int] */;
5583 val* var186 /* : nullable Object */;
5584 static val* varonce187;
5585 val* var188 /* : String */;
5586 char* var189 /* : NativeString */;
5587 long var190 /* : Int */;
5588 val* var191 /* : String */;
5589 val* var192 /* : HashMap[String, Int] */;
5590 val* var193 /* : nullable Object */;
5591 val* var194 /* : String */;
5592 long var195 /* : Int */;
5593 static val* varonce196;
5594 val* var197 /* : String */;
5595 char* var198 /* : NativeString */;
5596 long var199 /* : Int */;
5597 val* var200 /* : String */;
5598 val* var201 /* : Array[Object] */;
5599 long var202 /* : Int */;
5600 val* var203 /* : NativeArray[Object] */;
5601 val* var204 /* : String */;
5602 val* var205 /* : Array[Object] */;
5603 long var206 /* : Int */;
5604 val* var207 /* : NativeArray[Object] */;
5605 static val* varonce208;
5606 val* var209 /* : String */;
5607 char* var210 /* : NativeString */;
5608 long var211 /* : Int */;
5609 val* var212 /* : String */;
5610 val* var213 /* : HashMap[String, Int] */;
5611 val* var214 /* : nullable Object */;
5612 static val* varonce215;
5613 val* var216 /* : String */;
5614 char* var217 /* : NativeString */;
5615 long var218 /* : Int */;
5616 val* var219 /* : String */;
5617 val* var220 /* : HashMap[String, Int] */;
5618 val* var221 /* : nullable Object */;
5619 val* var222 /* : String */;
5620 long var223 /* : Int */;
5621 static val* varonce224;
5622 val* var225 /* : String */;
5623 char* var226 /* : NativeString */;
5624 long var227 /* : Int */;
5625 val* var228 /* : String */;
5626 val* var229 /* : Array[Object] */;
5627 long var230 /* : Int */;
5628 val* var231 /* : NativeArray[Object] */;
5629 val* var232 /* : String */;
5630 val* var233 /* : Array[Object] */;
5631 long var234 /* : Int */;
5632 val* var235 /* : NativeArray[Object] */;
5633 static val* varonce236;
5634 val* var237 /* : String */;
5635 char* var238 /* : NativeString */;
5636 long var239 /* : Int */;
5637 val* var240 /* : String */;
5638 val* var241 /* : nullable Object */;
5639 static val* varonce242;
5640 val* var243 /* : String */;
5641 char* var244 /* : NativeString */;
5642 long var245 /* : Int */;
5643 val* var246 /* : String */;
5644 val* var247 /* : nullable Object */;
5645 val* var248 /* : String */;
5646 long var249 /* : Int */;
5647 static val* varonce250;
5648 val* var251 /* : String */;
5649 char* var252 /* : NativeString */;
5650 long var253 /* : Int */;
5651 val* var254 /* : String */;
5652 val* var255 /* : Array[Object] */;
5653 long var256 /* : Int */;
5654 val* var257 /* : NativeArray[Object] */;
5655 val* var258 /* : String */;
5656 val* var259 /* : Array[Object] */;
5657 long var260 /* : Int */;
5658 val* var261 /* : NativeArray[Object] */;
5659 static val* varonce262;
5660 val* var263 /* : String */;
5661 char* var264 /* : NativeString */;
5662 long var265 /* : Int */;
5663 val* var266 /* : String */;
5664 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:AbstractCompiler>*/;
5665 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var) /* toolcontext on <var:ModelBuilder>*/;
5666 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__ToolContext__opt_typing_test_metrics]))(var1) /* opt_typing_test_metrics on <var1:ToolContext>*/;
5667 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_opts__Option__value]))(var2) /* value on <var2:OptionBool>*/;
5668 var4 = ((struct instance_kernel__Bool*)var3)->value; /* autounbox from nullable Object to Bool */;
5669 if (var4){
5670 if (varonce) {
5671 var5 = varonce;
5672 } else {
5673 var6 = "# static count_type_test";
5674 var7 = 24;
5675 var8 = string__NativeString__to_s_with_length(var6, var7);
5676 var5 = var8;
5677 varonce = var5;
5678 }
5679 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var5) /* print on <self:AbstractCompiler>*/;
5680 if (varonce9) {
5681 var10 = varonce9;
5682 } else {
5683 var11 = "\11resolved:\11unresolved\11skipped\11total";
5684 var12 = 35;
5685 var13 = string__NativeString__to_s_with_length(var11, var12);
5686 var10 = var13;
5687 varonce9 = var10;
5688 }
5689 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var10) /* print on <self:AbstractCompiler>*/;
5690 var14 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__init_count_type_test_tags]))(self) /* init_count_type_test_tags on <self:AbstractCompiler>*/;
5691 var_count_type_test_total = var14;
5692 var15 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_resolved]))(self) /* count_type_test_resolved on <self:AbstractCompiler>*/;
5693 if (varonce16) {
5694 var17 = varonce16;
5695 } else {
5696 var18 = "total";
5697 var19 = 5;
5698 var20 = string__NativeString__to_s_with_length(var18, var19);
5699 var17 = var20;
5700 varonce16 = var17;
5701 }
5702 var21 = 0;
5703 var22 = BOX_kernel__Int(var21); /* autobox from Int to nullable Object */
5704 ((void (*)(val*, val*, val*))(var15->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var15, var17, var22) /* []= on <var15:HashMap[String, Int]>*/;
5705 var23 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_unresolved]))(self) /* count_type_test_unresolved on <self:AbstractCompiler>*/;
5706 if (varonce24) {
5707 var25 = varonce24;
5708 } else {
5709 var26 = "total";
5710 var27 = 5;
5711 var28 = string__NativeString__to_s_with_length(var26, var27);
5712 var25 = var28;
5713 varonce24 = var25;
5714 }
5715 var29 = 0;
5716 var30 = BOX_kernel__Int(var29); /* autobox from Int to nullable Object */
5717 ((void (*)(val*, val*, val*))(var23->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var23, var25, var30) /* []= on <var23:HashMap[String, Int]>*/;
5718 var31 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_skipped]))(self) /* count_type_test_skipped on <self:AbstractCompiler>*/;
5719 if (varonce32) {
5720 var33 = varonce32;
5721 } else {
5722 var34 = "total";
5723 var35 = 5;
5724 var36 = string__NativeString__to_s_with_length(var34, var35);
5725 var33 = var36;
5726 varonce32 = var33;
5727 }
5728 var37 = 0;
5729 var38 = BOX_kernel__Int(var37); /* autobox from Int to nullable Object */
5730 ((void (*)(val*, val*, val*))(var31->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var31, var33, var38) /* []= on <var31:HashMap[String, Int]>*/;
5731 if (varonce39) {
5732 var40 = varonce39;
5733 } else {
5734 var41 = "total";
5735 var42 = 5;
5736 var43 = string__NativeString__to_s_with_length(var41, var42);
5737 var40 = var43;
5738 varonce39 = var40;
5739 }
5740 var44 = 0;
5741 var45 = BOX_kernel__Int(var44); /* autobox from Int to nullable Object */
5742 ((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]>*/;
5743 var46 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_tags]))(self) /* count_type_test_tags on <self:AbstractCompiler>*/;
5744 var47 = ((val* (*)(val*))(var46->class->vft[COLOR_abstract_collection__Collection__iterator]))(var46) /* iterator on <var46:Array[String]>*/;
5745 for(;;) {
5746 var48 = ((short int (*)(val*))(var47->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var47) /* is_ok on <var47:Iterator[nullable Object]>*/;
5747 if(!var48) break;
5748 var49 = ((val* (*)(val*))(var47->class->vft[COLOR_abstract_collection__Iterator__item]))(var47) /* item on <var47:Iterator[nullable Object]>*/;
5749 var_tag = var49;
5750 var50 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_resolved]))(self) /* count_type_test_resolved on <self:AbstractCompiler>*/;
5751 var51 = ((val* (*)(val*, val*))(var50->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var50, var_tag) /* [] on <var50:HashMap[String, Int]>*/;
5752 var52 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_unresolved]))(self) /* count_type_test_unresolved on <self:AbstractCompiler>*/;
5753 var53 = ((val* (*)(val*, val*))(var52->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var52, var_tag) /* [] on <var52:HashMap[String, Int]>*/;
5754 { /* Inline kernel#Int#+ (var51,var53) */
5755 var56 = ((struct instance_kernel__Int*)var51)->value; /* autounbox from nullable Object to Int */;
5756 var57 = ((struct instance_kernel__Int*)var53)->value; /* autounbox from nullable Object to Int */;
5757 var58 = var56 + var57;
5758 var54 = var58;
5759 goto RET_LABEL55;
5760 RET_LABEL55:(void)0;
5761 }
5762 var59 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_skipped]))(self) /* count_type_test_skipped on <self:AbstractCompiler>*/;
5763 var60 = ((val* (*)(val*, val*))(var59->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var59, var_tag) /* [] on <var59:HashMap[String, Int]>*/;
5764 { /* Inline kernel#Int#+ (var54,var60) */
5765 var63 = ((struct instance_kernel__Int*)var60)->value; /* autounbox from nullable Object to Int */;
5766 var64 = var54 + var63;
5767 var61 = var64;
5768 goto RET_LABEL62;
5769 RET_LABEL62:(void)0;
5770 }
5771 var65 = BOX_kernel__Int(var61); /* autobox from Int to nullable Object */
5772 ((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]>*/;
5773 var66 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_resolved]))(self) /* count_type_test_resolved on <self:AbstractCompiler>*/;
5774 var_ = var66;
5775 if (varonce67) {
5776 var68 = varonce67;
5777 } else {
5778 var69 = "total";
5779 var70 = 5;
5780 var71 = string__NativeString__to_s_with_length(var69, var70);
5781 var68 = var71;
5782 varonce67 = var68;
5783 }
5784 var_72 = var68;
5785 var73 = ((val* (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_, var_72) /* [] on <var_:HashMap[String, Int]>*/;
5786 var74 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_resolved]))(self) /* count_type_test_resolved on <self:AbstractCompiler>*/;
5787 var75 = ((val* (*)(val*, val*))(var74->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var74, var_tag) /* [] on <var74:HashMap[String, Int]>*/;
5788 { /* Inline kernel#Int#+ (var73,var75) */
5789 var78 = ((struct instance_kernel__Int*)var73)->value; /* autounbox from nullable Object to Int */;
5790 var79 = ((struct instance_kernel__Int*)var75)->value; /* autounbox from nullable Object to Int */;
5791 var80 = var78 + var79;
5792 var76 = var80;
5793 goto RET_LABEL77;
5794 RET_LABEL77:(void)0;
5795 }
5796 var81 = BOX_kernel__Int(var76); /* autobox from Int to nullable Object */
5797 ((void (*)(val*, val*, val*))(var_->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_, var_72, var81) /* []= on <var_:HashMap[String, Int]>*/;
5798 var82 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_unresolved]))(self) /* count_type_test_unresolved on <self:AbstractCompiler>*/;
5799 var_83 = var82;
5800 if (varonce84) {
5801 var85 = varonce84;
5802 } else {
5803 var86 = "total";
5804 var87 = 5;
5805 var88 = string__NativeString__to_s_with_length(var86, var87);
5806 var85 = var88;
5807 varonce84 = var85;
5808 }
5809 var_89 = var85;
5810 var90 = ((val* (*)(val*, val*))(var_83->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_83, var_89) /* [] on <var_83:HashMap[String, Int]>*/;
5811 var91 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_unresolved]))(self) /* count_type_test_unresolved on <self:AbstractCompiler>*/;
5812 var92 = ((val* (*)(val*, val*))(var91->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var91, var_tag) /* [] on <var91:HashMap[String, Int]>*/;
5813 { /* Inline kernel#Int#+ (var90,var92) */
5814 var95 = ((struct instance_kernel__Int*)var90)->value; /* autounbox from nullable Object to Int */;
5815 var96 = ((struct instance_kernel__Int*)var92)->value; /* autounbox from nullable Object to Int */;
5816 var97 = var95 + var96;
5817 var93 = var97;
5818 goto RET_LABEL94;
5819 RET_LABEL94:(void)0;
5820 }
5821 var98 = BOX_kernel__Int(var93); /* autobox from Int to nullable Object */
5822 ((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]>*/;
5823 var99 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_skipped]))(self) /* count_type_test_skipped on <self:AbstractCompiler>*/;
5824 var_100 = var99;
5825 if (varonce101) {
5826 var102 = varonce101;
5827 } else {
5828 var103 = "total";
5829 var104 = 5;
5830 var105 = string__NativeString__to_s_with_length(var103, var104);
5831 var102 = var105;
5832 varonce101 = var102;
5833 }
5834 var_106 = var102;
5835 var107 = ((val* (*)(val*, val*))(var_100->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_100, var_106) /* [] on <var_100:HashMap[String, Int]>*/;
5836 var108 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_skipped]))(self) /* count_type_test_skipped on <self:AbstractCompiler>*/;
5837 var109 = ((val* (*)(val*, val*))(var108->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var108, var_tag) /* [] on <var108:HashMap[String, Int]>*/;
5838 { /* Inline kernel#Int#+ (var107,var109) */
5839 var112 = ((struct instance_kernel__Int*)var107)->value; /* autounbox from nullable Object to Int */;
5840 var113 = ((struct instance_kernel__Int*)var109)->value; /* autounbox from nullable Object to Int */;
5841 var114 = var112 + var113;
5842 var110 = var114;
5843 goto RET_LABEL111;
5844 RET_LABEL111:(void)0;
5845 }
5846 var115 = BOX_kernel__Int(var110); /* autobox from Int to nullable Object */
5847 ((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]>*/;
5848 var_116 = var_count_type_test_total;
5849 if (varonce117) {
5850 var118 = varonce117;
5851 } else {
5852 var119 = "total";
5853 var120 = 5;
5854 var121 = string__NativeString__to_s_with_length(var119, var120);
5855 var118 = var121;
5856 varonce117 = var118;
5857 }
5858 var_122 = var118;
5859 var123 = ((val* (*)(val*, val*))(var_116->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_116, var_122) /* [] on <var_116:HashMap[String, Int]>*/;
5860 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]>*/;
5861 { /* Inline kernel#Int#+ (var123,var124) */
5862 var127 = ((struct instance_kernel__Int*)var123)->value; /* autounbox from nullable Object to Int */;
5863 var128 = ((struct instance_kernel__Int*)var124)->value; /* autounbox from nullable Object to Int */;
5864 var129 = var127 + var128;
5865 var125 = var129;
5866 goto RET_LABEL126;
5867 RET_LABEL126:(void)0;
5868 }
5869 var130 = BOX_kernel__Int(var125); /* autobox from Int to nullable Object */
5870 ((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]>*/;
5871 CONTINUE_label: (void)0;
5872 ((void (*)(val*))(var47->class->vft[COLOR_abstract_collection__Iterator__next]))(var47) /* next on <var47:Iterator[nullable Object]>*/;
5873 }
5874 BREAK_label: (void)0;
5875 if (varonce131) {
5876 var132 = varonce131;
5877 } else {
5878 var133 = "total";
5879 var134 = 5;
5880 var135 = string__NativeString__to_s_with_length(var133, var134);
5881 var132 = var135;
5882 varonce131 = var132;
5883 }
5884 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]>*/;
5885 var137 = ((struct instance_kernel__Int*)var136)->value; /* autounbox from nullable Object to Int */;
5886 var_count_type_test = var137;
5887 var138 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_tags]))(self) /* count_type_test_tags on <self:AbstractCompiler>*/;
5888 var139 = ((val* (*)(val*))(var138->class->vft[COLOR_array__Collection__to_a]))(var138) /* to_a on <var138:Array[String]>*/;
5889 var_tags = var139;
5890 if (varonce140) {
5891 var141 = varonce140;
5892 } else {
5893 var142 = "total";
5894 var143 = 5;
5895 var144 = string__NativeString__to_s_with_length(var142, var143);
5896 var141 = var144;
5897 varonce140 = var141;
5898 }
5899 ((void (*)(val*, val*))(var_tags->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_tags, var141) /* add on <var_tags:Array[String]>*/;
5900 var145 = ((val* (*)(val*))(var_tags->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_tags) /* iterator on <var_tags:Array[String]>*/;
5901 for(;;) {
5902 var146 = ((short int (*)(val*))(var145->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var145) /* is_ok on <var145:Iterator[nullable Object]>*/;
5903 if(!var146) break;
5904 var147 = ((val* (*)(val*))(var145->class->vft[COLOR_abstract_collection__Iterator__item]))(var145) /* item on <var145:Iterator[nullable Object]>*/;
5905 var_tag148 = var147;
5906 var149 = NEW_array__Array(&type_array__Arraykernel__Object);
5907 { /* var149 = array_instance Array[Object] */
5908 var150 = 1;
5909 var151 = NEW_array__NativeArray(var150, &type_array__NativeArraykernel__Object);
5910 ((struct instance_array__NativeArray*)var151)->values[0] = (val*) var_tag148;
5911 ((void (*)(val*, val*, long))(var149->class->vft[COLOR_array__Array__with_native]))(var149, var151, var150) /* with_native on <var149:Array[Object]>*/;
5912 CHECK_NEW_array__Array(var149);
5913 }
5914 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__printn]))(self, var149) /* printn on <self:AbstractCompiler>*/;
5915 if (varonce152) {
5916 var153 = varonce152;
5917 } else {
5918 var154 = "\11";
5919 var155 = 1;
5920 var156 = string__NativeString__to_s_with_length(var154, var155);
5921 var153 = var156;
5922 varonce152 = var153;
5923 }
5924 var157 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_resolved]))(self) /* count_type_test_resolved on <self:AbstractCompiler>*/;
5925 var158 = ((val* (*)(val*, val*))(var157->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var157, var_tag148) /* [] on <var157:HashMap[String, Int]>*/;
5926 if (varonce159) {
5927 var160 = varonce159;
5928 } else {
5929 var161 = " (";
5930 var162 = 2;
5931 var163 = string__NativeString__to_s_with_length(var161, var162);
5932 var160 = var163;
5933 varonce159 = var160;
5934 }
5935 var164 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_resolved]))(self) /* count_type_test_resolved on <self:AbstractCompiler>*/;
5936 var165 = ((val* (*)(val*, val*))(var164->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var164, var_tag148) /* [] on <var164:HashMap[String, Int]>*/;
5937 var167 = ((struct instance_kernel__Int*)var165)->value; /* autounbox from nullable Object to Int */;
5938 var166 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__div]))(self, var167, var_count_type_test) /* div on <self:AbstractCompiler>*/;
5939 if (varonce168) {
5940 var169 = varonce168;
5941 } else {
5942 var170 = "%)";
5943 var171 = 2;
5944 var172 = string__NativeString__to_s_with_length(var170, var171);
5945 var169 = var172;
5946 varonce168 = var169;
5947 }
5948 var173 = NEW_array__Array(&type_array__Arraykernel__Object);
5949 { /* var173 = array_instance Array[Object] */
5950 var174 = 5;
5951 var175 = NEW_array__NativeArray(var174, &type_array__NativeArraykernel__Object);
5952 ((struct instance_array__NativeArray*)var175)->values[0] = (val*) var153;
5953 ((struct instance_array__NativeArray*)var175)->values[1] = (val*) var158;
5954 ((struct instance_array__NativeArray*)var175)->values[2] = (val*) var160;
5955 ((struct instance_array__NativeArray*)var175)->values[3] = (val*) var166;
5956 ((struct instance_array__NativeArray*)var175)->values[4] = (val*) var169;
5957 ((void (*)(val*, val*, long))(var173->class->vft[COLOR_array__Array__with_native]))(var173, var175, var174) /* with_native on <var173:Array[Object]>*/;
5958 CHECK_NEW_array__Array(var173);
5959 }
5960 var176 = ((val* (*)(val*))(var173->class->vft[COLOR_string__Object__to_s]))(var173) /* to_s on <var173:Array[Object]>*/;
5961 var177 = NEW_array__Array(&type_array__Arraykernel__Object);
5962 { /* var177 = array_instance Array[Object] */
5963 var178 = 1;
5964 var179 = NEW_array__NativeArray(var178, &type_array__NativeArraykernel__Object);
5965 ((struct instance_array__NativeArray*)var179)->values[0] = (val*) var176;
5966 ((void (*)(val*, val*, long))(var177->class->vft[COLOR_array__Array__with_native]))(var177, var179, var178) /* with_native on <var177:Array[Object]>*/;
5967 CHECK_NEW_array__Array(var177);
5968 }
5969 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__printn]))(self, var177) /* printn on <self:AbstractCompiler>*/;
5970 if (varonce180) {
5971 var181 = varonce180;
5972 } else {
5973 var182 = "\11";
5974 var183 = 1;
5975 var184 = string__NativeString__to_s_with_length(var182, var183);
5976 var181 = var184;
5977 varonce180 = var181;
5978 }
5979 var185 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_unresolved]))(self) /* count_type_test_unresolved on <self:AbstractCompiler>*/;
5980 var186 = ((val* (*)(val*, val*))(var185->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var185, var_tag148) /* [] on <var185:HashMap[String, Int]>*/;
5981 if (varonce187) {
5982 var188 = varonce187;
5983 } else {
5984 var189 = " (";
5985 var190 = 2;
5986 var191 = string__NativeString__to_s_with_length(var189, var190);
5987 var188 = var191;
5988 varonce187 = var188;
5989 }
5990 var192 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_unresolved]))(self) /* count_type_test_unresolved on <self:AbstractCompiler>*/;
5991 var193 = ((val* (*)(val*, val*))(var192->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var192, var_tag148) /* [] on <var192:HashMap[String, Int]>*/;
5992 var195 = ((struct instance_kernel__Int*)var193)->value; /* autounbox from nullable Object to Int */;
5993 var194 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__div]))(self, var195, var_count_type_test) /* div on <self:AbstractCompiler>*/;
5994 if (varonce196) {
5995 var197 = varonce196;
5996 } else {
5997 var198 = "%)";
5998 var199 = 2;
5999 var200 = string__NativeString__to_s_with_length(var198, var199);
6000 var197 = var200;
6001 varonce196 = var197;
6002 }
6003 var201 = NEW_array__Array(&type_array__Arraykernel__Object);
6004 { /* var201 = array_instance Array[Object] */
6005 var202 = 5;
6006 var203 = NEW_array__NativeArray(var202, &type_array__NativeArraykernel__Object);
6007 ((struct instance_array__NativeArray*)var203)->values[0] = (val*) var181;
6008 ((struct instance_array__NativeArray*)var203)->values[1] = (val*) var186;
6009 ((struct instance_array__NativeArray*)var203)->values[2] = (val*) var188;
6010 ((struct instance_array__NativeArray*)var203)->values[3] = (val*) var194;
6011 ((struct instance_array__NativeArray*)var203)->values[4] = (val*) var197;
6012 ((void (*)(val*, val*, long))(var201->class->vft[COLOR_array__Array__with_native]))(var201, var203, var202) /* with_native on <var201:Array[Object]>*/;
6013 CHECK_NEW_array__Array(var201);
6014 }
6015 var204 = ((val* (*)(val*))(var201->class->vft[COLOR_string__Object__to_s]))(var201) /* to_s on <var201:Array[Object]>*/;
6016 var205 = NEW_array__Array(&type_array__Arraykernel__Object);
6017 { /* var205 = array_instance Array[Object] */
6018 var206 = 1;
6019 var207 = NEW_array__NativeArray(var206, &type_array__NativeArraykernel__Object);
6020 ((struct instance_array__NativeArray*)var207)->values[0] = (val*) var204;
6021 ((void (*)(val*, val*, long))(var205->class->vft[COLOR_array__Array__with_native]))(var205, var207, var206) /* with_native on <var205:Array[Object]>*/;
6022 CHECK_NEW_array__Array(var205);
6023 }
6024 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__printn]))(self, var205) /* printn on <self:AbstractCompiler>*/;
6025 if (varonce208) {
6026 var209 = varonce208;
6027 } else {
6028 var210 = "\11";
6029 var211 = 1;
6030 var212 = string__NativeString__to_s_with_length(var210, var211);
6031 var209 = var212;
6032 varonce208 = var209;
6033 }
6034 var213 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_skipped]))(self) /* count_type_test_skipped on <self:AbstractCompiler>*/;
6035 var214 = ((val* (*)(val*, val*))(var213->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var213, var_tag148) /* [] on <var213:HashMap[String, Int]>*/;
6036 if (varonce215) {
6037 var216 = varonce215;
6038 } else {
6039 var217 = " (";
6040 var218 = 2;
6041 var219 = string__NativeString__to_s_with_length(var217, var218);
6042 var216 = var219;
6043 varonce215 = var216;
6044 }
6045 var220 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_skipped]))(self) /* count_type_test_skipped on <self:AbstractCompiler>*/;
6046 var221 = ((val* (*)(val*, val*))(var220->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var220, var_tag148) /* [] on <var220:HashMap[String, Int]>*/;
6047 var223 = ((struct instance_kernel__Int*)var221)->value; /* autounbox from nullable Object to Int */;
6048 var222 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__div]))(self, var223, var_count_type_test) /* div on <self:AbstractCompiler>*/;
6049 if (varonce224) {
6050 var225 = varonce224;
6051 } else {
6052 var226 = "%)";
6053 var227 = 2;
6054 var228 = string__NativeString__to_s_with_length(var226, var227);
6055 var225 = var228;
6056 varonce224 = var225;
6057 }
6058 var229 = NEW_array__Array(&type_array__Arraykernel__Object);
6059 { /* var229 = array_instance Array[Object] */
6060 var230 = 5;
6061 var231 = NEW_array__NativeArray(var230, &type_array__NativeArraykernel__Object);
6062 ((struct instance_array__NativeArray*)var231)->values[0] = (val*) var209;
6063 ((struct instance_array__NativeArray*)var231)->values[1] = (val*) var214;
6064 ((struct instance_array__NativeArray*)var231)->values[2] = (val*) var216;
6065 ((struct instance_array__NativeArray*)var231)->values[3] = (val*) var222;
6066 ((struct instance_array__NativeArray*)var231)->values[4] = (val*) var225;
6067 ((void (*)(val*, val*, long))(var229->class->vft[COLOR_array__Array__with_native]))(var229, var231, var230) /* with_native on <var229:Array[Object]>*/;
6068 CHECK_NEW_array__Array(var229);
6069 }
6070 var232 = ((val* (*)(val*))(var229->class->vft[COLOR_string__Object__to_s]))(var229) /* to_s on <var229:Array[Object]>*/;
6071 var233 = NEW_array__Array(&type_array__Arraykernel__Object);
6072 { /* var233 = array_instance Array[Object] */
6073 var234 = 1;
6074 var235 = NEW_array__NativeArray(var234, &type_array__NativeArraykernel__Object);
6075 ((struct instance_array__NativeArray*)var235)->values[0] = (val*) var232;
6076 ((void (*)(val*, val*, long))(var233->class->vft[COLOR_array__Array__with_native]))(var233, var235, var234) /* with_native on <var233:Array[Object]>*/;
6077 CHECK_NEW_array__Array(var233);
6078 }
6079 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__printn]))(self, var233) /* printn on <self:AbstractCompiler>*/;
6080 if (varonce236) {
6081 var237 = varonce236;
6082 } else {
6083 var238 = "\11";
6084 var239 = 1;
6085 var240 = string__NativeString__to_s_with_length(var238, var239);
6086 var237 = var240;
6087 varonce236 = var237;
6088 }
6089 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]>*/;
6090 if (varonce242) {
6091 var243 = varonce242;
6092 } else {
6093 var244 = " (";
6094 var245 = 2;
6095 var246 = string__NativeString__to_s_with_length(var244, var245);
6096 var243 = var246;
6097 varonce242 = var243;
6098 }
6099 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]>*/;
6100 var249 = ((struct instance_kernel__Int*)var247)->value; /* autounbox from nullable Object to Int */;
6101 var248 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__div]))(self, var249, var_count_type_test) /* div on <self:AbstractCompiler>*/;
6102 if (varonce250) {
6103 var251 = varonce250;
6104 } else {
6105 var252 = "%)";
6106 var253 = 2;
6107 var254 = string__NativeString__to_s_with_length(var252, var253);
6108 var251 = var254;
6109 varonce250 = var251;
6110 }
6111 var255 = NEW_array__Array(&type_array__Arraykernel__Object);
6112 { /* var255 = array_instance Array[Object] */
6113 var256 = 5;
6114 var257 = NEW_array__NativeArray(var256, &type_array__NativeArraykernel__Object);
6115 ((struct instance_array__NativeArray*)var257)->values[0] = (val*) var237;
6116 ((struct instance_array__NativeArray*)var257)->values[1] = (val*) var241;
6117 ((struct instance_array__NativeArray*)var257)->values[2] = (val*) var243;
6118 ((struct instance_array__NativeArray*)var257)->values[3] = (val*) var248;
6119 ((struct instance_array__NativeArray*)var257)->values[4] = (val*) var251;
6120 ((void (*)(val*, val*, long))(var255->class->vft[COLOR_array__Array__with_native]))(var255, var257, var256) /* with_native on <var255:Array[Object]>*/;
6121 CHECK_NEW_array__Array(var255);
6122 }
6123 var258 = ((val* (*)(val*))(var255->class->vft[COLOR_string__Object__to_s]))(var255) /* to_s on <var255:Array[Object]>*/;
6124 var259 = NEW_array__Array(&type_array__Arraykernel__Object);
6125 { /* var259 = array_instance Array[Object] */
6126 var260 = 1;
6127 var261 = NEW_array__NativeArray(var260, &type_array__NativeArraykernel__Object);
6128 ((struct instance_array__NativeArray*)var261)->values[0] = (val*) var258;
6129 ((void (*)(val*, val*, long))(var259->class->vft[COLOR_array__Array__with_native]))(var259, var261, var260) /* with_native on <var259:Array[Object]>*/;
6130 CHECK_NEW_array__Array(var259);
6131 }
6132 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__printn]))(self, var259) /* printn on <self:AbstractCompiler>*/;
6133 if (varonce262) {
6134 var263 = varonce262;
6135 } else {
6136 var264 = "";
6137 var265 = 0;
6138 var266 = string__NativeString__to_s_with_length(var264, var265);
6139 var263 = var266;
6140 varonce262 = var263;
6141 }
6142 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var263) /* print on <self:AbstractCompiler>*/;
6143 CONTINUE_label267: (void)0;
6144 ((void (*)(val*))(var145->class->vft[COLOR_abstract_collection__Iterator__next]))(var145) /* next on <var145:Iterator[nullable Object]>*/;
6145 }
6146 BREAK_label267: (void)0;
6147 } else {
6148 }
6149 RET_LABEL:;
6150 }
6151 /* method abstract_compiler#AbstractCompiler#display_stats for (self: Object) */
6152 void VIRTUAL_abstract_compiler__AbstractCompiler__display_stats(val* self) {
6153 abstract_compiler__AbstractCompiler__display_stats(self);
6154 RET_LABEL:;
6155 }
6156 /* method abstract_compiler#AbstractCompiler#div for (self: AbstractCompiler, Int, Int): String */
6157 val* abstract_compiler__AbstractCompiler__div(val* self, long p0, long p1) {
6158 val* var /* : String */;
6159 long var_a /* var a: Int */;
6160 long var_b /* var b: Int */;
6161 long var1 /* : Int */;
6162 short int var2 /* : Bool */;
6163 short int var4 /* : Bool */;
6164 static val* varonce;
6165 val* var5 /* : String */;
6166 char* var6 /* : NativeString */;
6167 long var7 /* : Int */;
6168 val* var8 /* : String */;
6169 long var9 /* : Int */;
6170 long var10 /* : Int */;
6171 long var12 /* : Int */;
6172 long var13 /* : Int */;
6173 long var15 /* : Int */;
6174 double var16 /* : Float */;
6175 double var18 /* : Float */;
6176 double var19 /* : Float */;
6177 double var20 /* : Float */;
6178 double var22 /* : Float */;
6179 long var23 /* : Int */;
6180 val* var24 /* : String */;
6181 var_a = p0;
6182 var_b = p1;
6183 var1 = 0;
6184 { /* Inline kernel#Int#== (var_b,var1) */
6185 var4 = var_b == var1;
6186 var2 = var4;
6187 goto RET_LABEL3;
6188 RET_LABEL3:(void)0;
6189 }
6190 if (var2){
6191 if (varonce) {
6192 var5 = varonce;
6193 } else {
6194 var6 = "n/a";
6195 var7 = 3;
6196 var8 = string__NativeString__to_s_with_length(var6, var7);
6197 var5 = var8;
6198 varonce = var5;
6199 }
6200 var = var5;
6201 goto RET_LABEL;
6202 } else {
6203 }
6204 var9 = 10000;
6205 { /* Inline kernel#Int#* (var_a,var9) */
6206 var12 = var_a * var9;
6207 var10 = var12;
6208 goto RET_LABEL11;
6209 RET_LABEL11:(void)0;
6210 }
6211 { /* Inline kernel#Int#/ (var10,var_b) */
6212 var15 = var10 / var_b;
6213 var13 = var15;
6214 goto RET_LABEL14;
6215 RET_LABEL14:(void)0;
6216 }
6217 { /* Inline kernel#Int#to_f (var13) */
6218 var18 = (double)var13;
6219 var16 = var18;
6220 goto RET_LABEL17;
6221 RET_LABEL17:(void)0;
6222 }
6223 var19 = 100.0;
6224 { /* Inline kernel#Float#/ (var16,var19) */
6225 var22 = var16 / var19;
6226 var20 = var22;
6227 goto RET_LABEL21;
6228 RET_LABEL21:(void)0;
6229 }
6230 var23 = 2;
6231 var24 = string__Float__to_precision(var20, var23);
6232 var = var24;
6233 goto RET_LABEL;
6234 RET_LABEL:;
6235 return var;
6236 }
6237 /* method abstract_compiler#AbstractCompiler#div for (self: Object, Int, Int): String */
6238 val* VIRTUAL_abstract_compiler__AbstractCompiler__div(val* self, long p0, long p1) {
6239 val* var /* : String */;
6240 val* var1 /* : String */;
6241 var1 = abstract_compiler__AbstractCompiler__div(self, p0, p1);
6242 var = var1;
6243 RET_LABEL:;
6244 return var;
6245 }
6246 /* method abstract_compiler#CodeFile#name for (self: CodeFile): String */
6247 val* abstract_compiler__CodeFile__name(val* self) {
6248 val* var /* : String */;
6249 val* var1 /* : String */;
6250 var1 = self->attrs[COLOR_abstract_compiler__CodeFile___64dname].val; /* @name on <self:CodeFile> */
6251 if (var1 == NULL) {
6252 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @name", "src/abstract_compiler.nit", 503);
6253 exit(1);
6254 }
6255 var = var1;
6256 RET_LABEL:;
6257 return var;
6258 }
6259 /* method abstract_compiler#CodeFile#name for (self: Object): String */
6260 val* VIRTUAL_abstract_compiler__CodeFile__name(val* self) {
6261 val* var /* : String */;
6262 val* var1 /* : String */;
6263 var1 = abstract_compiler__CodeFile__name(self);
6264 var = var1;
6265 RET_LABEL:;
6266 return var;
6267 }
6268 /* method abstract_compiler#CodeFile#name= for (self: CodeFile, String) */
6269 void abstract_compiler__CodeFile__name_61d(val* self, val* p0) {
6270 self->attrs[COLOR_abstract_compiler__CodeFile___64dname].val = p0; /* @name on <self:CodeFile> */
6271 RET_LABEL:;
6272 }
6273 /* method abstract_compiler#CodeFile#name= for (self: Object, String) */
6274 void VIRTUAL_abstract_compiler__CodeFile__name_61d(val* self, val* p0) {
6275 abstract_compiler__CodeFile__name_61d(self, p0);
6276 RET_LABEL:;
6277 }
6278 /* method abstract_compiler#CodeFile#writers for (self: CodeFile): Array[CodeWriter] */
6279 val* abstract_compiler__CodeFile__writers(val* self) {
6280 val* var /* : Array[CodeWriter] */;
6281 val* var1 /* : Array[CodeWriter] */;
6282 var1 = self->attrs[COLOR_abstract_compiler__CodeFile___64dwriters].val; /* @writers on <self:CodeFile> */
6283 if (var1 == NULL) {
6284 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @writers", "src/abstract_compiler.nit", 504);
6285 exit(1);
6286 }
6287 var = var1;
6288 RET_LABEL:;
6289 return var;
6290 }
6291 /* method abstract_compiler#CodeFile#writers for (self: Object): Array[CodeWriter] */
6292 val* VIRTUAL_abstract_compiler__CodeFile__writers(val* self) {
6293 val* var /* : Array[CodeWriter] */;
6294 val* var1 /* : Array[CodeWriter] */;
6295 var1 = abstract_compiler__CodeFile__writers(self);
6296 var = var1;
6297 RET_LABEL:;
6298 return var;
6299 }
6300 /* method abstract_compiler#CodeFile#writers= for (self: CodeFile, Array[CodeWriter]) */
6301 void abstract_compiler__CodeFile__writers_61d(val* self, val* p0) {
6302 self->attrs[COLOR_abstract_compiler__CodeFile___64dwriters].val = p0; /* @writers on <self:CodeFile> */
6303 RET_LABEL:;
6304 }
6305 /* method abstract_compiler#CodeFile#writers= for (self: Object, Array[CodeWriter]) */
6306 void VIRTUAL_abstract_compiler__CodeFile__writers_61d(val* self, val* p0) {
6307 abstract_compiler__CodeFile__writers_61d(self, p0);
6308 RET_LABEL:;
6309 }
6310 /* method abstract_compiler#CodeFile#required_declarations for (self: CodeFile): HashSet[String] */
6311 val* abstract_compiler__CodeFile__required_declarations(val* self) {
6312 val* var /* : HashSet[String] */;
6313 val* var1 /* : HashSet[String] */;
6314 var1 = self->attrs[COLOR_abstract_compiler__CodeFile___64drequired_declarations].val; /* @required_declarations on <self:CodeFile> */
6315 if (var1 == NULL) {
6316 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @required_declarations", "src/abstract_compiler.nit", 505);
6317 exit(1);
6318 }
6319 var = var1;
6320 RET_LABEL:;
6321 return var;
6322 }
6323 /* method abstract_compiler#CodeFile#required_declarations for (self: Object): HashSet[String] */
6324 val* VIRTUAL_abstract_compiler__CodeFile__required_declarations(val* self) {
6325 val* var /* : HashSet[String] */;
6326 val* var1 /* : HashSet[String] */;
6327 var1 = abstract_compiler__CodeFile__required_declarations(self);
6328 var = var1;
6329 RET_LABEL:;
6330 return var;
6331 }
6332 /* method abstract_compiler#CodeFile#required_declarations= for (self: CodeFile, HashSet[String]) */
6333 void abstract_compiler__CodeFile__required_declarations_61d(val* self, val* p0) {
6334 self->attrs[COLOR_abstract_compiler__CodeFile___64drequired_declarations].val = p0; /* @required_declarations on <self:CodeFile> */
6335 RET_LABEL:;
6336 }
6337 /* method abstract_compiler#CodeFile#required_declarations= for (self: Object, HashSet[String]) */
6338 void VIRTUAL_abstract_compiler__CodeFile__required_declarations_61d(val* self, val* p0) {
6339 abstract_compiler__CodeFile__required_declarations_61d(self, p0);
6340 RET_LABEL:;
6341 }
6342 /* method abstract_compiler#CodeFile#init for (self: CodeFile, String) */
6343 void abstract_compiler__CodeFile__init(val* self, val* p0) {
6344 self->attrs[COLOR_abstract_compiler__CodeFile___64dname].val = p0; /* @name on <self:CodeFile> */
6345 RET_LABEL:;
6346 }
6347 /* method abstract_compiler#CodeFile#init for (self: Object, String) */
6348 void VIRTUAL_abstract_compiler__CodeFile__init(val* self, val* p0) {
6349 abstract_compiler__CodeFile__init(self, p0);
6350 RET_LABEL:;
6351 }
6352 /* method abstract_compiler#CodeWriter#file for (self: CodeWriter): CodeFile */
6353 val* abstract_compiler__CodeWriter__file(val* self) {
6354 val* var /* : CodeFile */;
6355 val* var1 /* : CodeFile */;
6356 var1 = self->attrs[COLOR_abstract_compiler__CodeWriter___64dfile].val; /* @file on <self:CodeWriter> */
6357 if (var1 == NULL) {
6358 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @file", "src/abstract_compiler.nit", 510);
6359 exit(1);
6360 }
6361 var = var1;
6362 RET_LABEL:;
6363 return var;
6364 }
6365 /* method abstract_compiler#CodeWriter#file for (self: Object): CodeFile */
6366 val* VIRTUAL_abstract_compiler__CodeWriter__file(val* self) {
6367 val* var /* : CodeFile */;
6368 val* var1 /* : CodeFile */;
6369 var1 = abstract_compiler__CodeWriter__file(self);
6370 var = var1;
6371 RET_LABEL:;
6372 return var;
6373 }
6374 /* method abstract_compiler#CodeWriter#file= for (self: CodeWriter, CodeFile) */
6375 void abstract_compiler__CodeWriter__file_61d(val* self, val* p0) {
6376 self->attrs[COLOR_abstract_compiler__CodeWriter___64dfile].val = p0; /* @file on <self:CodeWriter> */
6377 RET_LABEL:;
6378 }
6379 /* method abstract_compiler#CodeWriter#file= for (self: Object, CodeFile) */
6380 void VIRTUAL_abstract_compiler__CodeWriter__file_61d(val* self, val* p0) {
6381 abstract_compiler__CodeWriter__file_61d(self, p0);
6382 RET_LABEL:;
6383 }
6384 /* method abstract_compiler#CodeWriter#lines for (self: CodeWriter): List[String] */
6385 val* abstract_compiler__CodeWriter__lines(val* self) {
6386 val* var /* : List[String] */;
6387 val* var1 /* : List[String] */;
6388 var1 = self->attrs[COLOR_abstract_compiler__CodeWriter___64dlines].val; /* @lines on <self:CodeWriter> */
6389 if (var1 == NULL) {
6390 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @lines", "src/abstract_compiler.nit", 511);
6391 exit(1);
6392 }
6393 var = var1;
6394 RET_LABEL:;
6395 return var;
6396 }
6397 /* method abstract_compiler#CodeWriter#lines for (self: Object): List[String] */
6398 val* VIRTUAL_abstract_compiler__CodeWriter__lines(val* self) {
6399 val* var /* : List[String] */;
6400 val* var1 /* : List[String] */;
6401 var1 = abstract_compiler__CodeWriter__lines(self);
6402 var = var1;
6403 RET_LABEL:;
6404 return var;
6405 }
6406 /* method abstract_compiler#CodeWriter#lines= for (self: CodeWriter, List[String]) */
6407 void abstract_compiler__CodeWriter__lines_61d(val* self, val* p0) {
6408 self->attrs[COLOR_abstract_compiler__CodeWriter___64dlines].val = p0; /* @lines on <self:CodeWriter> */
6409 RET_LABEL:;
6410 }
6411 /* method abstract_compiler#CodeWriter#lines= for (self: Object, List[String]) */
6412 void VIRTUAL_abstract_compiler__CodeWriter__lines_61d(val* self, val* p0) {
6413 abstract_compiler__CodeWriter__lines_61d(self, p0);
6414 RET_LABEL:;
6415 }
6416 /* method abstract_compiler#CodeWriter#decl_lines for (self: CodeWriter): List[String] */
6417 val* abstract_compiler__CodeWriter__decl_lines(val* self) {
6418 val* var /* : List[String] */;
6419 val* var1 /* : List[String] */;
6420 var1 = self->attrs[COLOR_abstract_compiler__CodeWriter___64ddecl_lines].val; /* @decl_lines on <self:CodeWriter> */
6421 if (var1 == NULL) {
6422 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @decl_lines", "src/abstract_compiler.nit", 512);
6423 exit(1);
6424 }
6425 var = var1;
6426 RET_LABEL:;
6427 return var;
6428 }
6429 /* method abstract_compiler#CodeWriter#decl_lines for (self: Object): List[String] */
6430 val* VIRTUAL_abstract_compiler__CodeWriter__decl_lines(val* self) {
6431 val* var /* : List[String] */;
6432 val* var1 /* : List[String] */;
6433 var1 = abstract_compiler__CodeWriter__decl_lines(self);
6434 var = var1;
6435 RET_LABEL:;
6436 return var;
6437 }
6438 /* method abstract_compiler#CodeWriter#decl_lines= for (self: CodeWriter, List[String]) */
6439 void abstract_compiler__CodeWriter__decl_lines_61d(val* self, val* p0) {
6440 self->attrs[COLOR_abstract_compiler__CodeWriter___64ddecl_lines].val = p0; /* @decl_lines on <self:CodeWriter> */
6441 RET_LABEL:;
6442 }
6443 /* method abstract_compiler#CodeWriter#decl_lines= for (self: Object, List[String]) */
6444 void VIRTUAL_abstract_compiler__CodeWriter__decl_lines_61d(val* self, val* p0) {
6445 abstract_compiler__CodeWriter__decl_lines_61d(self, p0);
6446 RET_LABEL:;
6447 }
6448 /* method abstract_compiler#CodeWriter#add for (self: CodeWriter, String) */
6449 void abstract_compiler__CodeWriter__add(val* self, val* p0) {
6450 val* var_s /* var s: String */;
6451 val* var /* : List[String] */;
6452 var_s = p0;
6453 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__CodeWriter__lines]))(self) /* lines on <self:CodeWriter>*/;
6454 ((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var, var_s) /* add on <var:List[String]>*/;
6455 RET_LABEL:;
6456 }
6457 /* method abstract_compiler#CodeWriter#add for (self: Object, String) */
6458 void VIRTUAL_abstract_compiler__CodeWriter__add(val* self, val* p0) {
6459 abstract_compiler__CodeWriter__add(self, p0);
6460 RET_LABEL:;
6461 }
6462 /* method abstract_compiler#CodeWriter#add_decl for (self: CodeWriter, String) */
6463 void abstract_compiler__CodeWriter__add_decl(val* self, val* p0) {
6464 val* var_s /* var s: String */;
6465 val* var /* : List[String] */;
6466 var_s = p0;
6467 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__CodeWriter__decl_lines]))(self) /* decl_lines on <self:CodeWriter>*/;
6468 ((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var, var_s) /* add on <var:List[String]>*/;
6469 RET_LABEL:;
6470 }
6471 /* method abstract_compiler#CodeWriter#add_decl for (self: Object, String) */
6472 void VIRTUAL_abstract_compiler__CodeWriter__add_decl(val* self, val* p0) {
6473 abstract_compiler__CodeWriter__add_decl(self, p0);
6474 RET_LABEL:;
6475 }
6476 /* method abstract_compiler#CodeWriter#init for (self: CodeWriter, CodeFile) */
6477 void abstract_compiler__CodeWriter__init(val* self, val* p0) {
6478 val* var_file /* var file: CodeFile */;
6479 val* var /* : Array[CodeWriter] */;
6480 var_file = p0;
6481 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__CodeWriter__file_61d]))(self, var_file) /* file= on <self:CodeWriter>*/;
6482 var = ((val* (*)(val*))(var_file->class->vft[COLOR_abstract_compiler__CodeFile__writers]))(var_file) /* writers on <var_file:CodeFile>*/;
6483 ((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var, self) /* add on <var:Array[CodeWriter]>*/;
6484 RET_LABEL:;
6485 }
6486 /* method abstract_compiler#CodeWriter#init for (self: Object, CodeFile) */
6487 void VIRTUAL_abstract_compiler__CodeWriter__init(val* self, val* p0) {
6488 abstract_compiler__CodeWriter__init(self, p0);
6489 RET_LABEL:;
6490 }
6491 /* method abstract_compiler#AbstractCompilerVisitor#compiler for (self: AbstractCompilerVisitor): AbstractCompiler */
6492 val* abstract_compiler__AbstractCompilerVisitor__compiler(val* self) {
6493 val* var /* : AbstractCompiler */;
6494 val* var1 /* : AbstractCompiler */;
6495 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dcompiler].val; /* @compiler on <self:AbstractCompilerVisitor> */
6496 if (var1 == NULL) {
6497 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @compiler", "src/abstract_compiler.nit", 533);
6498 exit(1);
6499 }
6500 var = var1;
6501 RET_LABEL:;
6502 return var;
6503 }
6504 /* method abstract_compiler#AbstractCompilerVisitor#compiler for (self: Object): AbstractCompiler */
6505 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__compiler(val* self) {
6506 val* var /* : AbstractCompiler */;
6507 val* var1 /* : AbstractCompiler */;
6508 var1 = abstract_compiler__AbstractCompilerVisitor__compiler(self);
6509 var = var1;
6510 RET_LABEL:;
6511 return var;
6512 }
6513 /* method abstract_compiler#AbstractCompilerVisitor#compiler= for (self: AbstractCompilerVisitor, AbstractCompiler) */
6514 void abstract_compiler__AbstractCompilerVisitor__compiler_61d(val* self, val* p0) {
6515 short int var /* : Bool */;
6516 int cltype;
6517 int idtype;
6518 const struct type* type_struct;
6519 /* Covariant cast for argument 0 (compiler) <p0:AbstractCompiler> isa COMPILER */
6520 /* <p0:AbstractCompiler> isa COMPILER */
6521 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractCompilerVisitor_VTCOMPILER];
6522 cltype = type_struct->color;
6523 idtype = type_struct->id;
6524 if(cltype >= p0->type->table_size) {
6525 var = 0;
6526 } else {
6527 var = p0->type->type_table[cltype] == idtype;
6528 }
6529 if (!var) {
6530 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 533);
6531 exit(1);
6532 }
6533 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dcompiler].val = p0; /* @compiler on <self:AbstractCompilerVisitor> */
6534 RET_LABEL:;
6535 }
6536 /* method abstract_compiler#AbstractCompilerVisitor#compiler= for (self: Object, AbstractCompiler) */
6537 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__compiler_61d(val* self, val* p0) {
6538 abstract_compiler__AbstractCompilerVisitor__compiler_61d(self, p0);
6539 RET_LABEL:;
6540 }
6541 /* method abstract_compiler#AbstractCompilerVisitor#current_node for (self: AbstractCompilerVisitor): nullable ANode */
6542 val* abstract_compiler__AbstractCompilerVisitor__current_node(val* self) {
6543 val* var /* : nullable ANode */;
6544 val* var1 /* : nullable ANode */;
6545 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dcurrent_node].val; /* @current_node on <self:AbstractCompilerVisitor> */
6546 var = var1;
6547 RET_LABEL:;
6548 return var;
6549 }
6550 /* method abstract_compiler#AbstractCompilerVisitor#current_node for (self: Object): nullable ANode */
6551 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__current_node(val* self) {
6552 val* var /* : nullable ANode */;
6553 val* var1 /* : nullable ANode */;
6554 var1 = abstract_compiler__AbstractCompilerVisitor__current_node(self);
6555 var = var1;
6556 RET_LABEL:;
6557 return var;
6558 }
6559 /* method abstract_compiler#AbstractCompilerVisitor#current_node= for (self: AbstractCompilerVisitor, nullable ANode) */
6560 void abstract_compiler__AbstractCompilerVisitor__current_node_61d(val* self, val* p0) {
6561 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dcurrent_node].val = p0; /* @current_node on <self:AbstractCompilerVisitor> */
6562 RET_LABEL:;
6563 }
6564 /* method abstract_compiler#AbstractCompilerVisitor#current_node= for (self: Object, nullable ANode) */
6565 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__current_node_61d(val* self, val* p0) {
6566 abstract_compiler__AbstractCompilerVisitor__current_node_61d(self, p0);
6567 RET_LABEL:;
6568 }
6569 /* method abstract_compiler#AbstractCompilerVisitor#frame for (self: AbstractCompilerVisitor): nullable Frame */
6570 val* abstract_compiler__AbstractCompilerVisitor__frame(val* self) {
6571 val* var /* : nullable Frame */;
6572 val* var1 /* : nullable Frame */;
6573 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dframe].val; /* @frame on <self:AbstractCompilerVisitor> */
6574 var = var1;
6575 RET_LABEL:;
6576 return var;
6577 }
6578 /* method abstract_compiler#AbstractCompilerVisitor#frame for (self: Object): nullable Frame */
6579 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__frame(val* self) {
6580 val* var /* : nullable Frame */;
6581 val* var1 /* : nullable Frame */;
6582 var1 = abstract_compiler__AbstractCompilerVisitor__frame(self);
6583 var = var1;
6584 RET_LABEL:;
6585 return var;
6586 }
6587 /* method abstract_compiler#AbstractCompilerVisitor#frame= for (self: AbstractCompilerVisitor, nullable Frame) */
6588 void abstract_compiler__AbstractCompilerVisitor__frame_61d(val* self, val* p0) {
6589 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dframe].val = p0; /* @frame on <self:AbstractCompilerVisitor> */
6590 RET_LABEL:;
6591 }
6592 /* method abstract_compiler#AbstractCompilerVisitor#frame= for (self: Object, nullable Frame) */
6593 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__frame_61d(val* self, val* p0) {
6594 abstract_compiler__AbstractCompilerVisitor__frame_61d(self, p0);
6595 RET_LABEL:;
6596 }
6597 /* method abstract_compiler#AbstractCompilerVisitor#object_type for (self: AbstractCompilerVisitor): MClassType */
6598 val* abstract_compiler__AbstractCompilerVisitor__object_type(val* self) {
6599 val* var /* : MClassType */;
6600 val* var1 /* : AbstractCompiler */;
6601 val* var2 /* : MModule */;
6602 val* var3 /* : MClassType */;
6603 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
6604 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var1) /* mainmodule on <var1:AbstractCompiler>*/;
6605 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MModule__object_type]))(var2) /* object_type on <var2:MModule>*/;
6606 var = var3;
6607 goto RET_LABEL;
6608 RET_LABEL:;
6609 return var;
6610 }
6611 /* method abstract_compiler#AbstractCompilerVisitor#object_type for (self: Object): MClassType */
6612 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__object_type(val* self) {
6613 val* var /* : MClassType */;
6614 val* var1 /* : MClassType */;
6615 var1 = abstract_compiler__AbstractCompilerVisitor__object_type(self);
6616 var = var1;
6617 RET_LABEL:;
6618 return var;
6619 }
6620 /* method abstract_compiler#AbstractCompilerVisitor#bool_type for (self: AbstractCompilerVisitor): MClassType */
6621 val* abstract_compiler__AbstractCompilerVisitor__bool_type(val* self) {
6622 val* var /* : MClassType */;
6623 val* var1 /* : AbstractCompiler */;
6624 val* var2 /* : MModule */;
6625 val* var3 /* : MClassType */;
6626 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
6627 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var1) /* mainmodule on <var1:AbstractCompiler>*/;
6628 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MModule__bool_type]))(var2) /* bool_type on <var2:MModule>*/;
6629 var = var3;
6630 goto RET_LABEL;
6631 RET_LABEL:;
6632 return var;
6633 }
6634 /* method abstract_compiler#AbstractCompilerVisitor#bool_type for (self: Object): MClassType */
6635 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__bool_type(val* self) {
6636 val* var /* : MClassType */;
6637 val* var1 /* : MClassType */;
6638 var1 = abstract_compiler__AbstractCompilerVisitor__bool_type(self);
6639 var = var1;
6640 RET_LABEL:;
6641 return var;
6642 }
6643 /* method abstract_compiler#AbstractCompilerVisitor#writer for (self: AbstractCompilerVisitor): CodeWriter */
6644 val* abstract_compiler__AbstractCompilerVisitor__writer(val* self) {
6645 val* var /* : CodeWriter */;
6646 val* var1 /* : CodeWriter */;
6647 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dwriter].val; /* @writer on <self:AbstractCompilerVisitor> */
6648 if (var1 == NULL) {
6649 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @writer", "src/abstract_compiler.nit", 548);
6650 exit(1);
6651 }
6652 var = var1;
6653 RET_LABEL:;
6654 return var;
6655 }
6656 /* method abstract_compiler#AbstractCompilerVisitor#writer for (self: Object): CodeWriter */
6657 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__writer(val* self) {
6658 val* var /* : CodeWriter */;
6659 val* var1 /* : CodeWriter */;
6660 var1 = abstract_compiler__AbstractCompilerVisitor__writer(self);
6661 var = var1;
6662 RET_LABEL:;
6663 return var;
6664 }
6665 /* method abstract_compiler#AbstractCompilerVisitor#writer= for (self: AbstractCompilerVisitor, CodeWriter) */
6666 void abstract_compiler__AbstractCompilerVisitor__writer_61d(val* self, val* p0) {
6667 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dwriter].val = p0; /* @writer on <self:AbstractCompilerVisitor> */
6668 RET_LABEL:;
6669 }
6670 /* method abstract_compiler#AbstractCompilerVisitor#writer= for (self: Object, CodeWriter) */
6671 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__writer_61d(val* self, val* p0) {
6672 abstract_compiler__AbstractCompilerVisitor__writer_61d(self, p0);
6673 RET_LABEL:;
6674 }
6675 /* method abstract_compiler#AbstractCompilerVisitor#init for (self: AbstractCompilerVisitor, AbstractCompiler) */
6676 void abstract_compiler__AbstractCompilerVisitor__init(val* self, val* p0) {
6677 short int var /* : Bool */;
6678 int cltype;
6679 int idtype;
6680 const struct type* type_struct;
6681 val* var_compiler /* var compiler: AbstractCompiler */;
6682 val* var1 /* : CodeWriter */;
6683 val* var2 /* : List[CodeFile] */;
6684 val* var3 /* : nullable Object */;
6685 /* Covariant cast for argument 0 (compiler) <p0:AbstractCompiler> isa COMPILER */
6686 /* <p0:AbstractCompiler> isa COMPILER */
6687 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractCompilerVisitor_VTCOMPILER];
6688 cltype = type_struct->color;
6689 idtype = type_struct->id;
6690 if(cltype >= p0->type->table_size) {
6691 var = 0;
6692 } else {
6693 var = p0->type->type_table[cltype] == idtype;
6694 }
6695 if (!var) {
6696 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 550);
6697 exit(1);
6698 }
6699 var_compiler = p0;
6700 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler_61d]))(self, var_compiler) /* compiler= on <self:AbstractCompilerVisitor>*/;
6701 var1 = NEW_abstract_compiler__CodeWriter(&type_abstract_compiler__CodeWriter);
6702 var2 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__files]))(var_compiler) /* files on <var_compiler:AbstractCompiler>*/;
6703 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__SequenceRead__last]))(var2) /* last on <var2:List[CodeFile]>*/;
6704 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_compiler__CodeWriter__init]))(var1, var3) /* init on <var1:CodeWriter>*/;
6705 CHECK_NEW_abstract_compiler__CodeWriter(var1);
6706 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__writer_61d]))(self, var1) /* writer= on <self:AbstractCompilerVisitor>*/;
6707 RET_LABEL:;
6708 }
6709 /* method abstract_compiler#AbstractCompilerVisitor#init for (self: Object, AbstractCompiler) */
6710 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__init(val* self, val* p0) {
6711 abstract_compiler__AbstractCompilerVisitor__init(self, p0);
6712 RET_LABEL:;
6713 }
6714 /* method abstract_compiler#AbstractCompilerVisitor#get_class for (self: AbstractCompilerVisitor, String): MClass */
6715 val* abstract_compiler__AbstractCompilerVisitor__get_class(val* self, val* p0) {
6716 val* var /* : MClass */;
6717 val* var_name /* var name: String */;
6718 val* var1 /* : AbstractCompiler */;
6719 val* var2 /* : MModule */;
6720 val* var3 /* : MClass */;
6721 var_name = p0;
6722 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
6723 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var1) /* mainmodule on <var1:AbstractCompiler>*/;
6724 var3 = ((val* (*)(val*, val*))(var2->class->vft[COLOR_model__MModule__get_primitive_class]))(var2, var_name) /* get_primitive_class on <var2:MModule>*/;
6725 var = var3;
6726 goto RET_LABEL;
6727 RET_LABEL:;
6728 return var;
6729 }
6730 /* method abstract_compiler#AbstractCompilerVisitor#get_class for (self: Object, String): MClass */
6731 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__get_class(val* self, val* p0) {
6732 val* var /* : MClass */;
6733 val* var1 /* : MClass */;
6734 var1 = abstract_compiler__AbstractCompilerVisitor__get_class(self, p0);
6735 var = var1;
6736 RET_LABEL:;
6737 return var;
6738 }
6739 /* method abstract_compiler#AbstractCompilerVisitor#get_property for (self: AbstractCompilerVisitor, String, MType): MMethod */
6740 val* abstract_compiler__AbstractCompilerVisitor__get_property(val* self, val* p0, val* p1) {
6741 val* var /* : MMethod */;
6742 val* var_name /* var name: String */;
6743 val* var_recv /* var recv: MType */;
6744 short int var1 /* : Bool */;
6745 int cltype;
6746 int idtype;
6747 val* var2 /* : AbstractCompiler */;
6748 val* var3 /* : ModelBuilder */;
6749 val* var4 /* : nullable ANode */;
6750 val* var5 /* : MClass */;
6751 val* var6 /* : AbstractCompiler */;
6752 val* var7 /* : MModule */;
6753 val* var8 /* : MMethod */;
6754 var_name = p0;
6755 var_recv = p1;
6756 /* <var_recv:MType> isa MClassType */
6757 cltype = type_model__MClassType.color;
6758 idtype = type_model__MClassType.id;
6759 if(cltype >= var_recv->type->table_size) {
6760 var1 = 0;
6761 } else {
6762 var1 = var_recv->type->type_table[cltype] == idtype;
6763 }
6764 if (!var1) {
6765 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/abstract_compiler.nit", 562);
6766 exit(1);
6767 }
6768 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
6769 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var2) /* modelbuilder on <var2:AbstractCompiler>*/;
6770 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node]))(self) /* current_node on <self:AbstractCompilerVisitor>*/;
6771 if (var4 == NULL) {
6772 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 563);
6773 exit(1);
6774 }
6775 var5 = ((val* (*)(val*))(var_recv->class->vft[COLOR_model__MClassType__mclass]))(var_recv) /* mclass on <var_recv:MType(MClassType)>*/;
6776 var6 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
6777 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var6) /* mainmodule on <var6:AbstractCompiler>*/;
6778 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>*/;
6779 var = var8;
6780 goto RET_LABEL;
6781 RET_LABEL:;
6782 return var;
6783 }
6784 /* method abstract_compiler#AbstractCompilerVisitor#get_property for (self: Object, String, MType): MMethod */
6785 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__get_property(val* self, val* p0, val* p1) {
6786 val* var /* : MMethod */;
6787 val* var1 /* : MMethod */;
6788 var1 = abstract_compiler__AbstractCompilerVisitor__get_property(self, p0, p1);
6789 var = var1;
6790 RET_LABEL:;
6791 return var;
6792 }
6793 /* method abstract_compiler#AbstractCompilerVisitor#compile_callsite for (self: AbstractCompilerVisitor, CallSite, Array[RuntimeVariable]): nullable RuntimeVariable */
6794 val* abstract_compiler__AbstractCompilerVisitor__compile_callsite(val* self, val* p0, val* p1) {
6795 val* var /* : nullable RuntimeVariable */;
6796 val* var_callsite /* var callsite: CallSite */;
6797 val* var_args /* var args: Array[RuntimeVariable] */;
6798 val* var1 /* : MMethod */;
6799 val* var2 /* : nullable RuntimeVariable */;
6800 var_callsite = p0;
6801 var_args = p1;
6802 var1 = ((val* (*)(val*))(var_callsite->class->vft[COLOR_typing__CallSite__mproperty]))(var_callsite) /* mproperty on <var_callsite:CallSite>*/;
6803 var2 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(self, var1, var_args) /* send on <self:AbstractCompilerVisitor>*/;
6804 var = var2;
6805 goto RET_LABEL;
6806 RET_LABEL:;
6807 return var;
6808 }
6809 /* method abstract_compiler#AbstractCompilerVisitor#compile_callsite for (self: Object, CallSite, Array[RuntimeVariable]): nullable RuntimeVariable */
6810 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__compile_callsite(val* self, val* p0, val* p1) {
6811 val* var /* : nullable RuntimeVariable */;
6812 val* var1 /* : nullable RuntimeVariable */;
6813 var1 = abstract_compiler__AbstractCompilerVisitor__compile_callsite(self, p0, p1);
6814 var = var1;
6815 RET_LABEL:;
6816 return var;
6817 }
6818 /* method abstract_compiler#AbstractCompilerVisitor#calloc_array for (self: AbstractCompilerVisitor, MType, Array[RuntimeVariable]) */
6819 void abstract_compiler__AbstractCompilerVisitor__calloc_array(val* self, val* p0, val* p1) {
6820 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/abstract_compiler.nit", 571);
6821 exit(1);
6822 RET_LABEL:;
6823 }
6824 /* method abstract_compiler#AbstractCompilerVisitor#calloc_array for (self: Object, MType, Array[RuntimeVariable]) */
6825 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__calloc_array(val* self, val* p0, val* p1) {
6826 abstract_compiler__AbstractCompilerVisitor__calloc_array(self, p0, p1);
6827 RET_LABEL:;
6828 }
6829 /* method abstract_compiler#AbstractCompilerVisitor#native_array_def for (self: AbstractCompilerVisitor, String, nullable MType, Array[RuntimeVariable]) */
6830 void abstract_compiler__AbstractCompilerVisitor__native_array_def(val* self, val* p0, val* p1, val* p2) {
6831 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/abstract_compiler.nit", 573);
6832 exit(1);
6833 RET_LABEL:;
6834 }
6835 /* method abstract_compiler#AbstractCompilerVisitor#native_array_def for (self: Object, String, nullable MType, Array[RuntimeVariable]) */
6836 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__native_array_def(val* self, val* p0, val* p1, val* p2) {
6837 abstract_compiler__AbstractCompilerVisitor__native_array_def(self, p0, p1, p2);
6838 RET_LABEL:;
6839 }
6840 /* method abstract_compiler#AbstractCompilerVisitor#varargize for (self: AbstractCompilerVisitor, MPropDef, MSignature, Array[RuntimeVariable]) */
6841 void abstract_compiler__AbstractCompilerVisitor__varargize(val* self, val* p0, val* p1, val* p2) {
6842 val* var_mpropdef /* var mpropdef: MPropDef */;
6843 val* var_msignature /* var msignature: MSignature */;
6844 val* var_args /* var args: Array[RuntimeVariable] */;
6845 val* var /* : nullable Object */;
6846 val* var_recv /* var recv: RuntimeVariable */;
6847 long var1 /* : Int */;
6848 long var_vararg_rank /* var vararg_rank: Int */;
6849 long var2 /* : Int */;
6850 short int var3 /* : Bool */;
6851 short int var5 /* : Bool */;
6852 int cltype;
6853 int idtype;
6854 short int var6 /* : Bool */;
6855 long var7 /* : Int */;
6856 long var8 /* : Int */;
6857 long var9 /* : Int */;
6858 long var10 /* : Int */;
6859 long var12 /* : Int */;
6860 short int var13 /* : Bool */;
6861 short int var15 /* : Bool */;
6862 int cltype16;
6863 int idtype17;
6864 short int var18 /* : Bool */;
6865 val* var_rawargs /* var rawargs: Array[RuntimeVariable] */;
6866 val* var19 /* : Array[RuntimeVariable] */;
6867 val* var20 /* : nullable Object */;
6868 val* var21 /* : Range[Int] */;
6869 long var22 /* : Int */;
6870 val* var23 /* : Discrete */;
6871 val* var24 /* : Discrete */;
6872 val* var25 /* : Iterator[nullable Object] */;
6873 short int var26 /* : Bool */;
6874 val* var27 /* : nullable Object */;
6875 long var_i /* var i: Int */;
6876 long var28 /* : Int */;
6877 long var29 /* : Int */;
6878 long var30 /* : Int */;
6879 long var32 /* : Int */;
6880 val* var33 /* : nullable Object */;
6881 long var34 /* : Int */;
6882 long var35 /* : Int */;
6883 long var37 /* : Int */;
6884 long var38 /* : Int */;
6885 long var39 /* : Int */;
6886 long var41 /* : Int */;
6887 long var42 /* : Int */;
6888 long var43 /* : Int */;
6889 long var45 /* : Int */;
6890 long var_vararg_lastrank /* var vararg_lastrank: Int */;
6891 val* var46 /* : Array[RuntimeVariable] */;
6892 val* var_vararg /* var vararg: Array[RuntimeVariable] */;
6893 val* var47 /* : Range[Int] */;
6894 val* var48 /* : Discrete */;
6895 val* var49 /* : Discrete */;
6896 val* var50 /* : Iterator[nullable Object] */;
6897 short int var51 /* : Bool */;
6898 val* var52 /* : nullable Object */;
6899 long var_i53 /* var i: Int */;
6900 long var54 /* : Int */;
6901 long var55 /* : Int */;
6902 long var56 /* : Int */;
6903 long var58 /* : Int */;
6904 val* var59 /* : nullable Object */;
6905 val* var61 /* : Array[MParameter] */;
6906 val* var62 /* : nullable Object */;
6907 val* var63 /* : MType */;
6908 val* var_elttype /* var elttype: MType */;
6909 val* var64 /* : RuntimeVariable */;
6910 val* var65 /* : Range[Int] */;
6911 long var66 /* : Int */;
6912 long var67 /* : Int */;
6913 long var69 /* : Int */;
6914 long var70 /* : Int */;
6915 long var71 /* : Int */;
6916 long var72 /* : Int */;
6917 long var74 /* : Int */;
6918 val* var75 /* : Discrete */;
6919 val* var76 /* : Discrete */;
6920 val* var77 /* : Iterator[nullable Object] */;
6921 short int var78 /* : Bool */;
6922 val* var79 /* : nullable Object */;
6923 long var_i80 /* var i: Int */;
6924 long var81 /* : Int */;
6925 long var82 /* : Int */;
6926 long var83 /* : Int */;
6927 long var85 /* : Int */;
6928 val* var86 /* : nullable Object */;
6929 var_mpropdef = p0;
6930 var_msignature = p1;
6931 var_args = p2;
6932 var = ((val* (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__first]))(var_args) /* first on <var_args:Array[RuntimeVariable]>*/;
6933 var_recv = var;
6934 var1 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__vararg_rank]))(var_msignature) /* vararg_rank on <var_msignature:MSignature>*/;
6935 var_vararg_rank = var1;
6936 var2 = 0;
6937 { /* Inline kernel#Int#>= (var_vararg_rank,var2) */
6938 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
6939 /* <var2:Int> isa OTHER */
6940 var5 = 1; /* easy <var2:Int> isa OTHER*/
6941 if (!var5) {
6942 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 258);
6943 exit(1);
6944 }
6945 var6 = var_vararg_rank >= var2;
6946 var3 = var6;
6947 goto RET_LABEL4;
6948 RET_LABEL4:(void)0;
6949 }
6950 if (var3){
6951 var7 = ((long (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_args) /* length on <var_args:Array[RuntimeVariable]>*/;
6952 var8 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
6953 var9 = 1;
6954 { /* Inline kernel#Int#+ (var8,var9) */
6955 var12 = var8 + var9;
6956 var10 = var12;
6957 goto RET_LABEL11;
6958 RET_LABEL11:(void)0;
6959 }
6960 { /* Inline kernel#Int#>= (var7,var10) */
6961 /* Covariant cast for argument 0 (i) <var10:Int> isa OTHER */
6962 /* <var10:Int> isa OTHER */
6963 var15 = 1; /* easy <var10:Int> isa OTHER*/
6964 if (!var15) {
6965 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 258);
6966 exit(1);
6967 }
6968 var18 = var7 >= var10;
6969 var13 = var18;
6970 goto RET_LABEL14;
6971 RET_LABEL14:(void)0;
6972 }
6973 if (!var13) {
6974 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/abstract_compiler.nit", 583);
6975 exit(1);
6976 }
6977 var_rawargs = var_args;
6978 var19 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
6979 ((void (*)(val*))(var19->class->vft[COLOR_array__Array__init]))(var19) /* init on <var19:Array[RuntimeVariable]>*/;
6980 CHECK_NEW_array__Array(var19);
6981 var_args = var19;
6982 var20 = ((val* (*)(val*))(var_rawargs->class->vft[COLOR_abstract_collection__Collection__first]))(var_rawargs) /* first on <var_rawargs:Array[RuntimeVariable]>*/;
6983 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_args, var20) /* add on <var_args:Array[RuntimeVariable]>*/;
6984 var21 = NEW_range__Range(&type_range__Rangekernel__Int);
6985 var22 = 0;
6986 var23 = BOX_kernel__Int(var22); /* autobox from Int to Discrete */
6987 var24 = BOX_kernel__Int(var_vararg_rank); /* autobox from Int to Discrete */
6988 ((void (*)(val*, val*, val*))(var21->class->vft[COLOR_range__Range__without_last]))(var21, var23, var24) /* without_last on <var21:Range[Int]>*/;
6989 CHECK_NEW_range__Range(var21);
6990 var25 = ((val* (*)(val*))(var21->class->vft[COLOR_abstract_collection__Collection__iterator]))(var21) /* iterator on <var21:Range[Int]>*/;
6991 for(;;) {
6992 var26 = ((short int (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var25) /* is_ok on <var25:Iterator[nullable Object]>*/;
6993 if(!var26) break;
6994 var27 = ((val* (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__item]))(var25) /* item on <var25:Iterator[nullable Object]>*/;
6995 var28 = ((struct instance_kernel__Int*)var27)->value; /* autounbox from nullable Object to Int */;
6996 var_i = var28;
6997 var29 = 1;
6998 { /* Inline kernel#Int#+ (var_i,var29) */
6999 var32 = var_i + var29;
7000 var30 = var32;
7001 goto RET_LABEL31;
7002 RET_LABEL31:(void)0;
7003 }
7004 var33 = ((val* (*)(val*, long))(var_rawargs->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_rawargs, var30) /* [] on <var_rawargs:Array[RuntimeVariable]>*/;
7005 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_args, var33) /* add on <var_args:Array[RuntimeVariable]>*/;
7006 CONTINUE_label: (void)0;
7007 ((void (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__next]))(var25) /* next on <var25:Iterator[nullable Object]>*/;
7008 }
7009 BREAK_label: (void)0;
7010 var34 = ((long (*)(val*))(var_rawargs->class->vft[COLOR_abstract_collection__Collection__length]))(var_rawargs) /* length on <var_rawargs:Array[RuntimeVariable]>*/;
7011 { /* Inline kernel#Int#+ (var_vararg_rank,var34) */
7012 var37 = var_vararg_rank + var34;
7013 var35 = var37;
7014 goto RET_LABEL36;
7015 RET_LABEL36:(void)0;
7016 }
7017 var38 = 1;
7018 { /* Inline kernel#Int#- (var35,var38) */
7019 var41 = var35 - var38;
7020 var39 = var41;
7021 goto RET_LABEL40;
7022 RET_LABEL40:(void)0;
7023 }
7024 var42 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
7025 { /* Inline kernel#Int#- (var39,var42) */
7026 var45 = var39 - var42;
7027 var43 = var45;
7028 goto RET_LABEL44;
7029 RET_LABEL44:(void)0;
7030 }
7031 var_vararg_lastrank = var43;
7032 var46 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
7033 ((void (*)(val*))(var46->class->vft[COLOR_array__Array__init]))(var46) /* init on <var46:Array[RuntimeVariable]>*/;
7034 CHECK_NEW_array__Array(var46);
7035 var_vararg = var46;
7036 var47 = NEW_range__Range(&type_range__Rangekernel__Int);
7037 var48 = BOX_kernel__Int(var_vararg_rank); /* autobox from Int to Discrete */
7038 var49 = BOX_kernel__Int(var_vararg_lastrank); /* autobox from Int to Discrete */
7039 ((void (*)(val*, val*, val*))(var47->class->vft[COLOR_range__Range__init]))(var47, var48, var49) /* init on <var47:Range[Int]>*/;
7040 CHECK_NEW_range__Range(var47);
7041 var50 = ((val* (*)(val*))(var47->class->vft[COLOR_abstract_collection__Collection__iterator]))(var47) /* iterator on <var47:Range[Int]>*/;
7042 for(;;) {
7043 var51 = ((short int (*)(val*))(var50->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var50) /* is_ok on <var50:Iterator[nullable Object]>*/;
7044 if(!var51) break;
7045 var52 = ((val* (*)(val*))(var50->class->vft[COLOR_abstract_collection__Iterator__item]))(var50) /* item on <var50:Iterator[nullable Object]>*/;
7046 var54 = ((struct instance_kernel__Int*)var52)->value; /* autounbox from nullable Object to Int */;
7047 var_i53 = var54;
7048 var55 = 1;
7049 { /* Inline kernel#Int#+ (var_i53,var55) */
7050 var58 = var_i53 + var55;
7051 var56 = var58;
7052 goto RET_LABEL57;
7053 RET_LABEL57:(void)0;
7054 }
7055 var59 = ((val* (*)(val*, long))(var_rawargs->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_rawargs, var56) /* [] on <var_rawargs:Array[RuntimeVariable]>*/;
7056 ((void (*)(val*, val*))(var_vararg->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_vararg, var59) /* add on <var_vararg:Array[RuntimeVariable]>*/;
7057 CONTINUE_label60: (void)0;
7058 ((void (*)(val*))(var50->class->vft[COLOR_abstract_collection__Iterator__next]))(var50) /* next on <var50:Iterator[nullable Object]>*/;
7059 }
7060 BREAK_label60: (void)0;
7061 var61 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
7062 var62 = ((val* (*)(val*, long))(var61->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var61, var_vararg_rank) /* [] on <var61:Array[MParameter]>*/;
7063 var63 = ((val* (*)(val*))(var62->class->vft[COLOR_model__MParameter__mtype]))(var62) /* mtype on <var62:nullable Object(MParameter)>*/;
7064 var_elttype = var63;
7065 var64 = ((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>*/;
7066 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_args, var64) /* add on <var_args:Array[RuntimeVariable]>*/;
7067 var65 = NEW_range__Range(&type_range__Rangekernel__Int);
7068 var66 = 1;
7069 { /* Inline kernel#Int#+ (var_vararg_lastrank,var66) */
7070 var69 = var_vararg_lastrank + var66;
7071 var67 = var69;
7072 goto RET_LABEL68;
7073 RET_LABEL68:(void)0;
7074 }
7075 var70 = ((long (*)(val*))(var_rawargs->class->vft[COLOR_abstract_collection__Collection__length]))(var_rawargs) /* length on <var_rawargs:Array[RuntimeVariable]>*/;
7076 var71 = 1;
7077 { /* Inline kernel#Int#- (var70,var71) */
7078 var74 = var70 - var71;
7079 var72 = var74;
7080 goto RET_LABEL73;
7081 RET_LABEL73:(void)0;
7082 }
7083 var75 = BOX_kernel__Int(var67); /* autobox from Int to Discrete */
7084 var76 = BOX_kernel__Int(var72); /* autobox from Int to Discrete */
7085 ((void (*)(val*, val*, val*))(var65->class->vft[COLOR_range__Range__without_last]))(var65, var75, var76) /* without_last on <var65:Range[Int]>*/;
7086 CHECK_NEW_range__Range(var65);
7087 var77 = ((val* (*)(val*))(var65->class->vft[COLOR_abstract_collection__Collection__iterator]))(var65) /* iterator on <var65:Range[Int]>*/;
7088 for(;;) {
7089 var78 = ((short int (*)(val*))(var77->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var77) /* is_ok on <var77:Iterator[nullable Object]>*/;
7090 if(!var78) break;
7091 var79 = ((val* (*)(val*))(var77->class->vft[COLOR_abstract_collection__Iterator__item]))(var77) /* item on <var77:Iterator[nullable Object]>*/;
7092 var81 = ((struct instance_kernel__Int*)var79)->value; /* autounbox from nullable Object to Int */;
7093 var_i80 = var81;
7094 var82 = 1;
7095 { /* Inline kernel#Int#+ (var_i80,var82) */
7096 var85 = var_i80 + var82;
7097 var83 = var85;
7098 goto RET_LABEL84;
7099 RET_LABEL84:(void)0;
7100 }
7101 var86 = ((val* (*)(val*, long))(var_rawargs->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_rawargs, var83) /* [] on <var_rawargs:Array[RuntimeVariable]>*/;
7102 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_args, var86) /* add on <var_args:Array[RuntimeVariable]>*/;
7103 CONTINUE_label87: (void)0;
7104 ((void (*)(val*))(var77->class->vft[COLOR_abstract_collection__Iterator__next]))(var77) /* next on <var77:Iterator[nullable Object]>*/;
7105 }
7106 BREAK_label87: (void)0;
7107 ((void (*)(val*))(var_rawargs->class->vft[COLOR_abstract_collection__RemovableCollection__clear]))(var_rawargs) /* clear on <var_rawargs:Array[RuntimeVariable]>*/;
7108 ((void (*)(val*, val*))(var_rawargs->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_rawargs, var_args) /* add_all on <var_rawargs:Array[RuntimeVariable]>*/;
7109 } else {
7110 }
7111 RET_LABEL:;
7112 }
7113 /* method abstract_compiler#AbstractCompilerVisitor#varargize for (self: Object, MPropDef, MSignature, Array[RuntimeVariable]) */
7114 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__varargize(val* self, val* p0, val* p1, val* p2) {
7115 abstract_compiler__AbstractCompilerVisitor__varargize(self, p0, p1, p2);
7116 RET_LABEL:;
7117 }
7118 /* method abstract_compiler#AbstractCompilerVisitor#anchor for (self: AbstractCompilerVisitor, MType): MType */
7119 val* abstract_compiler__AbstractCompilerVisitor__anchor(val* self, val* p0) {
7120 val* var /* : MType */;
7121 val* var_mtype /* var mtype: MType */;
7122 short int var1 /* : Bool */;
7123 short int var2 /* : Bool */;
7124 val* var3 /* : AbstractCompiler */;
7125 val* var4 /* : MModule */;
7126 val* var5 /* : nullable Frame */;
7127 val* var6 /* : MClassType */;
7128 val* var7 /* : MType */;
7129 var_mtype = p0;
7130 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
7131 var2 = !var1;
7132 if (var2){
7133 var = var_mtype;
7134 goto RET_LABEL;
7135 } else {
7136 }
7137 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
7138 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var3) /* mainmodule on <var3:AbstractCompiler>*/;
7139 var5 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:AbstractCompilerVisitor>*/;
7140 if (var5 == NULL) {
7141 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/abstract_compiler.nit", 616);
7142 exit(1);
7143 } else {
7144 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_compiler__Frame__receiver]))(var5) /* receiver on <var5:nullable Frame>*/;
7145 }
7146 var7 = ((val* (*)(val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__anchor_to]))(var_mtype, var4, var6) /* anchor_to on <var_mtype:MType>*/;
7147 var = var7;
7148 goto RET_LABEL;
7149 RET_LABEL:;
7150 return var;
7151 }
7152 /* method abstract_compiler#AbstractCompilerVisitor#anchor for (self: Object, MType): MType */
7153 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__anchor(val* self, val* p0) {
7154 val* var /* : MType */;
7155 val* var1 /* : MType */;
7156 var1 = abstract_compiler__AbstractCompilerVisitor__anchor(self, p0);
7157 var = var1;
7158 RET_LABEL:;
7159 return var;
7160 }
7161 /* method abstract_compiler#AbstractCompilerVisitor#resolve_for for (self: AbstractCompilerVisitor, MType, RuntimeVariable): MType */
7162 val* abstract_compiler__AbstractCompilerVisitor__resolve_for(val* self, val* p0, val* p1) {
7163 val* var /* : MType */;
7164 val* var_mtype /* var mtype: MType */;
7165 val* var_recv /* var recv: RuntimeVariable */;
7166 short int var1 /* : Bool */;
7167 short int var2 /* : Bool */;
7168 val* var3 /* : MType */;
7169 val* var4 /* : nullable Frame */;
7170 val* var5 /* : MClassType */;
7171 val* var6 /* : AbstractCompiler */;
7172 val* var7 /* : MModule */;
7173 short int var8 /* : Bool */;
7174 val* var9 /* : MType */;
7175 var_mtype = p0;
7176 var_recv = p1;
7177 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
7178 var2 = !var1;
7179 if (var2){
7180 var = var_mtype;
7181 goto RET_LABEL;
7182 } else {
7183 }
7184 var3 = ((val* (*)(val*))(var_recv->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_recv) /* mcasttype on <var_recv:RuntimeVariable>*/;
7185 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:AbstractCompilerVisitor>*/;
7186 if (var4 == NULL) {
7187 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/abstract_compiler.nit", 622);
7188 exit(1);
7189 } else {
7190 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_compiler__Frame__receiver]))(var4) /* receiver on <var4:nullable Frame>*/;
7191 }
7192 var6 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
7193 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var6) /* mainmodule on <var6:AbstractCompiler>*/;
7194 var8 = 1;
7195 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>*/;
7196 var = var9;
7197 goto RET_LABEL;
7198 RET_LABEL:;
7199 return var;
7200 }
7201 /* method abstract_compiler#AbstractCompilerVisitor#resolve_for for (self: Object, MType, RuntimeVariable): MType */
7202 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__resolve_for(val* self, val* p0, val* p1) {
7203 val* var /* : MType */;
7204 val* var1 /* : MType */;
7205 var1 = abstract_compiler__AbstractCompilerVisitor__resolve_for(self, p0, p1);
7206 var = var1;
7207 RET_LABEL:;
7208 return var;
7209 }
7210 /* method abstract_compiler#AbstractCompilerVisitor#autoadapt for (self: AbstractCompilerVisitor, RuntimeVariable, MType): RuntimeVariable */
7211 val* abstract_compiler__AbstractCompilerVisitor__autoadapt(val* self, val* p0, val* p1) {
7212 val* var /* : RuntimeVariable */;
7213 val* var_value /* var value: RuntimeVariable */;
7214 val* var_mtype /* var mtype: MType */;
7215 val* var1 /* : MType */;
7216 val* var2 /* : MType */;
7217 val* var_valmtype /* var valmtype: MType */;
7218 val* var3 /* : AbstractCompiler */;
7219 val* var4 /* : MModule */;
7220 val* var5 /* : null */;
7221 short int var6 /* : Bool */;
7222 short int var7 /* : Bool */;
7223 short int var8 /* : Bool */;
7224 int cltype;
7225 int idtype;
7226 short int var_ /* var : Bool */;
7227 val* var9 /* : MType */;
7228 val* var10 /* : AbstractCompiler */;
7229 val* var11 /* : MModule */;
7230 val* var12 /* : null */;
7231 short int var13 /* : Bool */;
7232 val* var14 /* : RuntimeVariable */;
7233 val* var15 /* : String */;
7234 val* var16 /* : MType */;
7235 val* var_res /* var res: RuntimeVariable */;
7236 val* var17 /* : RuntimeVariable */;
7237 val* var18 /* : String */;
7238 val* var_res19 /* var res: RuntimeVariable */;
7239 var_value = p0;
7240 var_mtype = p1;
7241 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__anchor]))(self, var_mtype) /* anchor on <self:AbstractCompilerVisitor>*/;
7242 var_mtype = var1;
7243 var2 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_value) /* mcasttype on <var_value:RuntimeVariable>*/;
7244 var_valmtype = var2;
7245 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
7246 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var3) /* mainmodule on <var3:AbstractCompiler>*/;
7247 var5 = NULL;
7248 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>*/;
7249 if (var6){
7250 var = var_value;
7251 goto RET_LABEL;
7252 } else {
7253 }
7254 /* <var_valmtype:MType> isa MNullableType */
7255 cltype = type_model__MNullableType.color;
7256 idtype = type_model__MNullableType.id;
7257 if(cltype >= var_valmtype->type->table_size) {
7258 var8 = 0;
7259 } else {
7260 var8 = var_valmtype->type->type_table[cltype] == idtype;
7261 }
7262 var_ = var8;
7263 if (var8){
7264 var9 = ((val* (*)(val*))(var_valmtype->class->vft[COLOR_model__MNullableType__mtype]))(var_valmtype) /* mtype on <var_valmtype:MType(MNullableType)>*/;
7265 var10 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
7266 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var10) /* mainmodule on <var10:AbstractCompiler>*/;
7267 var12 = NULL;
7268 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>*/;
7269 var7 = var13;
7270 } else {
7271 var7 = var_;
7272 }
7273 if (var7){
7274 var14 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
7275 var15 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__name]))(var_value) /* name on <var_value:RuntimeVariable>*/;
7276 var16 = ((val* (*)(val*))(var_valmtype->class->vft[COLOR_model__MNullableType__mtype]))(var_valmtype) /* mtype on <var_valmtype:MType(MNullableType)>*/;
7277 ((void (*)(val*, val*, val*, val*))(var14->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var14, var15, var_valmtype, var16) /* init on <var14:RuntimeVariable>*/;
7278 CHECK_NEW_abstract_compiler__RuntimeVariable(var14);
7279 var_res = var14;
7280 var = var_res;
7281 goto RET_LABEL;
7282 } else {
7283 var17 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
7284 var18 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__name]))(var_value) /* name on <var_value:RuntimeVariable>*/;
7285 ((void (*)(val*, val*, val*, val*))(var17->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var17, var18, var_valmtype, var_mtype) /* init on <var17:RuntimeVariable>*/;
7286 CHECK_NEW_abstract_compiler__RuntimeVariable(var17);
7287 var_res19 = var17;
7288 var = var_res19;
7289 goto RET_LABEL;
7290 }
7291 RET_LABEL:;
7292 return var;
7293 }
7294 /* method abstract_compiler#AbstractCompilerVisitor#autoadapt for (self: Object, RuntimeVariable, MType): RuntimeVariable */
7295 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__autoadapt(val* self, val* p0, val* p1) {
7296 val* var /* : RuntimeVariable */;
7297 val* var1 /* : RuntimeVariable */;
7298 var1 = abstract_compiler__AbstractCompilerVisitor__autoadapt(self, p0, p1);
7299 var = var1;
7300 RET_LABEL:;
7301 return var;
7302 }
7303 /* method abstract_compiler#AbstractCompilerVisitor#supercall for (self: AbstractCompilerVisitor, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
7304 val* abstract_compiler__AbstractCompilerVisitor__supercall(val* self, val* p0, val* p1, val* p2) {
7305 val* var /* : nullable RuntimeVariable */;
7306 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/abstract_compiler.nit", 646);
7307 exit(1);
7308 RET_LABEL:;
7309 return var;
7310 }
7311 /* method abstract_compiler#AbstractCompilerVisitor#supercall for (self: Object, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
7312 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__supercall(val* self, val* p0, val* p1, val* p2) {
7313 val* var /* : nullable RuntimeVariable */;
7314 val* var1 /* : nullable RuntimeVariable */;
7315 var1 = abstract_compiler__AbstractCompilerVisitor__supercall(self, p0, p1, p2);
7316 var = var1;
7317 RET_LABEL:;
7318 return var;
7319 }
7320 /* method abstract_compiler#AbstractCompilerVisitor#adapt_signature for (self: AbstractCompilerVisitor, MMethodDef, Array[RuntimeVariable]) */
7321 void abstract_compiler__AbstractCompilerVisitor__adapt_signature(val* self, val* p0, val* p1) {
7322 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/abstract_compiler.nit", 649);
7323 exit(1);
7324 RET_LABEL:;
7325 }
7326 /* method abstract_compiler#AbstractCompilerVisitor#adapt_signature for (self: Object, MMethodDef, Array[RuntimeVariable]) */
7327 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__adapt_signature(val* self, val* p0, val* p1) {
7328 abstract_compiler__AbstractCompilerVisitor__adapt_signature(self, p0, p1);
7329 RET_LABEL:;
7330 }
7331 /* method abstract_compiler#AbstractCompilerVisitor#autobox for (self: AbstractCompilerVisitor, RuntimeVariable, MType): RuntimeVariable */
7332 val* abstract_compiler__AbstractCompilerVisitor__autobox(val* self, val* p0, val* p1) {
7333 val* var /* : RuntimeVariable */;
7334 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/abstract_compiler.nit", 651);
7335 exit(1);
7336 RET_LABEL:;
7337 return var;
7338 }
7339 /* method abstract_compiler#AbstractCompilerVisitor#autobox for (self: Object, RuntimeVariable, MType): RuntimeVariable */
7340 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__autobox(val* self, val* p0, val* p1) {
7341 val* var /* : RuntimeVariable */;
7342 val* var1 /* : RuntimeVariable */;
7343 var1 = abstract_compiler__AbstractCompilerVisitor__autobox(self, p0, p1);
7344 var = var1;
7345 RET_LABEL:;
7346 return var;
7347 }
7348 /* method abstract_compiler#AbstractCompilerVisitor#type_test for (self: AbstractCompilerVisitor, RuntimeVariable, MType, String): RuntimeVariable */
7349 val* abstract_compiler__AbstractCompilerVisitor__type_test(val* self, val* p0, val* p1, val* p2) {
7350 val* var /* : RuntimeVariable */;
7351 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/abstract_compiler.nit", 655);
7352 exit(1);
7353 RET_LABEL:;
7354 return var;
7355 }
7356 /* method abstract_compiler#AbstractCompilerVisitor#type_test for (self: Object, RuntimeVariable, MType, String): RuntimeVariable */
7357 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__type_test(val* self, val* p0, val* p1, val* p2) {
7358 val* var /* : RuntimeVariable */;
7359 val* var1 /* : RuntimeVariable */;
7360 var1 = abstract_compiler__AbstractCompilerVisitor__type_test(self, p0, p1, p2);
7361 var = var1;
7362 RET_LABEL:;
7363 return var;
7364 }
7365 /* method abstract_compiler#AbstractCompilerVisitor#is_same_type_test for (self: AbstractCompilerVisitor, RuntimeVariable, RuntimeVariable): RuntimeVariable */
7366 val* abstract_compiler__AbstractCompilerVisitor__is_same_type_test(val* self, val* p0, val* p1) {
7367 val* var /* : RuntimeVariable */;
7368 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/abstract_compiler.nit", 658);
7369 exit(1);
7370 RET_LABEL:;
7371 return var;
7372 }
7373 /* method abstract_compiler#AbstractCompilerVisitor#is_same_type_test for (self: Object, RuntimeVariable, RuntimeVariable): RuntimeVariable */
7374 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__is_same_type_test(val* self, val* p0, val* p1) {
7375 val* var /* : RuntimeVariable */;
7376 val* var1 /* : RuntimeVariable */;
7377 var1 = abstract_compiler__AbstractCompilerVisitor__is_same_type_test(self, p0, p1);
7378 var = var1;
7379 RET_LABEL:;
7380 return var;
7381 }
7382 /* method abstract_compiler#AbstractCompilerVisitor#equal_test for (self: AbstractCompilerVisitor, RuntimeVariable, RuntimeVariable): RuntimeVariable */
7383 val* abstract_compiler__AbstractCompilerVisitor__equal_test(val* self, val* p0, val* p1) {
7384 val* var /* : RuntimeVariable */;
7385 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/abstract_compiler.nit", 661);
7386 exit(1);
7387 RET_LABEL:;
7388 return var;
7389 }
7390 /* method abstract_compiler#AbstractCompilerVisitor#equal_test for (self: Object, RuntimeVariable, RuntimeVariable): RuntimeVariable */
7391 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__equal_test(val* self, val* p0, val* p1) {
7392 val* var /* : RuntimeVariable */;
7393 val* var1 /* : RuntimeVariable */;
7394 var1 = abstract_compiler__AbstractCompilerVisitor__equal_test(self, p0, p1);
7395 var = var1;
7396 RET_LABEL:;
7397 return var;
7398 }
7399 /* method abstract_compiler#AbstractCompilerVisitor#call for (self: AbstractCompilerVisitor, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
7400 val* abstract_compiler__AbstractCompilerVisitor__call(val* self, val* p0, val* p1, val* p2) {
7401 val* var /* : nullable RuntimeVariable */;
7402 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/abstract_compiler.nit", 666);
7403 exit(1);
7404 RET_LABEL:;
7405 return var;
7406 }
7407 /* method abstract_compiler#AbstractCompilerVisitor#call for (self: Object, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
7408 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__call(val* self, val* p0, val* p1, val* p2) {
7409 val* var /* : nullable RuntimeVariable */;
7410 val* var1 /* : nullable RuntimeVariable */;
7411 var1 = abstract_compiler__AbstractCompilerVisitor__call(self, p0, p1, p2);
7412 var = var1;
7413 RET_LABEL:;
7414 return var;
7415 }
7416 /* method abstract_compiler#AbstractCompilerVisitor#send for (self: AbstractCompilerVisitor, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */
7417 val* abstract_compiler__AbstractCompilerVisitor__send(val* self, val* p0, val* p1) {
7418 val* var /* : nullable RuntimeVariable */;
7419 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/abstract_compiler.nit", 669);
7420 exit(1);
7421 RET_LABEL:;
7422 return var;
7423 }
7424 /* method abstract_compiler#AbstractCompilerVisitor#send for (self: Object, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */
7425 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__send(val* self, val* p0, val* p1) {
7426 val* var /* : nullable RuntimeVariable */;
7427 val* var1 /* : nullable RuntimeVariable */;
7428 var1 = abstract_compiler__AbstractCompilerVisitor__send(self, p0, p1);
7429 var = var1;
7430 RET_LABEL:;
7431 return var;
7432 }
7433 /* method abstract_compiler#AbstractCompilerVisitor#monomorphic_send for (self: AbstractCompilerVisitor, MMethod, MType, Array[RuntimeVariable]): nullable RuntimeVariable */
7434 val* abstract_compiler__AbstractCompilerVisitor__monomorphic_send(val* self, val* p0, val* p1, val* p2) {
7435 val* var /* : nullable RuntimeVariable */;
7436 val* var_m /* var m: MMethod */;
7437 val* var_t /* var t: MType */;
7438 val* var_args /* var args: Array[RuntimeVariable] */;
7439 short int var1 /* : Bool */;
7440 int cltype;
7441 int idtype;
7442 val* var2 /* : AbstractCompiler */;
7443 val* var3 /* : MModule */;
7444 val* var4 /* : MPropDef */;
7445 val* var_propdef /* var propdef: MMethodDef */;
7446 val* var5 /* : nullable RuntimeVariable */;
7447 var_m = p0;
7448 var_t = p1;
7449 var_args = p2;
7450 /* <var_t:MType> isa MClassType */
7451 cltype = type_model__MClassType.color;
7452 idtype = type_model__MClassType.id;
7453 if(cltype >= var_t->type->table_size) {
7454 var1 = 0;
7455 } else {
7456 var1 = var_t->type->type_table[cltype] == idtype;
7457 }
7458 if (!var1) {
7459 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/abstract_compiler.nit", 675);
7460 exit(1);
7461 }
7462 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
7463 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var2) /* mainmodule on <var2:AbstractCompiler>*/;
7464 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>*/;
7465 var_propdef = var4;
7466 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>*/;
7467 var = var5;
7468 goto RET_LABEL;
7469 RET_LABEL:;
7470 return var;
7471 }
7472 /* method abstract_compiler#AbstractCompilerVisitor#monomorphic_send for (self: Object, MMethod, MType, Array[RuntimeVariable]): nullable RuntimeVariable */
7473 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__monomorphic_send(val* self, val* p0, val* p1, val* p2) {
7474 val* var /* : nullable RuntimeVariable */;
7475 val* var1 /* : nullable RuntimeVariable */;
7476 var1 = abstract_compiler__AbstractCompilerVisitor__monomorphic_send(self, p0, p1, p2);
7477 var = var1;
7478 RET_LABEL:;
7479 return var;
7480 }
7481 /* method abstract_compiler#AbstractCompilerVisitor#isset_attribute for (self: AbstractCompilerVisitor, MAttribute, RuntimeVariable): RuntimeVariable */
7482 val* abstract_compiler__AbstractCompilerVisitor__isset_attribute(val* self, val* p0, val* p1) {
7483 val* var /* : RuntimeVariable */;
7484 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/abstract_compiler.nit", 682);
7485 exit(1);
7486 RET_LABEL:;
7487 return var;
7488 }
7489 /* method abstract_compiler#AbstractCompilerVisitor#isset_attribute for (self: Object, MAttribute, RuntimeVariable): RuntimeVariable */
7490 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__isset_attribute(val* self, val* p0, val* p1) {
7491 val* var /* : RuntimeVariable */;
7492 val* var1 /* : RuntimeVariable */;
7493 var1 = abstract_compiler__AbstractCompilerVisitor__isset_attribute(self, p0, p1);
7494 var = var1;
7495 RET_LABEL:;
7496 return var;
7497 }
7498 /* method abstract_compiler#AbstractCompilerVisitor#read_attribute for (self: AbstractCompilerVisitor, MAttribute, RuntimeVariable): RuntimeVariable */
7499 val* abstract_compiler__AbstractCompilerVisitor__read_attribute(val* self, val* p0, val* p1) {
7500 val* var /* : RuntimeVariable */;
7501 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/abstract_compiler.nit", 685);
7502 exit(1);
7503 RET_LABEL:;
7504 return var;
7505 }
7506 /* method abstract_compiler#AbstractCompilerVisitor#read_attribute for (self: Object, MAttribute, RuntimeVariable): RuntimeVariable */
7507 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__read_attribute(val* self, val* p0, val* p1) {
7508 val* var /* : RuntimeVariable */;
7509 val* var1 /* : RuntimeVariable */;
7510 var1 = abstract_compiler__AbstractCompilerVisitor__read_attribute(self, p0, p1);
7511 var = var1;
7512 RET_LABEL:;
7513 return var;
7514 }
7515 /* method abstract_compiler#AbstractCompilerVisitor#write_attribute for (self: AbstractCompilerVisitor, MAttribute, RuntimeVariable, RuntimeVariable) */
7516 void abstract_compiler__AbstractCompilerVisitor__write_attribute(val* self, val* p0, val* p1, val* p2) {
7517 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/abstract_compiler.nit", 688);
7518 exit(1);
7519 RET_LABEL:;
7520 }
7521 /* method abstract_compiler#AbstractCompilerVisitor#write_attribute for (self: Object, MAttribute, RuntimeVariable, RuntimeVariable) */
7522 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__write_attribute(val* self, val* p0, val* p1, val* p2) {
7523 abstract_compiler__AbstractCompilerVisitor__write_attribute(self, p0, p1, p2);
7524 RET_LABEL:;
7525 }
7526 /* method abstract_compiler#AbstractCompilerVisitor#check_recv_notnull for (self: AbstractCompilerVisitor, RuntimeVariable) */
7527 void abstract_compiler__AbstractCompilerVisitor__check_recv_notnull(val* self, val* p0) {
7528 val* var_recv /* var recv: RuntimeVariable */;
7529 val* var /* : AbstractCompiler */;
7530 val* var1 /* : ModelBuilder */;
7531 val* var2 /* : ToolContext */;
7532 val* var3 /* : OptionBool */;
7533 val* var4 /* : nullable Object */;
7534 short int var5 /* : Bool */;
7535 short int var6 /* : Bool */;
7536 val* var7 /* : MType */;
7537 short int var8 /* : Bool */;
7538 int cltype;
7539 int idtype;
7540 short int var_ /* var : Bool */;
7541 val* var9 /* : MType */;
7542 short int var10 /* : Bool */;
7543 int cltype11;
7544 int idtype12;
7545 short int var_maybenull /* var maybenull: Bool */;
7546 static val* varonce;
7547 val* var13 /* : String */;
7548 char* var14 /* : NativeString */;
7549 long var15 /* : Int */;
7550 val* var16 /* : String */;
7551 static val* varonce17;
7552 val* var18 /* : String */;
7553 char* var19 /* : NativeString */;
7554 long var20 /* : Int */;
7555 val* var21 /* : String */;
7556 val* var22 /* : Array[Object] */;
7557 long var23 /* : Int */;
7558 val* var24 /* : NativeArray[Object] */;
7559 val* var25 /* : String */;
7560 static val* varonce26;
7561 val* var27 /* : String */;
7562 char* var28 /* : NativeString */;
7563 long var29 /* : Int */;
7564 val* var30 /* : String */;
7565 static val* varonce31;
7566 val* var32 /* : String */;
7567 char* var33 /* : NativeString */;
7568 long var34 /* : Int */;
7569 val* var35 /* : String */;
7570 var_recv = p0;
7571 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
7572 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var) /* modelbuilder on <var:AbstractCompiler>*/;
7573 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var1) /* toolcontext on <var1:ModelBuilder>*/;
7574 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_other]))(var2) /* opt_no_check_other on <var2:ToolContext>*/;
7575 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_opts__Option__value]))(var3) /* value on <var3:OptionBool>*/;
7576 var5 = ((struct instance_kernel__Bool*)var4)->value; /* autounbox from nullable Object to Bool */;
7577 if (var5){
7578 goto RET_LABEL;
7579 } else {
7580 }
7581 var7 = ((val* (*)(val*))(var_recv->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_recv) /* mcasttype on <var_recv:RuntimeVariable>*/;
7582 /* <var7:MType> isa MNullableType */
7583 cltype = type_model__MNullableType.color;
7584 idtype = type_model__MNullableType.id;
7585 if(cltype >= var7->type->table_size) {
7586 var8 = 0;
7587 } else {
7588 var8 = var7->type->type_table[cltype] == idtype;
7589 }
7590 var_ = var8;
7591 if (var8){
7592 var6 = var_;
7593 } else {
7594 var9 = ((val* (*)(val*))(var_recv->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_recv) /* mcasttype on <var_recv:RuntimeVariable>*/;
7595 /* <var9:MType> isa MNullType */
7596 cltype11 = type_model__MNullType.color;
7597 idtype12 = type_model__MNullType.id;
7598 if(cltype11 >= var9->type->table_size) {
7599 var10 = 0;
7600 } else {
7601 var10 = var9->type->type_table[cltype11] == idtype12;
7602 }
7603 var6 = var10;
7604 }
7605 var_maybenull = var6;
7606 if (var_maybenull){
7607 if (varonce) {
7608 var13 = varonce;
7609 } else {
7610 var14 = "if (";
7611 var15 = 4;
7612 var16 = string__NativeString__to_s_with_length(var14, var15);
7613 var13 = var16;
7614 varonce = var13;
7615 }
7616 if (varonce17) {
7617 var18 = varonce17;
7618 } else {
7619 var19 = " == NULL) {";
7620 var20 = 11;
7621 var21 = string__NativeString__to_s_with_length(var19, var20);
7622 var18 = var21;
7623 varonce17 = var18;
7624 }
7625 var22 = NEW_array__Array(&type_array__Arraykernel__Object);
7626 { /* var22 = array_instance Array[Object] */
7627 var23 = 3;
7628 var24 = NEW_array__NativeArray(var23, &type_array__NativeArraykernel__Object);
7629 ((struct instance_array__NativeArray*)var24)->values[0] = (val*) var13;
7630 ((struct instance_array__NativeArray*)var24)->values[1] = (val*) var_recv;
7631 ((struct instance_array__NativeArray*)var24)->values[2] = (val*) var18;
7632 ((void (*)(val*, val*, long))(var22->class->vft[COLOR_array__Array__with_native]))(var22, var24, var23) /* with_native on <var22:Array[Object]>*/;
7633 CHECK_NEW_array__Array(var22);
7634 }
7635 var25 = ((val* (*)(val*))(var22->class->vft[COLOR_string__Object__to_s]))(var22) /* to_s on <var22:Array[Object]>*/;
7636 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var25) /* add on <self:AbstractCompilerVisitor>*/;
7637 if (varonce26) {
7638 var27 = varonce26;
7639 } else {
7640 var28 = "Reciever is null";
7641 var29 = 16;
7642 var30 = string__NativeString__to_s_with_length(var28, var29);
7643 var27 = var30;
7644 varonce26 = var27;
7645 }
7646 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(self, var27) /* add_abort on <self:AbstractCompilerVisitor>*/;
7647 if (varonce31) {
7648 var32 = varonce31;
7649 } else {
7650 var33 = "}";
7651 var34 = 1;
7652 var35 = string__NativeString__to_s_with_length(var33, var34);
7653 var32 = var35;
7654 varonce31 = var32;
7655 }
7656 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var32) /* add on <self:AbstractCompilerVisitor>*/;
7657 } else {
7658 }
7659 RET_LABEL:;
7660 }
7661 /* method abstract_compiler#AbstractCompilerVisitor#check_recv_notnull for (self: Object, RuntimeVariable) */
7662 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__check_recv_notnull(val* self, val* p0) {
7663 abstract_compiler__AbstractCompilerVisitor__check_recv_notnull(self, p0);
7664 RET_LABEL:;
7665 }
7666 /* method abstract_compiler#AbstractCompilerVisitor#check_init_instance for (self: AbstractCompilerVisitor, RuntimeVariable, MClassType) */
7667 void abstract_compiler__AbstractCompilerVisitor__check_init_instance(val* self, val* p0, val* p1) {
7668 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/abstract_compiler.nit", 706);
7669 exit(1);
7670 RET_LABEL:;
7671 }
7672 /* method abstract_compiler#AbstractCompilerVisitor#check_init_instance for (self: Object, RuntimeVariable, MClassType) */
7673 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__check_init_instance(val* self, val* p0, val* p1) {
7674 abstract_compiler__AbstractCompilerVisitor__check_init_instance(self, p0, p1);
7675 RET_LABEL:;
7676 }
7677 /* method abstract_compiler#AbstractCompilerVisitor#names for (self: AbstractCompilerVisitor): HashSet[String] */
7678 val* abstract_compiler__AbstractCompilerVisitor__names(val* self) {
7679 val* var /* : HashSet[String] */;
7680 val* var1 /* : HashSet[String] */;
7681 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dnames].val; /* @names on <self:AbstractCompilerVisitor> */
7682 if (var1 == NULL) {
7683 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @names", "src/abstract_compiler.nit", 711);
7684 exit(1);
7685 }
7686 var = var1;
7687 RET_LABEL:;
7688 return var;
7689 }
7690 /* method abstract_compiler#AbstractCompilerVisitor#names for (self: Object): HashSet[String] */
7691 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__names(val* self) {
7692 val* var /* : HashSet[String] */;
7693 val* var1 /* : HashSet[String] */;
7694 var1 = abstract_compiler__AbstractCompilerVisitor__names(self);
7695 var = var1;
7696 RET_LABEL:;
7697 return var;
7698 }
7699 /* method abstract_compiler#AbstractCompilerVisitor#names= for (self: AbstractCompilerVisitor, HashSet[String]) */
7700 void abstract_compiler__AbstractCompilerVisitor__names_61d(val* self, val* p0) {
7701 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dnames].val = p0; /* @names on <self:AbstractCompilerVisitor> */
7702 RET_LABEL:;
7703 }
7704 /* method abstract_compiler#AbstractCompilerVisitor#names= for (self: Object, HashSet[String]) */
7705 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__names_61d(val* self, val* p0) {
7706 abstract_compiler__AbstractCompilerVisitor__names_61d(self, p0);
7707 RET_LABEL:;
7708 }
7709 /* method abstract_compiler#AbstractCompilerVisitor#last for (self: AbstractCompilerVisitor): Int */
7710 long abstract_compiler__AbstractCompilerVisitor__last(val* self) {
7711 long var /* : Int */;
7712 long var1 /* : Int */;
7713 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dlast].l; /* @last on <self:AbstractCompilerVisitor> */
7714 var = var1;
7715 RET_LABEL:;
7716 return var;
7717 }
7718 /* method abstract_compiler#AbstractCompilerVisitor#last for (self: Object): Int */
7719 long VIRTUAL_abstract_compiler__AbstractCompilerVisitor__last(val* self) {
7720 long var /* : Int */;
7721 long var1 /* : Int */;
7722 var1 = abstract_compiler__AbstractCompilerVisitor__last(self);
7723 var = var1;
7724 RET_LABEL:;
7725 return var;
7726 }
7727 /* method abstract_compiler#AbstractCompilerVisitor#last= for (self: AbstractCompilerVisitor, Int) */
7728 void abstract_compiler__AbstractCompilerVisitor__last_61d(val* self, long p0) {
7729 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dlast].l = p0; /* @last on <self:AbstractCompilerVisitor> */
7730 RET_LABEL:;
7731 }
7732 /* method abstract_compiler#AbstractCompilerVisitor#last= for (self: Object, Int) */
7733 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__last_61d(val* self, long p0) {
7734 abstract_compiler__AbstractCompilerVisitor__last_61d(self, p0);
7735 RET_LABEL:;
7736 }
7737 /* method abstract_compiler#AbstractCompilerVisitor#get_name for (self: AbstractCompilerVisitor, String): String */
7738 val* abstract_compiler__AbstractCompilerVisitor__get_name(val* self, val* p0) {
7739 val* var /* : String */;
7740 val* var_s /* var s: String */;
7741 val* var1 /* : HashSet[String] */;
7742 short int var2 /* : Bool */;
7743 short int var3 /* : Bool */;
7744 val* var4 /* : HashSet[String] */;
7745 long var5 /* : Int */;
7746 long var6 /* : Int */;
7747 long var7 /* : Int */;
7748 long var9 /* : Int */;
7749 long var_i /* var i: Int */;
7750 val* var10 /* : String */;
7751 val* var11 /* : String */;
7752 val* var_s2 /* var s2: String */;
7753 val* var12 /* : HashSet[String] */;
7754 short int var13 /* : Bool */;
7755 short int var14 /* : Bool */;
7756 val* var15 /* : HashSet[String] */;
7757 long var16 /* : Int */;
7758 long var17 /* : Int */;
7759 long var19 /* : Int */;
7760 var_s = p0;
7761 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__names]))(self) /* names on <self:AbstractCompilerVisitor>*/;
7762 var2 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__Collection__has]))(var1, var_s) /* has on <var1:HashSet[String]>*/;
7763 var3 = !var2;
7764 if (var3){
7765 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__names]))(self) /* names on <self:AbstractCompilerVisitor>*/;
7766 ((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var4, var_s) /* add on <var4:HashSet[String]>*/;
7767 var = var_s;
7768 goto RET_LABEL;
7769 } else {
7770 }
7771 var5 = ((long (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__last]))(self) /* last on <self:AbstractCompilerVisitor>*/;
7772 var6 = 1;
7773 { /* Inline kernel#Int#+ (var5,var6) */
7774 var9 = var5 + var6;
7775 var7 = var9;
7776 goto RET_LABEL8;
7777 RET_LABEL8:(void)0;
7778 }
7779 var_i = var7;
7780 for(;;) {
7781 var10 = string__Int__to_s(var_i);
7782 var11 = ((val* (*)(val*, val*))(var_s->class->vft[COLOR_string__String___43d]))(var_s, var10) /* + on <var_s:String>*/;
7783 var_s2 = var11;
7784 var12 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__names]))(self) /* names on <self:AbstractCompilerVisitor>*/;
7785 var13 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_abstract_collection__Collection__has]))(var12, var_s2) /* has on <var12:HashSet[String]>*/;
7786 var14 = !var13;
7787 if (var14){
7788 ((void (*)(val*, long))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__last_61d]))(self, var_i) /* last= on <self:AbstractCompilerVisitor>*/;
7789 var15 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__names]))(self) /* names on <self:AbstractCompilerVisitor>*/;
7790 ((void (*)(val*, val*))(var15->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var15, var_s2) /* add on <var15:HashSet[String]>*/;
7791 var = var_s2;
7792 goto RET_LABEL;
7793 } else {
7794 }
7795 var16 = 1;
7796 { /* Inline kernel#Int#+ (var_i,var16) */
7797 var19 = var_i + var16;
7798 var17 = var19;
7799 goto RET_LABEL18;
7800 RET_LABEL18:(void)0;
7801 }
7802 var_i = var17;
7803 CONTINUE_label: (void)0;
7804 }
7805 BREAK_label: (void)0;
7806 RET_LABEL:;
7807 return var;
7808 }
7809 /* method abstract_compiler#AbstractCompilerVisitor#get_name for (self: Object, String): String */
7810 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__get_name(val* self, val* p0) {
7811 val* var /* : String */;
7812 val* var1 /* : String */;
7813 var1 = abstract_compiler__AbstractCompilerVisitor__get_name(self, p0);
7814 var = var1;
7815 RET_LABEL:;
7816 return var;
7817 }
7818 /* method abstract_compiler#AbstractCompilerVisitor#escapemark_name for (self: AbstractCompilerVisitor, nullable EscapeMark): String */
7819 val* abstract_compiler__AbstractCompilerVisitor__escapemark_name(val* self, val* p0) {
7820 val* var /* : String */;
7821 val* var_e /* var e: nullable EscapeMark */;
7822 val* var1 /* : null */;
7823 short int var2 /* : Bool */;
7824 val* var3 /* : HashMap[EscapeMark, String] */;
7825 short int var4 /* : Bool */;
7826 val* var5 /* : HashMap[EscapeMark, String] */;
7827 val* var6 /* : nullable Object */;
7828 val* var7 /* : nullable String */;
7829 val* var_name /* var name: nullable String */;
7830 val* var8 /* : null */;
7831 short int var9 /* : Bool */;
7832 static val* varonce;
7833 val* var10 /* : String */;
7834 char* var11 /* : NativeString */;
7835 long var12 /* : Int */;
7836 val* var13 /* : String */;
7837 val* var14 /* : String */;
7838 val* var15 /* : HashMap[EscapeMark, String] */;
7839 var_e = p0;
7840 var1 = NULL;
7841 if (var_e == NULL) {
7842 var2 = 0; /* is null */
7843 } else {
7844 var2 = 1; /* arg is null and recv is not */
7845 }
7846 if (!var2) {
7847 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/abstract_compiler.nit", 736);
7848 exit(1);
7849 }
7850 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__escapemark_names]))(self) /* escapemark_names on <self:AbstractCompilerVisitor>*/;
7851 var4 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var3, var_e) /* has_key on <var3:HashMap[EscapeMark, String]>*/;
7852 if (var4){
7853 var5 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__escapemark_names]))(self) /* escapemark_names on <self:AbstractCompilerVisitor>*/;
7854 var6 = ((val* (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var5, var_e) /* [] on <var5:HashMap[EscapeMark, String]>*/;
7855 var = var6;
7856 goto RET_LABEL;
7857 } else {
7858 }
7859 var7 = ((val* (*)(val*))(var_e->class->vft[COLOR_scope__EscapeMark__name]))(var_e) /* name on <var_e:nullable EscapeMark(EscapeMark)>*/;
7860 var_name = var7;
7861 var8 = NULL;
7862 if (var_name == NULL) {
7863 var9 = 1; /* is null */
7864 } else {
7865 var9 = 0; /* arg is null but recv is not */
7866 }
7867 if (var9){
7868 if (varonce) {
7869 var10 = varonce;
7870 } else {
7871 var11 = "label";
7872 var12 = 5;
7873 var13 = string__NativeString__to_s_with_length(var11, var12);
7874 var10 = var13;
7875 varonce = var10;
7876 }
7877 var_name = var10;
7878 } else {
7879 }
7880 var14 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var_name) /* get_name on <self:AbstractCompilerVisitor>*/;
7881 var_name = var14;
7882 var15 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__escapemark_names]))(self) /* escapemark_names on <self:AbstractCompilerVisitor>*/;
7883 ((void (*)(val*, val*, val*))(var15->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var15, var_e, var_name) /* []= on <var15:HashMap[EscapeMark, String]>*/;
7884 var = var_name;
7885 goto RET_LABEL;
7886 RET_LABEL:;
7887 return var;
7888 }
7889 /* method abstract_compiler#AbstractCompilerVisitor#escapemark_name for (self: Object, nullable EscapeMark): String */
7890 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__escapemark_name(val* self, val* p0) {
7891 val* var /* : String */;
7892 val* var1 /* : String */;
7893 var1 = abstract_compiler__AbstractCompilerVisitor__escapemark_name(self, p0);
7894 var = var1;
7895 RET_LABEL:;
7896 return var;
7897 }
7898 /* method abstract_compiler#AbstractCompilerVisitor#escapemark_names for (self: AbstractCompilerVisitor): HashMap[EscapeMark, String] */
7899 val* abstract_compiler__AbstractCompilerVisitor__escapemark_names(val* self) {
7900 val* var /* : HashMap[EscapeMark, String] */;
7901 val* var1 /* : HashMap[EscapeMark, String] */;
7902 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64descapemark_names].val; /* @escapemark_names on <self:AbstractCompilerVisitor> */
7903 if (var1 == NULL) {
7904 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @escapemark_names", "src/abstract_compiler.nit", 745);
7905 exit(1);
7906 }
7907 var = var1;
7908 RET_LABEL:;
7909 return var;
7910 }
7911 /* method abstract_compiler#AbstractCompilerVisitor#escapemark_names for (self: Object): HashMap[EscapeMark, String] */
7912 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__escapemark_names(val* self) {
7913 val* var /* : HashMap[EscapeMark, String] */;
7914 val* var1 /* : HashMap[EscapeMark, String] */;
7915 var1 = abstract_compiler__AbstractCompilerVisitor__escapemark_names(self);
7916 var = var1;
7917 RET_LABEL:;
7918 return var;
7919 }
7920 /* method abstract_compiler#AbstractCompilerVisitor#escapemark_names= for (self: AbstractCompilerVisitor, HashMap[EscapeMark, String]) */
7921 void abstract_compiler__AbstractCompilerVisitor__escapemark_names_61d(val* self, val* p0) {
7922 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64descapemark_names].val = p0; /* @escapemark_names on <self:AbstractCompilerVisitor> */
7923 RET_LABEL:;
7924 }
7925 /* method abstract_compiler#AbstractCompilerVisitor#escapemark_names= for (self: Object, HashMap[EscapeMark, String]) */
7926 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__escapemark_names_61d(val* self, val* p0) {
7927 abstract_compiler__AbstractCompilerVisitor__escapemark_names_61d(self, p0);
7928 RET_LABEL:;
7929 }
7930 /* method abstract_compiler#AbstractCompilerVisitor#class_name_string for (self: AbstractCompilerVisitor, RuntimeVariable): String */
7931 val* abstract_compiler__AbstractCompilerVisitor__class_name_string(val* self, val* p0) {
7932 val* var /* : String */;
7933 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/abstract_compiler.nit", 747);
7934 exit(1);
7935 RET_LABEL:;
7936 return var;
7937 }
7938 /* method abstract_compiler#AbstractCompilerVisitor#class_name_string for (self: Object, RuntimeVariable): String */
7939 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__class_name_string(val* self, val* p0) {
7940 val* var /* : String */;
7941 val* var1 /* : String */;
7942 var1 = abstract_compiler__AbstractCompilerVisitor__class_name_string(self, p0);
7943 var = var1;
7944 RET_LABEL:;
7945 return var;
7946 }
7947 /* method abstract_compiler#AbstractCompilerVisitor#variables for (self: AbstractCompilerVisitor): HashMap[Variable, RuntimeVariable] */
7948 val* abstract_compiler__AbstractCompilerVisitor__variables(val* self) {
7949 val* var /* : HashMap[Variable, RuntimeVariable] */;
7950 val* var1 /* : HashMap[Variable, RuntimeVariable] */;
7951 var1 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dvariables].val; /* @variables on <self:AbstractCompilerVisitor> */
7952 if (var1 == NULL) {
7953 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @variables", "src/abstract_compiler.nit", 753);
7954 exit(1);
7955 }
7956 var = var1;
7957 RET_LABEL:;
7958 return var;
7959 }
7960 /* method abstract_compiler#AbstractCompilerVisitor#variables for (self: Object): HashMap[Variable, RuntimeVariable] */
7961 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__variables(val* self) {
7962 val* var /* : HashMap[Variable, RuntimeVariable] */;
7963 val* var1 /* : HashMap[Variable, RuntimeVariable] */;
7964 var1 = abstract_compiler__AbstractCompilerVisitor__variables(self);
7965 var = var1;
7966 RET_LABEL:;
7967 return var;
7968 }
7969 /* method abstract_compiler#AbstractCompilerVisitor#variables= for (self: AbstractCompilerVisitor, HashMap[Variable, RuntimeVariable]) */
7970 void abstract_compiler__AbstractCompilerVisitor__variables_61d(val* self, val* p0) {
7971 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___64dvariables].val = p0; /* @variables on <self:AbstractCompilerVisitor> */
7972 RET_LABEL:;
7973 }
7974 /* method abstract_compiler#AbstractCompilerVisitor#variables= for (self: Object, HashMap[Variable, RuntimeVariable]) */
7975 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__variables_61d(val* self, val* p0) {
7976 abstract_compiler__AbstractCompilerVisitor__variables_61d(self, p0);
7977 RET_LABEL:;
7978 }
7979 /* method abstract_compiler#AbstractCompilerVisitor#variable for (self: AbstractCompilerVisitor, Variable): RuntimeVariable */
7980 val* abstract_compiler__AbstractCompilerVisitor__variable(val* self, val* p0) {
7981 val* var /* : RuntimeVariable */;
7982 val* var_variable /* var variable: Variable */;
7983 val* var1 /* : HashMap[Variable, RuntimeVariable] */;
7984 short int var2 /* : Bool */;
7985 val* var3 /* : HashMap[Variable, RuntimeVariable] */;
7986 val* var4 /* : nullable Object */;
7987 static val* varonce;
7988 val* var5 /* : String */;
7989 char* var6 /* : NativeString */;
7990 long var7 /* : Int */;
7991 val* var8 /* : String */;
7992 val* var9 /* : String */;
7993 val* var10 /* : Array[Object] */;
7994 long var11 /* : Int */;
7995 val* var12 /* : NativeArray[Object] */;
7996 val* var13 /* : String */;
7997 val* var14 /* : String */;
7998 val* var_name /* var name: String */;
7999 val* var15 /* : nullable MType */;
8000 val* var_mtype /* var mtype: MType */;
8001 val* var16 /* : MType */;
8002 val* var17 /* : RuntimeVariable */;
8003 val* var_res /* var res: RuntimeVariable */;
8004 val* var18 /* : String */;
8005 static val* varonce19;
8006 val* var20 /* : String */;
8007 char* var21 /* : NativeString */;
8008 long var22 /* : Int */;
8009 val* var23 /* : String */;
8010 static val* varonce24;
8011 val* var25 /* : String */;
8012 char* var26 /* : NativeString */;
8013 long var27 /* : Int */;
8014 val* var28 /* : String */;
8015 static val* varonce29;
8016 val* var30 /* : String */;
8017 char* var31 /* : NativeString */;
8018 long var32 /* : Int */;
8019 val* var33 /* : String */;
8020 static val* varonce34;
8021 val* var35 /* : String */;
8022 char* var36 /* : NativeString */;
8023 long var37 /* : Int */;
8024 val* var38 /* : String */;
8025 val* var39 /* : Array[Object] */;
8026 long var40 /* : Int */;
8027 val* var41 /* : NativeArray[Object] */;
8028 val* var42 /* : String */;
8029 val* var43 /* : HashMap[Variable, RuntimeVariable] */;
8030 var_variable = p0;
8031 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__variables]))(self) /* variables on <self:AbstractCompilerVisitor>*/;
8032 var2 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var1, var_variable) /* has_key on <var1:HashMap[Variable, RuntimeVariable]>*/;
8033 if (var2){
8034 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__variables]))(self) /* variables on <self:AbstractCompilerVisitor>*/;
8035 var4 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var3, var_variable) /* [] on <var3:HashMap[Variable, RuntimeVariable]>*/;
8036 var = var4;
8037 goto RET_LABEL;
8038 } else {
8039 if (varonce) {
8040 var5 = varonce;
8041 } else {
8042 var6 = "var_";
8043 var7 = 4;
8044 var8 = string__NativeString__to_s_with_length(var6, var7);
8045 var5 = var8;
8046 varonce = var5;
8047 }
8048 var9 = ((val* (*)(val*))(var_variable->class->vft[COLOR_scope__Variable__name]))(var_variable) /* name on <var_variable:Variable>*/;
8049 var10 = NEW_array__Array(&type_array__Arraykernel__Object);
8050 { /* var10 = array_instance Array[Object] */
8051 var11 = 2;
8052 var12 = NEW_array__NativeArray(var11, &type_array__NativeArraykernel__Object);
8053 ((struct instance_array__NativeArray*)var12)->values[0] = (val*) var5;
8054 ((struct instance_array__NativeArray*)var12)->values[1] = (val*) var9;
8055 ((void (*)(val*, val*, long))(var10->class->vft[COLOR_array__Array__with_native]))(var10, var12, var11) /* with_native on <var10:Array[Object]>*/;
8056 CHECK_NEW_array__Array(var10);
8057 }
8058 var13 = ((val* (*)(val*))(var10->class->vft[COLOR_string__Object__to_s]))(var10) /* to_s on <var10:Array[Object]>*/;
8059 var14 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var13) /* get_name on <self:AbstractCompilerVisitor>*/;
8060 var_name = var14;
8061 var15 = ((val* (*)(val*))(var_variable->class->vft[COLOR_typing__Variable__declared_type]))(var_variable) /* declared_type on <var_variable:Variable>*/;
8062 if (var15 == NULL) {
8063 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 762);
8064 exit(1);
8065 }
8066 var_mtype = var15;
8067 var16 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__anchor]))(self, var_mtype) /* anchor on <self:AbstractCompilerVisitor>*/;
8068 var_mtype = var16;
8069 var17 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
8070 ((void (*)(val*, val*, val*, val*))(var17->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var17, var_name, var_mtype, var_mtype) /* init on <var17:RuntimeVariable>*/;
8071 CHECK_NEW_abstract_compiler__RuntimeVariable(var17);
8072 var_res = var17;
8073 var18 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
8074 if (varonce19) {
8075 var20 = varonce19;
8076 } else {
8077 var21 = " ";
8078 var22 = 1;
8079 var23 = string__NativeString__to_s_with_length(var21, var22);
8080 var20 = var23;
8081 varonce19 = var20;
8082 }
8083 if (varonce24) {
8084 var25 = varonce24;
8085 } else {
8086 var26 = " /* var ";
8087 var27 = 8;
8088 var28 = string__NativeString__to_s_with_length(var26, var27);
8089 var25 = var28;
8090 varonce24 = var25;
8091 }
8092 if (varonce29) {
8093 var30 = varonce29;
8094 } else {
8095 var31 = ": ";
8096 var32 = 2;
8097 var33 = string__NativeString__to_s_with_length(var31, var32);
8098 var30 = var33;
8099 varonce29 = var30;
8100 }
8101 if (varonce34) {
8102 var35 = varonce34;
8103 } else {
8104 var36 = " */;";
8105 var37 = 4;
8106 var38 = string__NativeString__to_s_with_length(var36, var37);
8107 var35 = var38;
8108 varonce34 = var35;
8109 }
8110 var39 = NEW_array__Array(&type_array__Arraykernel__Object);
8111 { /* var39 = array_instance Array[Object] */
8112 var40 = 8;
8113 var41 = NEW_array__NativeArray(var40, &type_array__NativeArraykernel__Object);
8114 ((struct instance_array__NativeArray*)var41)->values[0] = (val*) var18;
8115 ((struct instance_array__NativeArray*)var41)->values[1] = (val*) var20;
8116 ((struct instance_array__NativeArray*)var41)->values[2] = (val*) var_name;
8117 ((struct instance_array__NativeArray*)var41)->values[3] = (val*) var25;
8118 ((struct instance_array__NativeArray*)var41)->values[4] = (val*) var_variable;
8119 ((struct instance_array__NativeArray*)var41)->values[5] = (val*) var30;
8120 ((struct instance_array__NativeArray*)var41)->values[6] = (val*) var_mtype;
8121 ((struct instance_array__NativeArray*)var41)->values[7] = (val*) var35;
8122 ((void (*)(val*, val*, long))(var39->class->vft[COLOR_array__Array__with_native]))(var39, var41, var40) /* with_native on <var39:Array[Object]>*/;
8123 CHECK_NEW_array__Array(var39);
8124 }
8125 var42 = ((val* (*)(val*))(var39->class->vft[COLOR_string__Object__to_s]))(var39) /* to_s on <var39:Array[Object]>*/;
8126 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var42) /* add_decl on <self:AbstractCompilerVisitor>*/;
8127 var43 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__variables]))(self) /* variables on <self:AbstractCompilerVisitor>*/;
8128 ((void (*)(val*, val*, val*))(var43->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var43, var_variable, var_res) /* []= on <var43:HashMap[Variable, RuntimeVariable]>*/;
8129 var = var_res;
8130 goto RET_LABEL;
8131 }
8132 RET_LABEL:;
8133 return var;
8134 }
8135 /* method abstract_compiler#AbstractCompilerVisitor#variable for (self: Object, Variable): RuntimeVariable */
8136 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__variable(val* self, val* p0) {
8137 val* var /* : RuntimeVariable */;
8138 val* var1 /* : RuntimeVariable */;
8139 var1 = abstract_compiler__AbstractCompilerVisitor__variable(self, p0);
8140 var = var1;
8141 RET_LABEL:;
8142 return var;
8143 }
8144 /* method abstract_compiler#AbstractCompilerVisitor#new_var for (self: AbstractCompilerVisitor, MType): RuntimeVariable */
8145 val* abstract_compiler__AbstractCompilerVisitor__new_var(val* self, val* p0) {
8146 val* var /* : RuntimeVariable */;
8147 val* var_mtype /* var mtype: MType */;
8148 val* var1 /* : MType */;
8149 static val* varonce;
8150 val* var2 /* : String */;
8151 char* var3 /* : NativeString */;
8152 long var4 /* : Int */;
8153 val* var5 /* : String */;
8154 val* var6 /* : String */;
8155 val* var_name /* var name: String */;
8156 val* var7 /* : RuntimeVariable */;
8157 val* var_res /* var res: RuntimeVariable */;
8158 val* var8 /* : String */;
8159 static val* varonce9;
8160 val* var10 /* : String */;
8161 char* var11 /* : NativeString */;
8162 long var12 /* : Int */;
8163 val* var13 /* : String */;
8164 static val* varonce14;
8165 val* var15 /* : String */;
8166 char* var16 /* : NativeString */;
8167 long var17 /* : Int */;
8168 val* var18 /* : String */;
8169 static val* varonce19;
8170 val* var20 /* : String */;
8171 char* var21 /* : NativeString */;
8172 long var22 /* : Int */;
8173 val* var23 /* : String */;
8174 val* var24 /* : Array[Object] */;
8175 long var25 /* : Int */;
8176 val* var26 /* : NativeArray[Object] */;
8177 val* var27 /* : String */;
8178 var_mtype = p0;
8179 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__anchor]))(self, var_mtype) /* anchor on <self:AbstractCompilerVisitor>*/;
8180 var_mtype = var1;
8181 if (varonce) {
8182 var2 = varonce;
8183 } else {
8184 var3 = "var";
8185 var4 = 3;
8186 var5 = string__NativeString__to_s_with_length(var3, var4);
8187 var2 = var5;
8188 varonce = var2;
8189 }
8190 var6 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var2) /* get_name on <self:AbstractCompilerVisitor>*/;
8191 var_name = var6;
8192 var7 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
8193 ((void (*)(val*, val*, val*, val*))(var7->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var7, var_name, var_mtype, var_mtype) /* init on <var7:RuntimeVariable>*/;
8194 CHECK_NEW_abstract_compiler__RuntimeVariable(var7);
8195 var_res = var7;
8196 var8 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
8197 if (varonce9) {
8198 var10 = varonce9;
8199 } else {
8200 var11 = " ";
8201 var12 = 1;
8202 var13 = string__NativeString__to_s_with_length(var11, var12);
8203 var10 = var13;
8204 varonce9 = var10;
8205 }
8206 if (varonce14) {
8207 var15 = varonce14;
8208 } else {
8209 var16 = " /* : ";
8210 var17 = 6;
8211 var18 = string__NativeString__to_s_with_length(var16, var17);
8212 var15 = var18;
8213 varonce14 = var15;
8214 }
8215 if (varonce19) {
8216 var20 = varonce19;
8217 } else {
8218 var21 = " */;";
8219 var22 = 4;
8220 var23 = string__NativeString__to_s_with_length(var21, var22);
8221 var20 = var23;
8222 varonce19 = var20;
8223 }
8224 var24 = NEW_array__Array(&type_array__Arraykernel__Object);
8225 { /* var24 = array_instance Array[Object] */
8226 var25 = 6;
8227 var26 = NEW_array__NativeArray(var25, &type_array__NativeArraykernel__Object);
8228 ((struct instance_array__NativeArray*)var26)->values[0] = (val*) var8;
8229 ((struct instance_array__NativeArray*)var26)->values[1] = (val*) var10;
8230 ((struct instance_array__NativeArray*)var26)->values[2] = (val*) var_name;
8231 ((struct instance_array__NativeArray*)var26)->values[3] = (val*) var15;
8232 ((struct instance_array__NativeArray*)var26)->values[4] = (val*) var_mtype;
8233 ((struct instance_array__NativeArray*)var26)->values[5] = (val*) var20;
8234 ((void (*)(val*, val*, long))(var24->class->vft[COLOR_array__Array__with_native]))(var24, var26, var25) /* with_native on <var24:Array[Object]>*/;
8235 CHECK_NEW_array__Array(var24);
8236 }
8237 var27 = ((val* (*)(val*))(var24->class->vft[COLOR_string__Object__to_s]))(var24) /* to_s on <var24:Array[Object]>*/;
8238 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var27) /* add_decl on <self:AbstractCompilerVisitor>*/;
8239 var = var_res;
8240 goto RET_LABEL;
8241 RET_LABEL:;
8242 return var;
8243 }
8244 /* method abstract_compiler#AbstractCompilerVisitor#new_var for (self: Object, MType): RuntimeVariable */
8245 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__new_var(val* self, val* p0) {
8246 val* var /* : RuntimeVariable */;
8247 val* var1 /* : RuntimeVariable */;
8248 var1 = abstract_compiler__AbstractCompilerVisitor__new_var(self, p0);
8249 var = var1;
8250 RET_LABEL:;
8251 return var;
8252 }
8253 /* method abstract_compiler#AbstractCompilerVisitor#new_named_var for (self: AbstractCompilerVisitor, MType, String): RuntimeVariable */
8254 val* abstract_compiler__AbstractCompilerVisitor__new_named_var(val* self, val* p0, val* p1) {
8255 val* var /* : RuntimeVariable */;
8256 val* var_mtype /* var mtype: MType */;
8257 val* var_name /* var name: String */;
8258 val* var1 /* : MType */;
8259 val* var2 /* : RuntimeVariable */;
8260 val* var_res /* var res: RuntimeVariable */;
8261 val* var3 /* : String */;
8262 static val* varonce;
8263 val* var4 /* : String */;
8264 char* var5 /* : NativeString */;
8265 long var6 /* : Int */;
8266 val* var7 /* : String */;
8267 static val* varonce8;
8268 val* var9 /* : String */;
8269 char* var10 /* : NativeString */;
8270 long var11 /* : Int */;
8271 val* var12 /* : String */;
8272 static val* varonce13;
8273 val* var14 /* : String */;
8274 char* var15 /* : NativeString */;
8275 long var16 /* : Int */;
8276 val* var17 /* : String */;
8277 val* var18 /* : Array[Object] */;
8278 long var19 /* : Int */;
8279 val* var20 /* : NativeArray[Object] */;
8280 val* var21 /* : String */;
8281 var_mtype = p0;
8282 var_name = p1;
8283 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__anchor]))(self, var_mtype) /* anchor on <self:AbstractCompilerVisitor>*/;
8284 var_mtype = var1;
8285 var2 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
8286 ((void (*)(val*, val*, val*, val*))(var2->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var2, var_name, var_mtype, var_mtype) /* init on <var2:RuntimeVariable>*/;
8287 CHECK_NEW_abstract_compiler__RuntimeVariable(var2);
8288 var_res = var2;
8289 var3 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
8290 if (varonce) {
8291 var4 = varonce;
8292 } else {
8293 var5 = " ";
8294 var6 = 1;
8295 var7 = string__NativeString__to_s_with_length(var5, var6);
8296 var4 = var7;
8297 varonce = var4;
8298 }
8299 if (varonce8) {
8300 var9 = varonce8;
8301 } else {
8302 var10 = " /* : ";
8303 var11 = 6;
8304 var12 = string__NativeString__to_s_with_length(var10, var11);
8305 var9 = var12;
8306 varonce8 = var9;
8307 }
8308 if (varonce13) {
8309 var14 = varonce13;
8310 } else {
8311 var15 = " */;";
8312 var16 = 4;
8313 var17 = string__NativeString__to_s_with_length(var15, var16);
8314 var14 = var17;
8315 varonce13 = var14;
8316 }
8317 var18 = NEW_array__Array(&type_array__Arraykernel__Object);
8318 { /* var18 = array_instance Array[Object] */
8319 var19 = 6;
8320 var20 = NEW_array__NativeArray(var19, &type_array__NativeArraykernel__Object);
8321 ((struct instance_array__NativeArray*)var20)->values[0] = (val*) var3;
8322 ((struct instance_array__NativeArray*)var20)->values[1] = (val*) var4;
8323 ((struct instance_array__NativeArray*)var20)->values[2] = (val*) var_name;
8324 ((struct instance_array__NativeArray*)var20)->values[3] = (val*) var9;
8325 ((struct instance_array__NativeArray*)var20)->values[4] = (val*) var_mtype;
8326 ((struct instance_array__NativeArray*)var20)->values[5] = (val*) var14;
8327 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_array__Array__with_native]))(var18, var20, var19) /* with_native on <var18:Array[Object]>*/;
8328 CHECK_NEW_array__Array(var18);
8329 }
8330 var21 = ((val* (*)(val*))(var18->class->vft[COLOR_string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
8331 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var21) /* add_decl on <self:AbstractCompilerVisitor>*/;
8332 var = var_res;
8333 goto RET_LABEL;
8334 RET_LABEL:;
8335 return var;
8336 }
8337 /* method abstract_compiler#AbstractCompilerVisitor#new_named_var for (self: Object, MType, String): RuntimeVariable */
8338 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__new_named_var(val* self, val* p0, val* p1) {
8339 val* var /* : RuntimeVariable */;
8340 val* var1 /* : RuntimeVariable */;
8341 var1 = abstract_compiler__AbstractCompilerVisitor__new_named_var(self, p0, p1);
8342 var = var1;
8343 RET_LABEL:;
8344 return var;
8345 }
8346 /* method abstract_compiler#AbstractCompilerVisitor#assign for (self: AbstractCompilerVisitor, RuntimeVariable, RuntimeVariable) */
8347 void abstract_compiler__AbstractCompilerVisitor__assign(val* self, val* p0, val* p1) {
8348 val* var_left /* var left: RuntimeVariable */;
8349 val* var_right /* var right: RuntimeVariable */;
8350 val* var /* : MType */;
8351 val* var1 /* : RuntimeVariable */;
8352 static val* varonce;
8353 val* var2 /* : String */;
8354 char* var3 /* : NativeString */;
8355 long var4 /* : Int */;
8356 val* var5 /* : String */;
8357 static val* varonce6;
8358 val* var7 /* : String */;
8359 char* var8 /* : NativeString */;
8360 long var9 /* : Int */;
8361 val* var10 /* : String */;
8362 val* var11 /* : Array[Object] */;
8363 long var12 /* : Int */;
8364 val* var13 /* : NativeArray[Object] */;
8365 val* var14 /* : String */;
8366 var_left = p0;
8367 var_right = p1;
8368 var = ((val* (*)(val*))(var_left->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_left) /* mtype on <var_left:RuntimeVariable>*/;
8369 var1 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var_right, var) /* autobox on <self:AbstractCompilerVisitor>*/;
8370 var_right = var1;
8371 if (varonce) {
8372 var2 = varonce;
8373 } else {
8374 var3 = " = ";
8375 var4 = 3;
8376 var5 = string__NativeString__to_s_with_length(var3, var4);
8377 var2 = var5;
8378 varonce = var2;
8379 }
8380 if (varonce6) {
8381 var7 = varonce6;
8382 } else {
8383 var8 = ";";
8384 var9 = 1;
8385 var10 = string__NativeString__to_s_with_length(var8, var9);
8386 var7 = var10;
8387 varonce6 = var7;
8388 }
8389 var11 = NEW_array__Array(&type_array__Arraykernel__Object);
8390 { /* var11 = array_instance Array[Object] */
8391 var12 = 4;
8392 var13 = NEW_array__NativeArray(var12, &type_array__NativeArraykernel__Object);
8393 ((struct instance_array__NativeArray*)var13)->values[0] = (val*) var_left;
8394 ((struct instance_array__NativeArray*)var13)->values[1] = (val*) var2;
8395 ((struct instance_array__NativeArray*)var13)->values[2] = (val*) var_right;
8396 ((struct instance_array__NativeArray*)var13)->values[3] = (val*) var7;
8397 ((void (*)(val*, val*, long))(var11->class->vft[COLOR_array__Array__with_native]))(var11, var13, var12) /* with_native on <var11:Array[Object]>*/;
8398 CHECK_NEW_array__Array(var11);
8399 }
8400 var14 = ((val* (*)(val*))(var11->class->vft[COLOR_string__Object__to_s]))(var11) /* to_s on <var11:Array[Object]>*/;
8401 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var14) /* add on <self:AbstractCompilerVisitor>*/;
8402 RET_LABEL:;
8403 }
8404 /* method abstract_compiler#AbstractCompilerVisitor#assign for (self: Object, RuntimeVariable, RuntimeVariable) */
8405 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__assign(val* self, val* p0, val* p1) {
8406 abstract_compiler__AbstractCompilerVisitor__assign(self, p0, p1);
8407 RET_LABEL:;
8408 }
8409 /* method abstract_compiler#AbstractCompilerVisitor#init_instance for (self: AbstractCompilerVisitor, MClassType): RuntimeVariable */
8410 val* abstract_compiler__AbstractCompilerVisitor__init_instance(val* self, val* p0) {
8411 val* var /* : RuntimeVariable */;
8412 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/abstract_compiler.nit", 800);
8413 exit(1);
8414 RET_LABEL:;
8415 return var;
8416 }
8417 /* method abstract_compiler#AbstractCompilerVisitor#init_instance for (self: Object, MClassType): RuntimeVariable */
8418 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__init_instance(val* self, val* p0) {
8419 val* var /* : RuntimeVariable */;
8420 val* var1 /* : RuntimeVariable */;
8421 var1 = abstract_compiler__AbstractCompilerVisitor__init_instance(self, p0);
8422 var = var1;
8423 RET_LABEL:;
8424 return var;
8425 }
8426 /* method abstract_compiler#AbstractCompilerVisitor#int_instance for (self: AbstractCompilerVisitor, Int): RuntimeVariable */
8427 val* abstract_compiler__AbstractCompilerVisitor__int_instance(val* self, long p0) {
8428 val* var /* : RuntimeVariable */;
8429 long var_value /* var value: Int */;
8430 static val* varonce;
8431 val* var1 /* : String */;
8432 char* var2 /* : NativeString */;
8433 long var3 /* : Int */;
8434 val* var4 /* : String */;
8435 val* var5 /* : MClass */;
8436 val* var6 /* : MClassType */;
8437 val* var7 /* : RuntimeVariable */;
8438 val* var_res /* var res: RuntimeVariable */;
8439 static val* varonce8;
8440 val* var9 /* : String */;
8441 char* var10 /* : NativeString */;
8442 long var11 /* : Int */;
8443 val* var12 /* : String */;
8444 static val* varonce13;
8445 val* var14 /* : String */;
8446 char* var15 /* : NativeString */;
8447 long var16 /* : Int */;
8448 val* var17 /* : String */;
8449 val* var18 /* : Array[Object] */;
8450 long var19 /* : Int */;
8451 val* var20 /* : NativeArray[Object] */;
8452 val* var21 /* : Object */;
8453 val* var22 /* : String */;
8454 var_value = p0;
8455 if (varonce) {
8456 var1 = varonce;
8457 } else {
8458 var2 = "Int";
8459 var3 = 3;
8460 var4 = string__NativeString__to_s_with_length(var2, var3);
8461 var1 = var4;
8462 varonce = var1;
8463 }
8464 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var1) /* get_class on <self:AbstractCompilerVisitor>*/;
8465 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClass__mclass_type]))(var5) /* mclass_type on <var5:MClass>*/;
8466 var7 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var6) /* new_var on <self:AbstractCompilerVisitor>*/;
8467 var_res = var7;
8468 if (varonce8) {
8469 var9 = varonce8;
8470 } else {
8471 var10 = " = ";
8472 var11 = 3;
8473 var12 = string__NativeString__to_s_with_length(var10, var11);
8474 var9 = var12;
8475 varonce8 = var9;
8476 }
8477 if (varonce13) {
8478 var14 = varonce13;
8479 } else {
8480 var15 = ";";
8481 var16 = 1;
8482 var17 = string__NativeString__to_s_with_length(var15, var16);
8483 var14 = var17;
8484 varonce13 = var14;
8485 }
8486 var18 = NEW_array__Array(&type_array__Arraykernel__Object);
8487 { /* var18 = array_instance Array[Object] */
8488 var19 = 4;
8489 var20 = NEW_array__NativeArray(var19, &type_array__NativeArraykernel__Object);
8490 ((struct instance_array__NativeArray*)var20)->values[0] = (val*) var_res;
8491 ((struct instance_array__NativeArray*)var20)->values[1] = (val*) var9;
8492 var21 = BOX_kernel__Int(var_value); /* autobox from Int to Object */
8493 ((struct instance_array__NativeArray*)var20)->values[2] = (val*) var21;
8494 ((struct instance_array__NativeArray*)var20)->values[3] = (val*) var14;
8495 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_array__Array__with_native]))(var18, var20, var19) /* with_native on <var18:Array[Object]>*/;
8496 CHECK_NEW_array__Array(var18);
8497 }
8498 var22 = ((val* (*)(val*))(var18->class->vft[COLOR_string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
8499 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var22) /* add on <self:AbstractCompilerVisitor>*/;
8500 var = var_res;
8501 goto RET_LABEL;
8502 RET_LABEL:;
8503 return var;
8504 }
8505 /* method abstract_compiler#AbstractCompilerVisitor#int_instance for (self: Object, Int): RuntimeVariable */
8506 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__int_instance(val* self, long p0) {
8507 val* var /* : RuntimeVariable */;
8508 val* var1 /* : RuntimeVariable */;
8509 var1 = abstract_compiler__AbstractCompilerVisitor__int_instance(self, p0);
8510 var = var1;
8511 RET_LABEL:;
8512 return var;
8513 }
8514 /* method abstract_compiler#AbstractCompilerVisitor#string_instance for (self: AbstractCompilerVisitor, String): RuntimeVariable */
8515 val* abstract_compiler__AbstractCompilerVisitor__string_instance(val* self, val* p0) {
8516 val* var /* : RuntimeVariable */;
8517 val* var_string /* var string: String */;
8518 static val* varonce;
8519 val* var1 /* : String */;
8520 char* var2 /* : NativeString */;
8521 long var3 /* : Int */;
8522 val* var4 /* : String */;
8523 val* var5 /* : MClass */;
8524 val* var6 /* : MClassType */;
8525 val* var_mtype /* var mtype: MClassType */;
8526 static val* varonce7;
8527 val* var8 /* : String */;
8528 char* var9 /* : NativeString */;
8529 long var10 /* : Int */;
8530 val* var11 /* : String */;
8531 val* var12 /* : String */;
8532 val* var_name /* var name: String */;
8533 static val* varonce13;
8534 val* var14 /* : String */;
8535 char* var15 /* : NativeString */;
8536 long var16 /* : Int */;
8537 val* var17 /* : String */;
8538 val* var18 /* : String */;
8539 static val* varonce19;
8540 val* var20 /* : String */;
8541 char* var21 /* : NativeString */;
8542 long var22 /* : Int */;
8543 val* var23 /* : String */;
8544 static val* varonce24;
8545 val* var25 /* : String */;
8546 char* var26 /* : NativeString */;
8547 long var27 /* : Int */;
8548 val* var28 /* : String */;
8549 val* var29 /* : Array[Object] */;
8550 long var30 /* : Int */;
8551 val* var31 /* : NativeArray[Object] */;
8552 val* var32 /* : String */;
8553 val* var33 /* : RuntimeVariable */;
8554 val* var_res /* var res: RuntimeVariable */;
8555 static val* varonce34;
8556 val* var35 /* : String */;
8557 char* var36 /* : NativeString */;
8558 long var37 /* : Int */;
8559 val* var38 /* : String */;
8560 static val* varonce39;
8561 val* var40 /* : String */;
8562 char* var41 /* : NativeString */;
8563 long var42 /* : Int */;
8564 val* var43 /* : String */;
8565 val* var44 /* : Array[Object] */;
8566 long var45 /* : Int */;
8567 val* var46 /* : NativeArray[Object] */;
8568 val* var47 /* : String */;
8569 static val* varonce48;
8570 val* var49 /* : String */;
8571 char* var50 /* : NativeString */;
8572 long var51 /* : Int */;
8573 val* var52 /* : String */;
8574 static val* varonce53;
8575 val* var54 /* : String */;
8576 char* var55 /* : NativeString */;
8577 long var56 /* : Int */;
8578 val* var57 /* : String */;
8579 val* var58 /* : Array[Object] */;
8580 long var59 /* : Int */;
8581 val* var60 /* : NativeArray[Object] */;
8582 val* var61 /* : String */;
8583 static val* varonce62;
8584 val* var63 /* : String */;
8585 char* var64 /* : NativeString */;
8586 long var65 /* : Int */;
8587 val* var66 /* : String */;
8588 static val* varonce67;
8589 val* var68 /* : String */;
8590 char* var69 /* : NativeString */;
8591 long var70 /* : Int */;
8592 val* var71 /* : String */;
8593 val* var72 /* : MClass */;
8594 val* var73 /* : MClassType */;
8595 val* var_native_mtype /* var native_mtype: MClassType */;
8596 val* var74 /* : RuntimeVariable */;
8597 val* var_nat /* var nat: RuntimeVariable */;
8598 static val* varonce75;
8599 val* var76 /* : String */;
8600 char* var77 /* : NativeString */;
8601 long var78 /* : Int */;
8602 val* var79 /* : String */;
8603 val* var80 /* : String */;
8604 static val* varonce81;
8605 val* var82 /* : String */;
8606 char* var83 /* : NativeString */;
8607 long var84 /* : Int */;
8608 val* var85 /* : String */;
8609 val* var86 /* : Array[Object] */;
8610 long var87 /* : Int */;
8611 val* var88 /* : NativeArray[Object] */;
8612 val* var89 /* : String */;
8613 long var90 /* : Int */;
8614 val* var91 /* : RuntimeVariable */;
8615 val* var_length /* var length: RuntimeVariable */;
8616 static val* varonce92;
8617 val* var93 /* : String */;
8618 char* var94 /* : NativeString */;
8619 long var95 /* : Int */;
8620 val* var96 /* : String */;
8621 static val* varonce97;
8622 val* var98 /* : String */;
8623 char* var99 /* : NativeString */;
8624 long var100 /* : Int */;
8625 val* var101 /* : String */;
8626 val* var102 /* : MMethod */;
8627 val* var103 /* : Array[RuntimeVariable] */;
8628 long var104 /* : Int */;
8629 val* var105 /* : NativeArray[RuntimeVariable] */;
8630 val* var106 /* : nullable RuntimeVariable */;
8631 static val* varonce107;
8632 val* var108 /* : String */;
8633 char* var109 /* : NativeString */;
8634 long var110 /* : Int */;
8635 val* var111 /* : String */;
8636 val* var112 /* : Array[Object] */;
8637 long var113 /* : Int */;
8638 val* var114 /* : NativeArray[Object] */;
8639 val* var115 /* : String */;
8640 static val* varonce116;
8641 val* var117 /* : String */;
8642 char* var118 /* : NativeString */;
8643 long var119 /* : Int */;
8644 val* var120 /* : String */;
8645 static val* varonce121;
8646 val* var122 /* : String */;
8647 char* var123 /* : NativeString */;
8648 long var124 /* : Int */;
8649 val* var125 /* : String */;
8650 val* var126 /* : Array[Object] */;
8651 long var127 /* : Int */;
8652 val* var128 /* : NativeArray[Object] */;
8653 val* var129 /* : String */;
8654 static val* varonce130;
8655 val* var131 /* : String */;
8656 char* var132 /* : NativeString */;
8657 long var133 /* : Int */;
8658 val* var134 /* : String */;
8659 var_string = p0;
8660 if (varonce) {
8661 var1 = varonce;
8662 } else {
8663 var2 = "String";
8664 var3 = 6;
8665 var4 = string__NativeString__to_s_with_length(var2, var3);
8666 var1 = var4;
8667 varonce = var1;
8668 }
8669 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var1) /* get_class on <self:AbstractCompilerVisitor>*/;
8670 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClass__mclass_type]))(var5) /* mclass_type on <var5:MClass>*/;
8671 var_mtype = var6;
8672 if (varonce7) {
8673 var8 = varonce7;
8674 } else {
8675 var9 = "varonce";
8676 var10 = 7;
8677 var11 = string__NativeString__to_s_with_length(var9, var10);
8678 var8 = var11;
8679 varonce7 = var8;
8680 }
8681 var12 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var8) /* get_name on <self:AbstractCompilerVisitor>*/;
8682 var_name = var12;
8683 if (varonce13) {
8684 var14 = varonce13;
8685 } else {
8686 var15 = "static ";
8687 var16 = 7;
8688 var17 = string__NativeString__to_s_with_length(var15, var16);
8689 var14 = var17;
8690 varonce13 = var14;
8691 }
8692 var18 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MClassType>*/;
8693 if (varonce19) {
8694 var20 = varonce19;
8695 } else {
8696 var21 = " ";
8697 var22 = 1;
8698 var23 = string__NativeString__to_s_with_length(var21, var22);
8699 var20 = var23;
8700 varonce19 = var20;
8701 }
8702 if (varonce24) {
8703 var25 = varonce24;
8704 } else {
8705 var26 = ";";
8706 var27 = 1;
8707 var28 = string__NativeString__to_s_with_length(var26, var27);
8708 var25 = var28;
8709 varonce24 = var25;
8710 }
8711 var29 = NEW_array__Array(&type_array__Arraykernel__Object);
8712 { /* var29 = array_instance Array[Object] */
8713 var30 = 5;
8714 var31 = NEW_array__NativeArray(var30, &type_array__NativeArraykernel__Object);
8715 ((struct instance_array__NativeArray*)var31)->values[0] = (val*) var14;
8716 ((struct instance_array__NativeArray*)var31)->values[1] = (val*) var18;
8717 ((struct instance_array__NativeArray*)var31)->values[2] = (val*) var20;
8718 ((struct instance_array__NativeArray*)var31)->values[3] = (val*) var_name;
8719 ((struct instance_array__NativeArray*)var31)->values[4] = (val*) var25;
8720 ((void (*)(val*, val*, long))(var29->class->vft[COLOR_array__Array__with_native]))(var29, var31, var30) /* with_native on <var29:Array[Object]>*/;
8721 CHECK_NEW_array__Array(var29);
8722 }
8723 var32 = ((val* (*)(val*))(var29->class->vft[COLOR_string__Object__to_s]))(var29) /* to_s on <var29:Array[Object]>*/;
8724 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var32) /* add_decl on <self:AbstractCompilerVisitor>*/;
8725 var33 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_mtype) /* new_var on <self:AbstractCompilerVisitor>*/;
8726 var_res = var33;
8727 if (varonce34) {
8728 var35 = varonce34;
8729 } else {
8730 var36 = "if (";
8731 var37 = 4;
8732 var38 = string__NativeString__to_s_with_length(var36, var37);
8733 var35 = var38;
8734 varonce34 = var35;
8735 }
8736 if (varonce39) {
8737 var40 = varonce39;
8738 } else {
8739 var41 = ") {";
8740 var42 = 3;
8741 var43 = string__NativeString__to_s_with_length(var41, var42);
8742 var40 = var43;
8743 varonce39 = var40;
8744 }
8745 var44 = NEW_array__Array(&type_array__Arraykernel__Object);
8746 { /* var44 = array_instance Array[Object] */
8747 var45 = 3;
8748 var46 = NEW_array__NativeArray(var45, &type_array__NativeArraykernel__Object);
8749 ((struct instance_array__NativeArray*)var46)->values[0] = (val*) var35;
8750 ((struct instance_array__NativeArray*)var46)->values[1] = (val*) var_name;
8751 ((struct instance_array__NativeArray*)var46)->values[2] = (val*) var40;
8752 ((void (*)(val*, val*, long))(var44->class->vft[COLOR_array__Array__with_native]))(var44, var46, var45) /* with_native on <var44:Array[Object]>*/;
8753 CHECK_NEW_array__Array(var44);
8754 }
8755 var47 = ((val* (*)(val*))(var44->class->vft[COLOR_string__Object__to_s]))(var44) /* to_s on <var44:Array[Object]>*/;
8756 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var47) /* add on <self:AbstractCompilerVisitor>*/;
8757 if (varonce48) {
8758 var49 = varonce48;
8759 } else {
8760 var50 = " = ";
8761 var51 = 3;
8762 var52 = string__NativeString__to_s_with_length(var50, var51);
8763 var49 = var52;
8764 varonce48 = var49;
8765 }
8766 if (varonce53) {
8767 var54 = varonce53;
8768 } else {
8769 var55 = ";";
8770 var56 = 1;
8771 var57 = string__NativeString__to_s_with_length(var55, var56);
8772 var54 = var57;
8773 varonce53 = var54;
8774 }
8775 var58 = NEW_array__Array(&type_array__Arraykernel__Object);
8776 { /* var58 = array_instance Array[Object] */
8777 var59 = 4;
8778 var60 = NEW_array__NativeArray(var59, &type_array__NativeArraykernel__Object);
8779 ((struct instance_array__NativeArray*)var60)->values[0] = (val*) var_res;
8780 ((struct instance_array__NativeArray*)var60)->values[1] = (val*) var49;
8781 ((struct instance_array__NativeArray*)var60)->values[2] = (val*) var_name;
8782 ((struct instance_array__NativeArray*)var60)->values[3] = (val*) var54;
8783 ((void (*)(val*, val*, long))(var58->class->vft[COLOR_array__Array__with_native]))(var58, var60, var59) /* with_native on <var58:Array[Object]>*/;
8784 CHECK_NEW_array__Array(var58);
8785 }
8786 var61 = ((val* (*)(val*))(var58->class->vft[COLOR_string__Object__to_s]))(var58) /* to_s on <var58:Array[Object]>*/;
8787 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var61) /* add on <self:AbstractCompilerVisitor>*/;
8788 if (varonce62) {
8789 var63 = varonce62;
8790 } else {
8791 var64 = "} else {";
8792 var65 = 8;
8793 var66 = string__NativeString__to_s_with_length(var64, var65);
8794 var63 = var66;
8795 varonce62 = var63;
8796 }
8797 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var63) /* add on <self:AbstractCompilerVisitor>*/;
8798 if (varonce67) {
8799 var68 = varonce67;
8800 } else {
8801 var69 = "NativeString";
8802 var70 = 12;
8803 var71 = string__NativeString__to_s_with_length(var69, var70);
8804 var68 = var71;
8805 varonce67 = var68;
8806 }
8807 var72 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var68) /* get_class on <self:AbstractCompilerVisitor>*/;
8808 var73 = ((val* (*)(val*))(var72->class->vft[COLOR_model__MClass__mclass_type]))(var72) /* mclass_type on <var72:MClass>*/;
8809 var_native_mtype = var73;
8810 var74 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_native_mtype) /* new_var on <self:AbstractCompilerVisitor>*/;
8811 var_nat = var74;
8812 if (varonce75) {
8813 var76 = varonce75;
8814 } else {
8815 var77 = " = \"";
8816 var78 = 4;
8817 var79 = string__NativeString__to_s_with_length(var77, var78);
8818 var76 = var79;
8819 varonce75 = var76;
8820 }
8821 var80 = ((val* (*)(val*))(var_string->class->vft[COLOR_string__AbstractString__escape_to_c]))(var_string) /* escape_to_c on <var_string:String>*/;
8822 if (varonce81) {
8823 var82 = varonce81;
8824 } else {
8825 var83 = "\";";
8826 var84 = 2;
8827 var85 = string__NativeString__to_s_with_length(var83, var84);
8828 var82 = var85;
8829 varonce81 = var82;
8830 }
8831 var86 = NEW_array__Array(&type_array__Arraykernel__Object);
8832 { /* var86 = array_instance Array[Object] */
8833 var87 = 4;
8834 var88 = NEW_array__NativeArray(var87, &type_array__NativeArraykernel__Object);
8835 ((struct instance_array__NativeArray*)var88)->values[0] = (val*) var_nat;
8836 ((struct instance_array__NativeArray*)var88)->values[1] = (val*) var76;
8837 ((struct instance_array__NativeArray*)var88)->values[2] = (val*) var80;
8838 ((struct instance_array__NativeArray*)var88)->values[3] = (val*) var82;
8839 ((void (*)(val*, val*, long))(var86->class->vft[COLOR_array__Array__with_native]))(var86, var88, var87) /* with_native on <var86:Array[Object]>*/;
8840 CHECK_NEW_array__Array(var86);
8841 }
8842 var89 = ((val* (*)(val*))(var86->class->vft[COLOR_string__Object__to_s]))(var86) /* to_s on <var86:Array[Object]>*/;
8843 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var89) /* add on <self:AbstractCompilerVisitor>*/;
8844 var90 = ((long (*)(val*))(var_string->class->vft[COLOR_abstract_collection__Collection__length]))(var_string) /* length on <var_string:String>*/;
8845 var91 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__int_instance]))(self, var90) /* int_instance on <self:AbstractCompilerVisitor>*/;
8846 var_length = var91;
8847 if (varonce92) {
8848 var93 = varonce92;
8849 } else {
8850 var94 = " = ";
8851 var95 = 3;
8852 var96 = string__NativeString__to_s_with_length(var94, var95);
8853 var93 = var96;
8854 varonce92 = var93;
8855 }
8856 if (varonce97) {
8857 var98 = varonce97;
8858 } else {
8859 var99 = "to_s_with_length";
8860 var100 = 16;
8861 var101 = string__NativeString__to_s_with_length(var99, var100);
8862 var98 = var101;
8863 varonce97 = var98;
8864 }
8865 var102 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_property]))(self, var98, var_native_mtype) /* get_property on <self:AbstractCompilerVisitor>*/;
8866 var103 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
8867 { /* var103 = array_instance Array[RuntimeVariable] */
8868 var104 = 2;
8869 var105 = NEW_array__NativeArray(var104, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
8870 ((struct instance_array__NativeArray*)var105)->values[0] = (val*) var_nat;
8871 ((struct instance_array__NativeArray*)var105)->values[1] = (val*) var_length;
8872 ((void (*)(val*, val*, long))(var103->class->vft[COLOR_array__Array__with_native]))(var103, var105, var104) /* with_native on <var103:Array[RuntimeVariable]>*/;
8873 CHECK_NEW_array__Array(var103);
8874 }
8875 var106 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(self, var102, var103) /* send on <self:AbstractCompilerVisitor>*/;
8876 if (var106 == NULL) {
8877 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 825);
8878 exit(1);
8879 }
8880 if (varonce107) {
8881 var108 = varonce107;
8882 } else {
8883 var109 = ";";
8884 var110 = 1;
8885 var111 = string__NativeString__to_s_with_length(var109, var110);
8886 var108 = var111;
8887 varonce107 = var108;
8888 }
8889 var112 = NEW_array__Array(&type_array__Arraykernel__Object);
8890 { /* var112 = array_instance Array[Object] */
8891 var113 = 4;
8892 var114 = NEW_array__NativeArray(var113, &type_array__NativeArraykernel__Object);
8893 ((struct instance_array__NativeArray*)var114)->values[0] = (val*) var_res;
8894 ((struct instance_array__NativeArray*)var114)->values[1] = (val*) var93;
8895 ((struct instance_array__NativeArray*)var114)->values[2] = (val*) var106;
8896 ((struct instance_array__NativeArray*)var114)->values[3] = (val*) var108;
8897 ((void (*)(val*, val*, long))(var112->class->vft[COLOR_array__Array__with_native]))(var112, var114, var113) /* with_native on <var112:Array[Object]>*/;
8898 CHECK_NEW_array__Array(var112);
8899 }
8900 var115 = ((val* (*)(val*))(var112->class->vft[COLOR_string__Object__to_s]))(var112) /* to_s on <var112:Array[Object]>*/;
8901 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var115) /* add on <self:AbstractCompilerVisitor>*/;
8902 if (varonce116) {
8903 var117 = varonce116;
8904 } else {
8905 var118 = " = ";
8906 var119 = 3;
8907 var120 = string__NativeString__to_s_with_length(var118, var119);
8908 var117 = var120;
8909 varonce116 = var117;
8910 }
8911 if (varonce121) {
8912 var122 = varonce121;
8913 } else {
8914 var123 = ";";
8915 var124 = 1;
8916 var125 = string__NativeString__to_s_with_length(var123, var124);
8917 var122 = var125;
8918 varonce121 = var122;
8919 }
8920 var126 = NEW_array__Array(&type_array__Arraykernel__Object);
8921 { /* var126 = array_instance Array[Object] */
8922 var127 = 4;
8923 var128 = NEW_array__NativeArray(var127, &type_array__NativeArraykernel__Object);
8924 ((struct instance_array__NativeArray*)var128)->values[0] = (val*) var_name;
8925 ((struct instance_array__NativeArray*)var128)->values[1] = (val*) var117;
8926 ((struct instance_array__NativeArray*)var128)->values[2] = (val*) var_res;
8927 ((struct instance_array__NativeArray*)var128)->values[3] = (val*) var122;
8928 ((void (*)(val*, val*, long))(var126->class->vft[COLOR_array__Array__with_native]))(var126, var128, var127) /* with_native on <var126:Array[Object]>*/;
8929 CHECK_NEW_array__Array(var126);
8930 }
8931 var129 = ((val* (*)(val*))(var126->class->vft[COLOR_string__Object__to_s]))(var126) /* to_s on <var126:Array[Object]>*/;
8932 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var129) /* add on <self:AbstractCompilerVisitor>*/;
8933 if (varonce130) {
8934 var131 = varonce130;
8935 } else {
8936 var132 = "}";
8937 var133 = 1;
8938 var134 = string__NativeString__to_s_with_length(var132, var133);
8939 var131 = var134;
8940 varonce130 = var131;
8941 }
8942 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var131) /* add on <self:AbstractCompilerVisitor>*/;
8943 var = var_res;
8944 goto RET_LABEL;
8945 RET_LABEL:;
8946 return var;
8947 }
8948 /* method abstract_compiler#AbstractCompilerVisitor#string_instance for (self: Object, String): RuntimeVariable */
8949 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__string_instance(val* self, val* p0) {
8950 val* var /* : RuntimeVariable */;
8951 val* var1 /* : RuntimeVariable */;
8952 var1 = abstract_compiler__AbstractCompilerVisitor__string_instance(self, p0);
8953 var = var1;
8954 RET_LABEL:;
8955 return var;
8956 }
8957 /* method abstract_compiler#AbstractCompilerVisitor#array_instance for (self: AbstractCompilerVisitor, Array[RuntimeVariable], MType): RuntimeVariable */
8958 val* abstract_compiler__AbstractCompilerVisitor__array_instance(val* self, val* p0, val* p1) {
8959 val* var /* : RuntimeVariable */;
8960 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/abstract_compiler.nit", 831);
8961 exit(1);
8962 RET_LABEL:;
8963 return var;
8964 }
8965 /* method abstract_compiler#AbstractCompilerVisitor#array_instance for (self: Object, Array[RuntimeVariable], MType): RuntimeVariable */
8966 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__array_instance(val* self, val* p0, val* p1) {
8967 val* var /* : RuntimeVariable */;
8968 val* var1 /* : RuntimeVariable */;
8969 var1 = abstract_compiler__AbstractCompilerVisitor__array_instance(self, p0, p1);
8970 var = var1;
8971 RET_LABEL:;
8972 return var;
8973 }
8974 /* method abstract_compiler#AbstractCompilerVisitor#vararg_instance for (self: AbstractCompilerVisitor, MPropDef, RuntimeVariable, Array[RuntimeVariable], MType): RuntimeVariable */
8975 val* abstract_compiler__AbstractCompilerVisitor__vararg_instance(val* self, val* p0, val* p1, val* p2, val* p3) {
8976 val* var /* : RuntimeVariable */;
8977 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/abstract_compiler.nit", 834);
8978 exit(1);
8979 RET_LABEL:;
8980 return var;
8981 }
8982 /* method abstract_compiler#AbstractCompilerVisitor#vararg_instance for (self: Object, MPropDef, RuntimeVariable, Array[RuntimeVariable], MType): RuntimeVariable */
8983 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__vararg_instance(val* self, val* p0, val* p1, val* p2, val* p3) {
8984 val* var /* : RuntimeVariable */;
8985 val* var1 /* : RuntimeVariable */;
8986 var1 = abstract_compiler__AbstractCompilerVisitor__vararg_instance(self, p0, p1, p2, p3);
8987 var = var1;
8988 RET_LABEL:;
8989 return var;
8990 }
8991 /* method abstract_compiler#AbstractCompilerVisitor#add for (self: AbstractCompilerVisitor, String) */
8992 void abstract_compiler__AbstractCompilerVisitor__add(val* self, val* p0) {
8993 val* var_s /* var s: String */;
8994 val* var /* : CodeWriter */;
8995 val* var1 /* : List[String] */;
8996 var_s = p0;
8997 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__writer]))(self) /* writer on <self:AbstractCompilerVisitor>*/;
8998 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_compiler__CodeWriter__lines]))(var) /* lines on <var:CodeWriter>*/;
8999 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var1, var_s) /* add on <var1:List[String]>*/;
9000 RET_LABEL:;
9001 }
9002 /* method abstract_compiler#AbstractCompilerVisitor#add for (self: Object, String) */
9003 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__add(val* self, val* p0) {
9004 abstract_compiler__AbstractCompilerVisitor__add(self, p0);
9005 RET_LABEL:;
9006 }
9007 /* method abstract_compiler#AbstractCompilerVisitor#add_decl for (self: AbstractCompilerVisitor, String) */
9008 void abstract_compiler__AbstractCompilerVisitor__add_decl(val* self, val* p0) {
9009 val* var_s /* var s: String */;
9010 val* var /* : CodeWriter */;
9011 val* var1 /* : List[String] */;
9012 var_s = p0;
9013 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__writer]))(self) /* writer on <self:AbstractCompilerVisitor>*/;
9014 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_compiler__CodeWriter__decl_lines]))(var) /* decl_lines on <var:CodeWriter>*/;
9015 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var1, var_s) /* add on <var1:List[String]>*/;
9016 RET_LABEL:;
9017 }
9018 /* method abstract_compiler#AbstractCompilerVisitor#add_decl for (self: Object, String) */
9019 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__add_decl(val* self, val* p0) {
9020 abstract_compiler__AbstractCompilerVisitor__add_decl(self, p0);
9021 RET_LABEL:;
9022 }
9023 /* method abstract_compiler#AbstractCompilerVisitor#require_declaration for (self: AbstractCompilerVisitor, String) */
9024 void abstract_compiler__AbstractCompilerVisitor__require_declaration(val* self, val* p0) {
9025 val* var_key /* var key: String */;
9026 val* var /* : CodeWriter */;
9027 val* var1 /* : CodeFile */;
9028 val* var2 /* : HashSet[String] */;
9029 var_key = p0;
9030 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__writer]))(self) /* writer on <self:AbstractCompilerVisitor>*/;
9031 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_compiler__CodeWriter__file]))(var) /* file on <var:CodeWriter>*/;
9032 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__CodeFile__required_declarations]))(var1) /* required_declarations on <var1:CodeFile>*/;
9033 ((void (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var2, var_key) /* add on <var2:HashSet[String]>*/;
9034 RET_LABEL:;
9035 }
9036 /* method abstract_compiler#AbstractCompilerVisitor#require_declaration for (self: Object, String) */
9037 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__require_declaration(val* self, val* p0) {
9038 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, p0);
9039 RET_LABEL:;
9040 }
9041 /* method abstract_compiler#AbstractCompilerVisitor#declare_once for (self: AbstractCompilerVisitor, String) */
9042 void abstract_compiler__AbstractCompilerVisitor__declare_once(val* self, val* p0) {
9043 val* var_s /* var s: String */;
9044 val* var /* : AbstractCompiler */;
9045 var_s = p0;
9046 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
9047 ((void (*)(val*, val*, val*))(var->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(var, var_s, var_s) /* provide_declaration on <var:AbstractCompiler>*/;
9048 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var_s) /* require_declaration on <self:AbstractCompilerVisitor>*/;
9049 RET_LABEL:;
9050 }
9051 /* method abstract_compiler#AbstractCompilerVisitor#declare_once for (self: Object, String) */
9052 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__declare_once(val* self, val* p0) {
9053 abstract_compiler__AbstractCompilerVisitor__declare_once(self, p0);
9054 RET_LABEL:;
9055 }
9056 /* method abstract_compiler#AbstractCompilerVisitor#add_extern for (self: AbstractCompilerVisitor, String) */
9057 void abstract_compiler__AbstractCompilerVisitor__add_extern(val* self, val* p0) {
9058 val* var_file /* var file: String */;
9059 static val* varonce;
9060 val* var /* : String */;
9061 char* var1 /* : NativeString */;
9062 long var2 /* : Int */;
9063 val* var3 /* : String */;
9064 val* var4 /* : String */;
9065 static val* varonce5;
9066 val* var6 /* : String */;
9067 char* var7 /* : NativeString */;
9068 long var8 /* : Int */;
9069 val* var9 /* : String */;
9070 val* var10 /* : String */;
9071 val* var_tryfile /* var tryfile: String */;
9072 short int var11 /* : Bool */;
9073 static val* varonce12;
9074 val* var13 /* : String */;
9075 char* var14 /* : NativeString */;
9076 long var15 /* : Int */;
9077 val* var16 /* : String */;
9078 static val* varonce17;
9079 val* var18 /* : String */;
9080 char* var19 /* : NativeString */;
9081 long var20 /* : Int */;
9082 val* var21 /* : String */;
9083 val* var22 /* : String */;
9084 static val* varonce23;
9085 val* var24 /* : String */;
9086 char* var25 /* : NativeString */;
9087 long var26 /* : Int */;
9088 val* var27 /* : String */;
9089 val* var28 /* : Array[Object] */;
9090 long var29 /* : Int */;
9091 val* var30 /* : NativeArray[Object] */;
9092 val* var31 /* : String */;
9093 static val* varonce32;
9094 val* var33 /* : String */;
9095 char* var34 /* : NativeString */;
9096 long var35 /* : Int */;
9097 val* var36 /* : String */;
9098 val* var37 /* : String */;
9099 short int var38 /* : Bool */;
9100 static val* varonce39;
9101 val* var40 /* : String */;
9102 char* var41 /* : NativeString */;
9103 long var42 /* : Int */;
9104 val* var43 /* : String */;
9105 static val* varonce44;
9106 val* var45 /* : String */;
9107 char* var46 /* : NativeString */;
9108 long var47 /* : Int */;
9109 val* var48 /* : String */;
9110 val* var49 /* : String */;
9111 static val* varonce50;
9112 val* var51 /* : String */;
9113 char* var52 /* : NativeString */;
9114 long var53 /* : Int */;
9115 val* var54 /* : String */;
9116 val* var55 /* : Array[Object] */;
9117 long var56 /* : Int */;
9118 val* var57 /* : NativeArray[Object] */;
9119 val* var58 /* : String */;
9120 val* var59 /* : AbstractCompiler */;
9121 val* var60 /* : ArraySet[String] */;
9122 short int var61 /* : Bool */;
9123 val* var62 /* : AbstractCompiler */;
9124 val* var63 /* : ArraySet[String] */;
9125 static val* varonce64;
9126 val* var65 /* : String */;
9127 char* var66 /* : NativeString */;
9128 long var67 /* : Int */;
9129 val* var68 /* : String */;
9130 val* var69 /* : String */;
9131 short int var70 /* : Bool */;
9132 short int var71 /* : Bool */;
9133 static val* varonce72;
9134 val* var73 /* : String */;
9135 char* var74 /* : NativeString */;
9136 long var75 /* : Int */;
9137 val* var76 /* : String */;
9138 val* var77 /* : String */;
9139 short int var78 /* : Bool */;
9140 short int var79 /* : Bool */;
9141 val* var80 /* : ExternCFile */;
9142 static val* varonce81;
9143 val* var82 /* : String */;
9144 char* var83 /* : NativeString */;
9145 long var84 /* : Int */;
9146 val* var85 /* : String */;
9147 val* var_f /* var f: ExternCFile */;
9148 val* var86 /* : AbstractCompiler */;
9149 val* var87 /* : Array[ExternCFile] */;
9150 var_file = p0;
9151 if (varonce) {
9152 var = varonce;
9153 } else {
9154 var1 = ".nit";
9155 var2 = 4;
9156 var3 = string__NativeString__to_s_with_length(var1, var2);
9157 var = var3;
9158 varonce = var;
9159 }
9160 var4 = ((val* (*)(val*, val*))(var_file->class->vft[COLOR_file__String__strip_extension]))(var_file, var) /* strip_extension on <var_file:String>*/;
9161 var_file = var4;
9162 if (varonce5) {
9163 var6 = varonce5;
9164 } else {
9165 var7 = ".nit.h";
9166 var8 = 6;
9167 var9 = string__NativeString__to_s_with_length(var7, var8);
9168 var6 = var9;
9169 varonce5 = var6;
9170 }
9171 var10 = ((val* (*)(val*, val*))(var_file->class->vft[COLOR_string__String___43d]))(var_file, var6) /* + on <var_file:String>*/;
9172 var_tryfile = var10;
9173 var11 = ((short int (*)(val*))(var_tryfile->class->vft[COLOR_file__String__file_exists]))(var_tryfile) /* file_exists on <var_tryfile:String>*/;
9174 if (var11){
9175 if (varonce12) {
9176 var13 = varonce12;
9177 } else {
9178 var14 = "#include \"";
9179 var15 = 10;
9180 var16 = string__NativeString__to_s_with_length(var14, var15);
9181 var13 = var16;
9182 varonce12 = var13;
9183 }
9184 if (varonce17) {
9185 var18 = varonce17;
9186 } else {
9187 var19 = "..";
9188 var20 = 2;
9189 var21 = string__NativeString__to_s_with_length(var19, var20);
9190 var18 = var21;
9191 varonce17 = var18;
9192 }
9193 var22 = ((val* (*)(val*, val*))(var18->class->vft[COLOR_file__String__join_path]))(var18, var_tryfile) /* join_path on <var18:String>*/;
9194 if (varonce23) {
9195 var24 = varonce23;
9196 } else {
9197 var25 = "\"";
9198 var26 = 1;
9199 var27 = string__NativeString__to_s_with_length(var25, var26);
9200 var24 = var27;
9201 varonce23 = var24;
9202 }
9203 var28 = NEW_array__Array(&type_array__Arraykernel__Object);
9204 { /* var28 = array_instance Array[Object] */
9205 var29 = 3;
9206 var30 = NEW_array__NativeArray(var29, &type_array__NativeArraykernel__Object);
9207 ((struct instance_array__NativeArray*)var30)->values[0] = (val*) var13;
9208 ((struct instance_array__NativeArray*)var30)->values[1] = (val*) var22;
9209 ((struct instance_array__NativeArray*)var30)->values[2] = (val*) var24;
9210 ((void (*)(val*, val*, long))(var28->class->vft[COLOR_array__Array__with_native]))(var28, var30, var29) /* with_native on <var28:Array[Object]>*/;
9211 CHECK_NEW_array__Array(var28);
9212 }
9213 var31 = ((val* (*)(val*))(var28->class->vft[COLOR_string__Object__to_s]))(var28) /* to_s on <var28:Array[Object]>*/;
9214 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__declare_once]))(self, var31) /* declare_once on <self:AbstractCompilerVisitor>*/;
9215 } else {
9216 }
9217 if (varonce32) {
9218 var33 = varonce32;
9219 } else {
9220 var34 = "_nit.h";
9221 var35 = 6;
9222 var36 = string__NativeString__to_s_with_length(var34, var35);
9223 var33 = var36;
9224 varonce32 = var33;
9225 }
9226 var37 = ((val* (*)(val*, val*))(var_file->class->vft[COLOR_string__String___43d]))(var_file, var33) /* + on <var_file:String>*/;
9227 var_tryfile = var37;
9228 var38 = ((short int (*)(val*))(var_tryfile->class->vft[COLOR_file__String__file_exists]))(var_tryfile) /* file_exists on <var_tryfile:String>*/;
9229 if (var38){
9230 if (varonce39) {
9231 var40 = varonce39;
9232 } else {
9233 var41 = "#include \"";
9234 var42 = 10;
9235 var43 = string__NativeString__to_s_with_length(var41, var42);
9236 var40 = var43;
9237 varonce39 = var40;
9238 }
9239 if (varonce44) {
9240 var45 = varonce44;
9241 } else {
9242 var46 = "..";
9243 var47 = 2;
9244 var48 = string__NativeString__to_s_with_length(var46, var47);
9245 var45 = var48;
9246 varonce44 = var45;
9247 }
9248 var49 = ((val* (*)(val*, val*))(var45->class->vft[COLOR_file__String__join_path]))(var45, var_tryfile) /* join_path on <var45:String>*/;
9249 if (varonce50) {
9250 var51 = varonce50;
9251 } else {
9252 var52 = "\"";
9253 var53 = 1;
9254 var54 = string__NativeString__to_s_with_length(var52, var53);
9255 var51 = var54;
9256 varonce50 = var51;
9257 }
9258 var55 = NEW_array__Array(&type_array__Arraykernel__Object);
9259 { /* var55 = array_instance Array[Object] */
9260 var56 = 3;
9261 var57 = NEW_array__NativeArray(var56, &type_array__NativeArraykernel__Object);
9262 ((struct instance_array__NativeArray*)var57)->values[0] = (val*) var40;
9263 ((struct instance_array__NativeArray*)var57)->values[1] = (val*) var49;
9264 ((struct instance_array__NativeArray*)var57)->values[2] = (val*) var51;
9265 ((void (*)(val*, val*, long))(var55->class->vft[COLOR_array__Array__with_native]))(var55, var57, var56) /* with_native on <var55:Array[Object]>*/;
9266 CHECK_NEW_array__Array(var55);
9267 }
9268 var58 = ((val* (*)(val*))(var55->class->vft[COLOR_string__Object__to_s]))(var55) /* to_s on <var55:Array[Object]>*/;
9269 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__declare_once]))(self, var58) /* declare_once on <self:AbstractCompilerVisitor>*/;
9270 } else {
9271 }
9272 var59 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
9273 var60 = ((val* (*)(val*))(var59->class->vft[COLOR_abstract_compiler__AbstractCompiler__seen_extern]))(var59) /* seen_extern on <var59:AbstractCompiler>*/;
9274 var61 = ((short int (*)(val*, val*))(var60->class->vft[COLOR_abstract_collection__Collection__has]))(var60, var_file) /* has on <var60:ArraySet[String]>*/;
9275 if (var61){
9276 goto RET_LABEL;
9277 } else {
9278 }
9279 var62 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
9280 var63 = ((val* (*)(val*))(var62->class->vft[COLOR_abstract_compiler__AbstractCompiler__seen_extern]))(var62) /* seen_extern on <var62:AbstractCompiler>*/;
9281 ((void (*)(val*, val*))(var63->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var63, var_file) /* add on <var63:ArraySet[String]>*/;
9282 if (varonce64) {
9283 var65 = varonce64;
9284 } else {
9285 var66 = ".nit.c";
9286 var67 = 6;
9287 var68 = string__NativeString__to_s_with_length(var66, var67);
9288 var65 = var68;
9289 varonce64 = var65;
9290 }
9291 var69 = ((val* (*)(val*, val*))(var_file->class->vft[COLOR_string__String___43d]))(var_file, var65) /* + on <var_file:String>*/;
9292 var_tryfile = var69;
9293 var70 = ((short int (*)(val*))(var_tryfile->class->vft[COLOR_file__String__file_exists]))(var_tryfile) /* file_exists on <var_tryfile:String>*/;
9294 var71 = !var70;
9295 if (var71){
9296 if (varonce72) {
9297 var73 = varonce72;
9298 } else {
9299 var74 = "_nit.c";
9300 var75 = 6;
9301 var76 = string__NativeString__to_s_with_length(var74, var75);
9302 var73 = var76;
9303 varonce72 = var73;
9304 }
9305 var77 = ((val* (*)(val*, val*))(var_file->class->vft[COLOR_string__String___43d]))(var_file, var73) /* + on <var_file:String>*/;
9306 var_tryfile = var77;
9307 var78 = ((short int (*)(val*))(var_tryfile->class->vft[COLOR_file__String__file_exists]))(var_tryfile) /* file_exists on <var_tryfile:String>*/;
9308 var79 = !var78;
9309 if (var79){
9310 goto RET_LABEL;
9311 } else {
9312 }
9313 } else {
9314 }
9315 var80 = NEW_abstract_compiler__ExternCFile(&type_abstract_compiler__ExternCFile);
9316 if (varonce81) {
9317 var82 = varonce81;
9318 } else {
9319 var83 = "";
9320 var84 = 0;
9321 var85 = string__NativeString__to_s_with_length(var83, var84);
9322 var82 = var85;
9323 varonce81 = var82;
9324 }
9325 ((void (*)(val*, val*, val*))(var80->class->vft[COLOR_abstract_compiler__ExternCFile__init]))(var80, var_tryfile, var82) /* init on <var80:ExternCFile>*/;
9326 CHECK_NEW_abstract_compiler__ExternCFile(var80);
9327 var_f = var80;
9328 var86 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
9329 var87 = ((val* (*)(val*))(var86->class->vft[COLOR_abstract_compiler__AbstractCompiler__extern_bodies]))(var86) /* extern_bodies on <var86:AbstractCompiler>*/;
9330 ((void (*)(val*, val*))(var87->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var87, var_f) /* add on <var87:Array[ExternCFile]>*/;
9331 RET_LABEL:;
9332 }
9333 /* method abstract_compiler#AbstractCompilerVisitor#add_extern for (self: Object, String) */
9334 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__add_extern(val* self, val* p0) {
9335 abstract_compiler__AbstractCompilerVisitor__add_extern(self, p0);
9336 RET_LABEL:;
9337 }
9338 /* method abstract_compiler#AbstractCompilerVisitor#new_expr for (self: AbstractCompilerVisitor, String, MType): RuntimeVariable */
9339 val* abstract_compiler__AbstractCompilerVisitor__new_expr(val* self, val* p0, val* p1) {
9340 val* var /* : RuntimeVariable */;
9341 val* var_cexpr /* var cexpr: String */;
9342 val* var_mtype /* var mtype: MType */;
9343 val* var1 /* : RuntimeVariable */;
9344 val* var_res /* var res: RuntimeVariable */;
9345 static val* varonce;
9346 val* var2 /* : String */;
9347 char* var3 /* : NativeString */;
9348 long var4 /* : Int */;
9349 val* var5 /* : String */;
9350 static val* varonce6;
9351 val* var7 /* : String */;
9352 char* var8 /* : NativeString */;
9353 long var9 /* : Int */;
9354 val* var10 /* : String */;
9355 val* var11 /* : Array[Object] */;
9356 long var12 /* : Int */;
9357 val* var13 /* : NativeArray[Object] */;
9358 val* var14 /* : String */;
9359 var_cexpr = p0;
9360 var_mtype = p1;
9361 var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_mtype) /* new_var on <self:AbstractCompilerVisitor>*/;
9362 var_res = var1;
9363 if (varonce) {
9364 var2 = varonce;
9365 } else {
9366 var3 = " = ";
9367 var4 = 3;
9368 var5 = string__NativeString__to_s_with_length(var3, var4);
9369 var2 = var5;
9370 varonce = var2;
9371 }
9372 if (varonce6) {
9373 var7 = varonce6;
9374 } else {
9375 var8 = ";";
9376 var9 = 1;
9377 var10 = string__NativeString__to_s_with_length(var8, var9);
9378 var7 = var10;
9379 varonce6 = var7;
9380 }
9381 var11 = NEW_array__Array(&type_array__Arraykernel__Object);
9382 { /* var11 = array_instance Array[Object] */
9383 var12 = 4;
9384 var13 = NEW_array__NativeArray(var12, &type_array__NativeArraykernel__Object);
9385 ((struct instance_array__NativeArray*)var13)->values[0] = (val*) var_res;
9386 ((struct instance_array__NativeArray*)var13)->values[1] = (val*) var2;
9387 ((struct instance_array__NativeArray*)var13)->values[2] = (val*) var_cexpr;
9388 ((struct instance_array__NativeArray*)var13)->values[3] = (val*) var7;
9389 ((void (*)(val*, val*, long))(var11->class->vft[COLOR_array__Array__with_native]))(var11, var13, var12) /* with_native on <var11:Array[Object]>*/;
9390 CHECK_NEW_array__Array(var11);
9391 }
9392 var14 = ((val* (*)(val*))(var11->class->vft[COLOR_string__Object__to_s]))(var11) /* to_s on <var11:Array[Object]>*/;
9393 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var14) /* add on <self:AbstractCompilerVisitor>*/;
9394 var = var_res;
9395 goto RET_LABEL;
9396 RET_LABEL:;
9397 return var;
9398 }
9399 /* method abstract_compiler#AbstractCompilerVisitor#new_expr for (self: Object, String, MType): RuntimeVariable */
9400 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__new_expr(val* self, val* p0, val* p1) {
9401 val* var /* : RuntimeVariable */;
9402 val* var1 /* : RuntimeVariable */;
9403 var1 = abstract_compiler__AbstractCompilerVisitor__new_expr(self, p0, p1);
9404 var = var1;
9405 RET_LABEL:;
9406 return var;
9407 }
9408 /* method abstract_compiler#AbstractCompilerVisitor#add_abort for (self: AbstractCompilerVisitor, String) */
9409 void abstract_compiler__AbstractCompilerVisitor__add_abort(val* self, val* p0) {
9410 val* var_message /* var message: String */;
9411 short int var /* : Bool */;
9412 val* var1 /* : nullable ANode */;
9413 val* var2 /* : null */;
9414 short int var3 /* : Bool */;
9415 short int var_ /* var : Bool */;
9416 val* var4 /* : nullable ANode */;
9417 val* var5 /* : Location */;
9418 val* var6 /* : nullable SourceFile */;
9419 val* var7 /* : null */;
9420 short int var8 /* : Bool */;
9421 static val* varonce;
9422 val* var9 /* : String */;
9423 char* var10 /* : NativeString */;
9424 long var11 /* : Int */;
9425 val* var12 /* : String */;
9426 val* var13 /* : String */;
9427 static val* varonce14;
9428 val* var15 /* : String */;
9429 char* var16 /* : NativeString */;
9430 long var17 /* : Int */;
9431 val* var18 /* : String */;
9432 val* var19 /* : nullable ANode */;
9433 val* var20 /* : Location */;
9434 val* var21 /* : nullable SourceFile */;
9435 val* var22 /* : String */;
9436 val* var23 /* : String */;
9437 static val* varonce24;
9438 val* var25 /* : String */;
9439 char* var26 /* : NativeString */;
9440 long var27 /* : Int */;
9441 val* var28 /* : String */;
9442 val* var29 /* : nullable ANode */;
9443 val* var30 /* : Location */;
9444 long var31 /* : Int */;
9445 static val* varonce32;
9446 val* var33 /* : String */;
9447 char* var34 /* : NativeString */;
9448 long var35 /* : Int */;
9449 val* var36 /* : String */;
9450 val* var37 /* : Array[Object] */;
9451 long var38 /* : Int */;
9452 val* var39 /* : NativeArray[Object] */;
9453 val* var40 /* : Object */;
9454 val* var41 /* : String */;
9455 static val* varonce42;
9456 val* var43 /* : String */;
9457 char* var44 /* : NativeString */;
9458 long var45 /* : Int */;
9459 val* var46 /* : String */;
9460 val* var47 /* : String */;
9461 static val* varonce48;
9462 val* var49 /* : String */;
9463 char* var50 /* : NativeString */;
9464 long var51 /* : Int */;
9465 val* var52 /* : String */;
9466 val* var53 /* : Array[Object] */;
9467 long var54 /* : Int */;
9468 val* var55 /* : NativeArray[Object] */;
9469 val* var56 /* : String */;
9470 static val* varonce57;
9471 val* var58 /* : String */;
9472 char* var59 /* : NativeString */;
9473 long var60 /* : Int */;
9474 val* var61 /* : String */;
9475 var_message = p0;
9476 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node]))(self) /* current_node on <self:AbstractCompilerVisitor>*/;
9477 var2 = NULL;
9478 if (var1 == NULL) {
9479 var3 = 0; /* is null */
9480 } else {
9481 var3 = 1; /* arg is null and recv is not */
9482 }
9483 var_ = var3;
9484 if (var3){
9485 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node]))(self) /* current_node on <self:AbstractCompilerVisitor>*/;
9486 if (var4 == NULL) {
9487 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/abstract_compiler.nit", 897);
9488 exit(1);
9489 } else {
9490 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_parser_nodes__ANode__location]))(var4) /* location on <var4:nullable ANode>*/;
9491 }
9492 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_location__Location__file]))(var5) /* file on <var5:Location>*/;
9493 var7 = NULL;
9494 if (var6 == NULL) {
9495 var8 = 0; /* is null */
9496 } else {
9497 var8 = 1; /* arg is null and recv is not */
9498 }
9499 var = var8;
9500 } else {
9501 var = var_;
9502 }
9503 if (var){
9504 if (varonce) {
9505 var9 = varonce;
9506 } else {
9507 var10 = "fprintf(stderr, \"Runtime error: %s (%s:%d)\\n\", \"";
9508 var11 = 48;
9509 var12 = string__NativeString__to_s_with_length(var10, var11);
9510 var9 = var12;
9511 varonce = var9;
9512 }
9513 var13 = ((val* (*)(val*))(var_message->class->vft[COLOR_string__AbstractString__escape_to_c]))(var_message) /* escape_to_c on <var_message:String>*/;
9514 if (varonce14) {
9515 var15 = varonce14;
9516 } else {
9517 var16 = "\", \"";
9518 var17 = 4;
9519 var18 = string__NativeString__to_s_with_length(var16, var17);
9520 var15 = var18;
9521 varonce14 = var15;
9522 }
9523 var19 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node]))(self) /* current_node on <self:AbstractCompilerVisitor>*/;
9524 if (var19 == NULL) {
9525 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/abstract_compiler.nit", 898);
9526 exit(1);
9527 } else {
9528 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_parser_nodes__ANode__location]))(var19) /* location on <var19:nullable ANode>*/;
9529 }
9530 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_location__Location__file]))(var20) /* file on <var20:Location>*/;
9531 if (var21 == NULL) {
9532 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/abstract_compiler.nit", 898);
9533 exit(1);
9534 } else {
9535 var22 = ((val* (*)(val*))(var21->class->vft[COLOR_location__SourceFile__filename]))(var21) /* filename on <var21:nullable SourceFile>*/;
9536 }
9537 var23 = ((val* (*)(val*))(var22->class->vft[COLOR_string__AbstractString__escape_to_c]))(var22) /* escape_to_c on <var22:String>*/;
9538 if (varonce24) {
9539 var25 = varonce24;
9540 } else {
9541 var26 = "\", ";
9542 var27 = 3;
9543 var28 = string__NativeString__to_s_with_length(var26, var27);
9544 var25 = var28;
9545 varonce24 = var25;
9546 }
9547 var29 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node]))(self) /* current_node on <self:AbstractCompilerVisitor>*/;
9548 if (var29 == NULL) {
9549 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/abstract_compiler.nit", 898);
9550 exit(1);
9551 } else {
9552 var30 = ((val* (*)(val*))(var29->class->vft[COLOR_parser_nodes__ANode__location]))(var29) /* location on <var29:nullable ANode>*/;
9553 }
9554 var31 = ((long (*)(val*))(var30->class->vft[COLOR_location__Location__line_start]))(var30) /* line_start on <var30:Location>*/;
9555 if (varonce32) {
9556 var33 = varonce32;
9557 } else {
9558 var34 = ");";
9559 var35 = 2;
9560 var36 = string__NativeString__to_s_with_length(var34, var35);
9561 var33 = var36;
9562 varonce32 = var33;
9563 }
9564 var37 = NEW_array__Array(&type_array__Arraykernel__Object);
9565 { /* var37 = array_instance Array[Object] */
9566 var38 = 7;
9567 var39 = NEW_array__NativeArray(var38, &type_array__NativeArraykernel__Object);
9568 ((struct instance_array__NativeArray*)var39)->values[0] = (val*) var9;
9569 ((struct instance_array__NativeArray*)var39)->values[1] = (val*) var13;
9570 ((struct instance_array__NativeArray*)var39)->values[2] = (val*) var15;
9571 ((struct instance_array__NativeArray*)var39)->values[3] = (val*) var23;
9572 ((struct instance_array__NativeArray*)var39)->values[4] = (val*) var25;
9573 var40 = BOX_kernel__Int(var31); /* autobox from Int to Object */
9574 ((struct instance_array__NativeArray*)var39)->values[5] = (val*) var40;
9575 ((struct instance_array__NativeArray*)var39)->values[6] = (val*) var33;
9576 ((void (*)(val*, val*, long))(var37->class->vft[COLOR_array__Array__with_native]))(var37, var39, var38) /* with_native on <var37:Array[Object]>*/;
9577 CHECK_NEW_array__Array(var37);
9578 }
9579 var41 = ((val* (*)(val*))(var37->class->vft[COLOR_string__Object__to_s]))(var37) /* to_s on <var37:Array[Object]>*/;
9580 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var41) /* add on <self:AbstractCompilerVisitor>*/;
9581 } else {
9582 if (varonce42) {
9583 var43 = varonce42;
9584 } else {
9585 var44 = "fprintf(stderr, \"Runtime error: %s\\n\", \"";
9586 var45 = 40;
9587 var46 = string__NativeString__to_s_with_length(var44, var45);
9588 var43 = var46;
9589 varonce42 = var43;
9590 }
9591 var47 = ((val* (*)(val*))(var_message->class->vft[COLOR_string__AbstractString__escape_to_c]))(var_message) /* escape_to_c on <var_message:String>*/;
9592 if (varonce48) {
9593 var49 = varonce48;
9594 } else {
9595 var50 = "\");";
9596 var51 = 3;
9597 var52 = string__NativeString__to_s_with_length(var50, var51);
9598 var49 = var52;
9599 varonce48 = var49;
9600 }
9601 var53 = NEW_array__Array(&type_array__Arraykernel__Object);
9602 { /* var53 = array_instance Array[Object] */
9603 var54 = 3;
9604 var55 = NEW_array__NativeArray(var54, &type_array__NativeArraykernel__Object);
9605 ((struct instance_array__NativeArray*)var55)->values[0] = (val*) var43;
9606 ((struct instance_array__NativeArray*)var55)->values[1] = (val*) var47;
9607 ((struct instance_array__NativeArray*)var55)->values[2] = (val*) var49;
9608 ((void (*)(val*, val*, long))(var53->class->vft[COLOR_array__Array__with_native]))(var53, var55, var54) /* with_native on <var53:Array[Object]>*/;
9609 CHECK_NEW_array__Array(var53);
9610 }
9611 var56 = ((val* (*)(val*))(var53->class->vft[COLOR_string__Object__to_s]))(var53) /* to_s on <var53:Array[Object]>*/;
9612 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var56) /* add on <self:AbstractCompilerVisitor>*/;
9613 }
9614 if (varonce57) {
9615 var58 = varonce57;
9616 } else {
9617 var59 = "exit(1);";
9618 var60 = 8;
9619 var61 = string__NativeString__to_s_with_length(var59, var60);
9620 var58 = var61;
9621 varonce57 = var58;
9622 }
9623 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var58) /* add on <self:AbstractCompilerVisitor>*/;
9624 RET_LABEL:;
9625 }
9626 /* method abstract_compiler#AbstractCompilerVisitor#add_abort for (self: Object, String) */
9627 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__add_abort(val* self, val* p0) {
9628 abstract_compiler__AbstractCompilerVisitor__add_abort(self, p0);
9629 RET_LABEL:;
9630 }
9631 /* method abstract_compiler#AbstractCompilerVisitor#ret for (self: AbstractCompilerVisitor, RuntimeVariable) */
9632 void abstract_compiler__AbstractCompilerVisitor__ret(val* self, val* p0) {
9633 val* var_s /* var s: RuntimeVariable */;
9634 val* var /* : nullable Frame */;
9635 val* var1 /* : nullable RuntimeVariable */;
9636 static val* varonce;
9637 val* var2 /* : String */;
9638 char* var3 /* : NativeString */;
9639 long var4 /* : Int */;
9640 val* var5 /* : String */;
9641 val* var6 /* : nullable Frame */;
9642 val* var7 /* : nullable String */;
9643 static val* varonce8;
9644 val* var9 /* : String */;
9645 char* var10 /* : NativeString */;
9646 long var11 /* : Int */;
9647 val* var12 /* : String */;
9648 val* var13 /* : Array[Object] */;
9649 long var14 /* : Int */;
9650 val* var15 /* : NativeArray[Object] */;
9651 val* var16 /* : String */;
9652 var_s = p0;
9653 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:AbstractCompilerVisitor>*/;
9654 if (var == NULL) {
9655 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/abstract_compiler.nit", 908);
9656 exit(1);
9657 } else {
9658 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_compiler__Frame__returnvar]))(var) /* returnvar on <var:nullable Frame>*/;
9659 }
9660 if (var1 == NULL) {
9661 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 908);
9662 exit(1);
9663 }
9664 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__assign]))(self, var1, var_s) /* assign on <self:AbstractCompilerVisitor>*/;
9665 if (varonce) {
9666 var2 = varonce;
9667 } else {
9668 var3 = "goto ";
9669 var4 = 5;
9670 var5 = string__NativeString__to_s_with_length(var3, var4);
9671 var2 = var5;
9672 varonce = var2;
9673 }
9674 var6 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:AbstractCompilerVisitor>*/;
9675 if (var6 == NULL) {
9676 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/abstract_compiler.nit", 909);
9677 exit(1);
9678 } else {
9679 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_compiler__Frame__returnlabel]))(var6) /* returnlabel on <var6:nullable Frame>*/;
9680 }
9681 if (var7 == NULL) {
9682 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 909);
9683 exit(1);
9684 }
9685 if (varonce8) {
9686 var9 = varonce8;
9687 } else {
9688 var10 = ";";
9689 var11 = 1;
9690 var12 = string__NativeString__to_s_with_length(var10, var11);
9691 var9 = var12;
9692 varonce8 = var9;
9693 }
9694 var13 = NEW_array__Array(&type_array__Arraykernel__Object);
9695 { /* var13 = array_instance Array[Object] */
9696 var14 = 3;
9697 var15 = NEW_array__NativeArray(var14, &type_array__NativeArraykernel__Object);
9698 ((struct instance_array__NativeArray*)var15)->values[0] = (val*) var2;
9699 ((struct instance_array__NativeArray*)var15)->values[1] = (val*) var7;
9700 ((struct instance_array__NativeArray*)var15)->values[2] = (val*) var9;
9701 ((void (*)(val*, val*, long))(var13->class->vft[COLOR_array__Array__with_native]))(var13, var15, var14) /* with_native on <var13:Array[Object]>*/;
9702 CHECK_NEW_array__Array(var13);
9703 }
9704 var16 = ((val* (*)(val*))(var13->class->vft[COLOR_string__Object__to_s]))(var13) /* to_s on <var13:Array[Object]>*/;
9705 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var16) /* add on <self:AbstractCompilerVisitor>*/;
9706 RET_LABEL:;
9707 }
9708 /* method abstract_compiler#AbstractCompilerVisitor#ret for (self: Object, RuntimeVariable) */
9709 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__ret(val* self, val* p0) {
9710 abstract_compiler__AbstractCompilerVisitor__ret(self, p0);
9711 RET_LABEL:;
9712 }
9713 /* method abstract_compiler#AbstractCompilerVisitor#stmt for (self: AbstractCompilerVisitor, nullable AExpr) */
9714 void abstract_compiler__AbstractCompilerVisitor__stmt(val* self, val* p0) {
9715 val* var_nexpr /* var nexpr: nullable AExpr */;
9716 val* var /* : null */;
9717 short int var1 /* : Bool */;
9718 val* var2 /* : nullable ANode */;
9719 val* var_old /* var old: nullable ANode */;
9720 var_nexpr = p0;
9721 var = NULL;
9722 if (var_nexpr == NULL) {
9723 var1 = 1; /* is null */
9724 } else {
9725 var1 = 0; /* arg is null but recv is not */
9726 }
9727 if (var1){
9728 goto RET_LABEL;
9729 } else {
9730 }
9731 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node]))(self) /* current_node on <self:AbstractCompilerVisitor>*/;
9732 var_old = var2;
9733 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node_61d]))(self, var_nexpr) /* current_node= on <self:AbstractCompilerVisitor>*/;
9734 ((void (*)(val*, val*))(var_nexpr->class->vft[COLOR_abstract_compiler__AExpr__stmt]))(var_nexpr, self) /* stmt on <var_nexpr:nullable AExpr(AExpr)>*/;
9735 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node_61d]))(self, var_old) /* current_node= on <self:AbstractCompilerVisitor>*/;
9736 RET_LABEL:;
9737 }
9738 /* method abstract_compiler#AbstractCompilerVisitor#stmt for (self: Object, nullable AExpr) */
9739 void VIRTUAL_abstract_compiler__AbstractCompilerVisitor__stmt(val* self, val* p0) {
9740 abstract_compiler__AbstractCompilerVisitor__stmt(self, p0);
9741 RET_LABEL:;
9742 }
9743 /* method abstract_compiler#AbstractCompilerVisitor#expr for (self: AbstractCompilerVisitor, AExpr, nullable MType): RuntimeVariable */
9744 val* abstract_compiler__AbstractCompilerVisitor__expr(val* self, val* p0, val* p1) {
9745 val* var /* : RuntimeVariable */;
9746 val* var_nexpr /* var nexpr: AExpr */;
9747 val* var_mtype /* var mtype: nullable MType */;
9748 val* var1 /* : nullable ANode */;
9749 val* var_old /* var old: nullable ANode */;
9750 val* var2 /* : nullable RuntimeVariable */;
9751 val* var_res /* var res: RuntimeVariable */;
9752 val* var3 /* : null */;
9753 short int var4 /* : Bool */;
9754 val* var5 /* : MType */;
9755 val* var6 /* : RuntimeVariable */;
9756 val* var7 /* : nullable MType */;
9757 val* var8 /* : RuntimeVariable */;
9758 val* var9 /* : nullable MType */;
9759 val* var_implicit_cast_to /* var implicit_cast_to: nullable MType */;
9760 short int var10 /* : Bool */;
9761 val* var11 /* : null */;
9762 short int var12 /* : Bool */;
9763 short int var_ /* var : Bool */;
9764 val* var13 /* : AbstractCompiler */;
9765 val* var14 /* : ModelBuilder */;
9766 val* var15 /* : ToolContext */;
9767 val* var16 /* : OptionBool */;
9768 val* var17 /* : nullable Object */;
9769 short int var18 /* : Bool */;
9770 short int var19 /* : Bool */;
9771 static val* varonce;
9772 val* var20 /* : String */;
9773 char* var21 /* : NativeString */;
9774 long var22 /* : Int */;
9775 val* var23 /* : String */;
9776 val* var24 /* : RuntimeVariable */;
9777 val* var_castres /* var castres: RuntimeVariable */;
9778 static val* varonce25;
9779 val* var26 /* : String */;
9780 char* var27 /* : NativeString */;
9781 long var28 /* : Int */;
9782 val* var29 /* : String */;
9783 static val* varonce30;
9784 val* var31 /* : String */;
9785 char* var32 /* : NativeString */;
9786 long var33 /* : Int */;
9787 val* var34 /* : String */;
9788 val* var35 /* : Array[Object] */;
9789 long var36 /* : Int */;
9790 val* var37 /* : NativeArray[Object] */;
9791 val* var38 /* : String */;
9792 static val* varonce39;
9793 val* var40 /* : String */;
9794 char* var41 /* : NativeString */;
9795 long var42 /* : Int */;
9796 val* var43 /* : String */;
9797 static val* varonce44;
9798 val* var45 /* : String */;
9799 char* var46 /* : NativeString */;
9800 long var47 /* : Int */;
9801 val* var48 /* : String */;
9802 val* var49 /* : RuntimeVariable */;
9803 var_nexpr = p0;
9804 var_mtype = p1;
9805 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node]))(self) /* current_node on <self:AbstractCompilerVisitor>*/;
9806 var_old = var1;
9807 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node_61d]))(self, var_nexpr) /* current_node= on <self:AbstractCompilerVisitor>*/;
9808 var2 = ((val* (*)(val*, val*))(var_nexpr->class->vft[COLOR_abstract_compiler__AExpr__expr]))(var_nexpr, self) /* expr on <var_nexpr:AExpr>*/;
9809 if (var2 == NULL) {
9810 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 928);
9811 exit(1);
9812 }
9813 var_res = var2;
9814 var3 = NULL;
9815 if (var_mtype == NULL) {
9816 var4 = 0; /* is null */
9817 } else {
9818 var4 = 1; /* arg is null and recv is not */
9819 }
9820 if (var4){
9821 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__anchor]))(self, var_mtype) /* anchor on <self:AbstractCompilerVisitor>*/;
9822 var_mtype = var5;
9823 var6 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var_res, var_mtype) /* autobox on <self:AbstractCompilerVisitor>*/;
9824 var_res = var6;
9825 } else {
9826 }
9827 var7 = ((val* (*)(val*))(var_nexpr->class->vft[COLOR_typing__AExpr__mtype]))(var_nexpr) /* mtype on <var_nexpr:AExpr>*/;
9828 if (var7 == NULL) {
9829 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/abstract_compiler.nit", 933);
9830 exit(1);
9831 }
9832 var8 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autoadapt]))(self, var_res, var7) /* autoadapt on <self:AbstractCompilerVisitor>*/;
9833 var_res = var8;
9834 var9 = ((val* (*)(val*))(var_nexpr->class->vft[COLOR_typing__AExpr__implicit_cast_to]))(var_nexpr) /* implicit_cast_to on <var_nexpr:AExpr>*/;
9835 var_implicit_cast_to = var9;
9836 var11 = NULL;
9837 if (var_implicit_cast_to == NULL) {
9838 var12 = 0; /* is null */
9839 } else {
9840 var12 = 1; /* arg is null and recv is not */
9841 }
9842 var_ = var12;
9843 if (var12){
9844 var13 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:AbstractCompilerVisitor>*/;
9845 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var13) /* modelbuilder on <var13:AbstractCompiler>*/;
9846 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var14) /* toolcontext on <var14:ModelBuilder>*/;
9847 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_autocast]))(var15) /* opt_no_check_autocast on <var15:ToolContext>*/;
9848 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_opts__Option__value]))(var16) /* value on <var16:OptionBool>*/;
9849 var18 = ((struct instance_kernel__Bool*)var17)->value; /* autounbox from nullable Object to Bool */;
9850 var19 = !var18;
9851 var10 = var19;
9852 } else {
9853 var10 = var_;
9854 }
9855 if (var10){
9856 if (varonce) {
9857 var20 = varonce;
9858 } else {
9859 var21 = "auto";
9860 var22 = 4;
9861 var23 = string__NativeString__to_s_with_length(var21, var22);
9862 var20 = var23;
9863 varonce = var20;
9864 }
9865 var24 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__type_test]))(self, var_res, var_implicit_cast_to, var20) /* type_test on <self:AbstractCompilerVisitor>*/;
9866 var_castres = var24;
9867 if (varonce25) {
9868 var26 = varonce25;
9869 } else {
9870 var27 = "if (!";
9871 var28 = 5;
9872 var29 = string__NativeString__to_s_with_length(var27, var28);
9873 var26 = var29;
9874 varonce25 = var26;
9875 }
9876 if (varonce30) {
9877 var31 = varonce30;
9878 } else {
9879 var32 = ") {";
9880 var33 = 3;
9881 var34 = string__NativeString__to_s_with_length(var32, var33);
9882 var31 = var34;
9883 varonce30 = var31;
9884 }
9885 var35 = NEW_array__Array(&type_array__Arraykernel__Object);
9886 { /* var35 = array_instance Array[Object] */
9887 var36 = 3;
9888 var37 = NEW_array__NativeArray(var36, &type_array__NativeArraykernel__Object);
9889 ((struct instance_array__NativeArray*)var37)->values[0] = (val*) var26;
9890 ((struct instance_array__NativeArray*)var37)->values[1] = (val*) var_castres;
9891 ((struct instance_array__NativeArray*)var37)->values[2] = (val*) var31;
9892 ((void (*)(val*, val*, long))(var35->class->vft[COLOR_array__Array__with_native]))(var35, var37, var36) /* with_native on <var35:Array[Object]>*/;
9893 CHECK_NEW_array__Array(var35);
9894 }
9895 var38 = ((val* (*)(val*))(var35->class->vft[COLOR_string__Object__to_s]))(var35) /* to_s on <var35:Array[Object]>*/;
9896 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var38) /* add on <self:AbstractCompilerVisitor>*/;
9897 if (varonce39) {
9898 var40 = varonce39;
9899 } else {
9900 var41 = "Cast failed";
9901 var42 = 11;
9902 var43 = string__NativeString__to_s_with_length(var41, var42);
9903 var40 = var43;
9904 varonce39 = var40;
9905 }
9906 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(self, var40) /* add_abort on <self:AbstractCompilerVisitor>*/;
9907 if (varonce44) {
9908 var45 = varonce44;
9909 } else {
9910 var46 = "}";
9911 var47 = 1;
9912 var48 = string__NativeString__to_s_with_length(var46, var47);
9913 var45 = var48;
9914 varonce44 = var45;
9915 }
9916 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var45) /* add on <self:AbstractCompilerVisitor>*/;
9917 var49 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autoadapt]))(self, var_res, var_implicit_cast_to) /* autoadapt on <self:AbstractCompilerVisitor>*/;
9918 var_res = var49;
9919 } else {
9920 }
9921 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__current_node_61d]))(self, var_old) /* current_node= on <self:AbstractCompilerVisitor>*/;
9922 var = var_res;
9923 goto RET_LABEL;
9924 RET_LABEL:;
9925 return var;
9926 }
9927 /* method abstract_compiler#AbstractCompilerVisitor#expr for (self: Object, AExpr, nullable MType): RuntimeVariable */
9928 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__expr(val* self, val* p0, val* p1) {
9929 val* var /* : RuntimeVariable */;
9930 val* var1 /* : RuntimeVariable */;
9931 var1 = abstract_compiler__AbstractCompilerVisitor__expr(self, p0, p1);
9932 var = var1;
9933 RET_LABEL:;
9934 return var;
9935 }
9936 /* method abstract_compiler#AbstractCompilerVisitor#expr_bool for (self: AbstractCompilerVisitor, AExpr): RuntimeVariable */
9937 val* abstract_compiler__AbstractCompilerVisitor__expr_bool(val* self, val* p0) {
9938 val* var /* : RuntimeVariable */;
9939 val* var_nexpr /* var nexpr: AExpr */;
9940 val* var1 /* : MClassType */;
9941 val* var2 /* : RuntimeVariable */;
9942 var_nexpr = p0;
9943 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__bool_type]))(self) /* bool_type on <self:AbstractCompilerVisitor>*/;
9944 var2 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__expr]))(self, var_nexpr, var1) /* expr on <self:AbstractCompilerVisitor>*/;
9945 var = var2;
9946 goto RET_LABEL;
9947 RET_LABEL:;
9948 return var;
9949 }
9950 /* method abstract_compiler#AbstractCompilerVisitor#expr_bool for (self: Object, AExpr): RuntimeVariable */
9951 val* VIRTUAL_abstract_compiler__AbstractCompilerVisitor__expr_bool(val* self, val* p0) {
9952 val* var /* : RuntimeVariable */;
9953 val* var1 /* : RuntimeVariable */;
9954 var1 = abstract_compiler__AbstractCompilerVisitor__expr_bool(self, p0);
9955 var = var1;
9956 RET_LABEL:;
9957 return var;
9958 }