nitc: clean up makefile header generation
[nit.git] / c_src / nitc__light.sep.1.c
1 #include "nitc__light.sep.0.h"
2 /* method light#MModule#nitni_ccu for (self: MModule): nullable CCompilationUnit */
3 val* nitc__light___MModule___nitni_ccu(val* self) {
4 val* var /* : nullable CCompilationUnit */;
5 val* var1 /* : nullable CCompilationUnit */;
6 var1 = self->attrs[COLOR_nitc__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 nitc__light___MModule___nitni_ccu_61d(val* self, val* p0) {
13 self->attrs[COLOR_nitc__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* nitc__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_nitc__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_nitc__abstract_compiler, 1133);
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_nitc__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_nitc__abstract_compiler, 538);
44 fatal_exit(1);
45 }
46 var4 = var6;
47 RET_LABEL5:(void)0;
48 }
49 }
50 {
51 var7 = nitc__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 nitc__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 /* : IndexedIterator[nullable Object] */;
86 val* var_29 /* var : IndexedIterator[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 /* : String */;
104 static val* varonce49;
105 val* var50 /* : String */;
106 char* var51 /* : NativeString */;
107 val* var52 /* : String */;
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 /* : String */;
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 /* : String */;
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 /* : String */;
132 val* var82 /* : nullable Object */;
133 static val* varonce83;
134 val* var84 /* : String */;
135 char* var85 /* : NativeString */;
136 val* var86 /* : String */;
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 /* : IndexedIterator[nullable Object] */;
152 val* var_106 /* var : IndexedIterator[String] */;
153 short int var107 /* : Bool */;
154 val* var109 /* : nullable Object */;
155 val* var_file110 /* var file: String */;
156 val* var111 /* : ExternCFile */;
157 val* var_f /* var f: ExternCFile */;
158 val* var112 /* : Array[String] */;
159 val* var114 /* : Array[String] */;
160 val* var115 /* : Array[String] */;
161 val* var117 /* : Array[String] */;
162 val* var118 /* : AbstractCompiler */;
163 val* var120 /* : AbstractCompiler */;
164 val* var121 /* : Array[ExternFile] */;
165 val* var123 /* : 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_nitc__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_nitc__abstract_compiler__AbstractCompiler__new_visitor]))(var_compiler); /* new_visitor on <var_compiler:AbstractCompiler>*/
185 }
186 var_v = var4;
187 {
188 var5 = nitc__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 nitc__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_nitc__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_nitc__abstract_compiler, 1133);
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_nitc__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_nitc__abstract_compiler, 541);
238 fatal_exit(1);
239 }
240 var15 = var17;
241 RET_LABEL16:(void)0;
242 }
243 }
244 {
245 var18 = nitc___nitc__Toolchain___compile_dir(var15);
246 }
247 {
248 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
249 var21 = var_v->attrs[COLOR_nitc__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_nitc__abstract_compiler, 1133);
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_nitc__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_nitc__abstract_compiler, 531);
265 fatal_exit(1);
266 }
267 var22 = var24;
268 RET_LABEL23:(void)0;
269 }
270 }
271 {
272 nitc__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_nitc__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_nitc__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 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
289 }
290 var_29 = var28;
291 for(;;) {
292 {
293 var30 = ((short int(*)(val* self))((((long)var_29&3)?class_info[((long)var_29&3)]:var_29->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_29); /* is_ok on <var_29:IndexedIterator[ExternFile]>*/
294 }
295 if (var30){
296 } else {
297 goto BREAK_label;
298 }
299 {
300 var31 = ((val*(*)(val* self))((((long)var_29&3)?class_info[((long)var_29&3)]:var_29->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_29); /* item on <var_29:IndexedIterator[ExternFile]>*/
301 }
302 var_file = var31;
303 {
304 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
305 var34 = var_v->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
306 if (unlikely(var34 == NULL)) {
307 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
308 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
309 fatal_exit(1);
310 }
311 var32 = var34;
312 RET_LABEL33:(void)0;
313 }
314 }
315 {
316 { /* Inline abstract_compiler#AbstractCompiler#extern_bodies (var32) on <var32:AbstractCompiler> */
317 var37 = var32->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___extern_bodies].val; /* _extern_bodies on <var32:AbstractCompiler> */
318 if (unlikely(var37 == NULL)) {
319 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _extern_bodies");
320 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1010);
321 fatal_exit(1);
322 }
323 var35 = var37;
324 RET_LABEL36:(void)0;
325 }
326 }
327 {
328 core___core__Array___core__abstract_collection__SimpleCollection__add(var35, var_file); /* Direct call array#Array#add on <var35:Array[ExternFile]>*/
329 }
330 {
331 ((void(*)(val* self))((((long)var_29&3)?class_info[((long)var_29&3)]:var_29->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_29); /* next on <var_29:IndexedIterator[ExternFile]>*/
332 }
333 }
334 BREAK_label: (void)0;
335 {
336 ((void(*)(val* self))((((long)var_29&3)?class_info[((long)var_29&3)]:var_29->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_29); /* finish on <var_29:IndexedIterator[ExternFile]>*/
337 }
338 {
339 nitc__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_nitc__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_nitc__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_nitc__c_tools, 31);
357 fatal_exit(1);
358 }
359 var43 = var38->attrs[COLOR_nitc__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_nitc__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_core__NativeArray(3l, &type_core__NativeArray__core__String);
371 if (likely(varonce45!=NULL)) {
372 var46 = varonce45;
373 } else {
374 var47 = "#include \"";
375 var48 = core__flat___NativeString___to_s_full(var47, 10l, 10l);
376 var46 = var48;
377 varonce45 = var46;
378 }
379 ((struct instance_core__NativeArray*)var44)->values[0]=var46;
380 if (likely(varonce49!=NULL)) {
381 var50 = varonce49;
382 } else {
383 var51 = "._ffi.h\"\n";
384 var52 = core__flat___NativeString___to_s_full(var51, 9l, 9l);
385 var50 = var52;
386 varonce49 = var50;
387 }
388 ((struct instance_core__NativeArray*)var44)->values[2]=var50;
389 } else {
390 var44 = varonce;
391 varonce = NULL;
392 }
393 {
394 var53 = nitc___nitc__MModule___nitc__model_base__MEntity__c_name(self);
395 }
396 ((struct instance_core__NativeArray*)var44)->values[1]=var53;
397 {
398 var54 = ((val*(*)(val* self))(var44->class->vft[COLOR_core__abstract_text__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_nitc__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_nitc__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_nitc__c_tools, 31);
420 fatal_exit(1);
421 }
422 var60 = var55->attrs[COLOR_nitc__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_nitc__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 = core__flat___NativeString___to_s_full(var63, 20l, 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_nitc__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_nitc__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_nitc__c_tools, 31);
459 fatal_exit(1);
460 }
461 var70 = var65->attrs[COLOR_nitc__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_nitc__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 = core__flat___NativeString___to_s_full(var73, 84l, 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_nitc__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_nitc__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 = core__flat___NativeString___to_s_full(var80, 0l, 0l);
499 var79 = var81;
500 varonce78 = var79;
501 }
502 {
503 var82 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var75, var79);
504 }
505 if (likely(varonce83!=NULL)) {
506 var84 = varonce83;
507 } else {
508 var85 = " ";
509 var86 = core__flat___NativeString___to_s_full(var85, 1l, 1l);
510 var84 = var86;
511 varonce83 = var84;
512 }
513 {
514 var87 = core__abstract_text___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_nitc__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_nitc__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_nitc__abstract_compiler, 1133);
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_nitc__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_nitc__abstract_compiler, 541);
542 fatal_exit(1);
543 }
544 var94 = var96;
545 RET_LABEL95:(void)0;
546 }
547 }
548 {
549 var97 = nitc___nitc__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_nitc__light, 53);
554 fatal_exit(1);
555 } else {
556 nitc__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_nitc__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_nitc__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_nitc__c_tools, 47);
574 fatal_exit(1);
575 }
576 var103 = var98->attrs[COLOR_nitc__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_nitc__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 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_104);
589 }
590 var_106 = var105;
591 for(;;) {
592 {
593 var107 = ((short int(*)(val* self))((((long)var_106&3)?class_info[((long)var_106&3)]:var_106->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_106); /* is_ok on <var_106:IndexedIterator[String]>*/
594 }
595 if (var107){
596 } else {
597 goto BREAK_label108;
598 }
599 {
600 var109 = ((val*(*)(val* self))((((long)var_106&3)?class_info[((long)var_106&3)]:var_106->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_106); /* item on <var_106:IndexedIterator[String]>*/
601 }
602 var_file110 = var109;
603 var111 = NEW_nitc__ExternCFile(&type_nitc__ExternCFile);
604 {
605 ((void(*)(val* self, val* p0))(var111->class->vft[COLOR_nitc__c_tools__ExternFile__filename_61d]))(var111, var_file110); /* filename= on <var111:ExternCFile>*/
606 }
607 {
608 ((void(*)(val* self, val* p0))(var111->class->vft[COLOR_nitc__c_tools__ExternCFile__cflags_61d]))(var111, var_cflags); /* cflags= on <var111:ExternCFile>*/
609 }
610 {
611 ((void(*)(val* self))(var111->class->vft[COLOR_core__kernel__Object__init]))(var111); /* init on <var111:ExternCFile>*/
612 }
613 var_f = var111;
614 {
615 { /* Inline c_tools#ExternFile#pkgconfigs (var_f) on <var_f:ExternCFile> */
616 var114 = var_f->attrs[COLOR_nitc__c_tools__ExternFile___pkgconfigs].val; /* _pkgconfigs on <var_f:ExternCFile> */
617 if (unlikely(var114 == NULL)) {
618 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _pkgconfigs");
619 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 123);
620 fatal_exit(1);
621 }
622 var112 = var114;
623 RET_LABEL113:(void)0;
624 }
625 }
626 {
627 { /* Inline light_c#MModule#pkgconfigs (self) on <self:MModule> */
628 var117 = self->attrs[COLOR_nitc__light_c__MModule___pkgconfigs].val; /* _pkgconfigs on <self:MModule> */
629 if (unlikely(var117 == NULL)) {
630 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _pkgconfigs");
631 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_c, 83);
632 fatal_exit(1);
633 }
634 var115 = var117;
635 RET_LABEL116:(void)0;
636 }
637 }
638 {
639 core___core__Array___core__abstract_collection__SimpleCollection__add_all(var112, var115); /* Direct call array#Array#add_all on <var112:Array[String]>*/
640 }
641 {
642 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
643 var120 = var_v->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
644 if (unlikely(var120 == NULL)) {
645 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
646 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
647 fatal_exit(1);
648 }
649 var118 = var120;
650 RET_LABEL119:(void)0;
651 }
652 }
653 {
654 { /* Inline abstract_compiler#AbstractCompiler#extern_bodies (var118) on <var118:AbstractCompiler> */
655 var123 = var118->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___extern_bodies].val; /* _extern_bodies on <var118:AbstractCompiler> */
656 if (unlikely(var123 == NULL)) {
657 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _extern_bodies");
658 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1010);
659 fatal_exit(1);
660 }
661 var121 = var123;
662 RET_LABEL122:(void)0;
663 }
664 }
665 {
666 core___core__Array___core__abstract_collection__SimpleCollection__add(var121, var_f); /* Direct call array#Array#add on <var121:Array[ExternFile]>*/
667 }
668 {
669 ((void(*)(val* self))((((long)var_106&3)?class_info[((long)var_106&3)]:var_106->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_106); /* next on <var_106:IndexedIterator[String]>*/
670 }
671 }
672 BREAK_label108: (void)0;
673 {
674 ((void(*)(val* self))((((long)var_106&3)?class_info[((long)var_106&3)]:var_106->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_106); /* finish on <var_106:IndexedIterator[String]>*/
675 }
676 {
677 { /* Inline light#MModule#nitni_ccu= (self,((val*)NULL)) on <self:MModule> */
678 self->attrs[COLOR_nitc__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_nitc__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_nitc__light_ffi, 66);
688 fatal_exit(1);
689 }
690 var125 = var127;
691 RET_LABEL126:(void)0;
692 }
693 }
694 {
695 core___core__HashSet___core__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_nitc__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_nitc__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_nitc__light_ffi_base, 82);
709 fatal_exit(1);
710 }
711 var129 = var131;
712 RET_LABEL130:(void)0;
713 }
714 }
715 {
716 core___core__AbstractArray___core__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 nitc__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_nitc__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_core__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_nitc__CCompilationUnit(&type_nitc__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_nitc__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* nitc__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 /* : String */;
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 /* : String */;
793 val* var17 /* : nullable Object */;
794 {
795 { /* Inline light_c#MModule#ldflags (self) on <self:MModule> */
796 var3 = self->attrs[COLOR_nitc__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_nitc__light_c, 80);
800 fatal_exit(1);
801 }
802 var1 = var3;
803 RET_LABEL2:(void)0;
804 }
805 }
806 {
807 var4 = core___core__HashMap___core__abstract_collection__MapRead__keys(var1);
808 }
809 if (likely(varonce!=NULL)) {
810 var5 = varonce;
811 } else {
812 var6 = "";
813 var7 = core__flat___NativeString___to_s_full(var6, 0l, 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_core__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_nitc__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_nitc__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 = core__flat___NativeString___to_s_full(var15, 0l, 0l);
843 var14 = var16;
844 varonce13 = var14;
845 }
846 {
847 var17 = core___core__HashMap___core__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 nitc__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 /* : String */;
885 val* var34 /* : Sys */;
886 val* var35 /* : SignatureLength */;
887 val* var36 /* : Sys */;
888 val* var37 /* : CallContext */;
889 val* var38 /* : String */;
890 val* var_csignature /* var csignature: String */;
891 val* var40 /* : NativeArray[String] */;
892 static val* varonce39;
893 static val* varonce41;
894 val* var42 /* : String */;
895 char* var43 /* : NativeString */;
896 val* var44 /* : String */;
897 val* var45 /* : String */;
898 var_v = p0;
899 {
900 { /* Inline modelize_property#APropdef#mpropdef (self) on <self:AMethPropdef> */
901 var2 = self->attrs[COLOR_nitc__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:AMethPropdef> */
902 var = var2;
903 RET_LABEL1:(void)0;
904 }
905 }
906 if (var == NULL) {
907 PRINT_ERROR("Runtime error: %s", "Receiver is null");
908 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light, 86);
909 fatal_exit(1);
910 } else {
911 { /* Inline model#MPropDef#mclassdef (var) on <var:nullable MPropDef(nullable MMethodDef)> */
912 if (unlikely(var == NULL)) {
913 PRINT_ERROR("Runtime error: %s", "Receiver is null");
914 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2227);
915 fatal_exit(1);
916 }
917 var5 = var->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var:nullable MPropDef(nullable MMethodDef)> */
918 if (unlikely(var5 == NULL)) {
919 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
920 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2227);
921 fatal_exit(1);
922 }
923 var3 = var5;
924 RET_LABEL4:(void)0;
925 }
926 }
927 {
928 { /* Inline model#MClassDef#mmodule (var3) on <var3:MClassDef> */
929 var8 = var3->attrs[COLOR_nitc__model__MClassDef___mmodule].val; /* _mmodule on <var3:MClassDef> */
930 if (unlikely(var8 == NULL)) {
931 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
932 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 573);
933 fatal_exit(1);
934 }
935 var6 = var8;
936 RET_LABEL7:(void)0;
937 }
938 }
939 var_mmodule = var6;
940 {
941 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:AbstractCompilerVisitor> */
942 var11 = var_v->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
943 if (unlikely(var11 == NULL)) {
944 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
945 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
946 fatal_exit(1);
947 }
948 var9 = var11;
949 RET_LABEL10:(void)0;
950 }
951 }
952 {
953 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var9) on <var9:AbstractCompiler> */
954 var14 = var9->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var9:AbstractCompiler> */
955 if (unlikely(var14 == NULL)) {
956 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
957 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
958 fatal_exit(1);
959 }
960 var12 = var14;
961 RET_LABEL13:(void)0;
962 }
963 }
964 {
965 var15 = nitc__loader___ModelBuilder___mmodule2node(var12, var_mmodule);
966 }
967 var_amodule = var15;
968 {
969 { /* Inline modelize_property#APropdef#mpropdef (self) on <self:AMethPropdef> */
970 var18 = self->attrs[COLOR_nitc__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:AMethPropdef> */
971 var16 = var18;
972 RET_LABEL17:(void)0;
973 }
974 }
975 if (var16 == NULL) {
976 PRINT_ERROR("Runtime error: %s", "Receiver is null");
977 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light, 88);
978 fatal_exit(1);
979 } else {
980 { /* Inline model#MPropDef#mclassdef (var16) on <var16:nullable MPropDef(nullable MMethodDef)> */
981 if (unlikely(var16 == NULL)) {
982 PRINT_ERROR("Runtime error: %s", "Receiver is null");
983 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2227);
984 fatal_exit(1);
985 }
986 var21 = var16->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var16:nullable MPropDef(nullable MMethodDef)> */
987 if (unlikely(var21 == NULL)) {
988 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
989 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2227);
990 fatal_exit(1);
991 }
992 var19 = var21;
993 RET_LABEL20:(void)0;
994 }
995 }
996 {
997 { /* Inline model#MClassDef#bound_mtype (var19) on <var19:MClassDef> */
998 var24 = var19->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var19:MClassDef> */
999 if (unlikely(var24 == NULL)) {
1000 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
1001 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 579);
1002 fatal_exit(1);
1003 }
1004 var22 = var24;
1005 RET_LABEL23:(void)0;
1006 }
1007 }
1008 var_mclass_type = var22;
1009 {
1010 { /* Inline modelize_property#APropdef#mpropdef (self) on <self:AMethPropdef> */
1011 var27 = self->attrs[COLOR_nitc__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:AMethPropdef> */
1012 var25 = var27;
1013 RET_LABEL26:(void)0;
1014 }
1015 }
1016 if (var25 == NULL) {
1017 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1018 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light, 91);
1019 fatal_exit(1);
1020 } else {
1021 { /* Inline model#MPropDef#mproperty (var25) on <var25:nullable MPropDef(nullable MMethodDef)> */
1022 if (unlikely(var25 == NULL)) {
1023 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1024 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2230);
1025 fatal_exit(1);
1026 }
1027 var30 = var25->attrs[COLOR_nitc__model__MPropDef___mproperty].val; /* _mproperty on <var25:nullable MPropDef(nullable MMethodDef)> */
1028 if (unlikely(var30 == NULL)) {
1029 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
1030 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2230);
1031 fatal_exit(1);
1032 }
1033 var28 = var30;
1034 RET_LABEL29:(void)0;
1035 }
1036 }
1037 if (likely(varonce!=NULL)) {
1038 var31 = varonce;
1039 } else {
1040 var32 = "___impl";
1041 var33 = core__flat___NativeString___to_s_full(var32, 7l, 7l);
1042 var31 = var33;
1043 varonce = var31;
1044 }
1045 var34 = glob_sys;
1046 {
1047 var35 = nitc__nitni_utilities___core__Sys___long_signature(var34);
1048 }
1049 var36 = glob_sys;
1050 {
1051 var37 = nitc__nitni_utilities___core__Sys___internal_call_context(var36);
1052 }
1053 {
1054 var38 = nitc__nitni_utilities___MMethod___build_csignature(var28, var_mclass_type, var_mmodule, var31, var35, var37);
1055 }
1056 var_csignature = var38;
1057 if (unlikely(varonce39==NULL)) {
1058 var40 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
1059 if (likely(varonce41!=NULL)) {
1060 var42 = varonce41;
1061 } else {
1062 var43 = ";";
1063 var44 = core__flat___NativeString___to_s_full(var43, 1l, 1l);
1064 var42 = var44;
1065 varonce41 = var42;
1066 }
1067 ((struct instance_core__NativeArray*)var40)->values[1]=var42;
1068 } else {
1069 var40 = varonce39;
1070 varonce39 = NULL;
1071 }
1072 ((struct instance_core__NativeArray*)var40)->values[0]=var_csignature;
1073 {
1074 var45 = ((val*(*)(val* self))(var40->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var40); /* native_to_s on <var40:NativeArray[String]>*/
1075 }
1076 varonce39 = var40;
1077 {
1078 nitc___nitc__AbstractCompilerVisitor___declare_once(var_v, var45); /* Direct call abstract_compiler#AbstractCompilerVisitor#declare_once on <var_v:AbstractCompilerVisitor>*/
1079 }
1080 if (var_amodule == NULL) {
1081 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1082 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light, 95);
1083 fatal_exit(1);
1084 } else {
1085 nitc__light_ffi___AModule___ensure_compile_ffi_wrapper(var_amodule); /* Direct call light_ffi#AModule#ensure_compile_ffi_wrapper on <var_amodule:nullable AModule>*/
1086 }
1087 {
1088 nitc__light_ffi___AMethPropdef___compile_ffi_method(self, var_mmodule); /* Direct call light_ffi#AMethPropdef#compile_ffi_method on <self:AMethPropdef>*/
1089 }
1090 {
1091 nitc__light___MModule___ensure_compile_nitni_base(var_mmodule, var_v); /* Direct call light#MModule#ensure_compile_nitni_base on <var_mmodule:MModule>*/
1092 }
1093 RET_LABEL:;
1094 }
1095 /* method light#AMethPropdef#compile_externmeth_to_c for (self: AMethPropdef, AbstractCompilerVisitor, MMethodDef, Array[RuntimeVariable]): Bool */
1096 short int nitc__light___AMethPropdef___compile_externmeth_to_c(val* self, val* p0, val* p1, val* p2) {
1097 short int var /* : Bool */;
1098 val* var_v /* var v: AbstractCompilerVisitor */;
1099 val* var_mpropdef /* var mpropdef: MMethodDef */;
1100 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
1101 val* var1 /* : nullable AExternCodeBlock */;
1102 val* var3 /* : nullable AExternCodeBlock */;
1103 short int var4 /* : Bool */;
1104 short int var5 /* : Bool */;
1105 val* var_other /* var other: nullable Object */;
1106 short int var7 /* : Bool */;
1107 short int var9 /* : Bool */;
1108 short int var10 /* : Bool */;
1109 short int var11 /* : Bool */;
1110 short int var12 /* : Bool */;
1111 val* var13 /* : MClassDef */;
1112 val* var15 /* : MClassDef */;
1113 val* var16 /* : MModule */;
1114 val* var18 /* : MModule */;
1115 val* var_mmodule /* var mmodule: MModule */;
1116 val* var20 /* : MClassDef */;
1117 val* var22 /* : MClassDef */;
1118 val* var23 /* : MClassType */;
1119 val* var25 /* : MClassType */;
1120 val* var_mclass_type /* var mclass_type: MClassType */;
1121 val* var26 /* : MProperty */;
1122 val* var28 /* : MProperty */;
1123 val* var29 /* : MClassDef */;
1124 val* var31 /* : MClassDef */;
1125 val* var32 /* : MClassType */;
1126 val* var34 /* : MClassType */;
1127 static val* varonce;
1128 val* var35 /* : String */;
1129 char* var36 /* : NativeString */;
1130 val* var37 /* : String */;
1131 val* var38 /* : Sys */;
1132 val* var39 /* : SignatureLength */;
1133 val* var40 /* : String */;
1134 val* var_externname /* var externname: String */;
1135 val* var_recv_var /* var recv_var: nullable RuntimeVariable */;
1136 val* var41 /* : nullable MSignature */;
1137 val* var43 /* : nullable MSignature */;
1138 val* var44 /* : nullable MType */;
1139 val* var46 /* : nullable MType */;
1140 val* var_return_mtype /* var return_mtype: nullable MType */;
1141 short int var47 /* : Bool */;
1142 short int var48 /* : Bool */;
1143 val* var_other50 /* var other: nullable Object */;
1144 short int var51 /* : Bool */;
1145 short int var52 /* : Bool */;
1146 val* var53 /* : MType */;
1147 val* var54 /* : RuntimeVariable */;
1148 val* var55 /* : Array[String] */;
1149 val* var_arguments_for_c /* var arguments_for_c: Array[String] */;
1150 long var_a /* var a: Int */;
1151 long var56 /* : Int */;
1152 long var58 /* : Int */;
1153 long var_ /* var : Int */;
1154 short int var59 /* : Bool */;
1155 short int var61 /* : Bool */;
1156 int cltype;
1157 int idtype;
1158 const char* var_class_name;
1159 short int var62 /* : Bool */;
1160 val* var63 /* : nullable Object */;
1161 val* var_arg /* var arg: RuntimeVariable */;
1162 short int var64 /* : Bool */;
1163 short int var66 /* : Bool */;
1164 val* var67 /* : MClassDef */;
1165 val* var69 /* : MClassDef */;
1166 val* var70 /* : MClass */;
1167 val* var72 /* : MClass */;
1168 val* var73 /* : MClassType */;
1169 val* var75 /* : MClassType */;
1170 val* var_param_mtype /* var param_mtype: MType */;
1171 val* var76 /* : nullable MSignature */;
1172 val* var78 /* : nullable MSignature */;
1173 val* var79 /* : Array[MParameter] */;
1174 val* var81 /* : Array[MParameter] */;
1175 long var82 /* : Int */;
1176 short int var84 /* : Bool */;
1177 int cltype85;
1178 int idtype86;
1179 const char* var_class_name87;
1180 long var88 /* : Int */;
1181 val* var89 /* : nullable Object */;
1182 val* var90 /* : MType */;
1183 val* var92 /* : MType */;
1184 val* var93 /* : MType */;
1185 short int var94 /* : Bool */;
1186 val* var95 /* : String */;
1187 val* var97 /* : String */;
1188 val* var99 /* : NativeArray[String] */;
1189 static val* varonce98;
1190 static val* varonce100;
1191 val* var101 /* : String */;
1192 char* var102 /* : NativeString */;
1193 val* var103 /* : String */;
1194 static val* varonce104;
1195 val* var105 /* : String */;
1196 char* var106 /* : NativeString */;
1197 val* var107 /* : String */;
1198 val* var108 /* : String */;
1199 val* var109 /* : String */;
1200 val* var111 /* : NativeArray[String] */;
1201 static val* varonce110;
1202 static val* varonce112;
1203 val* var113 /* : String */;
1204 char* var114 /* : NativeString */;
1205 val* var115 /* : String */;
1206 static val* varonce116;
1207 val* var117 /* : String */;
1208 char* var118 /* : NativeString */;
1209 val* var119 /* : String */;
1210 val* var120 /* : String */;
1211 val* var121 /* : String */;
1212 val* var123 /* : NativeArray[String] */;
1213 static val* varonce122;
1214 static val* varonce124;
1215 val* var125 /* : String */;
1216 char* var126 /* : NativeString */;
1217 val* var127 /* : String */;
1218 static val* varonce128;
1219 val* var129 /* : String */;
1220 char* var130 /* : NativeString */;
1221 val* var131 /* : String */;
1222 static val* varonce132;
1223 val* var133 /* : String */;
1224 char* var134 /* : NativeString */;
1225 val* var135 /* : String */;
1226 val* var136 /* : String */;
1227 val* var137 /* : String */;
1228 val* var139 /* : String */;
1229 val* var140 /* : String */;
1230 val* var142 /* : NativeArray[String] */;
1231 static val* varonce141;
1232 static val* varonce143;
1233 val* var144 /* : String */;
1234 char* var145 /* : NativeString */;
1235 val* var146 /* : String */;
1236 val* var147 /* : String */;
1237 val* var148 /* : String */;
1238 long var149 /* : Int */;
1239 short int var150 /* : Bool */;
1240 short int var151 /* : Bool */;
1241 short int var153 /* : Bool */;
1242 short int var155 /* : Bool */;
1243 val* var157 /* : NativeArray[String] */;
1244 static val* varonce156;
1245 static val* varonce158;
1246 val* var159 /* : String */;
1247 char* var160 /* : NativeString */;
1248 val* var161 /* : String */;
1249 static val* varonce162;
1250 val* var163 /* : String */;
1251 char* var164 /* : NativeString */;
1252 val* var165 /* : String */;
1253 static val* varonce166;
1254 val* var167 /* : String */;
1255 char* var168 /* : NativeString */;
1256 val* var169 /* : String */;
1257 val* var170 /* : String */;
1258 val* var171 /* : String */;
1259 short int var172 /* : Bool */;
1260 short int var173 /* : Bool */;
1261 short int var175 /* : Bool */;
1262 short int var176 /* : Bool */;
1263 short int var177 /* : Bool */;
1264 val* var179 /* : NativeArray[String] */;
1265 static val* varonce178;
1266 static val* varonce180;
1267 val* var181 /* : String */;
1268 char* var182 /* : NativeString */;
1269 val* var183 /* : String */;
1270 static val* varonce184;
1271 val* var185 /* : String */;
1272 char* var186 /* : NativeString */;
1273 val* var187 /* : String */;
1274 static val* varonce188;
1275 val* var189 /* : String */;
1276 char* var190 /* : NativeString */;
1277 val* var191 /* : String */;
1278 val* var192 /* : String */;
1279 static val* varonce193;
1280 val* var194 /* : String */;
1281 char* var195 /* : NativeString */;
1282 val* var196 /* : String */;
1283 val* var197 /* : String */;
1284 val* var198 /* : String */;
1285 static val* varonce199;
1286 val* var200 /* : String */;
1287 char* var201 /* : NativeString */;
1288 val* var202 /* : String */;
1289 val* var204 /* : NativeArray[String] */;
1290 static val* varonce203;
1291 static val* varonce205;
1292 val* var206 /* : String */;
1293 char* var207 /* : NativeString */;
1294 val* var208 /* : String */;
1295 static val* varonce209;
1296 val* var210 /* : String */;
1297 char* var211 /* : NativeString */;
1298 val* var212 /* : String */;
1299 static val* varonce213;
1300 val* var214 /* : String */;
1301 char* var215 /* : NativeString */;
1302 val* var216 /* : String */;
1303 static val* varonce217;
1304 val* var218 /* : String */;
1305 char* var219 /* : NativeString */;
1306 val* var220 /* : String */;
1307 val* var221 /* : String */;
1308 val* var222 /* : String */;
1309 val* var224 /* : NativeArray[String] */;
1310 static val* varonce223;
1311 static val* varonce225;
1312 val* var226 /* : String */;
1313 char* var227 /* : NativeString */;
1314 val* var228 /* : String */;
1315 val* var229 /* : String */;
1316 val* var230 /* : String */;
1317 val* var231 /* : RuntimeVariable */;
1318 var_v = p0;
1319 var_mpropdef = p1;
1320 var_arguments = p2;
1321 {
1322 { /* Inline parser_nodes#AMethPropdef#n_extern_code_block (self) on <self:AMethPropdef> */
1323 var3 = self->attrs[COLOR_nitc__parser_nodes__AMethPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AMethPropdef> */
1324 var1 = var3;
1325 RET_LABEL2:(void)0;
1326 }
1327 }
1328 if (var1 == NULL) {
1329 var4 = 1; /* is null */
1330 } else {
1331 var4 = 0; /* arg is null but recv is not */
1332 }
1333 if (0) {
1334 { /* Inline kernel#Object#== (var1,((val*)NULL)) on <var1:nullable AExternCodeBlock> */
1335 var_other = ((val*)NULL);
1336 {
1337 { /* Inline kernel#Object#is_same_instance (var1,var_other) on <var1:nullable AExternCodeBlock(AExternCodeBlock)> */
1338 var9 = var1 == var_other;
1339 var7 = var9;
1340 goto RET_LABEL8;
1341 RET_LABEL8:(void)0;
1342 }
1343 }
1344 var5 = var7;
1345 goto RET_LABEL6;
1346 RET_LABEL6:(void)0;
1347 }
1348 var4 = var5;
1349 }
1350 if (var4){
1351 {
1352 var10 = ((short int(*)(val* self, val* p0, val* p1, val* p2))(self->class->vft[COLOR_nitc__light___AMethPropdef___compile_externmeth_to_c]))(self, p0, p1, p2); /* compile_externmeth_to_c on <self:AMethPropdef>*/
1353 }
1354 var = var10;
1355 goto RET_LABEL;
1356 } else {
1357 }
1358 {
1359 var11 = nitc__light_only___AMethPropdef___accept_externmeth(self);
1360 }
1361 var12 = !var11;
1362 if (var12){
1363 var = 0;
1364 goto RET_LABEL;
1365 } else {
1366 }
1367 {
1368 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
1369 var15 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
1370 if (unlikely(var15 == NULL)) {
1371 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1372 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2227);
1373 fatal_exit(1);
1374 }
1375 var13 = var15;
1376 RET_LABEL14:(void)0;
1377 }
1378 }
1379 {
1380 { /* Inline model#MClassDef#mmodule (var13) on <var13:MClassDef> */
1381 var18 = var13->attrs[COLOR_nitc__model__MClassDef___mmodule].val; /* _mmodule on <var13:MClassDef> */
1382 if (unlikely(var18 == NULL)) {
1383 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
1384 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 573);
1385 fatal_exit(1);
1386 }
1387 var16 = var18;
1388 RET_LABEL17:(void)0;
1389 }
1390 }
1391 var_mmodule = var16;
1392 {
1393 { /* Inline light_ffi#MModule#uses_ffi= (var_mmodule,1) on <var_mmodule:MModule> */
1394 var_mmodule->attrs[COLOR_nitc__light_ffi__MModule___uses_ffi].s = 1; /* _uses_ffi on <var_mmodule:MModule> */
1395 RET_LABEL19:(void)0;
1396 }
1397 }
1398 {
1399 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
1400 var22 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
1401 if (unlikely(var22 == NULL)) {
1402 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1403 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2227);
1404 fatal_exit(1);
1405 }
1406 var20 = var22;
1407 RET_LABEL21:(void)0;
1408 }
1409 }
1410 {
1411 { /* Inline model#MClassDef#bound_mtype (var20) on <var20:MClassDef> */
1412 var25 = var20->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var20:MClassDef> */
1413 if (unlikely(var25 == NULL)) {
1414 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
1415 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 579);
1416 fatal_exit(1);
1417 }
1418 var23 = var25;
1419 RET_LABEL24:(void)0;
1420 }
1421 }
1422 var_mclass_type = var23;
1423 {
1424 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MMethodDef> */
1425 var28 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MMethodDef> */
1426 if (unlikely(var28 == NULL)) {
1427 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
1428 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2230);
1429 fatal_exit(1);
1430 }
1431 var26 = var28;
1432 RET_LABEL27:(void)0;
1433 }
1434 }
1435 {
1436 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
1437 var31 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
1438 if (unlikely(var31 == NULL)) {
1439 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1440 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2227);
1441 fatal_exit(1);
1442 }
1443 var29 = var31;
1444 RET_LABEL30:(void)0;
1445 }
1446 }
1447 {
1448 { /* Inline model#MClassDef#bound_mtype (var29) on <var29:MClassDef> */
1449 var34 = var29->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var29:MClassDef> */
1450 if (unlikely(var34 == NULL)) {
1451 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
1452 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 579);
1453 fatal_exit(1);
1454 }
1455 var32 = var34;
1456 RET_LABEL33:(void)0;
1457 }
1458 }
1459 if (likely(varonce!=NULL)) {
1460 var35 = varonce;
1461 } else {
1462 var36 = "___impl";
1463 var37 = core__flat___NativeString___to_s_full(var36, 7l, 7l);
1464 var35 = var37;
1465 varonce = var35;
1466 }
1467 var38 = glob_sys;
1468 {
1469 var39 = nitc__nitni_utilities___core__Sys___long_signature(var38);
1470 }
1471 {
1472 var40 = nitc__nitni_utilities___MMethod___build_cname(var26, var32, var_mmodule, var35, var39);
1473 }
1474 var_externname = var40;
1475 var_recv_var = ((val*)NULL);
1476 {
1477 { /* Inline model#MMethodDef#msignature (var_mpropdef) on <var_mpropdef:MMethodDef> */
1478 var43 = var_mpropdef->attrs[COLOR_nitc__model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:MMethodDef> */
1479 var41 = var43;
1480 RET_LABEL42:(void)0;
1481 }
1482 }
1483 if (var41 == NULL) {
1484 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1485 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light, 122);
1486 fatal_exit(1);
1487 } else {
1488 { /* Inline model#MSignature#return_mtype (var41) on <var41:nullable MSignature> */
1489 if (unlikely(var41 == NULL)) {
1490 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1491 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1795);
1492 fatal_exit(1);
1493 }
1494 var46 = var41->attrs[COLOR_nitc__model__MSignature___return_mtype].val; /* _return_mtype on <var41:nullable MSignature> */
1495 var44 = var46;
1496 RET_LABEL45:(void)0;
1497 }
1498 }
1499 var_return_mtype = var44;
1500 if (var_return_mtype == NULL) {
1501 var47 = 0; /* is null */
1502 } else {
1503 var47 = 1; /* arg is null and recv is not */
1504 }
1505 if (0) {
1506 { /* Inline kernel#Object#!= (var_return_mtype,((val*)NULL)) on <var_return_mtype:nullable MType> */
1507 var_other50 = ((val*)NULL);
1508 {
1509 var51 = ((short int(*)(val* self, val* p0))(var_return_mtype->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_return_mtype, var_other50); /* == on <var_return_mtype:nullable MType(MType)>*/
1510 }
1511 var52 = !var51;
1512 var48 = var52;
1513 goto RET_LABEL49;
1514 RET_LABEL49:(void)0;
1515 }
1516 var47 = var48;
1517 }
1518 if (var47){
1519 {
1520 var53 = ((val*(*)(val* self, val* p0, val* p1))(var_return_mtype->class->vft[COLOR_nitc__model__MType__anchor_to]))(var_return_mtype, var_mmodule, var_mclass_type); /* anchor_to on <var_return_mtype:nullable MType(MType)>*/
1521 }
1522 var_return_mtype = var53;
1523 {
1524 var54 = nitc___nitc__AbstractCompilerVisitor___new_var(var_v, var_return_mtype);
1525 }
1526 var_recv_var = var54;
1527 } else {
1528 }
1529 {
1530 nitc___nitc__SeparateCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__adapt_signature(var_v, var_mpropdef, var_arguments); /* Direct call separate_compiler#SeparateCompilerVisitor#adapt_signature on <var_v:AbstractCompilerVisitor>*/
1531 }
1532 {
1533 nitc___nitc__SeparateCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__unbox_signature_extern(var_v, var_mpropdef, var_arguments); /* Direct call separate_compiler#SeparateCompilerVisitor#unbox_signature_extern on <var_v:AbstractCompilerVisitor>*/
1534 }
1535 var55 = NEW_core__Array(&type_core__Array__core__String);
1536 {
1537 core___core__Array___core__kernel__Object__init(var55); /* Direct call array#Array#init on <var55:Array[String]>*/
1538 }
1539 var_arguments_for_c = var55;
1540 var_a = 0l;
1541 {
1542 { /* Inline array#AbstractArrayRead#length (var_arguments) on <var_arguments:Array[RuntimeVariable]> */
1543 var58 = var_arguments->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_arguments:Array[RuntimeVariable]> */
1544 var56 = var58;
1545 RET_LABEL57:(void)0;
1546 }
1547 }
1548 var_ = var56;
1549 for(;;) {
1550 {
1551 { /* Inline kernel#Int#< (var_a,var_) on <var_a:Int> */
1552 /* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
1553 /* <var_:Int> isa OTHER */
1554 var61 = 1; /* easy <var_:Int> isa OTHER*/
1555 if (unlikely(!var61)) {
1556 var_class_name = type_core__Int.name;
1557 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1558 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
1559 fatal_exit(1);
1560 }
1561 var62 = var_a < var_;
1562 var59 = var62;
1563 goto RET_LABEL60;
1564 RET_LABEL60:(void)0;
1565 }
1566 }
1567 if (var59){
1568 } else {
1569 goto BREAK_label;
1570 }
1571 {
1572 var63 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_arguments, var_a);
1573 }
1574 var_arg = var63;
1575 {
1576 { /* Inline kernel#Int#== (var_a,0l) on <var_a:Int> */
1577 var66 = var_a == 0l;
1578 var64 = var66;
1579 goto RET_LABEL65;
1580 RET_LABEL65:(void)0;
1581 }
1582 }
1583 if (var64){
1584 {
1585 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
1586 var69 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
1587 if (unlikely(var69 == NULL)) {
1588 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1589 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2227);
1590 fatal_exit(1);
1591 }
1592 var67 = var69;
1593 RET_LABEL68:(void)0;
1594 }
1595 }
1596 {
1597 { /* Inline model#MClassDef#mclass (var67) on <var67:MClassDef> */
1598 var72 = var67->attrs[COLOR_nitc__model__MClassDef___mclass].val; /* _mclass on <var67:MClassDef> */
1599 if (unlikely(var72 == NULL)) {
1600 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1601 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 576);
1602 fatal_exit(1);
1603 }
1604 var70 = var72;
1605 RET_LABEL71:(void)0;
1606 }
1607 }
1608 {
1609 { /* Inline model#MClass#mclass_type (var70) on <var70:MClass> */
1610 var75 = var70->attrs[COLOR_nitc__model__MClass___mclass_type].val; /* _mclass_type on <var70:MClass> */
1611 if (unlikely(var75 == NULL)) {
1612 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
1613 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 507);
1614 fatal_exit(1);
1615 }
1616 var73 = var75;
1617 RET_LABEL74:(void)0;
1618 }
1619 }
1620 var_param_mtype = var73;
1621 } else {
1622 {
1623 { /* Inline model#MMethodDef#msignature (var_mpropdef) on <var_mpropdef:MMethodDef> */
1624 var78 = var_mpropdef->attrs[COLOR_nitc__model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:MMethodDef> */
1625 var76 = var78;
1626 RET_LABEL77:(void)0;
1627 }
1628 }
1629 if (var76 == NULL) {
1630 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1631 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light, 137);
1632 fatal_exit(1);
1633 } else {
1634 { /* Inline model#MSignature#mparameters (var76) on <var76:nullable MSignature> */
1635 if (unlikely(var76 == NULL)) {
1636 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1637 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1783);
1638 fatal_exit(1);
1639 }
1640 var81 = var76->attrs[COLOR_nitc__model__MSignature___mparameters].val; /* _mparameters on <var76:nullable MSignature> */
1641 if (unlikely(var81 == NULL)) {
1642 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
1643 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1783);
1644 fatal_exit(1);
1645 }
1646 var79 = var81;
1647 RET_LABEL80:(void)0;
1648 }
1649 }
1650 {
1651 { /* Inline kernel#Int#- (var_a,1l) on <var_a:Int> */
1652 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
1653 /* <1l:Int> isa OTHER */
1654 var84 = 1; /* easy <1l:Int> isa OTHER*/
1655 if (unlikely(!var84)) {
1656 var_class_name87 = type_core__Int.name;
1657 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name87);
1658 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
1659 fatal_exit(1);
1660 }
1661 var88 = var_a - 1l;
1662 var82 = var88;
1663 goto RET_LABEL83;
1664 RET_LABEL83:(void)0;
1665 }
1666 }
1667 {
1668 var89 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var79, var82);
1669 }
1670 {
1671 { /* Inline model#MParameter#mtype (var89) on <var89:nullable Object(MParameter)> */
1672 var92 = var89->attrs[COLOR_nitc__model__MParameter___mtype].val; /* _mtype on <var89:nullable Object(MParameter)> */
1673 if (unlikely(var92 == NULL)) {
1674 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1675 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1900);
1676 fatal_exit(1);
1677 }
1678 var90 = var92;
1679 RET_LABEL91:(void)0;
1680 }
1681 }
1682 var_param_mtype = var90;
1683 }
1684 {
1685 var93 = ((val*(*)(val* self, val* p0, val* p1))(var_param_mtype->class->vft[COLOR_nitc__model__MType__anchor_to]))(var_param_mtype, var_mmodule, var_mclass_type); /* anchor_to on <var_param_mtype:MType>*/
1686 }
1687 var_param_mtype = var93;
1688 {
1689 var94 = ((short int(*)(val* self))(var_param_mtype->class->vft[COLOR_nitc__nitni_base__MType__is_cprimitive]))(var_param_mtype); /* is_cprimitive on <var_param_mtype:MType>*/
1690 }
1691 if (var94){
1692 {
1693 { /* Inline abstract_compiler#RuntimeVariable#name (var_arg) on <var_arg:RuntimeVariable> */
1694 var97 = var_arg->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___name].val; /* _name on <var_arg:RuntimeVariable> */
1695 if (unlikely(var97 == NULL)) {
1696 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1697 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1867);
1698 fatal_exit(1);
1699 }
1700 var95 = var97;
1701 RET_LABEL96:(void)0;
1702 }
1703 }
1704 {
1705 core___core__Array___core__abstract_collection__SimpleCollection__add(var_arguments_for_c, var95); /* Direct call array#Array#add on <var_arguments_for_c:Array[String]>*/
1706 }
1707 } else {
1708 if (unlikely(varonce98==NULL)) {
1709 var99 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
1710 if (likely(varonce100!=NULL)) {
1711 var101 = varonce100;
1712 } else {
1713 var102 = "struct nitni_instance* var_for_c_";
1714 var103 = core__flat___NativeString___to_s_full(var102, 33l, 33l);
1715 var101 = var103;
1716 varonce100 = var101;
1717 }
1718 ((struct instance_core__NativeArray*)var99)->values[0]=var101;
1719 if (likely(varonce104!=NULL)) {
1720 var105 = varonce104;
1721 } else {
1722 var106 = ";";
1723 var107 = core__flat___NativeString___to_s_full(var106, 1l, 1l);
1724 var105 = var107;
1725 varonce104 = var105;
1726 }
1727 ((struct instance_core__NativeArray*)var99)->values[2]=var105;
1728 } else {
1729 var99 = varonce98;
1730 varonce98 = NULL;
1731 }
1732 var108 = core__flat___Int___core__abstract_text__Object__to_s(var_a);
1733 ((struct instance_core__NativeArray*)var99)->values[1]=var108;
1734 {
1735 var109 = ((val*(*)(val* self))(var99->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var99); /* native_to_s on <var99:NativeArray[String]>*/
1736 }
1737 varonce98 = var99;
1738 {
1739 nitc___nitc__AbstractCompilerVisitor___add(var_v, var109); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
1740 }
1741 if (unlikely(varonce110==NULL)) {
1742 var111 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
1743 if (likely(varonce112!=NULL)) {
1744 var113 = varonce112;
1745 } else {
1746 var114 = "var_for_c_";
1747 var115 = core__flat___NativeString___to_s_full(var114, 10l, 10l);
1748 var113 = var115;
1749 varonce112 = var113;
1750 }
1751 ((struct instance_core__NativeArray*)var111)->values[0]=var113;
1752 if (likely(varonce116!=NULL)) {
1753 var117 = varonce116;
1754 } else {
1755 var118 = " = nit_alloc(sizeof(struct nitni_instance));";
1756 var119 = core__flat___NativeString___to_s_full(var118, 44l, 44l);
1757 var117 = var119;
1758 varonce116 = var117;
1759 }
1760 ((struct instance_core__NativeArray*)var111)->values[2]=var117;
1761 } else {
1762 var111 = varonce110;
1763 varonce110 = NULL;
1764 }
1765 var120 = core__flat___Int___core__abstract_text__Object__to_s(var_a);
1766 ((struct instance_core__NativeArray*)var111)->values[1]=var120;
1767 {
1768 var121 = ((val*(*)(val* self))(var111->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var111); /* native_to_s on <var111:NativeArray[String]>*/
1769 }
1770 varonce110 = var111;
1771 {
1772 nitc___nitc__AbstractCompilerVisitor___add(var_v, var121); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
1773 }
1774 if (unlikely(varonce122==NULL)) {
1775 var123 = NEW_core__NativeArray(5l, &type_core__NativeArray__core__String);
1776 if (likely(varonce124!=NULL)) {
1777 var125 = varonce124;
1778 } else {
1779 var126 = "var_for_c_";
1780 var127 = core__flat___NativeString___to_s_full(var126, 10l, 10l);
1781 var125 = var127;
1782 varonce124 = var125;
1783 }
1784 ((struct instance_core__NativeArray*)var123)->values[0]=var125;
1785 if (likely(varonce128!=NULL)) {
1786 var129 = varonce128;
1787 } else {
1788 var130 = "->value = ";
1789 var131 = core__flat___NativeString___to_s_full(var130, 10l, 10l);
1790 var129 = var131;
1791 varonce128 = var129;
1792 }
1793 ((struct instance_core__NativeArray*)var123)->values[2]=var129;
1794 if (likely(varonce132!=NULL)) {
1795 var133 = varonce132;
1796 } else {
1797 var134 = ";";
1798 var135 = core__flat___NativeString___to_s_full(var134, 1l, 1l);
1799 var133 = var135;
1800 varonce132 = var133;
1801 }
1802 ((struct instance_core__NativeArray*)var123)->values[4]=var133;
1803 } else {
1804 var123 = varonce122;
1805 varonce122 = NULL;
1806 }
1807 var136 = core__flat___Int___core__abstract_text__Object__to_s(var_a);
1808 ((struct instance_core__NativeArray*)var123)->values[1]=var136;
1809 {
1810 { /* Inline abstract_compiler#RuntimeVariable#name (var_arg) on <var_arg:RuntimeVariable> */
1811 var139 = var_arg->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___name].val; /* _name on <var_arg:RuntimeVariable> */
1812 if (unlikely(var139 == NULL)) {
1813 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1814 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1867);
1815 fatal_exit(1);
1816 }
1817 var137 = var139;
1818 RET_LABEL138:(void)0;
1819 }
1820 }
1821 ((struct instance_core__NativeArray*)var123)->values[3]=var137;
1822 {
1823 var140 = ((val*(*)(val* self))(var123->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var123); /* native_to_s on <var123:NativeArray[String]>*/
1824 }
1825 varonce122 = var123;
1826 {
1827 nitc___nitc__AbstractCompilerVisitor___add(var_v, var140); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
1828 }
1829 if (unlikely(varonce141==NULL)) {
1830 var142 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
1831 if (likely(varonce143!=NULL)) {
1832 var144 = varonce143;
1833 } else {
1834 var145 = "var_for_c_";
1835 var146 = core__flat___NativeString___to_s_full(var145, 10l, 10l);
1836 var144 = var146;
1837 varonce143 = var144;
1838 }
1839 ((struct instance_core__NativeArray*)var142)->values[0]=var144;
1840 } else {
1841 var142 = varonce141;
1842 varonce141 = NULL;
1843 }
1844 var147 = core__flat___Int___core__abstract_text__Object__to_s(var_a);
1845 ((struct instance_core__NativeArray*)var142)->values[1]=var147;
1846 {
1847 var148 = ((val*(*)(val* self))(var142->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var142); /* native_to_s on <var142:NativeArray[String]>*/
1848 }
1849 varonce141 = var142;
1850 {
1851 core___core__Array___core__abstract_collection__SimpleCollection__add(var_arguments_for_c, var148); /* Direct call array#Array#add on <var_arguments_for_c:Array[String]>*/
1852 }
1853 }
1854 {
1855 var149 = core___core__Int___Discrete__successor(var_a, 1l);
1856 }
1857 var_a = var149;
1858 }
1859 BREAK_label: (void)0;
1860 if (var_recv_var == NULL) {
1861 var150 = 1; /* is null */
1862 } else {
1863 var150 = 0; /* arg is null but recv is not */
1864 }
1865 if (0) {
1866 { /* Inline kernel#Object#== (var_recv_var,((val*)NULL)) on <var_recv_var:nullable RuntimeVariable> */
1867 var_other = ((val*)NULL);
1868 {
1869 { /* Inline kernel#Object#is_same_instance (var_recv_var,var_other) on <var_recv_var:nullable RuntimeVariable(RuntimeVariable)> */
1870 var155 = var_recv_var == var_other;
1871 var153 = var155;
1872 goto RET_LABEL154;
1873 RET_LABEL154:(void)0;
1874 }
1875 }
1876 var151 = var153;
1877 goto RET_LABEL152;
1878 RET_LABEL152:(void)0;
1879 }
1880 var150 = var151;
1881 }
1882 if (var150){
1883 if (unlikely(varonce156==NULL)) {
1884 var157 = NEW_core__NativeArray(4l, &type_core__NativeArray__core__String);
1885 if (likely(varonce158!=NULL)) {
1886 var159 = varonce158;
1887 } else {
1888 var160 = "(";
1889 var161 = core__flat___NativeString___to_s_full(var160, 1l, 1l);
1890 var159 = var161;
1891 varonce158 = var159;
1892 }
1893 ((struct instance_core__NativeArray*)var157)->values[1]=var159;
1894 if (likely(varonce162!=NULL)) {
1895 var163 = varonce162;
1896 } else {
1897 var164 = ");";
1898 var165 = core__flat___NativeString___to_s_full(var164, 2l, 2l);
1899 var163 = var165;
1900 varonce162 = var163;
1901 }
1902 ((struct instance_core__NativeArray*)var157)->values[3]=var163;
1903 } else {
1904 var157 = varonce156;
1905 varonce156 = NULL;
1906 }
1907 ((struct instance_core__NativeArray*)var157)->values[0]=var_externname;
1908 if (likely(varonce166!=NULL)) {
1909 var167 = varonce166;
1910 } else {
1911 var168 = ", ";
1912 var169 = core__flat___NativeString___to_s_full(var168, 2l, 2l);
1913 var167 = var169;
1914 varonce166 = var167;
1915 }
1916 {
1917 var170 = core__abstract_text___Collection___join(var_arguments_for_c, var167);
1918 }
1919 ((struct instance_core__NativeArray*)var157)->values[2]=var170;
1920 {
1921 var171 = ((val*(*)(val* self))(var157->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var157); /* native_to_s on <var157:NativeArray[String]>*/
1922 }
1923 varonce156 = var157;
1924 {
1925 nitc___nitc__AbstractCompilerVisitor___add(var_v, var171); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
1926 }
1927 } else {
1928 if (var_return_mtype == NULL) {
1929 var172 = 0; /* is null */
1930 } else {
1931 var172 = 1; /* arg is null and recv is not */
1932 }
1933 if (0) {
1934 { /* Inline kernel#Object#!= (var_return_mtype,((val*)NULL)) on <var_return_mtype:nullable MType> */
1935 var_other50 = ((val*)NULL);
1936 {
1937 var175 = ((short int(*)(val* self, val* p0))(var_return_mtype->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_return_mtype, var_other50); /* == on <var_return_mtype:nullable MType(MType)>*/
1938 }
1939 var176 = !var175;
1940 var173 = var176;
1941 goto RET_LABEL174;
1942 RET_LABEL174:(void)0;
1943 }
1944 var172 = var173;
1945 }
1946 if (unlikely(!var172)) {
1947 PRINT_ERROR("Runtime error: %s", "Assert failed");
1948 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light, 154);
1949 fatal_exit(1);
1950 }
1951 {
1952 var177 = ((short int(*)(val* self))(var_return_mtype->class->vft[COLOR_nitc__nitni_base__MType__is_cprimitive]))(var_return_mtype); /* is_cprimitive on <var_return_mtype:nullable MType(MType)>*/
1953 }
1954 if (var177){
1955 if (unlikely(varonce178==NULL)) {
1956 var179 = NEW_core__NativeArray(6l, &type_core__NativeArray__core__String);
1957 if (likely(varonce180!=NULL)) {
1958 var181 = varonce180;
1959 } else {
1960 var182 = " = ";
1961 var183 = core__flat___NativeString___to_s_full(var182, 3l, 3l);
1962 var181 = var183;
1963 varonce180 = var181;
1964 }
1965 ((struct instance_core__NativeArray*)var179)->values[1]=var181;
1966 if (likely(varonce184!=NULL)) {
1967 var185 = varonce184;
1968 } else {
1969 var186 = "(";
1970 var187 = core__flat___NativeString___to_s_full(var186, 1l, 1l);
1971 var185 = var187;
1972 varonce184 = var185;
1973 }
1974 ((struct instance_core__NativeArray*)var179)->values[3]=var185;
1975 if (likely(varonce188!=NULL)) {
1976 var189 = varonce188;
1977 } else {
1978 var190 = ");";
1979 var191 = core__flat___NativeString___to_s_full(var190, 2l, 2l);
1980 var189 = var191;
1981 varonce188 = var189;
1982 }
1983 ((struct instance_core__NativeArray*)var179)->values[5]=var189;
1984 } else {
1985 var179 = varonce178;
1986 varonce178 = NULL;
1987 }
1988 {
1989 var192 = ((val*(*)(val* self))(var_recv_var->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_recv_var); /* to_s on <var_recv_var:nullable RuntimeVariable(RuntimeVariable)>*/
1990 }
1991 ((struct instance_core__NativeArray*)var179)->values[0]=var192;
1992 ((struct instance_core__NativeArray*)var179)->values[2]=var_externname;
1993 if (likely(varonce193!=NULL)) {
1994 var194 = varonce193;
1995 } else {
1996 var195 = ", ";
1997 var196 = core__flat___NativeString___to_s_full(var195, 2l, 2l);
1998 var194 = var196;
1999 varonce193 = var194;
2000 }
2001 {
2002 var197 = core__abstract_text___Collection___join(var_arguments_for_c, var194);
2003 }
2004 ((struct instance_core__NativeArray*)var179)->values[4]=var197;
2005 {
2006 var198 = ((val*(*)(val* self))(var179->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var179); /* native_to_s on <var179:NativeArray[String]>*/
2007 }
2008 varonce178 = var179;
2009 {
2010 nitc___nitc__AbstractCompilerVisitor___add(var_v, var198); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2011 }
2012 } else {
2013 if (likely(varonce199!=NULL)) {
2014 var200 = varonce199;
2015 } else {
2016 var201 = "struct nitni_instance* ret_var;";
2017 var202 = core__flat___NativeString___to_s_full(var201, 31l, 31l);
2018 var200 = var202;
2019 varonce199 = var200;
2020 }
2021 {
2022 nitc___nitc__AbstractCompilerVisitor___add(var_v, var200); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2023 }
2024 if (unlikely(varonce203==NULL)) {
2025 var204 = NEW_core__NativeArray(5l, &type_core__NativeArray__core__String);
2026 if (likely(varonce205!=NULL)) {
2027 var206 = varonce205;
2028 } else {
2029 var207 = "ret_var = ";
2030 var208 = core__flat___NativeString___to_s_full(var207, 10l, 10l);
2031 var206 = var208;
2032 varonce205 = var206;
2033 }
2034 ((struct instance_core__NativeArray*)var204)->values[0]=var206;
2035 if (likely(varonce209!=NULL)) {
2036 var210 = varonce209;
2037 } else {
2038 var211 = "(";
2039 var212 = core__flat___NativeString___to_s_full(var211, 1l, 1l);
2040 var210 = var212;
2041 varonce209 = var210;
2042 }
2043 ((struct instance_core__NativeArray*)var204)->values[2]=var210;
2044 if (likely(varonce213!=NULL)) {
2045 var214 = varonce213;
2046 } else {
2047 var215 = ");";
2048 var216 = core__flat___NativeString___to_s_full(var215, 2l, 2l);
2049 var214 = var216;
2050 varonce213 = var214;
2051 }
2052 ((struct instance_core__NativeArray*)var204)->values[4]=var214;
2053 } else {
2054 var204 = varonce203;
2055 varonce203 = NULL;
2056 }
2057 ((struct instance_core__NativeArray*)var204)->values[1]=var_externname;
2058 if (likely(varonce217!=NULL)) {
2059 var218 = varonce217;
2060 } else {
2061 var219 = ", ";
2062 var220 = core__flat___NativeString___to_s_full(var219, 2l, 2l);
2063 var218 = var220;
2064 varonce217 = var218;
2065 }
2066 {
2067 var221 = core__abstract_text___Collection___join(var_arguments_for_c, var218);
2068 }
2069 ((struct instance_core__NativeArray*)var204)->values[3]=var221;
2070 {
2071 var222 = ((val*(*)(val* self))(var204->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var204); /* native_to_s on <var204:NativeArray[String]>*/
2072 }
2073 varonce203 = var204;
2074 {
2075 nitc___nitc__AbstractCompilerVisitor___add(var_v, var222); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2076 }
2077 if (unlikely(varonce223==NULL)) {
2078 var224 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
2079 if (likely(varonce225!=NULL)) {
2080 var226 = varonce225;
2081 } else {
2082 var227 = " = ret_var->value;";
2083 var228 = core__flat___NativeString___to_s_full(var227, 18l, 18l);
2084 var226 = var228;
2085 varonce225 = var226;
2086 }
2087 ((struct instance_core__NativeArray*)var224)->values[1]=var226;
2088 } else {
2089 var224 = varonce223;
2090 varonce223 = NULL;
2091 }
2092 {
2093 var229 = ((val*(*)(val* self))(var_recv_var->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_recv_var); /* to_s on <var_recv_var:nullable RuntimeVariable(RuntimeVariable)>*/
2094 }
2095 ((struct instance_core__NativeArray*)var224)->values[0]=var229;
2096 {
2097 var230 = ((val*(*)(val* self))(var224->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var224); /* native_to_s on <var224:NativeArray[String]>*/
2098 }
2099 varonce223 = var224;
2100 {
2101 nitc___nitc__AbstractCompilerVisitor___add(var_v, var230); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2102 }
2103 }
2104 {
2105 var231 = ((val*(*)(val* self, val* p0, val* p1))(var_v->class->vft[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor__box_extern]))(var_v, var_recv_var, var_return_mtype); /* box_extern on <var_v:AbstractCompilerVisitor>*/
2106 }
2107 var_recv_var = var231;
2108 {
2109 nitc___nitc__AbstractCompilerVisitor___ret(var_v, var_recv_var); /* Direct call abstract_compiler#AbstractCompilerVisitor#ret on <var_v:AbstractCompilerVisitor>*/
2110 }
2111 }
2112 {
2113 nitc__light___AMethPropdef___compile_ffi_support_to_c(self, var_v); /* Direct call light#AMethPropdef#compile_ffi_support_to_c on <self:AMethPropdef>*/
2114 }
2115 var = 1;
2116 goto RET_LABEL;
2117 RET_LABEL:;
2118 return var;
2119 }
2120 /* method light#AMethPropdef#compile_externinit_to_c for (self: AMethPropdef, AbstractCompilerVisitor, MMethodDef, Array[RuntimeVariable]): Bool */
2121 short int nitc__light___AMethPropdef___compile_externinit_to_c(val* self, val* p0, val* p1, val* p2) {
2122 short int var /* : Bool */;
2123 val* var_v /* var v: AbstractCompilerVisitor */;
2124 val* var_mpropdef /* var mpropdef: MMethodDef */;
2125 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
2126 val* var1 /* : nullable AExternCodeBlock */;
2127 val* var3 /* : nullable AExternCodeBlock */;
2128 short int var4 /* : Bool */;
2129 short int var5 /* : Bool */;
2130 val* var_other /* var other: nullable Object */;
2131 short int var7 /* : Bool */;
2132 short int var9 /* : Bool */;
2133 short int var10 /* : Bool */;
2134 short int var11 /* : Bool */;
2135 short int var12 /* : Bool */;
2136 val* var13 /* : MClassDef */;
2137 val* var15 /* : MClassDef */;
2138 val* var16 /* : MModule */;
2139 val* var18 /* : MModule */;
2140 val* var_mmodule /* var mmodule: MModule */;
2141 val* var20 /* : MClassDef */;
2142 val* var22 /* : MClassDef */;
2143 val* var23 /* : MClassType */;
2144 val* var25 /* : MClassType */;
2145 val* var_mclass_type /* var mclass_type: MClassType */;
2146 val* var26 /* : MProperty */;
2147 val* var28 /* : MProperty */;
2148 val* var29 /* : MClassDef */;
2149 val* var31 /* : MClassDef */;
2150 val* var32 /* : MClassType */;
2151 val* var34 /* : MClassType */;
2152 static val* varonce;
2153 val* var35 /* : String */;
2154 char* var36 /* : NativeString */;
2155 val* var37 /* : String */;
2156 val* var38 /* : Sys */;
2157 val* var39 /* : SignatureLength */;
2158 val* var40 /* : String */;
2159 val* var_externname /* var externname: String */;
2160 val* var41 /* : nullable Object */;
2161 val* var42 /* : MType */;
2162 val* var44 /* : MType */;
2163 val* var_return_mtype /* var return_mtype: MType */;
2164 val* var45 /* : RuntimeVariable */;
2165 val* var_recv_var /* var recv_var: RuntimeVariable */;
2166 val* var46 /* : nullable Object */;
2167 val* var47 /* : Array[String] */;
2168 val* var_arguments_for_c /* var arguments_for_c: Array[String] */;
2169 long var_a /* var a: Int */;
2170 long var48 /* : Int */;
2171 long var50 /* : Int */;
2172 long var_ /* var : Int */;
2173 short int var51 /* : Bool */;
2174 short int var53 /* : Bool */;
2175 int cltype;
2176 int idtype;
2177 const char* var_class_name;
2178 short int var54 /* : Bool */;
2179 val* var55 /* : nullable Object */;
2180 val* var_arg /* var arg: RuntimeVariable */;
2181 val* var56 /* : nullable MSignature */;
2182 val* var58 /* : nullable MSignature */;
2183 val* var59 /* : Array[MParameter] */;
2184 val* var61 /* : Array[MParameter] */;
2185 val* var62 /* : nullable Object */;
2186 val* var63 /* : MType */;
2187 val* var65 /* : MType */;
2188 val* var_param_mtype /* var param_mtype: MType */;
2189 val* var66 /* : MType */;
2190 short int var67 /* : Bool */;
2191 val* var68 /* : String */;
2192 val* var70 /* : String */;
2193 val* var72 /* : NativeArray[String] */;
2194 static val* varonce71;
2195 static val* varonce73;
2196 val* var74 /* : String */;
2197 char* var75 /* : NativeString */;
2198 val* var76 /* : String */;
2199 static val* varonce77;
2200 val* var78 /* : String */;
2201 char* var79 /* : NativeString */;
2202 val* var80 /* : String */;
2203 val* var81 /* : String */;
2204 val* var82 /* : String */;
2205 val* var84 /* : NativeArray[String] */;
2206 static val* varonce83;
2207 static val* varonce85;
2208 val* var86 /* : String */;
2209 char* var87 /* : NativeString */;
2210 val* var88 /* : String */;
2211 static val* varonce89;
2212 val* var90 /* : String */;
2213 char* var91 /* : NativeString */;
2214 val* var92 /* : String */;
2215 val* var93 /* : String */;
2216 val* var94 /* : String */;
2217 val* var96 /* : NativeArray[String] */;
2218 static val* varonce95;
2219 static val* varonce97;
2220 val* var98 /* : String */;
2221 char* var99 /* : NativeString */;
2222 val* var100 /* : String */;
2223 static val* varonce101;
2224 val* var102 /* : String */;
2225 char* var103 /* : NativeString */;
2226 val* var104 /* : String */;
2227 static val* varonce105;
2228 val* var106 /* : String */;
2229 char* var107 /* : NativeString */;
2230 val* var108 /* : String */;
2231 val* var109 /* : String */;
2232 val* var110 /* : String */;
2233 val* var112 /* : String */;
2234 val* var113 /* : String */;
2235 val* var115 /* : NativeArray[String] */;
2236 static val* varonce114;
2237 static val* varonce116;
2238 val* var117 /* : String */;
2239 char* var118 /* : NativeString */;
2240 val* var119 /* : String */;
2241 val* var120 /* : String */;
2242 val* var121 /* : String */;
2243 long var122 /* : Int */;
2244 short int var123 /* : Bool */;
2245 val* var125 /* : NativeArray[String] */;
2246 static val* varonce124;
2247 static val* varonce126;
2248 val* var127 /* : String */;
2249 char* var128 /* : NativeString */;
2250 val* var129 /* : String */;
2251 static val* varonce130;
2252 val* var131 /* : String */;
2253 char* var132 /* : NativeString */;
2254 val* var133 /* : String */;
2255 static val* varonce134;
2256 val* var135 /* : String */;
2257 char* var136 /* : NativeString */;
2258 val* var137 /* : String */;
2259 val* var138 /* : String */;
2260 static val* varonce139;
2261 val* var140 /* : String */;
2262 char* var141 /* : NativeString */;
2263 val* var142 /* : String */;
2264 val* var143 /* : String */;
2265 val* var144 /* : String */;
2266 static val* varonce145;
2267 val* var146 /* : String */;
2268 char* var147 /* : NativeString */;
2269 val* var148 /* : String */;
2270 val* var150 /* : NativeArray[String] */;
2271 static val* varonce149;
2272 static val* varonce151;
2273 val* var152 /* : String */;
2274 char* var153 /* : NativeString */;
2275 val* var154 /* : String */;
2276 static val* varonce155;
2277 val* var156 /* : String */;
2278 char* var157 /* : NativeString */;
2279 val* var158 /* : String */;
2280 static val* varonce159;
2281 val* var160 /* : String */;
2282 char* var161 /* : NativeString */;
2283 val* var162 /* : String */;
2284 static val* varonce163;
2285 val* var164 /* : String */;
2286 char* var165 /* : NativeString */;
2287 val* var166 /* : String */;
2288 val* var167 /* : String */;
2289 val* var168 /* : String */;
2290 val* var170 /* : NativeArray[String] */;
2291 static val* varonce169;
2292 static val* varonce171;
2293 val* var172 /* : String */;
2294 char* var173 /* : NativeString */;
2295 val* var174 /* : String */;
2296 val* var175 /* : String */;
2297 val* var176 /* : String */;
2298 val* var177 /* : RuntimeVariable */;
2299 var_v = p0;
2300 var_mpropdef = p1;
2301 var_arguments = p2;
2302 {
2303 { /* Inline parser_nodes#AMethPropdef#n_extern_code_block (self) on <self:AMethPropdef> */
2304 var3 = self->attrs[COLOR_nitc__parser_nodes__AMethPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AMethPropdef> */
2305 var1 = var3;
2306 RET_LABEL2:(void)0;
2307 }
2308 }
2309 if (var1 == NULL) {
2310 var4 = 1; /* is null */
2311 } else {
2312 var4 = 0; /* arg is null but recv is not */
2313 }
2314 if (0) {
2315 { /* Inline kernel#Object#== (var1,((val*)NULL)) on <var1:nullable AExternCodeBlock> */
2316 var_other = ((val*)NULL);
2317 {
2318 { /* Inline kernel#Object#is_same_instance (var1,var_other) on <var1:nullable AExternCodeBlock(AExternCodeBlock)> */
2319 var9 = var1 == var_other;
2320 var7 = var9;
2321 goto RET_LABEL8;
2322 RET_LABEL8:(void)0;
2323 }
2324 }
2325 var5 = var7;
2326 goto RET_LABEL6;
2327 RET_LABEL6:(void)0;
2328 }
2329 var4 = var5;
2330 }
2331 if (var4){
2332 {
2333 var10 = ((short int(*)(val* self, val* p0, val* p1, val* p2))(self->class->vft[COLOR_nitc__light___AMethPropdef___compile_externinit_to_c]))(self, p0, p1, p2); /* compile_externinit_to_c on <self:AMethPropdef>*/
2334 }
2335 var = var10;
2336 goto RET_LABEL;
2337 } else {
2338 }
2339 {
2340 var11 = nitc__light_only___AMethPropdef___accept_externmeth(self);
2341 }
2342 var12 = !var11;
2343 if (var12){
2344 var = 0;
2345 goto RET_LABEL;
2346 } else {
2347 }
2348 {
2349 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
2350 var15 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
2351 if (unlikely(var15 == NULL)) {
2352 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
2353 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2227);
2354 fatal_exit(1);
2355 }
2356 var13 = var15;
2357 RET_LABEL14:(void)0;
2358 }
2359 }
2360 {
2361 { /* Inline model#MClassDef#mmodule (var13) on <var13:MClassDef> */
2362 var18 = var13->attrs[COLOR_nitc__model__MClassDef___mmodule].val; /* _mmodule on <var13:MClassDef> */
2363 if (unlikely(var18 == NULL)) {
2364 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
2365 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 573);
2366 fatal_exit(1);
2367 }
2368 var16 = var18;
2369 RET_LABEL17:(void)0;
2370 }
2371 }
2372 var_mmodule = var16;
2373 {
2374 { /* Inline light_ffi#MModule#uses_ffi= (var_mmodule,1) on <var_mmodule:MModule> */
2375 var_mmodule->attrs[COLOR_nitc__light_ffi__MModule___uses_ffi].s = 1; /* _uses_ffi on <var_mmodule:MModule> */
2376 RET_LABEL19:(void)0;
2377 }
2378 }
2379 {
2380 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
2381 var22 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
2382 if (unlikely(var22 == NULL)) {
2383 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
2384 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2227);
2385 fatal_exit(1);
2386 }
2387 var20 = var22;
2388 RET_LABEL21:(void)0;
2389 }
2390 }
2391 {
2392 { /* Inline model#MClassDef#bound_mtype (var20) on <var20:MClassDef> */
2393 var25 = var20->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var20:MClassDef> */
2394 if (unlikely(var25 == NULL)) {
2395 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
2396 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 579);
2397 fatal_exit(1);
2398 }
2399 var23 = var25;
2400 RET_LABEL24:(void)0;
2401 }
2402 }
2403 var_mclass_type = var23;
2404 {
2405 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MMethodDef> */
2406 var28 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MMethodDef> */
2407 if (unlikely(var28 == NULL)) {
2408 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
2409 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2230);
2410 fatal_exit(1);
2411 }
2412 var26 = var28;
2413 RET_LABEL27:(void)0;
2414 }
2415 }
2416 {
2417 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
2418 var31 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
2419 if (unlikely(var31 == NULL)) {
2420 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
2421 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2227);
2422 fatal_exit(1);
2423 }
2424 var29 = var31;
2425 RET_LABEL30:(void)0;
2426 }
2427 }
2428 {
2429 { /* Inline model#MClassDef#bound_mtype (var29) on <var29:MClassDef> */
2430 var34 = var29->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var29:MClassDef> */
2431 if (unlikely(var34 == NULL)) {
2432 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
2433 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 579);
2434 fatal_exit(1);
2435 }
2436 var32 = var34;
2437 RET_LABEL33:(void)0;
2438 }
2439 }
2440 if (likely(varonce!=NULL)) {
2441 var35 = varonce;
2442 } else {
2443 var36 = "___impl";
2444 var37 = core__flat___NativeString___to_s_full(var36, 7l, 7l);
2445 var35 = var37;
2446 varonce = var35;
2447 }
2448 var38 = glob_sys;
2449 {
2450 var39 = nitc__nitni_utilities___core__Sys___long_signature(var38);
2451 }
2452 {
2453 var40 = nitc__nitni_utilities___MMethod___build_cname(var26, var32, var_mmodule, var35, var39);
2454 }
2455 var_externname = var40;
2456 {
2457 var41 = core___core__SequenceRead___Collection__first(var_arguments);
2458 }
2459 {
2460 { /* Inline abstract_compiler#RuntimeVariable#mtype (var41) on <var41:nullable Object(RuntimeVariable)> */
2461 var44 = var41->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var41:nullable Object(RuntimeVariable)> */
2462 if (unlikely(var44 == NULL)) {
2463 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2464 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
2465 fatal_exit(1);
2466 }
2467 var42 = var44;
2468 RET_LABEL43:(void)0;
2469 }
2470 }
2471 var_return_mtype = var42;
2472 {
2473 var45 = nitc___nitc__AbstractCompilerVisitor___new_var(var_v, var_return_mtype);
2474 }
2475 var_recv_var = var45;
2476 {
2477 nitc___nitc__SeparateCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__adapt_signature(var_v, var_mpropdef, var_arguments); /* Direct call separate_compiler#SeparateCompilerVisitor#adapt_signature on <var_v:AbstractCompilerVisitor>*/
2478 }
2479 {
2480 nitc___nitc__SeparateCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__unbox_signature_extern(var_v, var_mpropdef, var_arguments); /* Direct call separate_compiler#SeparateCompilerVisitor#unbox_signature_extern on <var_v:AbstractCompilerVisitor>*/
2481 }
2482 {
2483 var46 = core___core__AbstractArray___core__abstract_collection__Sequence__shift(var_arguments);
2484 }
2485 var47 = NEW_core__Array(&type_core__Array__core__String);
2486 {
2487 core___core__Array___core__kernel__Object__init(var47); /* Direct call array#Array#init on <var47:Array[String]>*/
2488 }
2489 var_arguments_for_c = var47;
2490 var_a = 0l;
2491 {
2492 { /* Inline array#AbstractArrayRead#length (var_arguments) on <var_arguments:Array[RuntimeVariable]> */
2493 var50 = var_arguments->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_arguments:Array[RuntimeVariable]> */
2494 var48 = var50;
2495 RET_LABEL49:(void)0;
2496 }
2497 }
2498 var_ = var48;
2499 for(;;) {
2500 {
2501 { /* Inline kernel#Int#< (var_a,var_) on <var_a:Int> */
2502 /* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
2503 /* <var_:Int> isa OTHER */
2504 var53 = 1; /* easy <var_:Int> isa OTHER*/
2505 if (unlikely(!var53)) {
2506 var_class_name = type_core__Int.name;
2507 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2508 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
2509 fatal_exit(1);
2510 }
2511 var54 = var_a < var_;
2512 var51 = var54;
2513 goto RET_LABEL52;
2514 RET_LABEL52:(void)0;
2515 }
2516 }
2517 if (var51){
2518 } else {
2519 goto BREAK_label;
2520 }
2521 {
2522 var55 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_arguments, var_a);
2523 }
2524 var_arg = var55;
2525 {
2526 { /* Inline model#MMethodDef#msignature (var_mpropdef) on <var_mpropdef:MMethodDef> */
2527 var58 = var_mpropdef->attrs[COLOR_nitc__model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:MMethodDef> */
2528 var56 = var58;
2529 RET_LABEL57:(void)0;
2530 }
2531 }
2532 if (var56 == NULL) {
2533 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2534 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light, 195);
2535 fatal_exit(1);
2536 } else {
2537 { /* Inline model#MSignature#mparameters (var56) on <var56:nullable MSignature> */
2538 if (unlikely(var56 == NULL)) {
2539 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2540 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1783);
2541 fatal_exit(1);
2542 }
2543 var61 = var56->attrs[COLOR_nitc__model__MSignature___mparameters].val; /* _mparameters on <var56:nullable MSignature> */
2544 if (unlikely(var61 == NULL)) {
2545 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
2546 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1783);
2547 fatal_exit(1);
2548 }
2549 var59 = var61;
2550 RET_LABEL60:(void)0;
2551 }
2552 }
2553 {
2554 var62 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var59, var_a);
2555 }
2556 {
2557 { /* Inline model#MParameter#mtype (var62) on <var62:nullable Object(MParameter)> */
2558 var65 = var62->attrs[COLOR_nitc__model__MParameter___mtype].val; /* _mtype on <var62:nullable Object(MParameter)> */
2559 if (unlikely(var65 == NULL)) {
2560 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2561 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1900);
2562 fatal_exit(1);
2563 }
2564 var63 = var65;
2565 RET_LABEL64:(void)0;
2566 }
2567 }
2568 var_param_mtype = var63;
2569 {
2570 var66 = ((val*(*)(val* self, val* p0, val* p1))(var_param_mtype->class->vft[COLOR_nitc__model__MType__anchor_to]))(var_param_mtype, var_mmodule, var_mclass_type); /* anchor_to on <var_param_mtype:MType>*/
2571 }
2572 var_param_mtype = var66;
2573 {
2574 var67 = ((short int(*)(val* self))(var_param_mtype->class->vft[COLOR_nitc__nitni_base__MType__is_cprimitive]))(var_param_mtype); /* is_cprimitive on <var_param_mtype:MType>*/
2575 }
2576 if (var67){
2577 {
2578 { /* Inline abstract_compiler#RuntimeVariable#name (var_arg) on <var_arg:RuntimeVariable> */
2579 var70 = var_arg->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___name].val; /* _name on <var_arg:RuntimeVariable> */
2580 if (unlikely(var70 == NULL)) {
2581 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2582 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1867);
2583 fatal_exit(1);
2584 }
2585 var68 = var70;
2586 RET_LABEL69:(void)0;
2587 }
2588 }
2589 {
2590 core___core__Array___core__abstract_collection__SimpleCollection__add(var_arguments_for_c, var68); /* Direct call array#Array#add on <var_arguments_for_c:Array[String]>*/
2591 }
2592 } else {
2593 if (unlikely(varonce71==NULL)) {
2594 var72 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
2595 if (likely(varonce73!=NULL)) {
2596 var74 = varonce73;
2597 } else {
2598 var75 = "struct nitni_instance* var_for_c_";
2599 var76 = core__flat___NativeString___to_s_full(var75, 33l, 33l);
2600 var74 = var76;
2601 varonce73 = var74;
2602 }
2603 ((struct instance_core__NativeArray*)var72)->values[0]=var74;
2604 if (likely(varonce77!=NULL)) {
2605 var78 = varonce77;
2606 } else {
2607 var79 = ";";
2608 var80 = core__flat___NativeString___to_s_full(var79, 1l, 1l);
2609 var78 = var80;
2610 varonce77 = var78;
2611 }
2612 ((struct instance_core__NativeArray*)var72)->values[2]=var78;
2613 } else {
2614 var72 = varonce71;
2615 varonce71 = NULL;
2616 }
2617 var81 = core__flat___Int___core__abstract_text__Object__to_s(var_a);
2618 ((struct instance_core__NativeArray*)var72)->values[1]=var81;
2619 {
2620 var82 = ((val*(*)(val* self))(var72->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var72); /* native_to_s on <var72:NativeArray[String]>*/
2621 }
2622 varonce71 = var72;
2623 {
2624 nitc___nitc__AbstractCompilerVisitor___add(var_v, var82); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2625 }
2626 if (unlikely(varonce83==NULL)) {
2627 var84 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
2628 if (likely(varonce85!=NULL)) {
2629 var86 = varonce85;
2630 } else {
2631 var87 = "var_for_c_";
2632 var88 = core__flat___NativeString___to_s_full(var87, 10l, 10l);
2633 var86 = var88;
2634 varonce85 = var86;
2635 }
2636 ((struct instance_core__NativeArray*)var84)->values[0]=var86;
2637 if (likely(varonce89!=NULL)) {
2638 var90 = varonce89;
2639 } else {
2640 var91 = " = nit_alloc(sizeof(struct nitni_instance));";
2641 var92 = core__flat___NativeString___to_s_full(var91, 44l, 44l);
2642 var90 = var92;
2643 varonce89 = var90;
2644 }
2645 ((struct instance_core__NativeArray*)var84)->values[2]=var90;
2646 } else {
2647 var84 = varonce83;
2648 varonce83 = NULL;
2649 }
2650 var93 = core__flat___Int___core__abstract_text__Object__to_s(var_a);
2651 ((struct instance_core__NativeArray*)var84)->values[1]=var93;
2652 {
2653 var94 = ((val*(*)(val* self))(var84->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var84); /* native_to_s on <var84:NativeArray[String]>*/
2654 }
2655 varonce83 = var84;
2656 {
2657 nitc___nitc__AbstractCompilerVisitor___add(var_v, var94); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2658 }
2659 if (unlikely(varonce95==NULL)) {
2660 var96 = NEW_core__NativeArray(5l, &type_core__NativeArray__core__String);
2661 if (likely(varonce97!=NULL)) {
2662 var98 = varonce97;
2663 } else {
2664 var99 = "var_for_c_";
2665 var100 = core__flat___NativeString___to_s_full(var99, 10l, 10l);
2666 var98 = var100;
2667 varonce97 = var98;
2668 }
2669 ((struct instance_core__NativeArray*)var96)->values[0]=var98;
2670 if (likely(varonce101!=NULL)) {
2671 var102 = varonce101;
2672 } else {
2673 var103 = "->value = ";
2674 var104 = core__flat___NativeString___to_s_full(var103, 10l, 10l);
2675 var102 = var104;
2676 varonce101 = var102;
2677 }
2678 ((struct instance_core__NativeArray*)var96)->values[2]=var102;
2679 if (likely(varonce105!=NULL)) {
2680 var106 = varonce105;
2681 } else {
2682 var107 = ";";
2683 var108 = core__flat___NativeString___to_s_full(var107, 1l, 1l);
2684 var106 = var108;
2685 varonce105 = var106;
2686 }
2687 ((struct instance_core__NativeArray*)var96)->values[4]=var106;
2688 } else {
2689 var96 = varonce95;
2690 varonce95 = NULL;
2691 }
2692 var109 = core__flat___Int___core__abstract_text__Object__to_s(var_a);
2693 ((struct instance_core__NativeArray*)var96)->values[1]=var109;
2694 {
2695 { /* Inline abstract_compiler#RuntimeVariable#name (var_arg) on <var_arg:RuntimeVariable> */
2696 var112 = var_arg->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___name].val; /* _name on <var_arg:RuntimeVariable> */
2697 if (unlikely(var112 == NULL)) {
2698 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2699 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1867);
2700 fatal_exit(1);
2701 }
2702 var110 = var112;
2703 RET_LABEL111:(void)0;
2704 }
2705 }
2706 ((struct instance_core__NativeArray*)var96)->values[3]=var110;
2707 {
2708 var113 = ((val*(*)(val* self))(var96->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var96); /* native_to_s on <var96:NativeArray[String]>*/
2709 }
2710 varonce95 = var96;
2711 {
2712 nitc___nitc__AbstractCompilerVisitor___add(var_v, var113); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2713 }
2714 if (unlikely(varonce114==NULL)) {
2715 var115 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
2716 if (likely(varonce116!=NULL)) {
2717 var117 = varonce116;
2718 } else {
2719 var118 = "var_for_c_";
2720 var119 = core__flat___NativeString___to_s_full(var118, 10l, 10l);
2721 var117 = var119;
2722 varonce116 = var117;
2723 }
2724 ((struct instance_core__NativeArray*)var115)->values[0]=var117;
2725 } else {
2726 var115 = varonce114;
2727 varonce114 = NULL;
2728 }
2729 var120 = core__flat___Int___core__abstract_text__Object__to_s(var_a);
2730 ((struct instance_core__NativeArray*)var115)->values[1]=var120;
2731 {
2732 var121 = ((val*(*)(val* self))(var115->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var115); /* native_to_s on <var115:NativeArray[String]>*/
2733 }
2734 varonce114 = var115;
2735 {
2736 core___core__Array___core__abstract_collection__SimpleCollection__add(var_arguments_for_c, var121); /* Direct call array#Array#add on <var_arguments_for_c:Array[String]>*/
2737 }
2738 }
2739 {
2740 var122 = core___core__Int___Discrete__successor(var_a, 1l);
2741 }
2742 var_a = var122;
2743 }
2744 BREAK_label: (void)0;
2745 {
2746 var123 = ((short int(*)(val* self))(var_return_mtype->class->vft[COLOR_nitc__nitni_base__MType__is_cprimitive]))(var_return_mtype); /* is_cprimitive on <var_return_mtype:MType>*/
2747 }
2748 if (var123){
2749 if (unlikely(varonce124==NULL)) {
2750 var125 = NEW_core__NativeArray(6l, &type_core__NativeArray__core__String);
2751 if (likely(varonce126!=NULL)) {
2752 var127 = varonce126;
2753 } else {
2754 var128 = " = ";
2755 var129 = core__flat___NativeString___to_s_full(var128, 3l, 3l);
2756 var127 = var129;
2757 varonce126 = var127;
2758 }
2759 ((struct instance_core__NativeArray*)var125)->values[1]=var127;
2760 if (likely(varonce130!=NULL)) {
2761 var131 = varonce130;
2762 } else {
2763 var132 = "(";
2764 var133 = core__flat___NativeString___to_s_full(var132, 1l, 1l);
2765 var131 = var133;
2766 varonce130 = var131;
2767 }
2768 ((struct instance_core__NativeArray*)var125)->values[3]=var131;
2769 if (likely(varonce134!=NULL)) {
2770 var135 = varonce134;
2771 } else {
2772 var136 = ");";
2773 var137 = core__flat___NativeString___to_s_full(var136, 2l, 2l);
2774 var135 = var137;
2775 varonce134 = var135;
2776 }
2777 ((struct instance_core__NativeArray*)var125)->values[5]=var135;
2778 } else {
2779 var125 = varonce124;
2780 varonce124 = NULL;
2781 }
2782 {
2783 var138 = ((val*(*)(val* self))(var_recv_var->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_recv_var); /* to_s on <var_recv_var:RuntimeVariable>*/
2784 }
2785 ((struct instance_core__NativeArray*)var125)->values[0]=var138;
2786 ((struct instance_core__NativeArray*)var125)->values[2]=var_externname;
2787 if (likely(varonce139!=NULL)) {
2788 var140 = varonce139;
2789 } else {
2790 var141 = ", ";
2791 var142 = core__flat___NativeString___to_s_full(var141, 2l, 2l);
2792 var140 = var142;
2793 varonce139 = var140;
2794 }
2795 {
2796 var143 = core__abstract_text___Collection___join(var_arguments_for_c, var140);
2797 }
2798 ((struct instance_core__NativeArray*)var125)->values[4]=var143;
2799 {
2800 var144 = ((val*(*)(val* self))(var125->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var125); /* native_to_s on <var125:NativeArray[String]>*/
2801 }
2802 varonce124 = var125;
2803 {
2804 nitc___nitc__AbstractCompilerVisitor___add(var_v, var144); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2805 }
2806 } else {
2807 if (likely(varonce145!=NULL)) {
2808 var146 = varonce145;
2809 } else {
2810 var147 = "struct nitni_instance* ret_var;";
2811 var148 = core__flat___NativeString___to_s_full(var147, 31l, 31l);
2812 var146 = var148;
2813 varonce145 = var146;
2814 }
2815 {
2816 nitc___nitc__AbstractCompilerVisitor___add(var_v, var146); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2817 }
2818 if (unlikely(varonce149==NULL)) {
2819 var150 = NEW_core__NativeArray(5l, &type_core__NativeArray__core__String);
2820 if (likely(varonce151!=NULL)) {
2821 var152 = varonce151;
2822 } else {
2823 var153 = "ret_var = ";
2824 var154 = core__flat___NativeString___to_s_full(var153, 10l, 10l);
2825 var152 = var154;
2826 varonce151 = var152;
2827 }
2828 ((struct instance_core__NativeArray*)var150)->values[0]=var152;
2829 if (likely(varonce155!=NULL)) {
2830 var156 = varonce155;
2831 } else {
2832 var157 = "(";
2833 var158 = core__flat___NativeString___to_s_full(var157, 1l, 1l);
2834 var156 = var158;
2835 varonce155 = var156;
2836 }
2837 ((struct instance_core__NativeArray*)var150)->values[2]=var156;
2838 if (likely(varonce159!=NULL)) {
2839 var160 = varonce159;
2840 } else {
2841 var161 = ");";
2842 var162 = core__flat___NativeString___to_s_full(var161, 2l, 2l);
2843 var160 = var162;
2844 varonce159 = var160;
2845 }
2846 ((struct instance_core__NativeArray*)var150)->values[4]=var160;
2847 } else {
2848 var150 = varonce149;
2849 varonce149 = NULL;
2850 }
2851 ((struct instance_core__NativeArray*)var150)->values[1]=var_externname;
2852 if (likely(varonce163!=NULL)) {
2853 var164 = varonce163;
2854 } else {
2855 var165 = ", ";
2856 var166 = core__flat___NativeString___to_s_full(var165, 2l, 2l);
2857 var164 = var166;
2858 varonce163 = var164;
2859 }
2860 {
2861 var167 = core__abstract_text___Collection___join(var_arguments_for_c, var164);
2862 }
2863 ((struct instance_core__NativeArray*)var150)->values[3]=var167;
2864 {
2865 var168 = ((val*(*)(val* self))(var150->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var150); /* native_to_s on <var150:NativeArray[String]>*/
2866 }
2867 varonce149 = var150;
2868 {
2869 nitc___nitc__AbstractCompilerVisitor___add(var_v, var168); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2870 }
2871 if (unlikely(varonce169==NULL)) {
2872 var170 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
2873 if (likely(varonce171!=NULL)) {
2874 var172 = varonce171;
2875 } else {
2876 var173 = " = ret_var->value;";
2877 var174 = core__flat___NativeString___to_s_full(var173, 18l, 18l);
2878 var172 = var174;
2879 varonce171 = var172;
2880 }
2881 ((struct instance_core__NativeArray*)var170)->values[1]=var172;
2882 } else {
2883 var170 = varonce169;
2884 varonce169 = NULL;
2885 }
2886 {
2887 var175 = ((val*(*)(val* self))(var_recv_var->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_recv_var); /* to_s on <var_recv_var:RuntimeVariable>*/
2888 }
2889 ((struct instance_core__NativeArray*)var170)->values[0]=var175;
2890 {
2891 var176 = ((val*(*)(val* self))(var170->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var170); /* native_to_s on <var170:NativeArray[String]>*/
2892 }
2893 varonce169 = var170;
2894 {
2895 nitc___nitc__AbstractCompilerVisitor___add(var_v, var176); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:AbstractCompilerVisitor>*/
2896 }
2897 }
2898 {
2899 var177 = ((val*(*)(val* self, val* p0, val* p1))(var_v->class->vft[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor__box_extern]))(var_v, var_recv_var, var_return_mtype); /* box_extern on <var_v:AbstractCompilerVisitor>*/
2900 }
2901 var_recv_var = var177;
2902 {
2903 nitc___nitc__AbstractCompilerVisitor___ret(var_v, var_recv_var); /* Direct call abstract_compiler#AbstractCompilerVisitor#ret on <var_v:AbstractCompilerVisitor>*/
2904 }
2905 {
2906 nitc__light___AMethPropdef___compile_ffi_support_to_c(self, var_v); /* Direct call light#AMethPropdef#compile_ffi_support_to_c on <self:AMethPropdef>*/
2907 }
2908 var = 1;
2909 goto RET_LABEL;
2910 RET_LABEL:;
2911 return var;
2912 }
2913 /* method light#CCompilationUnit#write_as_nitni for (self: CCompilationUnit, MModule, String) */
2914 void nitc__light___CCompilationUnit___write_as_nitni(val* self, val* p0, val* p1) {
2915 val* var_mmodule /* var mmodule: MModule */;
2916 val* var_compdir /* var compdir: String */;
2917 val* var /* : NativeArray[String] */;
2918 static val* varonce;
2919 static val* varonce1;
2920 val* var2 /* : String */;
2921 char* var3 /* : NativeString */;
2922 val* var4 /* : String */;
2923 val* var5 /* : String */;
2924 val* var6 /* : String */;
2925 val* var_base_name /* var base_name: String */;
2926 val* var8 /* : NativeArray[String] */;
2927 static val* varonce7;
2928 static val* varonce9;
2929 val* var10 /* : String */;
2930 char* var11 /* : NativeString */;
2931 val* var12 /* : String */;
2932 val* var13 /* : String */;
2933 val* var_h_file /* var h_file: String */;
2934 val* var15 /* : NativeArray[String] */;
2935 static val* varonce14;
2936 static val* varonce16;
2937 val* var17 /* : String */;
2938 char* var18 /* : NativeString */;
2939 val* var19 /* : String */;
2940 val* var20 /* : String */;
2941 val* var21 /* : Array[String] */;
2942 val* var23 /* : NativeArray[String] */;
2943 static val* varonce22;
2944 static val* varonce24;
2945 val* var25 /* : String */;
2946 char* var26 /* : NativeString */;
2947 val* var27 /* : String */;
2948 val* var28 /* : String */;
2949 val* var29 /* : String */;
2950 val* var30 /* : String */;
2951 val* var31 /* : String */;
2952 val* var33 /* : NativeArray[String] */;
2953 static val* varonce32;
2954 static val* varonce34;
2955 val* var35 /* : String */;
2956 char* var36 /* : NativeString */;
2957 val* var37 /* : String */;
2958 val* var38 /* : String */;
2959 val* var_c_file /* var c_file: String */;
2960 val* var40 /* : NativeArray[String] */;
2961 static val* varonce39;
2962 static val* varonce41;
2963 val* var42 /* : String */;
2964 char* var43 /* : NativeString */;
2965 val* var44 /* : String */;
2966 val* var45 /* : String */;
2967 val* var46 /* : Array[String] */;
2968 val* var_ /* var : Array[String] */;
2969 val* var48 /* : NativeArray[String] */;
2970 static val* varonce47;
2971 static val* varonce49;
2972 val* var50 /* : String */;
2973 char* var51 /* : NativeString */;
2974 val* var52 /* : String */;
2975 static val* varonce53;
2976 val* var54 /* : String */;
2977 char* var55 /* : NativeString */;
2978 val* var56 /* : String */;
2979 val* var57 /* : String */;
2980 val* var58 /* : Array[String] */;
2981 val* var60 /* : Array[String] */;
2982 val* var62 /* : NativeArray[String] */;
2983 static val* varonce61;
2984 static val* varonce63;
2985 val* var64 /* : String */;
2986 char* var65 /* : NativeString */;
2987 val* var66 /* : String */;
2988 val* var67 /* : String */;
2989 var_mmodule = p0;
2990 var_compdir = p1;
2991 if (unlikely(varonce==NULL)) {
2992 var = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
2993 if (likely(varonce1!=NULL)) {
2994 var2 = varonce1;
2995 } else {
2996 var3 = "._nitni";
2997 var4 = core__flat___NativeString___to_s_full(var3, 7l, 7l);
2998 var2 = var4;
2999 varonce1 = var2;
3000 }
3001 ((struct instance_core__NativeArray*)var)->values[1]=var2;
3002 } else {
3003 var = varonce;
3004 varonce = NULL;
3005 }
3006 {
3007 var5 = nitc___nitc__MModule___nitc__model_base__MEntity__c_name(var_mmodule);
3008 }
3009 ((struct instance_core__NativeArray*)var)->values[0]=var5;
3010 {
3011 var6 = ((val*(*)(val* self))(var->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var); /* native_to_s on <var:NativeArray[String]>*/
3012 }
3013 varonce = var;
3014 var_base_name = var6;
3015 if (unlikely(varonce7==NULL)) {
3016 var8 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
3017 if (likely(varonce9!=NULL)) {
3018 var10 = varonce9;
3019 } else {
3020 var11 = ".h";
3021 var12 = core__flat___NativeString___to_s_full(var11, 2l, 2l);
3022 var10 = var12;
3023 varonce9 = var10;
3024 }
3025 ((struct instance_core__NativeArray*)var8)->values[1]=var10;
3026 } else {
3027 var8 = varonce7;
3028 varonce7 = NULL;
3029 }
3030 ((struct instance_core__NativeArray*)var8)->values[0]=var_base_name;
3031 {
3032 var13 = ((val*(*)(val* self))(var8->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var8); /* native_to_s on <var8:NativeArray[String]>*/
3033 }
3034 varonce7 = var8;
3035 var_h_file = var13;
3036 if (unlikely(varonce14==NULL)) {
3037 var15 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
3038 if (likely(varonce16!=NULL)) {
3039 var17 = varonce16;
3040 } else {
3041 var18 = "/";
3042 var19 = core__flat___NativeString___to_s_full(var18, 1l, 1l);
3043 var17 = var19;
3044 varonce16 = var17;
3045 }
3046 ((struct instance_core__NativeArray*)var15)->values[1]=var17;
3047 } else {
3048 var15 = varonce14;
3049 varonce14 = NULL;
3050 }
3051 ((struct instance_core__NativeArray*)var15)->values[0]=var_compdir;
3052 ((struct instance_core__NativeArray*)var15)->values[2]=var_h_file;
3053 {
3054 var20 = ((val*(*)(val* self))(var15->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var15); /* native_to_s on <var15:NativeArray[String]>*/
3055 }
3056 varonce14 = var15;
3057 var21 = NEW_core__Array(&type_core__Array__core__String);
3058 {
3059 core___core__Array___core__kernel__Object__init(var21); /* Direct call array#Array#init on <var21:Array[String]>*/
3060 }
3061 if (unlikely(varonce22==NULL)) {
3062 var23 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
3063 if (likely(varonce24!=NULL)) {
3064 var25 = varonce24;
3065 } else {
3066 var26 = "_NITG_NITNI_H";
3067 var27 = core__flat___NativeString___to_s_full(var26, 13l, 13l);
3068 var25 = var27;
3069 varonce24 = var25;
3070 }
3071 ((struct instance_core__NativeArray*)var23)->values[1]=var25;
3072 } else {
3073 var23 = varonce22;
3074 varonce22 = NULL;
3075 }
3076 {
3077 var28 = nitc___nitc__MModule___nitc__model_base__MEntity__c_name(var_mmodule);
3078 }
3079 {
3080 var29 = core___core__String___Object__to_s(var28);
3081 }
3082 {
3083 var30 = ((val*(*)(val* self))(var29->class->vft[COLOR_core__abstract_text__String__to_upper]))(var29); /* to_upper on <var29:String>*/
3084 }
3085 ((struct instance_core__NativeArray*)var23)->values[0]=var30;
3086 {
3087 var31 = ((val*(*)(val* self))(var23->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var23); /* native_to_s on <var23:NativeArray[String]>*/
3088 }
3089 varonce22 = var23;
3090 {
3091 nitc__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>*/
3092 }
3093 if (unlikely(varonce32==NULL)) {
3094 var33 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
3095 if (likely(varonce34!=NULL)) {
3096 var35 = varonce34;
3097 } else {
3098 var36 = ".c";
3099 var37 = core__flat___NativeString___to_s_full(var36, 2l, 2l);
3100 var35 = var37;
3101 varonce34 = var35;
3102 }
3103 ((struct instance_core__NativeArray*)var33)->values[1]=var35;
3104 } else {
3105 var33 = varonce32;
3106 varonce32 = NULL;
3107 }
3108 ((struct instance_core__NativeArray*)var33)->values[0]=var_base_name;
3109 {
3110 var38 = ((val*(*)(val* self))(var33->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var33); /* native_to_s on <var33:NativeArray[String]>*/
3111 }
3112 varonce32 = var33;
3113 var_c_file = var38;
3114 if (unlikely(varonce39==NULL)) {
3115 var40 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
3116 if (likely(varonce41!=NULL)) {
3117 var42 = varonce41;
3118 } else {
3119 var43 = "/";
3120 var44 = core__flat___NativeString___to_s_full(var43, 1l, 1l);
3121 var42 = var44;
3122 varonce41 = var42;
3123 }
3124 ((struct instance_core__NativeArray*)var40)->values[1]=var42;
3125 } else {
3126 var40 = varonce39;
3127 varonce39 = NULL;
3128 }
3129 ((struct instance_core__NativeArray*)var40)->values[0]=var_compdir;
3130 ((struct instance_core__NativeArray*)var40)->values[2]=var_c_file;
3131 {
3132 var45 = ((val*(*)(val* self))(var40->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var40); /* native_to_s on <var40:NativeArray[String]>*/
3133 }
3134 varonce39 = var40;
3135 var46 = NEW_core__Array(&type_core__Array__core__String);
3136 {
3137 core___core__Array___with_capacity(var46, 1l); /* Direct call array#Array#with_capacity on <var46:Array[String]>*/
3138 }
3139 var_ = var46;
3140 if (unlikely(varonce47==NULL)) {
3141 var48 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
3142 if (likely(varonce49!=NULL)) {
3143 var50 = varonce49;
3144 } else {
3145 var51 = "\"";
3146 var52 = core__flat___NativeString___to_s_full(var51, 1l, 1l);
3147 var50 = var52;
3148 varonce49 = var50;
3149 }
3150 ((struct instance_core__NativeArray*)var48)->values[0]=var50;
3151 if (likely(varonce53!=NULL)) {
3152 var54 = varonce53;
3153 } else {
3154 var55 = "\"";
3155 var56 = core__flat___NativeString___to_s_full(var55, 1l, 1l);
3156 var54 = var56;
3157 varonce53 = var54;
3158 }
3159 ((struct instance_core__NativeArray*)var48)->values[2]=var54;
3160 } else {
3161 var48 = varonce47;
3162 varonce47 = NULL;
3163 }
3164 ((struct instance_core__NativeArray*)var48)->values[1]=var_h_file;
3165 {
3166 var57 = ((val*(*)(val* self))(var48->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var48); /* native_to_s on <var48:NativeArray[String]>*/
3167 }
3168 varonce47 = var48;
3169 {
3170 core___core__AbstractArray___core__abstract_collection__Sequence__push(var_, var57); /* Direct call array#AbstractArray#push on <var_:Array[String]>*/
3171 }
3172 {
3173 nitc__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>*/
3174 }
3175 {
3176 { /* Inline c_tools#CCompilationUnit#files (self) on <self:CCompilationUnit> */
3177 var60 = self->attrs[COLOR_nitc__c_tools__CCompilationUnit___files].val; /* _files on <self:CCompilationUnit> */
3178 if (unlikely(var60 == NULL)) {
3179 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files");
3180 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 47);
3181 fatal_exit(1);
3182 }
3183 var58 = var60;
3184 RET_LABEL59:(void)0;
3185 }
3186 }
3187 if (unlikely(varonce61==NULL)) {
3188 var62 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
3189 if (likely(varonce63!=NULL)) {
3190 var64 = varonce63;
3191 } else {
3192 var65 = "/";
3193 var66 = core__flat___NativeString___to_s_full(var65, 1l, 1l);
3194 var64 = var66;
3195 varonce63 = var64;
3196 }
3197 ((struct instance_core__NativeArray*)var62)->values[1]=var64;
3198 } else {
3199 var62 = varonce61;
3200 varonce61 = NULL;
3201 }
3202 ((struct instance_core__NativeArray*)var62)->values[0]=var_compdir;
3203 ((struct instance_core__NativeArray*)var62)->values[2]=var_c_file;
3204 {
3205 var67 = ((val*(*)(val* self))(var62->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var62); /* native_to_s on <var62:NativeArray[String]>*/
3206 }
3207 varonce61 = var62;
3208 {
3209 core___core__Array___core__abstract_collection__SimpleCollection__add(var58, var67); /* Direct call array#Array#add on <var58:Array[String]>*/
3210 }
3211 RET_LABEL:;
3212 }