README: document nit_env.sh
[nit.git] / c_src / nit__light.sep.1.c
1 #include "nit__light.sep.0.h"
2 /* method light#MModule#nitni_ccu for (self: MModule): nullable CCompilationUnit */
3 val* nit__light___MModule___nitni_ccu(val* self) {
4 val* var /* : nullable CCompilationUnit */;
5 val* var1 /* : nullable CCompilationUnit */;
6 var1 = self->attrs[COLOR_nit__light__MModule___nitni_ccu].val; /* _nitni_ccu on <self:MModule> */
7 var = var1;
8 RET_LABEL:;
9 return var;
10 }
11 /* method light#MModule#nitni_ccu= for (self: MModule, nullable CCompilationUnit) */
12 void nit__light___MModule___nitni_ccu_61d(val* self, val* p0) {
13 self->attrs[COLOR_nit__light__MModule___nitni_ccu].val = p0; /* _nitni_ccu on <self:MModule> */
14 RET_LABEL:;
15 }
16 /* method light#MModule#nmodule for (self: MModule, AbstractCompilerVisitor): nullable AModule */
17 val* nit__light___MModule___nmodule(val* self, val* p0) {
18 val* var /* : nullable AModule */;
19 val* var_v /* var v: AbstractCompilerVisitor */;
20 val* var1 /* : AbstractCompiler */;
21 val* var3 /* : AbstractCompiler */;
22 val* var4 /* : ModelBuilder */;
23 val* var6 /* : ModelBuilder */;
24 val* var7 /* : nullable AModule */;
25 var_v = p0;
26 {
27 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
28 var3 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
29 if (unlikely(var3 == NULL)) {
30 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
31 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
32 fatal_exit(1);
33 }
34 var1 = var3;
35 RET_LABEL2:(void)0;
36 }
37 }
38 {
39 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var1) on <var1:AbstractCompiler> */
40 var6 = var1->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var1:AbstractCompiler> */
41 if (unlikely(var6 == NULL)) {
42 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
43 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
44 fatal_exit(1);
45 }
46 var4 = var6;
47 RET_LABEL5:(void)0;
48 }
49 }
50 {
51 var7 = nit__loader___ModelBuilder___mmodule2node(var4, self);
52 }
53 var = var7;
54 goto RET_LABEL;
55 RET_LABEL:;
56 return var;
57 }
58 /* method light#MModule#finalize_ffi for (self: MModule, AbstractCompiler) */
59 void nit__light___MModule___finalize_ffi(val* self, val* p0) {
60 val* var_compiler /* var compiler: AbstractCompiler */;
61 short int var /* : Bool */;
62 short int var2 /* : Bool */;
63 short int var3 /* : Bool */;
64 val* var4 /* : AbstractCompilerVisitor */;
65 val* var_v /* var v: AbstractCompilerVisitor */;
66 val* var5 /* : nullable AModule */;
67 val* var_n /* var n: nullable AModule */;
68 short int var6 /* : Bool */;
69 short int var7 /* : Bool */;
70 val* var_other /* var other: nullable Object */;
71 short int var9 /* : Bool */;
72 short int var11 /* : Bool */;
73 val* var12 /* : AbstractCompiler */;
74 val* var14 /* : AbstractCompiler */;
75 val* var15 /* : Toolchain */;
76 val* var17 /* : Toolchain */;
77 val* var18 /* : String */;
78 val* var19 /* : AbstractCompiler */;
79 val* var21 /* : AbstractCompiler */;
80 val* var22 /* : MModule */;
81 val* var24 /* : MModule */;
82 val* var25 /* : Array[ExternFile] */;
83 val* var27 /* : Array[ExternFile] */;
84 val* var_ /* var : Array[ExternFile] */;
85 val* var28 /* : ArrayIterator[nullable Object] */;
86 val* var_29 /* var : ArrayIterator[ExternFile] */;
87 short int var30 /* : Bool */;
88 val* var31 /* : nullable Object */;
89 val* var_file /* var file: ExternFile */;
90 val* var32 /* : AbstractCompiler */;
91 val* var34 /* : AbstractCompiler */;
92 val* var35 /* : Array[ExternFile] */;
93 val* var37 /* : Array[ExternFile] */;
94 val* var38 /* : nullable CCompilationUnit */;
95 val* var40 /* : nullable CCompilationUnit */;
96 val* var41 /* : Template */;
97 val* var43 /* : Template */;
98 val* var44 /* : NativeArray[String] */;
99 static val* varonce;
100 static val* varonce45;
101 val* var46 /* : String */;
102 char* var47 /* : NativeString */;
103 val* var48 /* : FlatString */;
104 static val* varonce49;
105 val* var50 /* : String */;
106 char* var51 /* : NativeString */;
107 val* var52 /* : FlatString */;
108 val* var53 /* : String */;
109 val* var54 /* : String */;
110 val* var55 /* : nullable CCompilationUnit */;
111 val* var57 /* : nullable CCompilationUnit */;
112 val* var58 /* : Template */;
113 val* var60 /* : Template */;
114 static val* varonce61;
115 val* var62 /* : String */;
116 char* var63 /* : NativeString */;
117 val* var64 /* : FlatString */;
118 val* var65 /* : nullable CCompilationUnit */;
119 val* var67 /* : nullable CCompilationUnit */;
120 val* var68 /* : Template */;
121 val* var70 /* : Template */;
122 static val* varonce71;
123 val* var72 /* : String */;
124 char* var73 /* : NativeString */;
125 val* var74 /* : FlatString */;
126 val* var75 /* : MultiHashMap[String, String] */;
127 val* var77 /* : MultiHashMap[String, String] */;
128 static val* varonce78;
129 val* var79 /* : String */;
130 char* var80 /* : NativeString */;
131 val* var81 /* : FlatString */;
132 val* var82 /* : nullable Object */;
133 static val* varonce83;
134 val* var84 /* : String */;
135 char* var85 /* : NativeString */;
136 val* var86 /* : FlatString */;
137 val* var87 /* : String */;
138 val* var_cflags /* var cflags: String */;
139 val* var88 /* : nullable CCompilationUnit */;
140 val* var90 /* : nullable CCompilationUnit */;
141 val* var91 /* : AbstractCompiler */;
142 val* var93 /* : AbstractCompiler */;
143 val* var94 /* : Toolchain */;
144 val* var96 /* : Toolchain */;
145 val* var97 /* : String */;
146 val* var98 /* : nullable CCompilationUnit */;
147 val* var100 /* : nullable CCompilationUnit */;
148 val* var101 /* : Array[String] */;
149 val* var103 /* : Array[String] */;
150 val* var_104 /* var : Array[String] */;
151 val* var105 /* : ArrayIterator[nullable Object] */;
152 val* var_106 /* var : ArrayIterator[String] */;
153 short int var107 /* : Bool */;
154 val* var108 /* : nullable Object */;
155 val* var_file109 /* var file: String */;
156 val* var110 /* : ExternCFile */;
157 val* var_f /* var f: ExternCFile */;
158 val* var111 /* : Array[String] */;
159 val* var113 /* : Array[String] */;
160 val* var114 /* : Array[String] */;
161 val* var116 /* : Array[String] */;
162 val* var117 /* : AbstractCompiler */;
163 val* var119 /* : AbstractCompiler */;
164 val* var120 /* : Array[ExternFile] */;
165 val* var122 /* : Array[ExternFile] */;
166 val* var125 /* : HashSet[AMethPropdef] */;
167 val* var127 /* : HashSet[AMethPropdef] */;
168 val* var129 /* : Array[ExternFile] */;
169 val* var131 /* : Array[ExternFile] */;
170 var_compiler = p0;
171 {
172 { /* Inline light_ffi#MModule#uses_ffi (self) on <self:MModule> */
173 var2 = self->attrs[COLOR_nit__light_ffi__MModule___uses_ffi].s; /* _uses_ffi on <self:MModule> */
174 var = var2;
175 RET_LABEL1:(void)0;
176 }
177 }
178 var3 = !var;
179 if (var3){
180 goto RET_LABEL;
181 } else {
182 }
183 {
184 var4 = ((val*(*)(val* self))(var_compiler->class->vft[COLOR_nit__abstract_compiler__AbstractCompiler__new_visitor]))(var_compiler); /* new_visitor on <var_compiler:AbstractCompiler>*/
185 }
186 var_v = var4;
187 {
188 var5 = nit__light___MModule___nmodule(self, var_v);
189 }
190 var_n = var5;
191 if (var_n == NULL) {
192 var6 = 1; /* is null */
193 } else {
194 var6 = 0; /* arg is null but recv is not */
195 }
196 if (0) {
197 { /* Inline kernel#Object#== (var_n,((val*)NULL)) on <var_n:nullable AModule> */
198 var_other = ((val*)NULL);
199 {
200 { /* Inline kernel#Object#is_same_instance (var_n,var_other) on <var_n:nullable AModule(AModule)> */
201 var11 = var_n == var_other;
202 var9 = var11;
203 goto RET_LABEL10;
204 RET_LABEL10:(void)0;
205 }
206 }
207 var7 = var9;
208 goto RET_LABEL8;
209 RET_LABEL8:(void)0;
210 }
211 var6 = var7;
212 }
213 if (var6){
214 goto RET_LABEL;
215 } else {
216 }
217 {
218 nit__light_ffi___AModule___ensure_compile_ffi_wrapper(var_n); /* Direct call light_ffi#AModule#ensure_compile_ffi_wrapper on <var_n:nullable AModule(AModule)>*/
219 }
220 {
221 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
222 var14 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
223 if (unlikely(var14 == NULL)) {
224 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
225 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
226 fatal_exit(1);
227 }
228 var12 = var14;
229 RET_LABEL13:(void)0;
230 }
231 }
232 {
233 { /* Inline abstract_compiler#AbstractCompiler#toolchain (var12) on <var12:AbstractCompiler> */
234 var17 = var12->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___toolchain].val; /* _toolchain on <var12:AbstractCompiler> */
235 if (unlikely(var17 == NULL)) {
236 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolchain");
237 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 525);
238 fatal_exit(1);
239 }
240 var15 = var17;
241 RET_LABEL16:(void)0;
242 }
243 }
244 {
245 var18 = nit___nit__Toolchain___compile_dir(var15);
246 }
247 {
248 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
249 var21 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
250 if (unlikely(var21 == NULL)) {
251 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
252 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
253 fatal_exit(1);
254 }
255 var19 = var21;
256 RET_LABEL20:(void)0;
257 }
258 }
259 {
260 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (var19) on <var19:AbstractCompiler> */
261 var24 = var19->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var19:AbstractCompiler> */
262 if (unlikely(var24 == NULL)) {
263 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
264 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 515);
265 fatal_exit(1);
266 }
267 var22 = var24;
268 RET_LABEL23:(void)0;
269 }
270 }
271 {
272 nit__light_ffi___MModule___finalize_ffi_wrapper(self, var18, var22); /* Direct call light_ffi#MModule#finalize_ffi_wrapper on <self:MModule>*/
273 }
274 {
275 { /* Inline light_ffi_base#MModule#ffi_files (self) on <self:MModule> */
276 var27 = self->attrs[COLOR_nit__light_ffi_base__MModule___ffi_files].val; /* _ffi_files on <self:MModule> */
277 if (unlikely(var27 == NULL)) {
278 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ffi_files");
279 PRINT_ERROR(" (%s:%d)\n", FILE_nit__light_ffi_base, 82);
280 fatal_exit(1);
281 }
282 var25 = var27;
283 RET_LABEL26:(void)0;
284 }
285 }
286 var_ = var25;
287 {
288 var28 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
289 }
290 var_29 = var28;
291 for(;;) {
292 {
293 var30 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_29);
294 }
295 if (var30){
296 {
297 var31 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_29);
298 }
299 var_file = var31;
300 {
301 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
302 var34 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
303 if (unlikely(var34 == NULL)) {
304 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
305 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
306 fatal_exit(1);
307 }
308 var32 = var34;
309 RET_LABEL33:(void)0;
310 }
311 }
312 {
313 { /* Inline abstract_compiler#AbstractCompiler#extern_bodies (var32) on <var32:AbstractCompiler> */
314 var37 = var32->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___extern_bodies].val; /* _extern_bodies on <var32:AbstractCompiler> */
315 if (unlikely(var37 == NULL)) {
316 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _extern_bodies");
317 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 979);
318 fatal_exit(1);
319 }
320 var35 = var37;
321 RET_LABEL36:(void)0;
322 }
323 }
324 {
325 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var35, var_file); /* Direct call array#Array#add on <var35:Array[ExternFile]>*/
326 }
327 {
328 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_29); /* Direct call array#ArrayIterator#next on <var_29:ArrayIterator[ExternFile]>*/
329 }
330 } else {
331 goto BREAK_label;
332 }
333 }
334 BREAK_label: (void)0;
335 {
336 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_29); /* Direct call array#ArrayIterator#finish on <var_29:ArrayIterator[ExternFile]>*/
337 }
338 {
339 nit__light___MModule___ensure_compile_nitni_base(self, var_v); /* Direct call light#MModule#ensure_compile_nitni_base on <self:MModule>*/
340 }
341 {
342 { /* Inline light#MModule#nitni_ccu (self) on <self:MModule> */
343 var40 = self->attrs[COLOR_nit__light__MModule___nitni_ccu].val; /* _nitni_ccu on <self:MModule> */
344 var38 = var40;
345 RET_LABEL39:(void)0;
346 }
347 }
348 if (var38 == NULL) {
349 PRINT_ERROR("Runtime error: %s", "Receiver is null");
350 PRINT_ERROR(" (%s:%d)\n", FILE_nit__light, 45);
351 fatal_exit(1);
352 } else {
353 { /* Inline c_tools#CCompilationUnit#header_c_types (var38) on <var38:nullable CCompilationUnit> */
354 if (unlikely(var38 == NULL)) {
355 PRINT_ERROR("Runtime error: %s", "Receiver is null");
356 PRINT_ERROR(" (%s:%d)\n", FILE_nit__c_tools, 31);
357 fatal_exit(1);
358 }
359 var43 = var38->attrs[COLOR_nit__c_tools__CCompilationUnit___header_c_types].val; /* _header_c_types on <var38:nullable CCompilationUnit> */
360 if (unlikely(var43 == NULL)) {
361 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header_c_types");
362 PRINT_ERROR(" (%s:%d)\n", FILE_nit__c_tools, 31);
363 fatal_exit(1);
364 }
365 var41 = var43;
366 RET_LABEL42:(void)0;
367 }
368 }
369 if (unlikely(varonce==NULL)) {
370 var44 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
371 if (likely(varonce45!=NULL)) {
372 var46 = varonce45;
373 } else {
374 var47 = "#include \"";
375 var48 = standard___standard__NativeString___to_s_with_length(var47, 10l);
376 var46 = var48;
377 varonce45 = var46;
378 }
379 ((struct instance_standard__NativeArray*)var44)->values[0]=var46;
380 if (likely(varonce49!=NULL)) {
381 var50 = varonce49;
382 } else {
383 var51 = "._ffi.h\"\n";
384 var52 = standard___standard__NativeString___to_s_with_length(var51, 9l);
385 var50 = var52;
386 varonce49 = var50;
387 }
388 ((struct instance_standard__NativeArray*)var44)->values[2]=var50;
389 } else {
390 var44 = varonce;
391 varonce = NULL;
392 }
393 {
394 var53 = nit___nit__MModule___nit__model_base__MEntity__c_name(self);
395 }
396 ((struct instance_standard__NativeArray*)var44)->values[1]=var53;
397 {
398 var54 = ((val*(*)(val* self))(var44->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var44); /* native_to_s on <var44:NativeArray[String]>*/
399 }
400 varonce = var44;
401 {
402 template___template__Template___add(var41, var54); /* Direct call template#Template#add on <var41:Template>*/
403 }
404 {
405 { /* Inline light#MModule#nitni_ccu (self) on <self:MModule> */
406 var57 = self->attrs[COLOR_nit__light__MModule___nitni_ccu].val; /* _nitni_ccu on <self:MModule> */
407 var55 = var57;
408 RET_LABEL56:(void)0;
409 }
410 }
411 if (var55 == NULL) {
412 PRINT_ERROR("Runtime error: %s", "Receiver is null");
413 PRINT_ERROR(" (%s:%d)\n", FILE_nit__light, 46);
414 fatal_exit(1);
415 } else {
416 { /* Inline c_tools#CCompilationUnit#header_c_types (var55) on <var55:nullable CCompilationUnit> */
417 if (unlikely(var55 == NULL)) {
418 PRINT_ERROR("Runtime error: %s", "Receiver is null");
419 PRINT_ERROR(" (%s:%d)\n", FILE_nit__c_tools, 31);
420 fatal_exit(1);
421 }
422 var60 = var55->attrs[COLOR_nit__c_tools__CCompilationUnit___header_c_types].val; /* _header_c_types on <var55:nullable CCompilationUnit> */
423 if (unlikely(var60 == NULL)) {
424 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header_c_types");
425 PRINT_ERROR(" (%s:%d)\n", FILE_nit__c_tools, 31);
426 fatal_exit(1);
427 }
428 var58 = var60;
429 RET_LABEL59:(void)0;
430 }
431 }
432 if (likely(varonce61!=NULL)) {
433 var62 = varonce61;
434 } else {
435 var63 = "#include <stdint.h>\n";
436 var64 = standard___standard__NativeString___to_s_with_length(var63, 20l);
437 var62 = var64;
438 varonce61 = var62;
439 }
440 {
441 template___template__Template___add(var58, var62); /* Direct call template#Template#add on <var58:Template>*/
442 }
443 {
444 { /* Inline light#MModule#nitni_ccu (self) on <self:MModule> */
445 var67 = self->attrs[COLOR_nit__light__MModule___nitni_ccu].val; /* _nitni_ccu on <self:MModule> */
446 var65 = var67;
447 RET_LABEL66:(void)0;
448 }
449 }
450 if (var65 == NULL) {
451 PRINT_ERROR("Runtime error: %s", "Receiver is null");
452 PRINT_ERROR(" (%s:%d)\n", FILE_nit__light, 47);
453 fatal_exit(1);
454 } else {
455 { /* Inline c_tools#CCompilationUnit#header_c_types (var65) on <var65:nullable CCompilationUnit> */
456 if (unlikely(var65 == NULL)) {
457 PRINT_ERROR("Runtime error: %s", "Receiver is null");
458 PRINT_ERROR(" (%s:%d)\n", FILE_nit__c_tools, 31);
459 fatal_exit(1);
460 }
461 var70 = var65->attrs[COLOR_nit__c_tools__CCompilationUnit___header_c_types].val; /* _header_c_types on <var65:nullable CCompilationUnit> */
462 if (unlikely(var70 == NULL)) {
463 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header_c_types");
464 PRINT_ERROR(" (%s:%d)\n", FILE_nit__c_tools, 31);
465 fatal_exit(1);
466 }
467 var68 = var70;
468 RET_LABEL69:(void)0;
469 }
470 }
471 if (likely(varonce71!=NULL)) {
472 var72 = varonce71;
473 } else {
474 var73 = "extern void nitni_global_ref_incr(void*);\nextern void nitni_global_ref_decr(void*);\n";
475 var74 = standard___standard__NativeString___to_s_with_length(var73, 84l);
476 var72 = var74;
477 varonce71 = var72;
478 }
479 {
480 template___template__Template___add(var68, var72); /* Direct call template#Template#add on <var68:Template>*/
481 }
482 {
483 { /* Inline light_c#MModule#cflags (self) on <self:MModule> */
484 var77 = self->attrs[COLOR_nit__light_c__MModule___cflags].val; /* _cflags on <self:MModule> */
485 if (unlikely(var77 == NULL)) {
486 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cflags");
487 PRINT_ERROR(" (%s:%d)\n", FILE_nit__light_c, 77);
488 fatal_exit(1);
489 }
490 var75 = var77;
491 RET_LABEL76:(void)0;
492 }
493 }
494 if (likely(varonce78!=NULL)) {
495 var79 = varonce78;
496 } else {
497 var80 = "";
498 var81 = standard___standard__NativeString___to_s_with_length(var80, 0l);
499 var79 = var81;
500 varonce78 = var79;
501 }
502 {
503 var82 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var75, var79);
504 }
505 if (likely(varonce83!=NULL)) {
506 var84 = varonce83;
507 } else {
508 var85 = " ";
509 var86 = standard___standard__NativeString___to_s_with_length(var85, 1l);
510 var84 = var86;
511 varonce83 = var84;
512 }
513 {
514 var87 = standard__string___Collection___join(var82, var84);
515 }
516 var_cflags = var87;
517 {
518 { /* Inline light#MModule#nitni_ccu (self) on <self:MModule> */
519 var90 = self->attrs[COLOR_nit__light__MModule___nitni_ccu].val; /* _nitni_ccu on <self:MModule> */
520 var88 = var90;
521 RET_LABEL89:(void)0;
522 }
523 }
524 {
525 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
526 var93 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
527 if (unlikely(var93 == NULL)) {
528 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
529 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
530 fatal_exit(1);
531 }
532 var91 = var93;
533 RET_LABEL92:(void)0;
534 }
535 }
536 {
537 { /* Inline abstract_compiler#AbstractCompiler#toolchain (var91) on <var91:AbstractCompiler> */
538 var96 = var91->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___toolchain].val; /* _toolchain on <var91:AbstractCompiler> */
539 if (unlikely(var96 == NULL)) {
540 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolchain");
541 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 525);
542 fatal_exit(1);
543 }
544 var94 = var96;
545 RET_LABEL95:(void)0;
546 }
547 }
548 {
549 var97 = nit___nit__Toolchain___compile_dir(var94);
550 }
551 if (var88 == NULL) {
552 PRINT_ERROR("Runtime error: %s", "Receiver is null");
553 PRINT_ERROR(" (%s:%d)\n", FILE_nit__light, 53);
554 fatal_exit(1);
555 } else {
556 nit__light___CCompilationUnit___write_as_nitni(var88, self, var97); /* Direct call light#CCompilationUnit#write_as_nitni on <var88:nullable CCompilationUnit>*/
557 }
558 {
559 { /* Inline light#MModule#nitni_ccu (self) on <self:MModule> */
560 var100 = self->attrs[COLOR_nit__light__MModule___nitni_ccu].val; /* _nitni_ccu on <self:MModule> */
561 var98 = var100;
562 RET_LABEL99:(void)0;
563 }
564 }
565 if (var98 == NULL) {
566 PRINT_ERROR("Runtime error: %s", "Receiver is null");
567 PRINT_ERROR(" (%s:%d)\n", FILE_nit__light, 55);
568 fatal_exit(1);
569 } else {
570 { /* Inline c_tools#CCompilationUnit#files (var98) on <var98:nullable CCompilationUnit> */
571 if (unlikely(var98 == NULL)) {
572 PRINT_ERROR("Runtime error: %s", "Receiver is null");
573 PRINT_ERROR(" (%s:%d)\n", FILE_nit__c_tools, 47);
574 fatal_exit(1);
575 }
576 var103 = var98->attrs[COLOR_nit__c_tools__CCompilationUnit___files].val; /* _files on <var98:nullable CCompilationUnit> */
577 if (unlikely(var103 == NULL)) {
578 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files");
579 PRINT_ERROR(" (%s:%d)\n", FILE_nit__c_tools, 47);
580 fatal_exit(1);
581 }
582 var101 = var103;
583 RET_LABEL102:(void)0;
584 }
585 }
586 var_104 = var101;
587 {
588 var105 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_104);
589 }
590 var_106 = var105;
591 for(;;) {
592 {
593 var107 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_106);
594 }
595 if (var107){
596 {
597 var108 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_106);
598 }
599 var_file109 = var108;
600 var110 = NEW_nit__ExternCFile(&type_nit__ExternCFile);
601 {
602 ((void(*)(val* self, val* p0))(var110->class->vft[COLOR_nit__c_tools__ExternFile__filename_61d]))(var110, var_file109); /* filename= on <var110:ExternCFile>*/
603 }
604 {
605 ((void(*)(val* self, val* p0))(var110->class->vft[COLOR_nit__c_tools__ExternCFile__cflags_61d]))(var110, var_cflags); /* cflags= on <var110:ExternCFile>*/
606 }
607 {
608 ((void(*)(val* self))(var110->class->vft[COLOR_standard__kernel__Object__init]))(var110); /* init on <var110:ExternCFile>*/
609 }
610 var_f = var110;
611 {
612 { /* Inline c_tools#ExternFile#pkgconfigs (var_f) on <var_f:ExternCFile> */
613 var113 = var_f->attrs[COLOR_nit__c_tools__ExternFile___pkgconfigs].val; /* _pkgconfigs on <var_f:ExternCFile> */
614 if (unlikely(var113 == NULL)) {
615 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _pkgconfigs");
616 PRINT_ERROR(" (%s:%d)\n", FILE_nit__c_tools, 123);
617 fatal_exit(1);
618 }
619 var111 = var113;
620 RET_LABEL112:(void)0;
621 }
622 }
623 {
624 { /* Inline light_c#MModule#pkgconfigs (self) on <self:MModule> */
625 var116 = self->attrs[COLOR_nit__light_c__MModule___pkgconfigs].val; /* _pkgconfigs on <self:MModule> */
626 if (unlikely(var116 == NULL)) {
627 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _pkgconfigs");
628 PRINT_ERROR(" (%s:%d)\n", FILE_nit__light_c, 83);
629 fatal_exit(1);
630 }
631 var114 = var116;
632 RET_LABEL115:(void)0;
633 }
634 }
635 {
636 standard___standard__Array___standard__abstract_collection__SimpleCollection__add_all(var111, var114); /* Direct call array#Array#add_all on <var111:Array[String]>*/
637 }
638 {
639 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
640 var119 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
641 if (unlikely(var119 == NULL)) {
642 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
643 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
644 fatal_exit(1);
645 }
646 var117 = var119;
647 RET_LABEL118:(void)0;
648 }
649 }
650 {
651 { /* Inline abstract_compiler#AbstractCompiler#extern_bodies (var117) on <var117:AbstractCompiler> */
652 var122 = var117->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___extern_bodies].val; /* _extern_bodies on <var117:AbstractCompiler> */
653 if (unlikely(var122 == NULL)) {
654 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _extern_bodies");
655 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 979);
656 fatal_exit(1);
657 }
658 var120 = var122;
659 RET_LABEL121:(void)0;
660 }
661 }
662 {
663 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var120, var_f); /* Direct call array#Array#add on <var120:Array[ExternFile]>*/
664 }
665 {
666 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_106); /* Direct call array#ArrayIterator#next on <var_106:ArrayIterator[String]>*/
667 }
668 } else {
669 goto BREAK_label123;
670 }
671 }
672 BREAK_label123: (void)0;
673 {
674 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_106); /* Direct call array#ArrayIterator#finish on <var_106:ArrayIterator[String]>*/
675 }
676 {
677 { /* Inline light#MModule#nitni_ccu= (self,((val*)NULL)) on <self:MModule> */
678 self->attrs[COLOR_nit__light__MModule___nitni_ccu].val = ((val*)NULL); /* _nitni_ccu on <self:MModule> */
679 RET_LABEL124:(void)0;
680 }
681 }
682 {
683 { /* Inline light_ffi#MModule#compiled_ffi_methods (self) on <self:MModule> */
684 var127 = self->attrs[COLOR_nit__light_ffi__MModule___compiled_ffi_methods].val; /* _compiled_ffi_methods on <self:MModule> */
685 if (unlikely(var127 == NULL)) {
686 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiled_ffi_methods");
687 PRINT_ERROR(" (%s:%d)\n", FILE_nit__light_ffi, 66);
688 fatal_exit(1);
689 }
690 var125 = var127;
691 RET_LABEL126:(void)0;
692 }
693 }
694 {
695 standard___standard__HashSet___standard__abstract_collection__RemovableCollection__clear(var125); /* Direct call hash_collection#HashSet#clear on <var125:HashSet[AMethPropdef]>*/
696 }
697 {
698 { /* Inline light_ffi#MModule#ffi_ccu= (self,((val*)NULL)) on <self:MModule> */
699 self->attrs[COLOR_nit__light_ffi__MModule___ffi_ccu].val = ((val*)NULL); /* _ffi_ccu on <self:MModule> */
700 RET_LABEL128:(void)0;
701 }
702 }
703 {
704 { /* Inline light_ffi_base#MModule#ffi_files (self) on <self:MModule> */
705 var131 = self->attrs[COLOR_nit__light_ffi_base__MModule___ffi_files].val; /* _ffi_files on <self:MModule> */
706 if (unlikely(var131 == NULL)) {
707 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ffi_files");
708 PRINT_ERROR(" (%s:%d)\n", FILE_nit__light_ffi_base, 82);
709 fatal_exit(1);
710 }
711 var129 = var131;
712 RET_LABEL130:(void)0;
713 }
714 }
715 {
716 standard___standard__AbstractArray___standard__abstract_collection__RemovableCollection__clear(var129); /* Direct call array#AbstractArray#clear on <var129:Array[ExternFile]>*/
717 }
718 RET_LABEL:;
719 }
720 /* method light#MModule#ensure_compile_nitni_base for (self: MModule, AbstractCompilerVisitor) */
721 void nit__light___MModule___ensure_compile_nitni_base(val* self, val* p0) {
722 val* var_v /* var v: AbstractCompilerVisitor */;
723 val* var /* : nullable CCompilationUnit */;
724 val* var2 /* : nullable CCompilationUnit */;
725 short int var3 /* : Bool */;
726 short int var4 /* : Bool */;
727 val* var_other /* var other: nullable Object */;
728 short int var6 /* : Bool */;
729 short int var7 /* : Bool */;
730 val* var8 /* : CCompilationUnit */;
731 var_v = p0;
732 {
733 { /* Inline light#MModule#nitni_ccu (self) on <self:MModule> */
734 var2 = self->attrs[COLOR_nit__light__MModule___nitni_ccu].val; /* _nitni_ccu on <self:MModule> */
735 var = var2;
736 RET_LABEL1:(void)0;
737 }
738 }
739 if (var == NULL) {
740 var3 = 0; /* is null */
741 } else {
742 var3 = 1; /* arg is null and recv is not */
743 }
744 if (0) {
745 { /* Inline kernel#Object#!= (var,((val*)NULL)) on <var:nullable CCompilationUnit> */
746 var_other = ((val*)NULL);
747 {
748 var6 = ((short int(*)(val* self, val* p0))(var->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var, var_other); /* == on <var:nullable CCompilationUnit(CCompilationUnit)>*/
749 }
750 var7 = !var6;
751 var4 = var7;
752 goto RET_LABEL5;
753 RET_LABEL5:(void)0;
754 }
755 var3 = var4;
756 }
757 if (var3){
758 goto RET_LABEL;
759 } else {
760 }
761 var8 = NEW_nit__CCompilationUnit(&type_nit__CCompilationUnit);
762 {
763 { /* Inline kernel#Object#init (var8) on <var8:CCompilationUnit> */
764 RET_LABEL9:(void)0;
765 }
766 }
767 {
768 { /* Inline light#MModule#nitni_ccu= (self,var8) on <self:MModule> */
769 self->attrs[COLOR_nit__light__MModule___nitni_ccu].val = var8; /* _nitni_ccu on <self:MModule> */
770 RET_LABEL10:(void)0;
771 }
772 }
773 RET_LABEL:;
774 }
775 /* method light#MModule#collect_linker_libs for (self: MModule): nullable Array[String] */
776 val* nit__light___MModule___collect_linker_libs(val* self) {
777 val* var /* : nullable Array[String] */;
778 val* var1 /* : MultiHashMap[String, String] */;
779 val* var3 /* : MultiHashMap[String, String] */;
780 val* var4 /* : RemovableCollection[nullable Object] */;
781 static val* varonce;
782 val* var5 /* : String */;
783 char* var6 /* : NativeString */;
784 val* var7 /* : FlatString */;
785 short int var8 /* : Bool */;
786 short int var9 /* : Bool */;
787 val* var10 /* : MultiHashMap[String, String] */;
788 val* var12 /* : MultiHashMap[String, String] */;
789 static val* varonce13;
790 val* var14 /* : String */;
791 char* var15 /* : NativeString */;
792 val* var16 /* : FlatString */;
793 val* var17 /* : nullable Object */;
794 {
795 { /* Inline light_c#MModule#ldflags (self) on <self:MModule> */
796 var3 = self->attrs[COLOR_nit__light_c__MModule___ldflags].val; /* _ldflags on <self:MModule> */
797 if (unlikely(var3 == NULL)) {
798 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ldflags");
799 PRINT_ERROR(" (%s:%d)\n", FILE_nit__light_c, 80);
800 fatal_exit(1);
801 }
802 var1 = var3;
803 RET_LABEL2:(void)0;
804 }
805 }
806 {
807 var4 = standard___standard__HashMap___standard__abstract_collection__MapRead__keys(var1);
808 }
809 if (likely(varonce!=NULL)) {
810 var5 = varonce;
811 } else {
812 var6 = "";
813 var7 = standard___standard__NativeString___to_s_with_length(var6, 0l);
814 var5 = var7;
815 varonce = var5;
816 }
817 {
818 var8 = ((short int(*)(val* self, val* p0))((((long)var4&3)?class_info[((long)var4&3)]:var4->class)->vft[COLOR_standard__abstract_collection__Collection__has]))(var4, var5); /* has on <var4:RemovableCollection[nullable Object](RemovableCollection[String])>*/
819 }
820 var9 = !var8;
821 if (var9){
822 var = ((val*)NULL);
823 goto RET_LABEL;
824 } else {
825 }
826 {
827 { /* Inline light_c#MModule#ldflags (self) on <self:MModule> */
828 var12 = self->attrs[COLOR_nit__light_c__MModule___ldflags].val; /* _ldflags on <self:MModule> */
829 if (unlikely(var12 == NULL)) {
830 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ldflags");
831 PRINT_ERROR(" (%s:%d)\n", FILE_nit__light_c, 80);
832 fatal_exit(1);
833 }
834 var10 = var12;
835 RET_LABEL11:(void)0;
836 }
837 }
838 if (likely(varonce13!=NULL)) {
839 var14 = varonce13;
840 } else {
841 var15 = "";
842 var16 = standard___standard__NativeString___to_s_with_length(var15, 0l);
843 var14 = var16;
844 varonce13 = var14;
845 }
846 {
847 var17 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var10, var14);
848 }
849 var = var17;
850 goto RET_LABEL;
851 RET_LABEL:;
852 return var;
853 }
854 /* method light#AMethPropdef#compile_ffi_support_to_c for (self: AMethPropdef, AbstractCompilerVisitor) */
855 void nit__light___AMethPropdef___compile_ffi_support_to_c(val* self, val* p0) {
856 val* var_v /* var v: AbstractCompilerVisitor */;
857 val* var /* : nullable MPropDef */;
858 val* var2 /* : nullable MPropDef */;
859 val* var3 /* : MClassDef */;
860 val* var5 /* : MClassDef */;
861 val* var6 /* : MModule */;
862 val* var8 /* : MModule */;
863 val* var_mmodule /* var mmodule: MModule */;
864 val* var9 /* : AbstractCompiler */;
865 val* var11 /* : AbstractCompiler */;
866 val* var12 /* : ModelBuilder */;
867 val* var14 /* : ModelBuilder */;
868 val* var15 /* : nullable AModule */;
869 val* var_amodule /* var amodule: nullable AModule */;
870 val* var16 /* : nullable MPropDef */;
871 val* var18 /* : nullable MPropDef */;
872 val* var19 /* : MClassDef */;
873 val* var21 /* : MClassDef */;
874 val* var22 /* : MClassType */;
875 val* var24 /* : MClassType */;
876 val* var_mclass_type /* var mclass_type: MClassType */;
877 val* var25 /* : nullable MPropDef */;
878 val* var27 /* : nullable MPropDef */;
879 val* var28 /* : MProperty */;
880 val* var30 /* : MProperty */;
881 static val* varonce;
882 val* var31 /* : String */;
883 char* var32 /* : NativeString */;
884 val* var33 /* : FlatString */;
885 val* var34 /* : SignatureLength */;
886 val* var35 /* : CallContext */;
887 val* var36 /* : String */;
888 val* var_csignature /* var csignature: String */;
889 val* var38 /* : NativeArray[String] */;
890 static val* varonce37;
891 static val* varonce39;
892 val* var40 /* : String */;
893 char* var41 /* : NativeString */;
894 val* var42 /* : FlatString */;
895 val* var43 /* : String */;
896 var_v = p0;
897 {
898 { /* Inline modelize_property#APropdef#mpropdef (self) on <self:AMethPropdef> */
899 var2 = self->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:AMethPropdef> */
900 var = var2;
901 RET_LABEL1:(void)0;
902 }
903 }
904 if (var == NULL) {
905 PRINT_ERROR("Runtime error: %s", "Receiver is null");
906 PRINT_ERROR(" (%s:%d)\n", FILE_nit__light, 86);
907 fatal_exit(1);
908 } else {
909 { /* Inline model#MPropDef#mclassdef (var) on <var:nullable MPropDef(nullable MMethodDef)> */
910 if (unlikely(var == NULL)) {
911 PRINT_ERROR("Runtime error: %s", "Receiver is null");
912 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
913 fatal_exit(1);
914 }
915 var5 = var->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var:nullable MPropDef(nullable MMethodDef)> */
916 if (unlikely(var5 == NULL)) {
917 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
918 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
919 fatal_exit(1);
920 }
921 var3 = var5;
922 RET_LABEL4:(void)0;
923 }
924 }
925 {
926 { /* Inline model#MClassDef#mmodule (var3) on <var3:MClassDef> */
927 var8 = var3->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var3:MClassDef> */
928 if (unlikely(var8 == NULL)) {
929 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
930 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550);
931 fatal_exit(1);
932 }
933 var6 = var8;
934 RET_LABEL7:(void)0;
935 }
936 }
937 var_mmodule = var6;
938 {
939 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
940 var11 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
941 if (unlikely(var11 == NULL)) {
942 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
943 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
944 fatal_exit(1);
945 }
946 var9 = var11;
947 RET_LABEL10:(void)0;
948 }
949 }
950 {
951 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var9) on <var9:AbstractCompiler> */
952 var14 = var9->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var9:AbstractCompiler> */
953 if (unlikely(var14 == NULL)) {
954 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
955 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
956 fatal_exit(1);
957 }
958 var12 = var14;
959 RET_LABEL13:(void)0;
960 }
961 }
962 {
963 var15 = nit__loader___ModelBuilder___mmodule2node(var12, var_mmodule);
964 }
965 var_amodule = var15;
966 {
967 { /* Inline modelize_property#APropdef#mpropdef (self) on <self:AMethPropdef> */
968 var18 = self->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:AMethPropdef> */
969 var16 = var18;
970 RET_LABEL17:(void)0;
971 }
972 }
973 if (var16 == NULL) {
974 PRINT_ERROR("Runtime error: %s", "Receiver is null");
975 PRINT_ERROR(" (%s:%d)\n", FILE_nit__light, 88);
976 fatal_exit(1);
977 } else {
978 { /* Inline model#MPropDef#mclassdef (var16) on <var16:nullable MPropDef(nullable MMethodDef)> */
979 if (unlikely(var16 == NULL)) {
980 PRINT_ERROR("Runtime error: %s", "Receiver is null");
981 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
982 fatal_exit(1);
983 }
984 var21 = var16->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var16:nullable MPropDef(nullable MMethodDef)> */
985 if (unlikely(var21 == NULL)) {
986 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
987 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
988 fatal_exit(1);
989 }
990 var19 = var21;
991 RET_LABEL20:(void)0;
992 }
993 }
994 {
995 { /* Inline model#MClassDef#bound_mtype (var19) on <var19:MClassDef> */
996 var24 = var19->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var19:MClassDef> */
997 if (unlikely(var24 == NULL)) {
998 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
999 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
1000 fatal_exit(1);
1001 }
1002 var22 = var24;
1003 RET_LABEL23:(void)0;
1004 }
1005 }
1006 var_mclass_type = var22;
1007 {
1008 { /* Inline modelize_property#APropdef#mpropdef (self) on <self:AMethPropdef> */
1009 var27 = self->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:AMethPropdef> */
1010 var25 = var27;
1011 RET_LABEL26:(void)0;
1012 }
1013 }
1014 if (var25 == NULL) {
1015 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1016 PRINT_ERROR(" (%s:%d)\n", FILE_nit__light, 91);
1017 fatal_exit(1);
1018 } else {
1019 { /* Inline model#MPropDef#mproperty (var25) on <var25:nullable MPropDef(nullable MMethodDef)> */
1020 if (unlikely(var25 == NULL)) {
1021 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1022 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
1023 fatal_exit(1);
1024 }
1025 var30 = var25->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var25:nullable MPropDef(nullable MMethodDef)> */
1026 if (unlikely(var30 == NULL)) {
1027 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
1028 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
1029 fatal_exit(1);
1030 }
1031 var28 = var30;
1032 RET_LABEL29:(void)0;
1033 }
1034 }
1035 if (likely(varonce!=NULL)) {
1036 var31 = varonce;
1037 } else {
1038 var32 = "___impl";
1039 var33 = standard___standard__NativeString___to_s_with_length(var32, 7l);
1040 var31 = var33;
1041 varonce = var31;
1042 }
1043 {
1044 var34 = nit__nitni_utilities___standard__Object___long_signature(self);
1045 }
1046 {
1047 var35 = nit__nitni_utilities___standard__Object___internal_call_context(self);
1048 }
1049 {
1050 var36 = nit__nitni_utilities___MMethod___build_csignature(var28, var_mclass_type, var_mmodule, var31, var34, var35);
1051 }
1052 var_csignature = var36;
1053 if (unlikely(varonce37==NULL)) {
1054 var38 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
1055 if (likely(varonce39!=NULL)) {
1056 var40 = varonce39;
1057 } else {
1058 var41 = ";";
1059 var42 = standard___standard__NativeString___to_s_with_length(var41, 1l);
1060 var40 = var42;
1061 varonce39 = var40;
1062 }
1063 ((struct instance_standard__NativeArray*)var38)->values[1]=var40;
1064 } else {
1065 var38 = varonce37;
1066 varonce37 = NULL;
1067 }
1068 ((struct instance_standard__NativeArray*)var38)->values[0]=var_csignature;
1069 {
1070 var43 = ((val*(*)(val* self))(var38->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var38); /* native_to_s on <var38:NativeArray[String]>*/
1071 }
1072 varonce37 = var38;
1073 {
1074 nit___nit__AbstractCompilerVisitor___declare_once(var_v, var43); /* Direct call abstract_compiler#AbstractCompilerVisitor#declare_once on <var_v:AbstractCompilerVisitor>*/
1075 }
1076 if (var_amodule == NULL) {
1077 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1078 PRINT_ERROR(" (%s:%d)\n", FILE_nit__light, 95);
1079 fatal_exit(1);
1080 } else {
1081 nit__light_ffi___AModule___ensure_compile_ffi_wrapper(var_amodule); /* Direct call light_ffi#AModule#ensure_compile_ffi_wrapper on <var_amodule:nullable AModule>*/
1082 }
1083 {
1084 nit__light_ffi___AMethPropdef___compile_ffi_method(self, var_mmodule); /* Direct call light_ffi#AMethPropdef#compile_ffi_method on <self:AMethPropdef>*/
1085 }
1086 {
1087 nit__light___MModule___ensure_compile_nitni_base(var_mmodule, var_v); /* Direct call light#MModule#ensure_compile_nitni_base on <var_mmodule:MModule>*/
1088 }
1089 RET_LABEL:;
1090 }
1091 /* method light#AMethPropdef#compile_externmeth_to_c for (self: AMethPropdef, AbstractCompilerVisitor, MMethodDef, Array[RuntimeVariable]): Bool */
1092 short int nit__light___AMethPropdef___compile_externmeth_to_c(val* self, val* p0, val* p1, val* p2) {
1093 short int var /* : Bool */;
1094 val* var_v /* var v: AbstractCompilerVisitor */;
1095 val* var_mpropdef /* var mpropdef: MMethodDef */;
1096 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
1097 val* var1 /* : nullable AExternCodeBlock */;
1098 val* var3 /* : nullable AExternCodeBlock */;
1099 short int var4 /* : Bool */;
1100 short int var5 /* : Bool */;
1101 val* var_other /* var other: nullable Object */;
1102 short int var7 /* : Bool */;
1103 short int var9 /* : Bool */;
1104 short int var10 /* : Bool */;
1105 short int var11 /* : Bool */;
1106 short int var12 /* : Bool */;
1107 val* var13 /* : MClassDef */;
1108 val* var15 /* : MClassDef */;
1109 val* var16 /* : MModule */;
1110 val* var18 /* : MModule */;
1111 val* var_mmodule /* var mmodule: MModule */;
1112 val* var20 /* : MClassDef */;
1113 val* var22 /* : MClassDef */;
1114 val* var23 /* : MClassType */;
1115 val* var25 /* : MClassType */;
1116 val* var_mclass_type /* var mclass_type: MClassType */;
1117 val* var26 /* : MProperty */;
1118 val* var28 /* : MProperty */;
1119 val* var29 /* : MClassDef */;
1120 val* var31 /* : MClassDef */;
1121 val* var32 /* : MClassType */;
1122 val* var34 /* : MClassType */;
1123 static val* varonce;
1124 val* var35 /* : String */;
1125 char* var36 /* : NativeString */;
1126 val* var37 /* : FlatString */;
1127 val* var38 /* : SignatureLength */;
1128 val* var39 /* : String */;
1129 val* var_externname /* var externname: String */;
1130 val* var_recv_var /* var recv_var: nullable RuntimeVariable */;
1131 val* var40 /* : nullable MSignature */;
1132 val* var42 /* : nullable MSignature */;
1133 val* var43 /* : nullable MType */;
1134 val* var45 /* : nullable MType */;
1135 val* var_return_mtype /* var return_mtype: nullable MType */;
1136 short int var46 /* : Bool */;
1137 short int var47 /* : Bool */;
1138 val* var_other49 /* var other: nullable Object */;
1139 short int var50 /* : Bool */;
1140 short int var51 /* : Bool */;
1141 val* var52 /* : MType */;
1142 val* var53 /* : RuntimeVariable */;
1143 val* var54 /* : Array[String] */;
1144 val* var_arguments_for_c /* var arguments_for_c: Array[String] */;
1145 long var_a /* var a: Int */;
1146 long var55 /* : Int */;
1147 long var57 /* : Int */;
1148 long var_ /* var : Int */;
1149 short int var58 /* : Bool */;
1150 short int var60 /* : Bool */;
1151 int cltype;
1152 int idtype;
1153 const char* var_class_name;
1154 short int var61 /* : Bool */;
1155 val* var62 /* : nullable Object */;
1156 val* var_arg /* var arg: RuntimeVariable */;
1157 short int var63 /* : Bool */;
1158 short int var65 /* : Bool */;
1159 val* var66 /* : MClassDef */;
1160 val* var68 /* : MClassDef */;
1161 val* var69 /* : MClass */;
1162 val* var71 /* : MClass */;
1163 val* var72 /* : MClassType */;
1164 val* var74 /* : MClassType */;
1165 val* var_param_mtype /* var param_mtype: MType */;
1166 val* var75 /* : nullable MSignature */;
1167 val* var77 /* : nullable MSignature */;
1168 val* var78 /* : Array[MParameter] */;
1169 val* var80 /* : Array[MParameter] */;
1170 long var81 /* : Int */;
1171 short int var83 /* : Bool */;
1172 int cltype84;
1173 int idtype85;
1174 const char* var_class_name86;
1175 long var87 /* : Int */;
1176 val* var88 /* : nullable Object */;
1177 val* var89 /* : MType */;
1178 val* var91 /* : MType */;
1179 val* var92 /* : MType */;
1180 short int var93 /* : Bool */;
1181 val* var94 /* : String */;
1182 val* var96 /* : String */;
1183 val* var98 /* : NativeArray[String] */;
1184 static val* varonce97;
1185 static val* varonce99;
1186 val* var100 /* : String */;
1187 char* var101 /* : NativeString */;
1188 val* var102 /* : FlatString */;
1189 static val* varonce103;
1190 val* var104 /* : String */;
1191 char* var105 /* : NativeString */;
1192 val* var106 /* : FlatString */;
1193 val* var107 /* : String */;
1194 val* var108 /* : String */;
1195 val* var110 /* : NativeArray[String] */;
1196 static val* varonce109;
1197 static val* varonce111;
1198 val* var112 /* : String */;
1199 char* var113 /* : NativeString */;
1200 val* var114 /* : FlatString */;
1201 static val* varonce115;
1202 val* var116 /* : String */;
1203 char* var117 /* : NativeString */;
1204 val* var118 /* : FlatString */;
1205 val* var119 /* : String */;
1206 val* var120 /* : String */;
1207 val* var122 /* : NativeArray[String] */;
1208 static val* varonce121;
1209 static val* varonce123;
1210 val* var124 /* : String */;
1211 char* var125 /* : NativeString */;
1212 val* var126 /* : FlatString */;
1213 static val* varonce127;
1214 val* var128 /* : String */;
1215 char* var129 /* : NativeString */;
1216 val* var130 /* : FlatString */;
1217 static val* varonce131;
1218 val* var132 /* : String */;
1219 char* var133 /* : NativeString */;
1220 val* var134 /* : FlatString */;
1221 val* var135 /* : String */;
1222 val* var136 /* : String */;
1223 val* var138 /* : String */;
1224 val* var139 /* : String */;
1225 val* var141 /* : NativeArray[String] */;
1226 static val* varonce140;
1227 static val* varonce142;
1228 val* var143 /* : String */;
1229 char* var144 /* : NativeString */;
1230 val* var145 /* : FlatString */;
1231 val* var146 /* : String */;
1232 val* var147 /* : String */;
1233 long var148 /* : Int */;
1234 short int var149 /* : Bool */;
1235 short int var150 /* : Bool */;
1236 short int var152 /* : Bool */;
1237 short int var154 /* : Bool */;
1238 val* var156 /* : NativeArray[String] */;
1239 static val* varonce155;
1240 static val* varonce157;
1241 val* var158 /* : String */;
1242 char* var159 /* : NativeString */;
1243 val* var160 /* : FlatString */;
1244 static val* varonce161;
1245 val* var162 /* : String */;
1246 char* var163 /* : NativeString */;
1247 val* var164 /* : FlatString */;
1248 static val* varonce165;
1249 val* var166 /* : String */;
1250 char* var167 /* : NativeString */;
1251 val* var168 /* : FlatString */;
1252 val* var169 /* : String */;
1253 val* var170 /* : String */;
1254 short int var171 /* : Bool */;
1255 short int var172 /* : Bool */;
1256 short int var174 /* : Bool */;
1257 short int var175 /* : Bool */;
1258 short int var176 /* : Bool */;
1259 val* var178 /* : NativeArray[String] */;
1260 static val* varonce177;
1261 static val* varonce179;
1262 val* var180 /* : String */;
1263 char* var181 /* : NativeString */;
1264 val* var182 /* : FlatString */;
1265 static val* varonce183;
1266 val* var184 /* : String */;
1267 char* var185 /* : NativeString */;
1268 val* var186 /* : FlatString */;
1269 static val* varonce187;
1270 val* var188 /* : String */;
1271 char* var189 /* : NativeString */;
1272 val* var190 /* : FlatString */;
1273 val* var191 /* : String */;
1274 static val* varonce192;
1275 val* var193 /* : String */;
1276 char* var194 /* : NativeString */;
1277 val* var195 /* : FlatString */;
1278 val* var196 /* : String */;
1279 val* var197 /* : String */;
1280 static val* varonce198;
1281 val* var199 /* : String */;
1282 char* var200 /* : NativeString */;
1283 val* var201 /* : FlatString */;
1284 val* var203 /* : NativeArray[String] */;
1285 static val* varonce202;
1286 static val* varonce204;
1287 val* var205 /* : String */;
1288 char* var206 /* : NativeString */;
1289 val* var207 /* : FlatString */;
1290 static val* varonce208;
1291 val* var209 /* : String */;
1292 char* var210 /* : NativeString */;
1293 val* var211 /* : FlatString */;
1294 static val* varonce212;
1295 val* var213 /* : String */;
1296 char* var214 /* : NativeString */;
1297 val* var215 /* : FlatString */;
1298 static val* varonce216;
1299 val* var217 /* : String */;
1300 char* var218 /* : NativeString */;
1301 val* var219 /* : FlatString */;
1302 val* var220 /* : String */;
1303 val* var221 /* : String */;
1304 val* var223 /* : NativeArray[String] */;
1305 static val* varonce222;
1306 static val* varonce224;
1307 val* var225 /* : String */;
1308 char* var226 /* : NativeString */;
1309 val* var227 /* : FlatString */;
1310 val* var228 /* : String */;
1311 val* var229 /* : String */;
1312 val* var230 /* : RuntimeVariable */;
1313 var_v = p0;
1314 var_mpropdef = p1;
1315 var_arguments = p2;
1316 {
1317 { /* Inline parser_nodes#AMethPropdef#n_extern_code_block (self) on <self:AMethPropdef> */
1318 var3 = self->attrs[COLOR_nit__parser_nodes__AMethPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AMethPropdef> */
1319 var1 = var3;
1320 RET_LABEL2:(void)0;
1321 }
1322 }
1323 if (var1 == NULL) {
1324 var4 = 1; /* is null */
1325 } else {
1326 var4 = 0; /* arg is null but recv is not */
1327 }
1328 if (0) {
1329 { /* Inline kernel#Object#== (var1,((val*)NULL)) on <var1:nullable AExternCodeBlock> */
1330 var_other = ((val*)NULL);
1331 {
1332 { /* Inline kernel#Object#is_same_instance (var1,var_other) on <var1:nullable AExternCodeBlock(AExternCodeBlock)> */
1333 var9 = var1 == var_other;
1334 var7 = var9;
1335 goto RET_LABEL8;
1336 RET_LABEL8:(void)0;
1337 }
1338 }
1339 var5 = var7;
1340 goto RET_LABEL6;
1341 RET_LABEL6:(void)0;
1342 }
1343 var4 = var5;
1344 }
1345 if (var4){
1346 {
1347 var10 = ((short int(*)(val* self, val* p0, val* p1, val* p2))(self->class->vft[COLOR_nit__light___AMethPropdef___compile_externmeth_to_c]))(self, p0, p1, p2); /* compile_externmeth_to_c on <self:AMethPropdef>*/
1348 }
1349 var = var10;
1350 goto RET_LABEL;
1351 } else {
1352 }
1353 {
1354 var11 = nit__light_only___AMethPropdef___accept_externmeth(self);
1355 }
1356 var12 = !var11;
1357 if (var12){
1358 var = 0;
1359 goto RET_LABEL;
1360 } else {
1361 }
1362 {
1363 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
1364 var15 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
1365 if (unlikely(var15 == NULL)) {
1366 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1367 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
1368 fatal_exit(1);
1369 }
1370 var13 = var15;
1371 RET_LABEL14:(void)0;
1372 }
1373 }
1374 {
1375 { /* Inline model#MClassDef#mmodule (var13) on <var13:MClassDef> */
1376 var18 = var13->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var13:MClassDef> */
1377 if (unlikely(var18 == NULL)) {
1378 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
1379 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550);
1380 fatal_exit(1);
1381 }
1382 var16 = var18;
1383 RET_LABEL17:(void)0;
1384 }
1385 }
1386 var_mmodule = var16;
1387 {
1388 { /* Inline light_ffi#MModule#uses_ffi= (var_mmodule,1) on <var_mmodule:MModule> */
1389 var_mmodule->attrs[COLOR_nit__light_ffi__MModule___uses_ffi].s = 1; /* _uses_ffi on <var_mmodule:MModule> */
1390 RET_LABEL19:(void)0;
1391 }
1392 }
1393 {
1394 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
1395 var22 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
1396 if (unlikely(var22 == NULL)) {
1397 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1398 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
1399 fatal_exit(1);
1400 }
1401 var20 = var22;
1402 RET_LABEL21:(void)0;
1403 }
1404 }
1405 {
1406 { /* Inline model#MClassDef#bound_mtype (var20) on <var20:MClassDef> */
1407 var25 = var20->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var20:MClassDef> */
1408 if (unlikely(var25 == NULL)) {
1409 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
1410 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
1411 fatal_exit(1);
1412 }
1413 var23 = var25;
1414 RET_LABEL24:(void)0;
1415 }
1416 }
1417 var_mclass_type = var23;
1418 {
1419 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MMethodDef> */
1420 var28 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MMethodDef> */
1421 if (unlikely(var28 == NULL)) {
1422 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
1423 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
1424 fatal_exit(1);
1425 }
1426 var26 = var28;
1427 RET_LABEL27:(void)0;
1428 }
1429 }
1430 {
1431 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
1432 var31 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
1433 if (unlikely(var31 == NULL)) {
1434 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1435 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
1436 fatal_exit(1);
1437 }
1438 var29 = var31;
1439 RET_LABEL30:(void)0;
1440 }
1441 }
1442 {
1443 { /* Inline model#MClassDef#bound_mtype (var29) on <var29:MClassDef> */
1444 var34 = var29->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var29:MClassDef> */
1445 if (unlikely(var34 == NULL)) {
1446 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
1447 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
1448 fatal_exit(1);
1449 }
1450 var32 = var34;
1451 RET_LABEL33:(void)0;
1452 }
1453 }
1454 if (likely(varonce!=NULL)) {
1455 var35 = varonce;
1456 } else {
1457 var36 = "___impl";
1458 var37 = standard___standard__NativeString___to_s_with_length(var36, 7l);
1459 var35 = var37;
1460 varonce = var35;
1461 }
1462 {
1463 var38 = nit__nitni_utilities___standard__Object___long_signature(self);
1464 }
1465 {
1466 var39 = nit__nitni_utilities___MMethod___build_cname(var26, var32, var_mmodule, var35, var38);
1467 }
1468 var_externname = var39;
1469 var_recv_var = ((val*)NULL);
1470 {
1471 { /* Inline model#MMethodDef#msignature (var_mpropdef) on <var_mpropdef:MMethodDef> */
1472 var42 = var_mpropdef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:MMethodDef> */
1473 var40 = var42;
1474 RET_LABEL41:(void)0;
1475 }
1476 }
1477 if (var40 == NULL) {
1478 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1479 PRINT_ERROR(" (%s:%d)\n", FILE_nit__light, 122);
1480 fatal_exit(1);
1481 } else {
1482 { /* Inline model#MSignature#return_mtype (var40) on <var40:nullable MSignature> */
1483 if (unlikely(var40 == NULL)) {
1484 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1485 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1768);
1486 fatal_exit(1);
1487 }
1488 var45 = var40->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on <var40:nullable MSignature> */
1489 var43 = var45;
1490 RET_LABEL44:(void)0;
1491 }
1492 }
1493 var_return_mtype = var43;
1494 if (var_return_mtype == NULL) {
1495 var46 = 0; /* is null */
1496 } else {
1497 var46 = 1; /* arg is null and recv is not */
1498 }
1499 if (0) {
1500 { /* Inline kernel#Object#!= (var_return_mtype,((val*)NULL)) on <var_return_mtype:nullable MType> */
1501 var_other49 = ((val*)NULL);
1502 {
1503 var50 = ((short int(*)(val* self, val* p0))(var_return_mtype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_return_mtype, var_other49); /* == on <var_return_mtype:nullable MType(MType)>*/
1504 }
1505 var51 = !var50;
1506 var47 = var51;
1507 goto RET_LABEL48;
1508 RET_LABEL48:(void)0;
1509 }
1510 var46 = var47;
1511 }
1512 if (var46){
1513 {
1514 var52 = ((val*(*)(val* self, val* p0, val* p1))(var_return_mtype->class->vft[COLOR_nit__model__MType__anchor_to]))(var_return_mtype, var_mmodule, var_mclass_type); /* anchor_to on <var_return_mtype:nullable MType(MType)>*/
1515 }
1516 var_return_mtype = var52;
1517 {
1518 var53 = nit___nit__AbstractCompilerVisitor___new_var(var_v, var_return_mtype);
1519 }
1520 var_recv_var = var53;
1521 } else {
1522 }
1523 {
1524 nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__adapt_signature(var_v, var_mpropdef, var_arguments); /* Direct call separate_compiler#SeparateCompilerVisitor#adapt_signature on <var_v:AbstractCompilerVisitor>*/
1525 }
1526 {
1527 nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__unbox_signature_extern(var_v, var_mpropdef, var_arguments); /* Direct call separate_compiler#SeparateCompilerVisitor#unbox_signature_extern on <var_v:AbstractCompilerVisitor>*/
1528 }
1529 var54 = NEW_standard__Array(&type_standard__Array__standard__String);
1530 {
1531 standard___standard__Array___standard__kernel__Object__init(var54); /* Direct call array#Array#init on <var54:Array[String]>*/
1532 }
1533 var_arguments_for_c = var54;
1534 var_a = 0l;
1535 {
1536 { /* Inline array#AbstractArrayRead#length (var_arguments) on <var_arguments:Array[RuntimeVariable]> */
1537 var57 = var_arguments->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_arguments:Array[RuntimeVariable]> */
1538 var55 = var57;
1539 RET_LABEL56:(void)0;
1540 }
1541 }
1542 var_ = var55;
1543 for(;;) {
1544 {
1545 { /* Inline kernel#Int#< (var_a,var_) on <var_a:Int> */
1546 /* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
1547 /* <var_:Int> isa OTHER */
1548 var60 = 1; /* easy <var_:Int> isa OTHER*/
1549 if (unlikely(!var60)) {
1550 var_class_name = type_standard__Int.name;
1551 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1552 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
1553 fatal_exit(1);
1554 }
1555 var61 = var_a < var_;
1556 var58 = var61;
1557 goto RET_LABEL59;
1558 RET_LABEL59:(void)0;
1559 }
1560 }
1561 if (var58){
1562 {
1563 var62 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_arguments, var_a);
1564 }
1565 var_arg = var62;
1566 {
1567 { /* Inline kernel#Int#== (var_a,0l) on <var_a:Int> */
1568 var65 = var_a == 0l;
1569 var63 = var65;
1570 goto RET_LABEL64;
1571 RET_LABEL64:(void)0;
1572 }
1573 }
1574 if (var63){
1575 {
1576 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
1577 var68 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
1578 if (unlikely(var68 == NULL)) {
1579 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1580 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
1581 fatal_exit(1);
1582 }
1583 var66 = var68;
1584 RET_LABEL67:(void)0;
1585 }
1586 }
1587 {
1588 { /* Inline model#MClassDef#mclass (var66) on <var66:MClassDef> */
1589 var71 = var66->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var66:MClassDef> */
1590 if (unlikely(var71 == NULL)) {
1591 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1592 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
1593 fatal_exit(1);
1594 }
1595 var69 = var71;
1596 RET_LABEL70:(void)0;
1597 }
1598 }
1599 {
1600 { /* Inline model#MClass#mclass_type (var69) on <var69:MClass> */
1601 var74 = var69->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var69:MClass> */
1602 if (unlikely(var74 == NULL)) {
1603 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
1604 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484);
1605 fatal_exit(1);
1606 }
1607 var72 = var74;
1608 RET_LABEL73:(void)0;
1609 }
1610 }
1611 var_param_mtype = var72;
1612 } else {
1613 {
1614 { /* Inline model#MMethodDef#msignature (var_mpropdef) on <var_mpropdef:MMethodDef> */
1615 var77 = var_mpropdef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:MMethodDef> */
1616 var75 = var77;
1617 RET_LABEL76:(void)0;
1618 }
1619 }
1620 if (var75 == NULL) {
1621 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1622 PRINT_ERROR(" (%s:%d)\n", FILE_nit__light, 137);
1623 fatal_exit(1);
1624 } else {
1625 { /* Inline model#MSignature#mparameters (var75) on <var75:nullable MSignature> */
1626 if (unlikely(var75 == NULL)) {
1627 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1628 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1756);
1629 fatal_exit(1);
1630 }
1631 var80 = var75->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var75:nullable MSignature> */
1632 if (unlikely(var80 == NULL)) {
1633 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
1634 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1756);
1635 fatal_exit(1);
1636 }
1637 var78 = var80;
1638 RET_LABEL79:(void)0;
1639 }
1640 }
1641 {
1642 { /* Inline kernel#Int#- (var_a,1l) on <var_a:Int> */
1643 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
1644 /* <1l:Int> isa OTHER */
1645 var83 = 1; /* easy <1l:Int> isa OTHER*/
1646 if (unlikely(!var83)) {
1647 var_class_name86 = type_standard__Int.name;
1648 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name86);
1649 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
1650 fatal_exit(1);
1651 }
1652 var87 = var_a - 1l;
1653 var81 = var87;
1654 goto RET_LABEL82;
1655 RET_LABEL82:(void)0;
1656 }
1657 }
1658 {
1659 var88 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var78, var81);
1660 }
1661 {
1662 { /* Inline model#MParameter#mtype (var88) on <var88:nullable Object(MParameter)> */
1663 var91 = var88->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var88:nullable Object(MParameter)> */
1664 if (unlikely(var91 == NULL)) {
1665 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1666 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1879);
1667 fatal_exit(1);
1668 }
1669 var89 = var91;
1670 RET_LABEL90:(void)0;
1671 }
1672 }
1673 var_param_mtype = var89;
1674 }
1675 {
1676 var92 = ((val*(*)(val* self, val* p0, val* p1))(var_param_mtype->class->vft[COLOR_nit__model__MType__anchor_to]))(var_param_mtype, var_mmodule, var_mclass_type); /* anchor_to on <var_param_mtype:MType>*/
1677 }
1678 var_param_mtype = var92;
1679 {
1680 var93 = ((short int(*)(val* self))(var_param_mtype->class->vft[COLOR_nit__nitni_base__MType__is_cprimitive]))(var_param_mtype); /* is_cprimitive on <var_param_mtype:MType>*/
1681 }
1682 if (var93){
1683 {
1684 { /* Inline abstract_compiler#RuntimeVariable#name (var_arg) on <var_arg:RuntimeVariable> */
1685 var96 = var_arg->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___name].val; /* _name on <var_arg:RuntimeVariable> */
1686 if (unlikely(var96 == NULL)) {
1687 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1688 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1781);
1689 fatal_exit(1);
1690 }
1691 var94 = var96;
1692 RET_LABEL95:(void)0;
1693 }
1694 }
1695 {
1696 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_arguments_for_c, var94); /* Direct call array#Array#add on <var_arguments_for_c:Array[String]>*/
1697 }
1698 } else {
1699 if (unlikely(varonce97==NULL)) {
1700 var98 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
1701 if (likely(varonce99!=NULL)) {
1702 var100 = varonce99;
1703 } else {
1704 var101 = "struct nitni_instance* var_for_c_";
1705 var102 = standard___standard__NativeString___to_s_with_length(var101, 33l);
1706 var100 = var102;
1707 varonce99 = var100;
1708 }
1709 ((struct instance_standard__NativeArray*)var98)->values[0]=var100;
1710 if (likely(varonce103!=NULL)) {
1711 var104 = varonce103;
1712 } else {
1713 var105 = ";";
1714 var106 = standard___standard__NativeString___to_s_with_length(var105, 1l);
1715 var104 = var106;
1716 varonce103 = var104;
1717 }
1718 ((struct instance_standard__NativeArray*)var98)->values[2]=var104;
1719 } else {
1720 var98 = varonce97;
1721 varonce97 = NULL;
1722 }
1723 var107 = standard__string___Int___Object__to_s(var_a);
1724 ((struct instance_standard__NativeArray*)var98)->values[1]=var107;
1725 {
1726 var108 = ((val*(*)(val* self))(var98->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var98); /* native_to_s on <var98:NativeArray[String]>*/
1727 }
1728 varonce97 = var98;
1729 {
1730 nit___nit__AbstractCompilerVisitor___add(var_v, var108); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
1731 }
1732 if (unlikely(varonce109==NULL)) {
1733 var110 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
1734 if (likely(varonce111!=NULL)) {
1735 var112 = varonce111;
1736 } else {
1737 var113 = "var_for_c_";
1738 var114 = standard___standard__NativeString___to_s_with_length(var113, 10l);
1739 var112 = var114;
1740 varonce111 = var112;
1741 }
1742 ((struct instance_standard__NativeArray*)var110)->values[0]=var112;
1743 if (likely(varonce115!=NULL)) {
1744 var116 = varonce115;
1745 } else {
1746 var117 = " = nit_alloc(sizeof(struct nitni_instance));";
1747 var118 = standard___standard__NativeString___to_s_with_length(var117, 44l);
1748 var116 = var118;
1749 varonce115 = var116;
1750 }
1751 ((struct instance_standard__NativeArray*)var110)->values[2]=var116;
1752 } else {
1753 var110 = varonce109;
1754 varonce109 = NULL;
1755 }
1756 var119 = standard__string___Int___Object__to_s(var_a);
1757 ((struct instance_standard__NativeArray*)var110)->values[1]=var119;
1758 {
1759 var120 = ((val*(*)(val* self))(var110->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var110); /* native_to_s on <var110:NativeArray[String]>*/
1760 }
1761 varonce109 = var110;
1762 {
1763 nit___nit__AbstractCompilerVisitor___add(var_v, var120); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
1764 }
1765 if (unlikely(varonce121==NULL)) {
1766 var122 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
1767 if (likely(varonce123!=NULL)) {
1768 var124 = varonce123;
1769 } else {
1770 var125 = "var_for_c_";
1771 var126 = standard___standard__NativeString___to_s_with_length(var125, 10l);
1772 var124 = var126;
1773 varonce123 = var124;
1774 }
1775 ((struct instance_standard__NativeArray*)var122)->values[0]=var124;
1776 if (likely(varonce127!=NULL)) {
1777 var128 = varonce127;
1778 } else {
1779 var129 = "->value = ";
1780 var130 = standard___standard__NativeString___to_s_with_length(var129, 10l);
1781 var128 = var130;
1782 varonce127 = var128;
1783 }
1784 ((struct instance_standard__NativeArray*)var122)->values[2]=var128;
1785 if (likely(varonce131!=NULL)) {
1786 var132 = varonce131;
1787 } else {
1788 var133 = ";";
1789 var134 = standard___standard__NativeString___to_s_with_length(var133, 1l);
1790 var132 = var134;
1791 varonce131 = var132;
1792 }
1793 ((struct instance_standard__NativeArray*)var122)->values[4]=var132;
1794 } else {
1795 var122 = varonce121;
1796 varonce121 = NULL;
1797 }
1798 var135 = standard__string___Int___Object__to_s(var_a);
1799 ((struct instance_standard__NativeArray*)var122)->values[1]=var135;
1800 {
1801 { /* Inline abstract_compiler#RuntimeVariable#name (var_arg) on <var_arg:RuntimeVariable> */
1802 var138 = var_arg->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___name].val; /* _name on <var_arg:RuntimeVariable> */
1803 if (unlikely(var138 == NULL)) {
1804 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1805 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1781);
1806 fatal_exit(1);
1807 }
1808 var136 = var138;
1809 RET_LABEL137:(void)0;
1810 }
1811 }
1812 ((struct instance_standard__NativeArray*)var122)->values[3]=var136;
1813 {
1814 var139 = ((val*(*)(val* self))(var122->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var122); /* native_to_s on <var122:NativeArray[String]>*/
1815 }
1816 varonce121 = var122;
1817 {
1818 nit___nit__AbstractCompilerVisitor___add(var_v, var139); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
1819 }
1820 if (unlikely(varonce140==NULL)) {
1821 var141 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
1822 if (likely(varonce142!=NULL)) {
1823 var143 = varonce142;
1824 } else {
1825 var144 = "var_for_c_";
1826 var145 = standard___standard__NativeString___to_s_with_length(var144, 10l);
1827 var143 = var145;
1828 varonce142 = var143;
1829 }
1830 ((struct instance_standard__NativeArray*)var141)->values[0]=var143;
1831 } else {
1832 var141 = varonce140;
1833 varonce140 = NULL;
1834 }
1835 var146 = standard__string___Int___Object__to_s(var_a);
1836 ((struct instance_standard__NativeArray*)var141)->values[1]=var146;
1837 {
1838 var147 = ((val*(*)(val* self))(var141->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var141); /* native_to_s on <var141:NativeArray[String]>*/
1839 }
1840 varonce140 = var141;
1841 {
1842 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_arguments_for_c, var147); /* Direct call array#Array#add on <var_arguments_for_c:Array[String]>*/
1843 }
1844 }
1845 {
1846 var148 = standard___standard__Int___Discrete__successor(var_a, 1l);
1847 }
1848 var_a = var148;
1849 } else {
1850 goto BREAK_label;
1851 }
1852 }
1853 BREAK_label: (void)0;
1854 if (var_recv_var == NULL) {
1855 var149 = 1; /* is null */
1856 } else {
1857 var149 = 0; /* arg is null but recv is not */
1858 }
1859 if (0) {
1860 { /* Inline kernel#Object#== (var_recv_var,((val*)NULL)) on <var_recv_var:nullable RuntimeVariable> */
1861 var_other = ((val*)NULL);
1862 {
1863 { /* Inline kernel#Object#is_same_instance (var_recv_var,var_other) on <var_recv_var:nullable RuntimeVariable(RuntimeVariable)> */
1864 var154 = var_recv_var == var_other;
1865 var152 = var154;
1866 goto RET_LABEL153;
1867 RET_LABEL153:(void)0;
1868 }
1869 }
1870 var150 = var152;
1871 goto RET_LABEL151;
1872 RET_LABEL151:(void)0;
1873 }
1874 var149 = var150;
1875 }
1876 if (var149){
1877 if (unlikely(varonce155==NULL)) {
1878 var156 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
1879 if (likely(varonce157!=NULL)) {
1880 var158 = varonce157;
1881 } else {
1882 var159 = "(";
1883 var160 = standard___standard__NativeString___to_s_with_length(var159, 1l);
1884 var158 = var160;
1885 varonce157 = var158;
1886 }
1887 ((struct instance_standard__NativeArray*)var156)->values[1]=var158;
1888 if (likely(varonce161!=NULL)) {
1889 var162 = varonce161;
1890 } else {
1891 var163 = ");";
1892 var164 = standard___standard__NativeString___to_s_with_length(var163, 2l);
1893 var162 = var164;
1894 varonce161 = var162;
1895 }
1896 ((struct instance_standard__NativeArray*)var156)->values[3]=var162;
1897 } else {
1898 var156 = varonce155;
1899 varonce155 = NULL;
1900 }
1901 ((struct instance_standard__NativeArray*)var156)->values[0]=var_externname;
1902 if (likely(varonce165!=NULL)) {
1903 var166 = varonce165;
1904 } else {
1905 var167 = ", ";
1906 var168 = standard___standard__NativeString___to_s_with_length(var167, 2l);
1907 var166 = var168;
1908 varonce165 = var166;
1909 }
1910 {
1911 var169 = standard__string___Collection___join(var_arguments_for_c, var166);
1912 }
1913 ((struct instance_standard__NativeArray*)var156)->values[2]=var169;
1914 {
1915 var170 = ((val*(*)(val* self))(var156->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var156); /* native_to_s on <var156:NativeArray[String]>*/
1916 }
1917 varonce155 = var156;
1918 {
1919 nit___nit__AbstractCompilerVisitor___add(var_v, var170); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
1920 }
1921 } else {
1922 if (var_return_mtype == NULL) {
1923 var171 = 0; /* is null */
1924 } else {
1925 var171 = 1; /* arg is null and recv is not */
1926 }
1927 if (0) {
1928 { /* Inline kernel#Object#!= (var_return_mtype,((val*)NULL)) on <var_return_mtype:nullable MType> */
1929 var_other49 = ((val*)NULL);
1930 {
1931 var174 = ((short int(*)(val* self, val* p0))(var_return_mtype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_return_mtype, var_other49); /* == on <var_return_mtype:nullable MType(MType)>*/
1932 }
1933 var175 = !var174;
1934 var172 = var175;
1935 goto RET_LABEL173;
1936 RET_LABEL173:(void)0;
1937 }
1938 var171 = var172;
1939 }
1940 if (unlikely(!var171)) {
1941 PRINT_ERROR("Runtime error: %s", "Assert failed");
1942 PRINT_ERROR(" (%s:%d)\n", FILE_nit__light, 154);
1943 fatal_exit(1);
1944 }
1945 {
1946 var176 = ((short int(*)(val* self))(var_return_mtype->class->vft[COLOR_nit__nitni_base__MType__is_cprimitive]))(var_return_mtype); /* is_cprimitive on <var_return_mtype:nullable MType(MType)>*/
1947 }
1948 if (var176){
1949 if (unlikely(varonce177==NULL)) {
1950 var178 = NEW_standard__NativeArray(6l, &type_standard__NativeArray__standard__String);
1951 if (likely(varonce179!=NULL)) {
1952 var180 = varonce179;
1953 } else {
1954 var181 = " = ";
1955 var182 = standard___standard__NativeString___to_s_with_length(var181, 3l);
1956 var180 = var182;
1957 varonce179 = var180;
1958 }
1959 ((struct instance_standard__NativeArray*)var178)->values[1]=var180;
1960 if (likely(varonce183!=NULL)) {
1961 var184 = varonce183;
1962 } else {
1963 var185 = "(";
1964 var186 = standard___standard__NativeString___to_s_with_length(var185, 1l);
1965 var184 = var186;
1966 varonce183 = var184;
1967 }
1968 ((struct instance_standard__NativeArray*)var178)->values[3]=var184;
1969 if (likely(varonce187!=NULL)) {
1970 var188 = varonce187;
1971 } else {
1972 var189 = ");";
1973 var190 = standard___standard__NativeString___to_s_with_length(var189, 2l);
1974 var188 = var190;
1975 varonce187 = var188;
1976 }
1977 ((struct instance_standard__NativeArray*)var178)->values[5]=var188;
1978 } else {
1979 var178 = varonce177;
1980 varonce177 = NULL;
1981 }
1982 {
1983 var191 = ((val*(*)(val* self))(var_recv_var->class->vft[COLOR_standard__string__Object__to_s]))(var_recv_var); /* to_s on <var_recv_var:nullable RuntimeVariable(RuntimeVariable)>*/
1984 }
1985 ((struct instance_standard__NativeArray*)var178)->values[0]=var191;
1986 ((struct instance_standard__NativeArray*)var178)->values[2]=var_externname;
1987 if (likely(varonce192!=NULL)) {
1988 var193 = varonce192;
1989 } else {
1990 var194 = ", ";
1991 var195 = standard___standard__NativeString___to_s_with_length(var194, 2l);
1992 var193 = var195;
1993 varonce192 = var193;
1994 }
1995 {
1996 var196 = standard__string___Collection___join(var_arguments_for_c, var193);
1997 }
1998 ((struct instance_standard__NativeArray*)var178)->values[4]=var196;
1999 {
2000 var197 = ((val*(*)(val* self))(var178->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var178); /* native_to_s on <var178:NativeArray[String]>*/
2001 }
2002 varonce177 = var178;
2003 {
2004 nit___nit__AbstractCompilerVisitor___add(var_v, var197); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2005 }
2006 } else {
2007 if (likely(varonce198!=NULL)) {
2008 var199 = varonce198;
2009 } else {
2010 var200 = "struct nitni_instance* ret_var;";
2011 var201 = standard___standard__NativeString___to_s_with_length(var200, 31l);
2012 var199 = var201;
2013 varonce198 = var199;
2014 }
2015 {
2016 nit___nit__AbstractCompilerVisitor___add(var_v, var199); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2017 }
2018 if (unlikely(varonce202==NULL)) {
2019 var203 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
2020 if (likely(varonce204!=NULL)) {
2021 var205 = varonce204;
2022 } else {
2023 var206 = "ret_var = ";
2024 var207 = standard___standard__NativeString___to_s_with_length(var206, 10l);
2025 var205 = var207;
2026 varonce204 = var205;
2027 }
2028 ((struct instance_standard__NativeArray*)var203)->values[0]=var205;
2029 if (likely(varonce208!=NULL)) {
2030 var209 = varonce208;
2031 } else {
2032 var210 = "(";
2033 var211 = standard___standard__NativeString___to_s_with_length(var210, 1l);
2034 var209 = var211;
2035 varonce208 = var209;
2036 }
2037 ((struct instance_standard__NativeArray*)var203)->values[2]=var209;
2038 if (likely(varonce212!=NULL)) {
2039 var213 = varonce212;
2040 } else {
2041 var214 = ");";
2042 var215 = standard___standard__NativeString___to_s_with_length(var214, 2l);
2043 var213 = var215;
2044 varonce212 = var213;
2045 }
2046 ((struct instance_standard__NativeArray*)var203)->values[4]=var213;
2047 } else {
2048 var203 = varonce202;
2049 varonce202 = NULL;
2050 }
2051 ((struct instance_standard__NativeArray*)var203)->values[1]=var_externname;
2052 if (likely(varonce216!=NULL)) {
2053 var217 = varonce216;
2054 } else {
2055 var218 = ", ";
2056 var219 = standard___standard__NativeString___to_s_with_length(var218, 2l);
2057 var217 = var219;
2058 varonce216 = var217;
2059 }
2060 {
2061 var220 = standard__string___Collection___join(var_arguments_for_c, var217);
2062 }
2063 ((struct instance_standard__NativeArray*)var203)->values[3]=var220;
2064 {
2065 var221 = ((val*(*)(val* self))(var203->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var203); /* native_to_s on <var203:NativeArray[String]>*/
2066 }
2067 varonce202 = var203;
2068 {
2069 nit___nit__AbstractCompilerVisitor___add(var_v, var221); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2070 }
2071 if (unlikely(varonce222==NULL)) {
2072 var223 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
2073 if (likely(varonce224!=NULL)) {
2074 var225 = varonce224;
2075 } else {
2076 var226 = " = ret_var->value;";
2077 var227 = standard___standard__NativeString___to_s_with_length(var226, 18l);
2078 var225 = var227;
2079 varonce224 = var225;
2080 }
2081 ((struct instance_standard__NativeArray*)var223)->values[1]=var225;
2082 } else {
2083 var223 = varonce222;
2084 varonce222 = NULL;
2085 }
2086 {
2087 var228 = ((val*(*)(val* self))(var_recv_var->class->vft[COLOR_standard__string__Object__to_s]))(var_recv_var); /* to_s on <var_recv_var:nullable RuntimeVariable(RuntimeVariable)>*/
2088 }
2089 ((struct instance_standard__NativeArray*)var223)->values[0]=var228;
2090 {
2091 var229 = ((val*(*)(val* self))(var223->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var223); /* native_to_s on <var223:NativeArray[String]>*/
2092 }
2093 varonce222 = var223;
2094 {
2095 nit___nit__AbstractCompilerVisitor___add(var_v, var229); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2096 }
2097 }
2098 {
2099 var230 = ((val*(*)(val* self, val* p0, val* p1))(var_v->class->vft[COLOR_nit__abstract_compiler__AbstractCompilerVisitor__box_extern]))(var_v, var_recv_var, var_return_mtype); /* box_extern on <var_v:AbstractCompilerVisitor>*/
2100 }
2101 var_recv_var = var230;
2102 {
2103 nit___nit__AbstractCompilerVisitor___ret(var_v, var_recv_var); /* Direct call abstract_compiler#AbstractCompilerVisitor#ret on <var_v:AbstractCompilerVisitor>*/
2104 }
2105 }
2106 {
2107 nit__light___AMethPropdef___compile_ffi_support_to_c(self, var_v); /* Direct call light#AMethPropdef#compile_ffi_support_to_c on <self:AMethPropdef>*/
2108 }
2109 var = 1;
2110 goto RET_LABEL;
2111 RET_LABEL:;
2112 return var;
2113 }
2114 /* method light#AMethPropdef#compile_externinit_to_c for (self: AMethPropdef, AbstractCompilerVisitor, MMethodDef, Array[RuntimeVariable]): Bool */
2115 short int nit__light___AMethPropdef___compile_externinit_to_c(val* self, val* p0, val* p1, val* p2) {
2116 short int var /* : Bool */;
2117 val* var_v /* var v: AbstractCompilerVisitor */;
2118 val* var_mpropdef /* var mpropdef: MMethodDef */;
2119 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
2120 val* var1 /* : nullable AExternCodeBlock */;
2121 val* var3 /* : nullable AExternCodeBlock */;
2122 short int var4 /* : Bool */;
2123 short int var5 /* : Bool */;
2124 val* var_other /* var other: nullable Object */;
2125 short int var7 /* : Bool */;
2126 short int var9 /* : Bool */;
2127 short int var10 /* : Bool */;
2128 short int var11 /* : Bool */;
2129 short int var12 /* : Bool */;
2130 val* var13 /* : MClassDef */;
2131 val* var15 /* : MClassDef */;
2132 val* var16 /* : MModule */;
2133 val* var18 /* : MModule */;
2134 val* var_mmodule /* var mmodule: MModule */;
2135 val* var20 /* : MClassDef */;
2136 val* var22 /* : MClassDef */;
2137 val* var23 /* : MClassType */;
2138 val* var25 /* : MClassType */;
2139 val* var_mclass_type /* var mclass_type: MClassType */;
2140 val* var26 /* : MProperty */;
2141 val* var28 /* : MProperty */;
2142 val* var29 /* : MClassDef */;
2143 val* var31 /* : MClassDef */;
2144 val* var32 /* : MClassType */;
2145 val* var34 /* : MClassType */;
2146 static val* varonce;
2147 val* var35 /* : String */;
2148 char* var36 /* : NativeString */;
2149 val* var37 /* : FlatString */;
2150 val* var38 /* : SignatureLength */;
2151 val* var39 /* : String */;
2152 val* var_externname /* var externname: String */;
2153 val* var40 /* : nullable Object */;
2154 val* var41 /* : MType */;
2155 val* var43 /* : MType */;
2156 val* var_return_mtype /* var return_mtype: MType */;
2157 val* var44 /* : RuntimeVariable */;
2158 val* var_recv_var /* var recv_var: RuntimeVariable */;
2159 val* var45 /* : nullable Object */;
2160 val* var46 /* : Array[String] */;
2161 val* var_arguments_for_c /* var arguments_for_c: Array[String] */;
2162 long var_a /* var a: Int */;
2163 long var47 /* : Int */;
2164 long var49 /* : Int */;
2165 long var_ /* var : Int */;
2166 short int var50 /* : Bool */;
2167 short int var52 /* : Bool */;
2168 int cltype;
2169 int idtype;
2170 const char* var_class_name;
2171 short int var53 /* : Bool */;
2172 val* var54 /* : nullable Object */;
2173 val* var_arg /* var arg: RuntimeVariable */;
2174 val* var55 /* : nullable MSignature */;
2175 val* var57 /* : nullable MSignature */;
2176 val* var58 /* : Array[MParameter] */;
2177 val* var60 /* : Array[MParameter] */;
2178 val* var61 /* : nullable Object */;
2179 val* var62 /* : MType */;
2180 val* var64 /* : MType */;
2181 val* var_param_mtype /* var param_mtype: MType */;
2182 val* var65 /* : MType */;
2183 short int var66 /* : Bool */;
2184 val* var67 /* : String */;
2185 val* var69 /* : String */;
2186 val* var71 /* : NativeArray[String] */;
2187 static val* varonce70;
2188 static val* varonce72;
2189 val* var73 /* : String */;
2190 char* var74 /* : NativeString */;
2191 val* var75 /* : FlatString */;
2192 static val* varonce76;
2193 val* var77 /* : String */;
2194 char* var78 /* : NativeString */;
2195 val* var79 /* : FlatString */;
2196 val* var80 /* : String */;
2197 val* var81 /* : String */;
2198 val* var83 /* : NativeArray[String] */;
2199 static val* varonce82;
2200 static val* varonce84;
2201 val* var85 /* : String */;
2202 char* var86 /* : NativeString */;
2203 val* var87 /* : FlatString */;
2204 static val* varonce88;
2205 val* var89 /* : String */;
2206 char* var90 /* : NativeString */;
2207 val* var91 /* : FlatString */;
2208 val* var92 /* : String */;
2209 val* var93 /* : String */;
2210 val* var95 /* : NativeArray[String] */;
2211 static val* varonce94;
2212 static val* varonce96;
2213 val* var97 /* : String */;
2214 char* var98 /* : NativeString */;
2215 val* var99 /* : FlatString */;
2216 static val* varonce100;
2217 val* var101 /* : String */;
2218 char* var102 /* : NativeString */;
2219 val* var103 /* : FlatString */;
2220 static val* varonce104;
2221 val* var105 /* : String */;
2222 char* var106 /* : NativeString */;
2223 val* var107 /* : FlatString */;
2224 val* var108 /* : String */;
2225 val* var109 /* : String */;
2226 val* var111 /* : String */;
2227 val* var112 /* : String */;
2228 val* var114 /* : NativeArray[String] */;
2229 static val* varonce113;
2230 static val* varonce115;
2231 val* var116 /* : String */;
2232 char* var117 /* : NativeString */;
2233 val* var118 /* : FlatString */;
2234 val* var119 /* : String */;
2235 val* var120 /* : String */;
2236 long var121 /* : Int */;
2237 short int var122 /* : Bool */;
2238 val* var124 /* : NativeArray[String] */;
2239 static val* varonce123;
2240 static val* varonce125;
2241 val* var126 /* : String */;
2242 char* var127 /* : NativeString */;
2243 val* var128 /* : FlatString */;
2244 static val* varonce129;
2245 val* var130 /* : String */;
2246 char* var131 /* : NativeString */;
2247 val* var132 /* : FlatString */;
2248 static val* varonce133;
2249 val* var134 /* : String */;
2250 char* var135 /* : NativeString */;
2251 val* var136 /* : FlatString */;
2252 val* var137 /* : String */;
2253 static val* varonce138;
2254 val* var139 /* : String */;
2255 char* var140 /* : NativeString */;
2256 val* var141 /* : FlatString */;
2257 val* var142 /* : String */;
2258 val* var143 /* : String */;
2259 static val* varonce144;
2260 val* var145 /* : String */;
2261 char* var146 /* : NativeString */;
2262 val* var147 /* : FlatString */;
2263 val* var149 /* : NativeArray[String] */;
2264 static val* varonce148;
2265 static val* varonce150;
2266 val* var151 /* : String */;
2267 char* var152 /* : NativeString */;
2268 val* var153 /* : FlatString */;
2269 static val* varonce154;
2270 val* var155 /* : String */;
2271 char* var156 /* : NativeString */;
2272 val* var157 /* : FlatString */;
2273 static val* varonce158;
2274 val* var159 /* : String */;
2275 char* var160 /* : NativeString */;
2276 val* var161 /* : FlatString */;
2277 static val* varonce162;
2278 val* var163 /* : String */;
2279 char* var164 /* : NativeString */;
2280 val* var165 /* : FlatString */;
2281 val* var166 /* : String */;
2282 val* var167 /* : String */;
2283 val* var169 /* : NativeArray[String] */;
2284 static val* varonce168;
2285 static val* varonce170;
2286 val* var171 /* : String */;
2287 char* var172 /* : NativeString */;
2288 val* var173 /* : FlatString */;
2289 val* var174 /* : String */;
2290 val* var175 /* : String */;
2291 val* var176 /* : RuntimeVariable */;
2292 var_v = p0;
2293 var_mpropdef = p1;
2294 var_arguments = p2;
2295 {
2296 { /* Inline parser_nodes#AMethPropdef#n_extern_code_block (self) on <self:AMethPropdef> */
2297 var3 = self->attrs[COLOR_nit__parser_nodes__AMethPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AMethPropdef> */
2298 var1 = var3;
2299 RET_LABEL2:(void)0;
2300 }
2301 }
2302 if (var1 == NULL) {
2303 var4 = 1; /* is null */
2304 } else {
2305 var4 = 0; /* arg is null but recv is not */
2306 }
2307 if (0) {
2308 { /* Inline kernel#Object#== (var1,((val*)NULL)) on <var1:nullable AExternCodeBlock> */
2309 var_other = ((val*)NULL);
2310 {
2311 { /* Inline kernel#Object#is_same_instance (var1,var_other) on <var1:nullable AExternCodeBlock(AExternCodeBlock)> */
2312 var9 = var1 == var_other;
2313 var7 = var9;
2314 goto RET_LABEL8;
2315 RET_LABEL8:(void)0;
2316 }
2317 }
2318 var5 = var7;
2319 goto RET_LABEL6;
2320 RET_LABEL6:(void)0;
2321 }
2322 var4 = var5;
2323 }
2324 if (var4){
2325 {
2326 var10 = ((short int(*)(val* self, val* p0, val* p1, val* p2))(self->class->vft[COLOR_nit__light___AMethPropdef___compile_externinit_to_c]))(self, p0, p1, p2); /* compile_externinit_to_c on <self:AMethPropdef>*/
2327 }
2328 var = var10;
2329 goto RET_LABEL;
2330 } else {
2331 }
2332 {
2333 var11 = nit__light_only___AMethPropdef___accept_externmeth(self);
2334 }
2335 var12 = !var11;
2336 if (var12){
2337 var = 0;
2338 goto RET_LABEL;
2339 } else {
2340 }
2341 {
2342 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
2343 var15 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
2344 if (unlikely(var15 == NULL)) {
2345 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
2346 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
2347 fatal_exit(1);
2348 }
2349 var13 = var15;
2350 RET_LABEL14:(void)0;
2351 }
2352 }
2353 {
2354 { /* Inline model#MClassDef#mmodule (var13) on <var13:MClassDef> */
2355 var18 = var13->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var13:MClassDef> */
2356 if (unlikely(var18 == NULL)) {
2357 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
2358 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550);
2359 fatal_exit(1);
2360 }
2361 var16 = var18;
2362 RET_LABEL17:(void)0;
2363 }
2364 }
2365 var_mmodule = var16;
2366 {
2367 { /* Inline light_ffi#MModule#uses_ffi= (var_mmodule,1) on <var_mmodule:MModule> */
2368 var_mmodule->attrs[COLOR_nit__light_ffi__MModule___uses_ffi].s = 1; /* _uses_ffi on <var_mmodule:MModule> */
2369 RET_LABEL19:(void)0;
2370 }
2371 }
2372 {
2373 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
2374 var22 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
2375 if (unlikely(var22 == NULL)) {
2376 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
2377 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
2378 fatal_exit(1);
2379 }
2380 var20 = var22;
2381 RET_LABEL21:(void)0;
2382 }
2383 }
2384 {
2385 { /* Inline model#MClassDef#bound_mtype (var20) on <var20:MClassDef> */
2386 var25 = var20->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var20:MClassDef> */
2387 if (unlikely(var25 == NULL)) {
2388 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
2389 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
2390 fatal_exit(1);
2391 }
2392 var23 = var25;
2393 RET_LABEL24:(void)0;
2394 }
2395 }
2396 var_mclass_type = var23;
2397 {
2398 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MMethodDef> */
2399 var28 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MMethodDef> */
2400 if (unlikely(var28 == NULL)) {
2401 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
2402 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
2403 fatal_exit(1);
2404 }
2405 var26 = var28;
2406 RET_LABEL27:(void)0;
2407 }
2408 }
2409 {
2410 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
2411 var31 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
2412 if (unlikely(var31 == NULL)) {
2413 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
2414 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
2415 fatal_exit(1);
2416 }
2417 var29 = var31;
2418 RET_LABEL30:(void)0;
2419 }
2420 }
2421 {
2422 { /* Inline model#MClassDef#bound_mtype (var29) on <var29:MClassDef> */
2423 var34 = var29->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var29:MClassDef> */
2424 if (unlikely(var34 == NULL)) {
2425 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
2426 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
2427 fatal_exit(1);
2428 }
2429 var32 = var34;
2430 RET_LABEL33:(void)0;
2431 }
2432 }
2433 if (likely(varonce!=NULL)) {
2434 var35 = varonce;
2435 } else {
2436 var36 = "___impl";
2437 var37 = standard___standard__NativeString___to_s_with_length(var36, 7l);
2438 var35 = var37;
2439 varonce = var35;
2440 }
2441 {
2442 var38 = nit__nitni_utilities___standard__Object___long_signature(self);
2443 }
2444 {
2445 var39 = nit__nitni_utilities___MMethod___build_cname(var26, var32, var_mmodule, var35, var38);
2446 }
2447 var_externname = var39;
2448 {
2449 var40 = standard___standard__SequenceRead___Collection__first(var_arguments);
2450 }
2451 {
2452 { /* Inline abstract_compiler#RuntimeVariable#mtype (var40) on <var40:nullable Object(RuntimeVariable)> */
2453 var43 = var40->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var40:nullable Object(RuntimeVariable)> */
2454 if (unlikely(var43 == NULL)) {
2455 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2456 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1784);
2457 fatal_exit(1);
2458 }
2459 var41 = var43;
2460 RET_LABEL42:(void)0;
2461 }
2462 }
2463 var_return_mtype = var41;
2464 {
2465 var44 = nit___nit__AbstractCompilerVisitor___new_var(var_v, var_return_mtype);
2466 }
2467 var_recv_var = var44;
2468 {
2469 nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__adapt_signature(var_v, var_mpropdef, var_arguments); /* Direct call separate_compiler#SeparateCompilerVisitor#adapt_signature on <var_v:AbstractCompilerVisitor>*/
2470 }
2471 {
2472 nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__unbox_signature_extern(var_v, var_mpropdef, var_arguments); /* Direct call separate_compiler#SeparateCompilerVisitor#unbox_signature_extern on <var_v:AbstractCompilerVisitor>*/
2473 }
2474 {
2475 var45 = standard___standard__AbstractArray___standard__abstract_collection__Sequence__shift(var_arguments);
2476 }
2477 var46 = NEW_standard__Array(&type_standard__Array__standard__String);
2478 {
2479 standard___standard__Array___standard__kernel__Object__init(var46); /* Direct call array#Array#init on <var46:Array[String]>*/
2480 }
2481 var_arguments_for_c = var46;
2482 var_a = 0l;
2483 {
2484 { /* Inline array#AbstractArrayRead#length (var_arguments) on <var_arguments:Array[RuntimeVariable]> */
2485 var49 = var_arguments->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_arguments:Array[RuntimeVariable]> */
2486 var47 = var49;
2487 RET_LABEL48:(void)0;
2488 }
2489 }
2490 var_ = var47;
2491 for(;;) {
2492 {
2493 { /* Inline kernel#Int#< (var_a,var_) on <var_a:Int> */
2494 /* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
2495 /* <var_:Int> isa OTHER */
2496 var52 = 1; /* easy <var_:Int> isa OTHER*/
2497 if (unlikely(!var52)) {
2498 var_class_name = type_standard__Int.name;
2499 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2500 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
2501 fatal_exit(1);
2502 }
2503 var53 = var_a < var_;
2504 var50 = var53;
2505 goto RET_LABEL51;
2506 RET_LABEL51:(void)0;
2507 }
2508 }
2509 if (var50){
2510 {
2511 var54 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_arguments, var_a);
2512 }
2513 var_arg = var54;
2514 {
2515 { /* Inline model#MMethodDef#msignature (var_mpropdef) on <var_mpropdef:MMethodDef> */
2516 var57 = var_mpropdef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:MMethodDef> */
2517 var55 = var57;
2518 RET_LABEL56:(void)0;
2519 }
2520 }
2521 if (var55 == NULL) {
2522 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2523 PRINT_ERROR(" (%s:%d)\n", FILE_nit__light, 195);
2524 fatal_exit(1);
2525 } else {
2526 { /* Inline model#MSignature#mparameters (var55) on <var55:nullable MSignature> */
2527 if (unlikely(var55 == NULL)) {
2528 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2529 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1756);
2530 fatal_exit(1);
2531 }
2532 var60 = var55->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var55:nullable MSignature> */
2533 if (unlikely(var60 == NULL)) {
2534 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
2535 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1756);
2536 fatal_exit(1);
2537 }
2538 var58 = var60;
2539 RET_LABEL59:(void)0;
2540 }
2541 }
2542 {
2543 var61 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var58, var_a);
2544 }
2545 {
2546 { /* Inline model#MParameter#mtype (var61) on <var61:nullable Object(MParameter)> */
2547 var64 = var61->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var61:nullable Object(MParameter)> */
2548 if (unlikely(var64 == NULL)) {
2549 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2550 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1879);
2551 fatal_exit(1);
2552 }
2553 var62 = var64;
2554 RET_LABEL63:(void)0;
2555 }
2556 }
2557 var_param_mtype = var62;
2558 {
2559 var65 = ((val*(*)(val* self, val* p0, val* p1))(var_param_mtype->class->vft[COLOR_nit__model__MType__anchor_to]))(var_param_mtype, var_mmodule, var_mclass_type); /* anchor_to on <var_param_mtype:MType>*/
2560 }
2561 var_param_mtype = var65;
2562 {
2563 var66 = ((short int(*)(val* self))(var_param_mtype->class->vft[COLOR_nit__nitni_base__MType__is_cprimitive]))(var_param_mtype); /* is_cprimitive on <var_param_mtype:MType>*/
2564 }
2565 if (var66){
2566 {
2567 { /* Inline abstract_compiler#RuntimeVariable#name (var_arg) on <var_arg:RuntimeVariable> */
2568 var69 = var_arg->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___name].val; /* _name on <var_arg:RuntimeVariable> */
2569 if (unlikely(var69 == NULL)) {
2570 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2571 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1781);
2572 fatal_exit(1);
2573 }
2574 var67 = var69;
2575 RET_LABEL68:(void)0;
2576 }
2577 }
2578 {
2579 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_arguments_for_c, var67); /* Direct call array#Array#add on <var_arguments_for_c:Array[String]>*/
2580 }
2581 } else {
2582 if (unlikely(varonce70==NULL)) {
2583 var71 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
2584 if (likely(varonce72!=NULL)) {
2585 var73 = varonce72;
2586 } else {
2587 var74 = "struct nitni_instance* var_for_c_";
2588 var75 = standard___standard__NativeString___to_s_with_length(var74, 33l);
2589 var73 = var75;
2590 varonce72 = var73;
2591 }
2592 ((struct instance_standard__NativeArray*)var71)->values[0]=var73;
2593 if (likely(varonce76!=NULL)) {
2594 var77 = varonce76;
2595 } else {
2596 var78 = ";";
2597 var79 = standard___standard__NativeString___to_s_with_length(var78, 1l);
2598 var77 = var79;
2599 varonce76 = var77;
2600 }
2601 ((struct instance_standard__NativeArray*)var71)->values[2]=var77;
2602 } else {
2603 var71 = varonce70;
2604 varonce70 = NULL;
2605 }
2606 var80 = standard__string___Int___Object__to_s(var_a);
2607 ((struct instance_standard__NativeArray*)var71)->values[1]=var80;
2608 {
2609 var81 = ((val*(*)(val* self))(var71->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var71); /* native_to_s on <var71:NativeArray[String]>*/
2610 }
2611 varonce70 = var71;
2612 {
2613 nit___nit__AbstractCompilerVisitor___add(var_v, var81); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2614 }
2615 if (unlikely(varonce82==NULL)) {
2616 var83 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
2617 if (likely(varonce84!=NULL)) {
2618 var85 = varonce84;
2619 } else {
2620 var86 = "var_for_c_";
2621 var87 = standard___standard__NativeString___to_s_with_length(var86, 10l);
2622 var85 = var87;
2623 varonce84 = var85;
2624 }
2625 ((struct instance_standard__NativeArray*)var83)->values[0]=var85;
2626 if (likely(varonce88!=NULL)) {
2627 var89 = varonce88;
2628 } else {
2629 var90 = " = nit_alloc(sizeof(struct nitni_instance));";
2630 var91 = standard___standard__NativeString___to_s_with_length(var90, 44l);
2631 var89 = var91;
2632 varonce88 = var89;
2633 }
2634 ((struct instance_standard__NativeArray*)var83)->values[2]=var89;
2635 } else {
2636 var83 = varonce82;
2637 varonce82 = NULL;
2638 }
2639 var92 = standard__string___Int___Object__to_s(var_a);
2640 ((struct instance_standard__NativeArray*)var83)->values[1]=var92;
2641 {
2642 var93 = ((val*(*)(val* self))(var83->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var83); /* native_to_s on <var83:NativeArray[String]>*/
2643 }
2644 varonce82 = var83;
2645 {
2646 nit___nit__AbstractCompilerVisitor___add(var_v, var93); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2647 }
2648 if (unlikely(varonce94==NULL)) {
2649 var95 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
2650 if (likely(varonce96!=NULL)) {
2651 var97 = varonce96;
2652 } else {
2653 var98 = "var_for_c_";
2654 var99 = standard___standard__NativeString___to_s_with_length(var98, 10l);
2655 var97 = var99;
2656 varonce96 = var97;
2657 }
2658 ((struct instance_standard__NativeArray*)var95)->values[0]=var97;
2659 if (likely(varonce100!=NULL)) {
2660 var101 = varonce100;
2661 } else {
2662 var102 = "->value = ";
2663 var103 = standard___standard__NativeString___to_s_with_length(var102, 10l);
2664 var101 = var103;
2665 varonce100 = var101;
2666 }
2667 ((struct instance_standard__NativeArray*)var95)->values[2]=var101;
2668 if (likely(varonce104!=NULL)) {
2669 var105 = varonce104;
2670 } else {
2671 var106 = ";";
2672 var107 = standard___standard__NativeString___to_s_with_length(var106, 1l);
2673 var105 = var107;
2674 varonce104 = var105;
2675 }
2676 ((struct instance_standard__NativeArray*)var95)->values[4]=var105;
2677 } else {
2678 var95 = varonce94;
2679 varonce94 = NULL;
2680 }
2681 var108 = standard__string___Int___Object__to_s(var_a);
2682 ((struct instance_standard__NativeArray*)var95)->values[1]=var108;
2683 {
2684 { /* Inline abstract_compiler#RuntimeVariable#name (var_arg) on <var_arg:RuntimeVariable> */
2685 var111 = var_arg->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___name].val; /* _name on <var_arg:RuntimeVariable> */
2686 if (unlikely(var111 == NULL)) {
2687 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2688 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1781);
2689 fatal_exit(1);
2690 }
2691 var109 = var111;
2692 RET_LABEL110:(void)0;
2693 }
2694 }
2695 ((struct instance_standard__NativeArray*)var95)->values[3]=var109;
2696 {
2697 var112 = ((val*(*)(val* self))(var95->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var95); /* native_to_s on <var95:NativeArray[String]>*/
2698 }
2699 varonce94 = var95;
2700 {
2701 nit___nit__AbstractCompilerVisitor___add(var_v, var112); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2702 }
2703 if (unlikely(varonce113==NULL)) {
2704 var114 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
2705 if (likely(varonce115!=NULL)) {
2706 var116 = varonce115;
2707 } else {
2708 var117 = "var_for_c_";
2709 var118 = standard___standard__NativeString___to_s_with_length(var117, 10l);
2710 var116 = var118;
2711 varonce115 = var116;
2712 }
2713 ((struct instance_standard__NativeArray*)var114)->values[0]=var116;
2714 } else {
2715 var114 = varonce113;
2716 varonce113 = NULL;
2717 }
2718 var119 = standard__string___Int___Object__to_s(var_a);
2719 ((struct instance_standard__NativeArray*)var114)->values[1]=var119;
2720 {
2721 var120 = ((val*(*)(val* self))(var114->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var114); /* native_to_s on <var114:NativeArray[String]>*/
2722 }
2723 varonce113 = var114;
2724 {
2725 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_arguments_for_c, var120); /* Direct call array#Array#add on <var_arguments_for_c:Array[String]>*/
2726 }
2727 }
2728 {
2729 var121 = standard___standard__Int___Discrete__successor(var_a, 1l);
2730 }
2731 var_a = var121;
2732 } else {
2733 goto BREAK_label;
2734 }
2735 }
2736 BREAK_label: (void)0;
2737 {
2738 var122 = ((short int(*)(val* self))(var_return_mtype->class->vft[COLOR_nit__nitni_base__MType__is_cprimitive]))(var_return_mtype); /* is_cprimitive on <var_return_mtype:MType>*/
2739 }
2740 if (var122){
2741 if (unlikely(varonce123==NULL)) {
2742 var124 = NEW_standard__NativeArray(6l, &type_standard__NativeArray__standard__String);
2743 if (likely(varonce125!=NULL)) {
2744 var126 = varonce125;
2745 } else {
2746 var127 = " = ";
2747 var128 = standard___standard__NativeString___to_s_with_length(var127, 3l);
2748 var126 = var128;
2749 varonce125 = var126;
2750 }
2751 ((struct instance_standard__NativeArray*)var124)->values[1]=var126;
2752 if (likely(varonce129!=NULL)) {
2753 var130 = varonce129;
2754 } else {
2755 var131 = "(";
2756 var132 = standard___standard__NativeString___to_s_with_length(var131, 1l);
2757 var130 = var132;
2758 varonce129 = var130;
2759 }
2760 ((struct instance_standard__NativeArray*)var124)->values[3]=var130;
2761 if (likely(varonce133!=NULL)) {
2762 var134 = varonce133;
2763 } else {
2764 var135 = ");";
2765 var136 = standard___standard__NativeString___to_s_with_length(var135, 2l);
2766 var134 = var136;
2767 varonce133 = var134;
2768 }
2769 ((struct instance_standard__NativeArray*)var124)->values[5]=var134;
2770 } else {
2771 var124 = varonce123;
2772 varonce123 = NULL;
2773 }
2774 {
2775 var137 = ((val*(*)(val* self))(var_recv_var->class->vft[COLOR_standard__string__Object__to_s]))(var_recv_var); /* to_s on <var_recv_var:RuntimeVariable>*/
2776 }
2777 ((struct instance_standard__NativeArray*)var124)->values[0]=var137;
2778 ((struct instance_standard__NativeArray*)var124)->values[2]=var_externname;
2779 if (likely(varonce138!=NULL)) {
2780 var139 = varonce138;
2781 } else {
2782 var140 = ", ";
2783 var141 = standard___standard__NativeString___to_s_with_length(var140, 2l);
2784 var139 = var141;
2785 varonce138 = var139;
2786 }
2787 {
2788 var142 = standard__string___Collection___join(var_arguments_for_c, var139);
2789 }
2790 ((struct instance_standard__NativeArray*)var124)->values[4]=var142;
2791 {
2792 var143 = ((val*(*)(val* self))(var124->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var124); /* native_to_s on <var124:NativeArray[String]>*/
2793 }
2794 varonce123 = var124;
2795 {
2796 nit___nit__AbstractCompilerVisitor___add(var_v, var143); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2797 }
2798 } else {
2799 if (likely(varonce144!=NULL)) {
2800 var145 = varonce144;
2801 } else {
2802 var146 = "struct nitni_instance* ret_var;";
2803 var147 = standard___standard__NativeString___to_s_with_length(var146, 31l);
2804 var145 = var147;
2805 varonce144 = var145;
2806 }
2807 {
2808 nit___nit__AbstractCompilerVisitor___add(var_v, var145); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2809 }
2810 if (unlikely(varonce148==NULL)) {
2811 var149 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
2812 if (likely(varonce150!=NULL)) {
2813 var151 = varonce150;
2814 } else {
2815 var152 = "ret_var = ";
2816 var153 = standard___standard__NativeString___to_s_with_length(var152, 10l);
2817 var151 = var153;
2818 varonce150 = var151;
2819 }
2820 ((struct instance_standard__NativeArray*)var149)->values[0]=var151;
2821 if (likely(varonce154!=NULL)) {
2822 var155 = varonce154;
2823 } else {
2824 var156 = "(";
2825 var157 = standard___standard__NativeString___to_s_with_length(var156, 1l);
2826 var155 = var157;
2827 varonce154 = var155;
2828 }
2829 ((struct instance_standard__NativeArray*)var149)->values[2]=var155;
2830 if (likely(varonce158!=NULL)) {
2831 var159 = varonce158;
2832 } else {
2833 var160 = ");";
2834 var161 = standard___standard__NativeString___to_s_with_length(var160, 2l);
2835 var159 = var161;
2836 varonce158 = var159;
2837 }
2838 ((struct instance_standard__NativeArray*)var149)->values[4]=var159;
2839 } else {
2840 var149 = varonce148;
2841 varonce148 = NULL;
2842 }
2843 ((struct instance_standard__NativeArray*)var149)->values[1]=var_externname;
2844 if (likely(varonce162!=NULL)) {
2845 var163 = varonce162;
2846 } else {
2847 var164 = ", ";
2848 var165 = standard___standard__NativeString___to_s_with_length(var164, 2l);
2849 var163 = var165;
2850 varonce162 = var163;
2851 }
2852 {
2853 var166 = standard__string___Collection___join(var_arguments_for_c, var163);
2854 }
2855 ((struct instance_standard__NativeArray*)var149)->values[3]=var166;
2856 {
2857 var167 = ((val*(*)(val* self))(var149->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var149); /* native_to_s on <var149:NativeArray[String]>*/
2858 }
2859 varonce148 = var149;
2860 {
2861 nit___nit__AbstractCompilerVisitor___add(var_v, var167); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2862 }
2863 if (unlikely(varonce168==NULL)) {
2864 var169 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
2865 if (likely(varonce170!=NULL)) {
2866 var171 = varonce170;
2867 } else {
2868 var172 = " = ret_var->value;";
2869 var173 = standard___standard__NativeString___to_s_with_length(var172, 18l);
2870 var171 = var173;
2871 varonce170 = var171;
2872 }
2873 ((struct instance_standard__NativeArray*)var169)->values[1]=var171;
2874 } else {
2875 var169 = varonce168;
2876 varonce168 = NULL;
2877 }
2878 {
2879 var174 = ((val*(*)(val* self))(var_recv_var->class->vft[COLOR_standard__string__Object__to_s]))(var_recv_var); /* to_s on <var_recv_var:RuntimeVariable>*/
2880 }
2881 ((struct instance_standard__NativeArray*)var169)->values[0]=var174;
2882 {
2883 var175 = ((val*(*)(val* self))(var169->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var169); /* native_to_s on <var169:NativeArray[String]>*/
2884 }
2885 varonce168 = var169;
2886 {
2887 nit___nit__AbstractCompilerVisitor___add(var_v, var175); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2888 }
2889 }
2890 {
2891 var176 = ((val*(*)(val* self, val* p0, val* p1))(var_v->class->vft[COLOR_nit__abstract_compiler__AbstractCompilerVisitor__box_extern]))(var_v, var_recv_var, var_return_mtype); /* box_extern on <var_v:AbstractCompilerVisitor>*/
2892 }
2893 var_recv_var = var176;
2894 {
2895 nit___nit__AbstractCompilerVisitor___ret(var_v, var_recv_var); /* Direct call abstract_compiler#AbstractCompilerVisitor#ret on <var_v:AbstractCompilerVisitor>*/
2896 }
2897 {
2898 nit__light___AMethPropdef___compile_ffi_support_to_c(self, var_v); /* Direct call light#AMethPropdef#compile_ffi_support_to_c on <self:AMethPropdef>*/
2899 }
2900 var = 1;
2901 goto RET_LABEL;
2902 RET_LABEL:;
2903 return var;
2904 }
2905 /* method light#CCompilationUnit#write_as_nitni for (self: CCompilationUnit, MModule, String) */
2906 void nit__light___CCompilationUnit___write_as_nitni(val* self, val* p0, val* p1) {
2907 val* var_mmodule /* var mmodule: MModule */;
2908 val* var_compdir /* var compdir: String */;
2909 val* var /* : NativeArray[String] */;
2910 static val* varonce;
2911 static val* varonce1;
2912 val* var2 /* : String */;
2913 char* var3 /* : NativeString */;
2914 val* var4 /* : FlatString */;
2915 val* var5 /* : String */;
2916 val* var6 /* : String */;
2917 val* var_base_name /* var base_name: String */;
2918 val* var8 /* : NativeArray[String] */;
2919 static val* varonce7;
2920 static val* varonce9;
2921 val* var10 /* : String */;
2922 char* var11 /* : NativeString */;
2923 val* var12 /* : FlatString */;
2924 val* var13 /* : String */;
2925 val* var_h_file /* var h_file: String */;
2926 val* var15 /* : NativeArray[String] */;
2927 static val* varonce14;
2928 static val* varonce16;
2929 val* var17 /* : String */;
2930 char* var18 /* : NativeString */;
2931 val* var19 /* : FlatString */;
2932 val* var20 /* : String */;
2933 val* var21 /* : Array[String] */;
2934 val* var23 /* : NativeArray[String] */;
2935 static val* varonce22;
2936 static val* varonce24;
2937 val* var25 /* : String */;
2938 char* var26 /* : NativeString */;
2939 val* var27 /* : FlatString */;
2940 val* var28 /* : String */;
2941 val* var29 /* : String */;
2942 val* var30 /* : String */;
2943 val* var31 /* : String */;
2944 val* var33 /* : NativeArray[String] */;
2945 static val* varonce32;
2946 static val* varonce34;
2947 val* var35 /* : String */;
2948 char* var36 /* : NativeString */;
2949 val* var37 /* : FlatString */;
2950 val* var38 /* : String */;
2951 val* var_c_file /* var c_file: String */;
2952 val* var40 /* : NativeArray[String] */;
2953 static val* varonce39;
2954 static val* varonce41;
2955 val* var42 /* : String */;
2956 char* var43 /* : NativeString */;
2957 val* var44 /* : FlatString */;
2958 val* var45 /* : String */;
2959 val* var46 /* : Array[String] */;
2960 val* var_ /* var : Array[String] */;
2961 val* var48 /* : NativeArray[String] */;
2962 static val* varonce47;
2963 static val* varonce49;
2964 val* var50 /* : String */;
2965 char* var51 /* : NativeString */;
2966 val* var52 /* : FlatString */;
2967 static val* varonce53;
2968 val* var54 /* : String */;
2969 char* var55 /* : NativeString */;
2970 val* var56 /* : FlatString */;
2971 val* var57 /* : String */;
2972 val* var58 /* : Array[String] */;
2973 val* var60 /* : Array[String] */;
2974 val* var62 /* : NativeArray[String] */;
2975 static val* varonce61;
2976 static val* varonce63;
2977 val* var64 /* : String */;
2978 char* var65 /* : NativeString */;
2979 val* var66 /* : FlatString */;
2980 val* var67 /* : String */;
2981 var_mmodule = p0;
2982 var_compdir = p1;
2983 if (unlikely(varonce==NULL)) {
2984 var = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
2985 if (likely(varonce1!=NULL)) {
2986 var2 = varonce1;
2987 } else {
2988 var3 = "._nitni";
2989 var4 = standard___standard__NativeString___to_s_with_length(var3, 7l);
2990 var2 = var4;
2991 varonce1 = var2;
2992 }
2993 ((struct instance_standard__NativeArray*)var)->values[1]=var2;
2994 } else {
2995 var = varonce;
2996 varonce = NULL;
2997 }
2998 {
2999 var5 = nit___nit__MModule___nit__model_base__MEntity__c_name(var_mmodule);
3000 }
3001 ((struct instance_standard__NativeArray*)var)->values[0]=var5;
3002 {
3003 var6 = ((val*(*)(val* self))(var->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var); /* native_to_s on <var:NativeArray[String]>*/
3004 }
3005 varonce = var;
3006 var_base_name = var6;
3007 if (unlikely(varonce7==NULL)) {
3008 var8 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
3009 if (likely(varonce9!=NULL)) {
3010 var10 = varonce9;
3011 } else {
3012 var11 = ".h";
3013 var12 = standard___standard__NativeString___to_s_with_length(var11, 2l);
3014 var10 = var12;
3015 varonce9 = var10;
3016 }
3017 ((struct instance_standard__NativeArray*)var8)->values[1]=var10;
3018 } else {
3019 var8 = varonce7;
3020 varonce7 = NULL;
3021 }
3022 ((struct instance_standard__NativeArray*)var8)->values[0]=var_base_name;
3023 {
3024 var13 = ((val*(*)(val* self))(var8->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var8); /* native_to_s on <var8:NativeArray[String]>*/
3025 }
3026 varonce7 = var8;
3027 var_h_file = var13;
3028 if (unlikely(varonce14==NULL)) {
3029 var15 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
3030 if (likely(varonce16!=NULL)) {
3031 var17 = varonce16;
3032 } else {
3033 var18 = "/";
3034 var19 = standard___standard__NativeString___to_s_with_length(var18, 1l);
3035 var17 = var19;
3036 varonce16 = var17;
3037 }
3038 ((struct instance_standard__NativeArray*)var15)->values[1]=var17;
3039 } else {
3040 var15 = varonce14;
3041 varonce14 = NULL;
3042 }
3043 ((struct instance_standard__NativeArray*)var15)->values[0]=var_compdir;
3044 ((struct instance_standard__NativeArray*)var15)->values[2]=var_h_file;
3045 {
3046 var20 = ((val*(*)(val* self))(var15->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var15); /* native_to_s on <var15:NativeArray[String]>*/
3047 }
3048 varonce14 = var15;
3049 var21 = NEW_standard__Array(&type_standard__Array__standard__String);
3050 {
3051 standard___standard__Array___standard__kernel__Object__init(var21); /* Direct call array#Array#init on <var21:Array[String]>*/
3052 }
3053 if (unlikely(varonce22==NULL)) {
3054 var23 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
3055 if (likely(varonce24!=NULL)) {
3056 var25 = varonce24;
3057 } else {
3058 var26 = "_NITG_NITNI_H";
3059 var27 = standard___standard__NativeString___to_s_with_length(var26, 13l);
3060 var25 = var27;
3061 varonce24 = var25;
3062 }
3063 ((struct instance_standard__NativeArray*)var23)->values[1]=var25;
3064 } else {
3065 var23 = varonce22;
3066 varonce22 = NULL;
3067 }
3068 {
3069 var28 = nit___nit__MModule___nit__model_base__MEntity__c_name(var_mmodule);
3070 }
3071 {
3072 var29 = standard___standard__String___Object__to_s(var28);
3073 }
3074 {
3075 var30 = ((val*(*)(val* self))(var29->class->vft[COLOR_standard__string__String__to_upper]))(var29); /* to_upper on <var29:String>*/
3076 }
3077 ((struct instance_standard__NativeArray*)var23)->values[0]=var30;
3078 {
3079 var31 = ((val*(*)(val* self))(var23->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var23); /* native_to_s on <var23:NativeArray[String]>*/
3080 }
3081 varonce22 = var23;
3082 {
3083 nit__light_ffi_base___CCompilationUnit___write_header_to_file(self, var_mmodule, var20, var21, var31); /* Direct call light_ffi_base#CCompilationUnit#write_header_to_file on <self:CCompilationUnit>*/
3084 }
3085 if (unlikely(varonce32==NULL)) {
3086 var33 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
3087 if (likely(varonce34!=NULL)) {
3088 var35 = varonce34;
3089 } else {
3090 var36 = ".c";
3091 var37 = standard___standard__NativeString___to_s_with_length(var36, 2l);
3092 var35 = var37;
3093 varonce34 = var35;
3094 }
3095 ((struct instance_standard__NativeArray*)var33)->values[1]=var35;
3096 } else {
3097 var33 = varonce32;
3098 varonce32 = NULL;
3099 }
3100 ((struct instance_standard__NativeArray*)var33)->values[0]=var_base_name;
3101 {
3102 var38 = ((val*(*)(val* self))(var33->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var33); /* native_to_s on <var33:NativeArray[String]>*/
3103 }
3104 varonce32 = var33;
3105 var_c_file = var38;
3106 if (unlikely(varonce39==NULL)) {
3107 var40 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
3108 if (likely(varonce41!=NULL)) {
3109 var42 = varonce41;
3110 } else {
3111 var43 = "/";
3112 var44 = standard___standard__NativeString___to_s_with_length(var43, 1l);
3113 var42 = var44;
3114 varonce41 = var42;
3115 }
3116 ((struct instance_standard__NativeArray*)var40)->values[1]=var42;
3117 } else {
3118 var40 = varonce39;
3119 varonce39 = NULL;
3120 }
3121 ((struct instance_standard__NativeArray*)var40)->values[0]=var_compdir;
3122 ((struct instance_standard__NativeArray*)var40)->values[2]=var_c_file;
3123 {
3124 var45 = ((val*(*)(val* self))(var40->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var40); /* native_to_s on <var40:NativeArray[String]>*/
3125 }
3126 varonce39 = var40;
3127 var46 = NEW_standard__Array(&type_standard__Array__standard__String);
3128 {
3129 standard___standard__Array___with_capacity(var46, 1l); /* Direct call array#Array#with_capacity on <var46:Array[String]>*/
3130 }
3131 var_ = var46;
3132 if (unlikely(varonce47==NULL)) {
3133 var48 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
3134 if (likely(varonce49!=NULL)) {
3135 var50 = varonce49;
3136 } else {
3137 var51 = "\"";
3138 var52 = standard___standard__NativeString___to_s_with_length(var51, 1l);
3139 var50 = var52;
3140 varonce49 = var50;
3141 }
3142 ((struct instance_standard__NativeArray*)var48)->values[0]=var50;
3143 if (likely(varonce53!=NULL)) {
3144 var54 = varonce53;
3145 } else {
3146 var55 = "\"";
3147 var56 = standard___standard__NativeString___to_s_with_length(var55, 1l);
3148 var54 = var56;
3149 varonce53 = var54;
3150 }
3151 ((struct instance_standard__NativeArray*)var48)->values[2]=var54;
3152 } else {
3153 var48 = varonce47;
3154 varonce47 = NULL;
3155 }
3156 ((struct instance_standard__NativeArray*)var48)->values[1]=var_h_file;
3157 {
3158 var57 = ((val*(*)(val* self))(var48->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var48); /* native_to_s on <var48:NativeArray[String]>*/
3159 }
3160 varonce47 = var48;
3161 {
3162 standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_, var57); /* Direct call array#AbstractArray#push on <var_:Array[String]>*/
3163 }
3164 {
3165 nit__light_ffi_base___CCompilationUnit___write_body_to_file(self, var_mmodule, var45, var_); /* Direct call light_ffi_base#CCompilationUnit#write_body_to_file on <self:CCompilationUnit>*/
3166 }
3167 {
3168 { /* Inline c_tools#CCompilationUnit#files (self) on <self:CCompilationUnit> */
3169 var60 = self->attrs[COLOR_nit__c_tools__CCompilationUnit___files].val; /* _files on <self:CCompilationUnit> */
3170 if (unlikely(var60 == NULL)) {
3171 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files");
3172 PRINT_ERROR(" (%s:%d)\n", FILE_nit__c_tools, 47);
3173 fatal_exit(1);
3174 }
3175 var58 = var60;
3176 RET_LABEL59:(void)0;
3177 }
3178 }
3179 if (unlikely(varonce61==NULL)) {
3180 var62 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
3181 if (likely(varonce63!=NULL)) {
3182 var64 = varonce63;
3183 } else {
3184 var65 = "/";
3185 var66 = standard___standard__NativeString___to_s_with_length(var65, 1l);
3186 var64 = var66;
3187 varonce63 = var64;
3188 }
3189 ((struct instance_standard__NativeArray*)var62)->values[1]=var64;
3190 } else {
3191 var62 = varonce61;
3192 varonce61 = NULL;
3193 }
3194 ((struct instance_standard__NativeArray*)var62)->values[0]=var_compdir;
3195 ((struct instance_standard__NativeArray*)var62)->values[2]=var_c_file;
3196 {
3197 var67 = ((val*(*)(val* self))(var62->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var62); /* native_to_s on <var62:NativeArray[String]>*/
3198 }
3199 varonce61 = var62;
3200 {
3201 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var58, var67); /* Direct call array#Array#add on <var58:Array[String]>*/
3202 }
3203 RET_LABEL:;
3204 }