Merge: doc: fixed some typos and other misc. corrections
[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 if(catchStack.cursor >= 0){
31 longjmp(catchStack.envs[catchStack.cursor], 1);
32 }
33 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
34 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1214);
35 fatal_exit(1);
36 }
37 var1 = var3;
38 RET_LABEL2:(void)0;
39 }
40 }
41 {
42 { /* Inline abstract_compiler$AbstractCompiler$modelbuilder (var1) on <var1:AbstractCompiler> */
43 var6 = var1->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var1:AbstractCompiler> */
44 if (unlikely(var6 == NULL)) {
45 if(catchStack.cursor >= 0){
46 longjmp(catchStack.envs[catchStack.cursor], 1);
47 }
48 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
49 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 552);
50 fatal_exit(1);
51 }
52 var4 = var6;
53 RET_LABEL5:(void)0;
54 }
55 }
56 {
57 var7 = nitc__loader___ModelBuilder___mmodule2node(var4, self);
58 }
59 var = var7;
60 goto RET_LABEL;
61 RET_LABEL:;
62 return var;
63 }
64 /* method light$MModule$finalize_ffi for (self: MModule, AbstractCompiler) */
65 void nitc__light___MModule___finalize_ffi(val* self, val* p0) {
66 val* var_compiler /* var compiler: AbstractCompiler */;
67 short int var /* : Bool */;
68 short int var2 /* : Bool */;
69 short int var3 /* : Bool */;
70 val* var4 /* : AbstractCompilerVisitor */;
71 val* var_v /* var v: AbstractCompilerVisitor */;
72 val* var5 /* : nullable AModule */;
73 val* var_n /* var n: nullable AModule */;
74 short int var6 /* : Bool */;
75 short int var7 /* : Bool */;
76 val* var_other /* var other: nullable Object */;
77 short int var9 /* : Bool */;
78 short int var11 /* : Bool */;
79 val* var12 /* : AbstractCompiler */;
80 val* var14 /* : AbstractCompiler */;
81 val* var15 /* : Toolchain */;
82 val* var17 /* : Toolchain */;
83 val* var18 /* : String */;
84 val* var19 /* : AbstractCompiler */;
85 val* var21 /* : AbstractCompiler */;
86 val* var22 /* : MModule */;
87 val* var24 /* : MModule */;
88 val* var25 /* : Array[ExternFile] */;
89 val* var27 /* : Array[ExternFile] */;
90 val* var_ /* var : Array[ExternFile] */;
91 val* var28 /* : IndexedIterator[nullable Object] */;
92 val* var_29 /* var : IndexedIterator[ExternFile] */;
93 short int var30 /* : Bool */;
94 val* var31 /* : nullable Object */;
95 val* var_file /* var file: ExternFile */;
96 val* var32 /* : AbstractCompiler */;
97 val* var34 /* : AbstractCompiler */;
98 val* var35 /* : Array[ExternFile] */;
99 val* var37 /* : Array[ExternFile] */;
100 val* var38 /* : nullable CCompilationUnit */;
101 val* var40 /* : nullable CCompilationUnit */;
102 val* var41 /* : Template */;
103 val* var43 /* : Template */;
104 val* var44 /* : NativeArray[String] */;
105 static val* varonce;
106 static val* varonce45;
107 val* var46 /* : String */;
108 char* var47 /* : CString */;
109 val* var48 /* : String */;
110 val* var49 /* : nullable Int */;
111 val* var50 /* : nullable Int */;
112 val* var51 /* : nullable Bool */;
113 val* var52 /* : nullable Bool */;
114 static val* varonce53;
115 val* var54 /* : String */;
116 char* var55 /* : CString */;
117 val* var56 /* : String */;
118 val* var57 /* : nullable Int */;
119 val* var58 /* : nullable Int */;
120 val* var59 /* : nullable Bool */;
121 val* var60 /* : nullable Bool */;
122 val* var61 /* : String */;
123 val* var62 /* : String */;
124 val* var63 /* : nullable CCompilationUnit */;
125 val* var65 /* : nullable CCompilationUnit */;
126 val* var66 /* : Template */;
127 val* var68 /* : Template */;
128 static val* varonce69;
129 val* var70 /* : String */;
130 char* var71 /* : CString */;
131 val* var72 /* : String */;
132 val* var73 /* : nullable Int */;
133 val* var74 /* : nullable Int */;
134 val* var75 /* : nullable Bool */;
135 val* var76 /* : nullable Bool */;
136 val* var77 /* : nullable CCompilationUnit */;
137 val* var79 /* : nullable CCompilationUnit */;
138 val* var80 /* : Template */;
139 val* var82 /* : Template */;
140 static val* varonce83;
141 val* var84 /* : String */;
142 char* var85 /* : CString */;
143 val* var86 /* : String */;
144 val* var87 /* : nullable Int */;
145 val* var88 /* : nullable Int */;
146 val* var89 /* : nullable Bool */;
147 val* var90 /* : nullable Bool */;
148 val* var91 /* : MultiHashMap[String, String] */;
149 val* var93 /* : MultiHashMap[String, String] */;
150 static val* varonce94;
151 val* var95 /* : String */;
152 char* var96 /* : CString */;
153 val* var97 /* : String */;
154 val* var98 /* : nullable Int */;
155 val* var99 /* : nullable Int */;
156 val* var100 /* : nullable Bool */;
157 val* var101 /* : nullable Bool */;
158 val* var102 /* : nullable Object */;
159 static val* varonce103;
160 val* var104 /* : String */;
161 char* var105 /* : CString */;
162 val* var106 /* : String */;
163 val* var107 /* : nullable Int */;
164 val* var108 /* : nullable Int */;
165 val* var109 /* : nullable Bool */;
166 val* var110 /* : nullable Bool */;
167 val* var111 /* : String */;
168 val* var_cflags /* var cflags: String */;
169 val* var112 /* : nullable CCompilationUnit */;
170 val* var114 /* : nullable CCompilationUnit */;
171 val* var115 /* : AbstractCompiler */;
172 val* var117 /* : AbstractCompiler */;
173 val* var118 /* : Toolchain */;
174 val* var120 /* : Toolchain */;
175 val* var121 /* : String */;
176 val* var122 /* : nullable CCompilationUnit */;
177 val* var124 /* : nullable CCompilationUnit */;
178 val* var125 /* : Array[String] */;
179 val* var127 /* : Array[String] */;
180 val* var_128 /* var : Array[String] */;
181 val* var129 /* : IndexedIterator[nullable Object] */;
182 val* var_130 /* var : IndexedIterator[String] */;
183 short int var131 /* : Bool */;
184 val* var133 /* : nullable Object */;
185 val* var_file134 /* var file: String */;
186 val* var135 /* : ExternCFile */;
187 val* var_f /* var f: ExternCFile */;
188 val* var136 /* : Array[String] */;
189 val* var138 /* : Array[String] */;
190 val* var139 /* : Array[String] */;
191 val* var141 /* : Array[String] */;
192 val* var142 /* : AbstractCompiler */;
193 val* var144 /* : AbstractCompiler */;
194 val* var145 /* : Array[ExternFile] */;
195 val* var147 /* : Array[ExternFile] */;
196 val* var149 /* : HashSet[AMethPropdef] */;
197 val* var151 /* : HashSet[AMethPropdef] */;
198 val* var153 /* : Array[ExternFile] */;
199 val* var155 /* : Array[ExternFile] */;
200 var_compiler = p0;
201 {
202 { /* Inline light_ffi$MModule$uses_ffi (self) on <self:MModule> */
203 var2 = self->attrs[COLOR_nitc__light_ffi__MModule___uses_ffi].s; /* _uses_ffi on <self:MModule> */
204 var = var2;
205 RET_LABEL1:(void)0;
206 }
207 }
208 var3 = !var;
209 if (var3){
210 goto RET_LABEL;
211 } else {
212 }
213 {
214 var4 = ((val*(*)(val* self))(var_compiler->class->vft[COLOR_nitc__abstract_compiler__AbstractCompiler__new_visitor]))(var_compiler); /* new_visitor on <var_compiler:AbstractCompiler>*/
215 }
216 var_v = var4;
217 {
218 var5 = nitc__light___MModule___nmodule(self, var_v);
219 }
220 var_n = var5;
221 if (var_n == NULL) {
222 var6 = 1; /* is null */
223 } else {
224 var6 = 0; /* arg is null but recv is not */
225 }
226 if (0) {
227 { /* Inline kernel$Object$== (var_n,((val*)NULL)) on <var_n:nullable AModule> */
228 var_other = ((val*)NULL);
229 {
230 { /* Inline kernel$Object$is_same_instance (var_n,var_other) on <var_n:nullable AModule(AModule)> */
231 var11 = var_n == var_other;
232 var9 = var11;
233 goto RET_LABEL10;
234 RET_LABEL10:(void)0;
235 }
236 }
237 var7 = var9;
238 goto RET_LABEL8;
239 RET_LABEL8:(void)0;
240 }
241 var6 = var7;
242 }
243 if (var6){
244 goto RET_LABEL;
245 } else {
246 }
247 {
248 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)>*/
249 }
250 {
251 { /* Inline abstract_compiler$AbstractCompilerVisitor$compiler (var_v) on <var_v:AbstractCompilerVisitor> */
252 var14 = var_v->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
253 if (unlikely(var14 == NULL)) {
254 if(catchStack.cursor >= 0){
255 longjmp(catchStack.envs[catchStack.cursor], 1);
256 }
257 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
258 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1214);
259 fatal_exit(1);
260 }
261 var12 = var14;
262 RET_LABEL13:(void)0;
263 }
264 }
265 {
266 { /* Inline abstract_compiler$AbstractCompiler$toolchain (var12) on <var12:AbstractCompiler> */
267 var17 = var12->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___toolchain].val; /* _toolchain on <var12:AbstractCompiler> */
268 if (unlikely(var17 == NULL)) {
269 if(catchStack.cursor >= 0){
270 longjmp(catchStack.envs[catchStack.cursor], 1);
271 }
272 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolchain");
273 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 555);
274 fatal_exit(1);
275 }
276 var15 = var17;
277 RET_LABEL16:(void)0;
278 }
279 }
280 {
281 var18 = nitc___nitc__Toolchain___compile_dir(var15);
282 }
283 {
284 { /* Inline abstract_compiler$AbstractCompilerVisitor$compiler (var_v) on <var_v:AbstractCompilerVisitor> */
285 var21 = var_v->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
286 if (unlikely(var21 == NULL)) {
287 if(catchStack.cursor >= 0){
288 longjmp(catchStack.envs[catchStack.cursor], 1);
289 }
290 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
291 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1214);
292 fatal_exit(1);
293 }
294 var19 = var21;
295 RET_LABEL20:(void)0;
296 }
297 }
298 {
299 { /* Inline abstract_compiler$AbstractCompiler$mainmodule (var19) on <var19:AbstractCompiler> */
300 var24 = var19->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var19:AbstractCompiler> */
301 if (unlikely(var24 == NULL)) {
302 if(catchStack.cursor >= 0){
303 longjmp(catchStack.envs[catchStack.cursor], 1);
304 }
305 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
306 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 545);
307 fatal_exit(1);
308 }
309 var22 = var24;
310 RET_LABEL23:(void)0;
311 }
312 }
313 {
314 nitc__light_ffi___MModule___finalize_ffi_wrapper(self, var18, var22); /* Direct call light_ffi$MModule$finalize_ffi_wrapper on <self:MModule>*/
315 }
316 {
317 { /* Inline light_ffi_base$MModule$ffi_files (self) on <self:MModule> */
318 var27 = self->attrs[COLOR_nitc__light_ffi_base__MModule___ffi_files].val; /* _ffi_files on <self:MModule> */
319 if (unlikely(var27 == NULL)) {
320 if(catchStack.cursor >= 0){
321 longjmp(catchStack.envs[catchStack.cursor], 1);
322 }
323 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ffi_files");
324 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 82);
325 fatal_exit(1);
326 }
327 var25 = var27;
328 RET_LABEL26:(void)0;
329 }
330 }
331 var_ = var25;
332 {
333 var28 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
334 }
335 var_29 = var28;
336 for(;;) {
337 {
338 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]>*/
339 }
340 if (var30){
341 } else {
342 goto BREAK_label;
343 }
344 {
345 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]>*/
346 }
347 var_file = var31;
348 {
349 { /* Inline abstract_compiler$AbstractCompilerVisitor$compiler (var_v) on <var_v:AbstractCompilerVisitor> */
350 var34 = var_v->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
351 if (unlikely(var34 == NULL)) {
352 if(catchStack.cursor >= 0){
353 longjmp(catchStack.envs[catchStack.cursor], 1);
354 }
355 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
356 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1214);
357 fatal_exit(1);
358 }
359 var32 = var34;
360 RET_LABEL33:(void)0;
361 }
362 }
363 {
364 { /* Inline abstract_compiler$AbstractCompiler$extern_bodies (var32) on <var32:AbstractCompiler> */
365 var37 = var32->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___extern_bodies].val; /* _extern_bodies on <var32:AbstractCompiler> */
366 if (unlikely(var37 == NULL)) {
367 if(catchStack.cursor >= 0){
368 longjmp(catchStack.envs[catchStack.cursor], 1);
369 }
370 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _extern_bodies");
371 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1075);
372 fatal_exit(1);
373 }
374 var35 = var37;
375 RET_LABEL36:(void)0;
376 }
377 }
378 {
379 core___core__Array___core__abstract_collection__SimpleCollection__add(var35, var_file); /* Direct call array$Array$add on <var35:Array[ExternFile]>*/
380 }
381 {
382 ((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]>*/
383 }
384 }
385 BREAK_label: (void)0;
386 {
387 ((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]>*/
388 }
389 {
390 nitc__light___MModule___ensure_compile_nitni_base(self, var_v); /* Direct call light$MModule$ensure_compile_nitni_base on <self:MModule>*/
391 }
392 {
393 { /* Inline light$MModule$nitni_ccu (self) on <self:MModule> */
394 var40 = self->attrs[COLOR_nitc__light__MModule___nitni_ccu].val; /* _nitni_ccu on <self:MModule> */
395 var38 = var40;
396 RET_LABEL39:(void)0;
397 }
398 }
399 if (var38 == NULL) {
400 if(catchStack.cursor >= 0){
401 longjmp(catchStack.envs[catchStack.cursor], 1);
402 }
403 PRINT_ERROR("Runtime error: %s", "Receiver is null");
404 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light, 45);
405 fatal_exit(1);
406 } else {
407 { /* Inline c_tools$CCompilationUnit$header_c_types (var38) on <var38:nullable CCompilationUnit> */
408 if (unlikely(var38 == NULL)) {
409 if(catchStack.cursor >= 0){
410 longjmp(catchStack.envs[catchStack.cursor], 1);
411 }
412 PRINT_ERROR("Runtime error: %s", "Receiver is null");
413 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 31);
414 fatal_exit(1);
415 }
416 var43 = var38->attrs[COLOR_nitc__c_tools__CCompilationUnit___header_c_types].val; /* _header_c_types on <var38:nullable CCompilationUnit> */
417 if (unlikely(var43 == NULL)) {
418 if(catchStack.cursor >= 0){
419 longjmp(catchStack.envs[catchStack.cursor], 1);
420 }
421 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header_c_types");
422 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 31);
423 fatal_exit(1);
424 }
425 var41 = var43;
426 RET_LABEL42:(void)0;
427 }
428 }
429 if (unlikely(varonce==NULL)) {
430 var44 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
431 if (likely(varonce45!=NULL)) {
432 var46 = varonce45;
433 } else {
434 var47 = "#include \"";
435 var49 = (val*)(10l<<2|1);
436 var50 = (val*)(10l<<2|1);
437 var51 = (val*)((long)(0)<<2|3);
438 var52 = (val*)((long)(0)<<2|3);
439 var48 = core__flat___CString___to_s_unsafe(var47, var49, var50, var51, var52);
440 var46 = var48;
441 varonce45 = var46;
442 }
443 ((struct instance_core__NativeArray*)var44)->values[0]=var46;
444 if (likely(varonce53!=NULL)) {
445 var54 = varonce53;
446 } else {
447 var55 = "._ffi.h\"\n";
448 var57 = (val*)(9l<<2|1);
449 var58 = (val*)(9l<<2|1);
450 var59 = (val*)((long)(0)<<2|3);
451 var60 = (val*)((long)(0)<<2|3);
452 var56 = core__flat___CString___to_s_unsafe(var55, var57, var58, var59, var60);
453 var54 = var56;
454 varonce53 = var54;
455 }
456 ((struct instance_core__NativeArray*)var44)->values[2]=var54;
457 } else {
458 var44 = varonce;
459 varonce = NULL;
460 }
461 {
462 var61 = nitc___nitc__MModule___nitc__model_base__MEntity__c_name(self);
463 }
464 ((struct instance_core__NativeArray*)var44)->values[1]=var61;
465 {
466 var62 = ((val*(*)(val* self))(var44->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var44); /* native_to_s on <var44:NativeArray[String]>*/
467 }
468 varonce = var44;
469 {
470 template___template__Template___add(var41, var62); /* Direct call template$Template$add on <var41:Template>*/
471 }
472 {
473 { /* Inline light$MModule$nitni_ccu (self) on <self:MModule> */
474 var65 = self->attrs[COLOR_nitc__light__MModule___nitni_ccu].val; /* _nitni_ccu on <self:MModule> */
475 var63 = var65;
476 RET_LABEL64:(void)0;
477 }
478 }
479 if (var63 == NULL) {
480 if(catchStack.cursor >= 0){
481 longjmp(catchStack.envs[catchStack.cursor], 1);
482 }
483 PRINT_ERROR("Runtime error: %s", "Receiver is null");
484 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light, 46);
485 fatal_exit(1);
486 } else {
487 { /* Inline c_tools$CCompilationUnit$header_c_types (var63) on <var63:nullable CCompilationUnit> */
488 if (unlikely(var63 == NULL)) {
489 if(catchStack.cursor >= 0){
490 longjmp(catchStack.envs[catchStack.cursor], 1);
491 }
492 PRINT_ERROR("Runtime error: %s", "Receiver is null");
493 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 31);
494 fatal_exit(1);
495 }
496 var68 = var63->attrs[COLOR_nitc__c_tools__CCompilationUnit___header_c_types].val; /* _header_c_types on <var63:nullable CCompilationUnit> */
497 if (unlikely(var68 == NULL)) {
498 if(catchStack.cursor >= 0){
499 longjmp(catchStack.envs[catchStack.cursor], 1);
500 }
501 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header_c_types");
502 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 31);
503 fatal_exit(1);
504 }
505 var66 = var68;
506 RET_LABEL67:(void)0;
507 }
508 }
509 if (likely(varonce69!=NULL)) {
510 var70 = varonce69;
511 } else {
512 var71 = "#include <stdint.h>\n";
513 var73 = (val*)(20l<<2|1);
514 var74 = (val*)(20l<<2|1);
515 var75 = (val*)((long)(0)<<2|3);
516 var76 = (val*)((long)(0)<<2|3);
517 var72 = core__flat___CString___to_s_unsafe(var71, var73, var74, var75, var76);
518 var70 = var72;
519 varonce69 = var70;
520 }
521 {
522 template___template__Template___add(var66, var70); /* Direct call template$Template$add on <var66:Template>*/
523 }
524 {
525 { /* Inline light$MModule$nitni_ccu (self) on <self:MModule> */
526 var79 = self->attrs[COLOR_nitc__light__MModule___nitni_ccu].val; /* _nitni_ccu on <self:MModule> */
527 var77 = var79;
528 RET_LABEL78:(void)0;
529 }
530 }
531 if (var77 == NULL) {
532 if(catchStack.cursor >= 0){
533 longjmp(catchStack.envs[catchStack.cursor], 1);
534 }
535 PRINT_ERROR("Runtime error: %s", "Receiver is null");
536 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light, 47);
537 fatal_exit(1);
538 } else {
539 { /* Inline c_tools$CCompilationUnit$header_c_types (var77) on <var77:nullable CCompilationUnit> */
540 if (unlikely(var77 == NULL)) {
541 if(catchStack.cursor >= 0){
542 longjmp(catchStack.envs[catchStack.cursor], 1);
543 }
544 PRINT_ERROR("Runtime error: %s", "Receiver is null");
545 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 31);
546 fatal_exit(1);
547 }
548 var82 = var77->attrs[COLOR_nitc__c_tools__CCompilationUnit___header_c_types].val; /* _header_c_types on <var77:nullable CCompilationUnit> */
549 if (unlikely(var82 == NULL)) {
550 if(catchStack.cursor >= 0){
551 longjmp(catchStack.envs[catchStack.cursor], 1);
552 }
553 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header_c_types");
554 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 31);
555 fatal_exit(1);
556 }
557 var80 = var82;
558 RET_LABEL81:(void)0;
559 }
560 }
561 if (likely(varonce83!=NULL)) {
562 var84 = varonce83;
563 } else {
564 var85 = "extern void nitni_global_ref_incr(void*);\nextern void nitni_global_ref_decr(void*);\n";
565 var87 = (val*)(84l<<2|1);
566 var88 = (val*)(84l<<2|1);
567 var89 = (val*)((long)(0)<<2|3);
568 var90 = (val*)((long)(0)<<2|3);
569 var86 = core__flat___CString___to_s_unsafe(var85, var87, var88, var89, var90);
570 var84 = var86;
571 varonce83 = var84;
572 }
573 {
574 template___template__Template___add(var80, var84); /* Direct call template$Template$add on <var80:Template>*/
575 }
576 {
577 { /* Inline light_c$MModule$cflags (self) on <self:MModule> */
578 var93 = self->attrs[COLOR_nitc__light_c__MModule___cflags].val; /* _cflags on <self:MModule> */
579 if (unlikely(var93 == NULL)) {
580 if(catchStack.cursor >= 0){
581 longjmp(catchStack.envs[catchStack.cursor], 1);
582 }
583 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cflags");
584 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_c, 77);
585 fatal_exit(1);
586 }
587 var91 = var93;
588 RET_LABEL92:(void)0;
589 }
590 }
591 if (likely(varonce94!=NULL)) {
592 var95 = varonce94;
593 } else {
594 var96 = "";
595 var98 = (val*)(0l<<2|1);
596 var99 = (val*)(0l<<2|1);
597 var100 = (val*)((long)(0)<<2|3);
598 var101 = (val*)((long)(0)<<2|3);
599 var97 = core__flat___CString___to_s_unsafe(var96, var98, var99, var100, var101);
600 var95 = var97;
601 varonce94 = var95;
602 }
603 {
604 var102 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var91, var95);
605 }
606 if (likely(varonce103!=NULL)) {
607 var104 = varonce103;
608 } else {
609 var105 = " ";
610 var107 = (val*)(1l<<2|1);
611 var108 = (val*)(1l<<2|1);
612 var109 = (val*)((long)(0)<<2|3);
613 var110 = (val*)((long)(0)<<2|3);
614 var106 = core__flat___CString___to_s_unsafe(var105, var107, var108, var109, var110);
615 var104 = var106;
616 varonce103 = var104;
617 }
618 {
619 var111 = core__abstract_text___Collection___join(var102, var104, ((val*)NULL));
620 }
621 var_cflags = var111;
622 {
623 { /* Inline light$MModule$nitni_ccu (self) on <self:MModule> */
624 var114 = self->attrs[COLOR_nitc__light__MModule___nitni_ccu].val; /* _nitni_ccu on <self:MModule> */
625 var112 = var114;
626 RET_LABEL113:(void)0;
627 }
628 }
629 {
630 { /* Inline abstract_compiler$AbstractCompilerVisitor$compiler (var_v) on <var_v:AbstractCompilerVisitor> */
631 var117 = var_v->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
632 if (unlikely(var117 == NULL)) {
633 if(catchStack.cursor >= 0){
634 longjmp(catchStack.envs[catchStack.cursor], 1);
635 }
636 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
637 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1214);
638 fatal_exit(1);
639 }
640 var115 = var117;
641 RET_LABEL116:(void)0;
642 }
643 }
644 {
645 { /* Inline abstract_compiler$AbstractCompiler$toolchain (var115) on <var115:AbstractCompiler> */
646 var120 = var115->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___toolchain].val; /* _toolchain on <var115:AbstractCompiler> */
647 if (unlikely(var120 == NULL)) {
648 if(catchStack.cursor >= 0){
649 longjmp(catchStack.envs[catchStack.cursor], 1);
650 }
651 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolchain");
652 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 555);
653 fatal_exit(1);
654 }
655 var118 = var120;
656 RET_LABEL119:(void)0;
657 }
658 }
659 {
660 var121 = nitc___nitc__Toolchain___compile_dir(var118);
661 }
662 if (var112 == NULL) {
663 if(catchStack.cursor >= 0){
664 longjmp(catchStack.envs[catchStack.cursor], 1);
665 }
666 PRINT_ERROR("Runtime error: %s", "Receiver is null");
667 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light, 53);
668 fatal_exit(1);
669 } else {
670 nitc__light___CCompilationUnit___write_as_nitni(var112, self, var121); /* Direct call light$CCompilationUnit$write_as_nitni on <var112:nullable CCompilationUnit>*/
671 }
672 {
673 { /* Inline light$MModule$nitni_ccu (self) on <self:MModule> */
674 var124 = self->attrs[COLOR_nitc__light__MModule___nitni_ccu].val; /* _nitni_ccu on <self:MModule> */
675 var122 = var124;
676 RET_LABEL123:(void)0;
677 }
678 }
679 if (var122 == NULL) {
680 if(catchStack.cursor >= 0){
681 longjmp(catchStack.envs[catchStack.cursor], 1);
682 }
683 PRINT_ERROR("Runtime error: %s", "Receiver is null");
684 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light, 55);
685 fatal_exit(1);
686 } else {
687 { /* Inline c_tools$CCompilationUnit$files (var122) on <var122:nullable CCompilationUnit> */
688 if (unlikely(var122 == NULL)) {
689 if(catchStack.cursor >= 0){
690 longjmp(catchStack.envs[catchStack.cursor], 1);
691 }
692 PRINT_ERROR("Runtime error: %s", "Receiver is null");
693 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 47);
694 fatal_exit(1);
695 }
696 var127 = var122->attrs[COLOR_nitc__c_tools__CCompilationUnit___files].val; /* _files on <var122:nullable CCompilationUnit> */
697 if (unlikely(var127 == NULL)) {
698 if(catchStack.cursor >= 0){
699 longjmp(catchStack.envs[catchStack.cursor], 1);
700 }
701 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files");
702 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 47);
703 fatal_exit(1);
704 }
705 var125 = var127;
706 RET_LABEL126:(void)0;
707 }
708 }
709 var_128 = var125;
710 {
711 var129 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_128);
712 }
713 var_130 = var129;
714 for(;;) {
715 {
716 var131 = ((short int(*)(val* self))((((long)var_130&3)?class_info[((long)var_130&3)]:var_130->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_130); /* is_ok on <var_130:IndexedIterator[String]>*/
717 }
718 if (var131){
719 } else {
720 goto BREAK_label132;
721 }
722 {
723 var133 = ((val*(*)(val* self))((((long)var_130&3)?class_info[((long)var_130&3)]:var_130->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_130); /* item on <var_130:IndexedIterator[String]>*/
724 }
725 var_file134 = var133;
726 var135 = NEW_nitc__ExternCFile(&type_nitc__ExternCFile);
727 {
728 ((void(*)(val* self, val* p0))(var135->class->vft[COLOR_nitc__c_tools__ExternFile__filename_61d]))(var135, var_file134); /* filename= on <var135:ExternCFile>*/
729 }
730 {
731 ((void(*)(val* self, val* p0))(var135->class->vft[COLOR_nitc__c_tools__ExternCFile__cflags_61d]))(var135, var_cflags); /* cflags= on <var135:ExternCFile>*/
732 }
733 {
734 ((void(*)(val* self))(var135->class->vft[COLOR_core__kernel__Object__init]))(var135); /* init on <var135:ExternCFile>*/
735 }
736 var_f = var135;
737 {
738 { /* Inline c_tools$ExternFile$pkgconfigs (var_f) on <var_f:ExternCFile> */
739 var138 = var_f->attrs[COLOR_nitc__c_tools__ExternFile___pkgconfigs].val; /* _pkgconfigs on <var_f:ExternCFile> */
740 if (unlikely(var138 == NULL)) {
741 if(catchStack.cursor >= 0){
742 longjmp(catchStack.envs[catchStack.cursor], 1);
743 }
744 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _pkgconfigs");
745 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 123);
746 fatal_exit(1);
747 }
748 var136 = var138;
749 RET_LABEL137:(void)0;
750 }
751 }
752 {
753 { /* Inline light_c$MModule$pkgconfigs (self) on <self:MModule> */
754 var141 = self->attrs[COLOR_nitc__light_c__MModule___pkgconfigs].val; /* _pkgconfigs on <self:MModule> */
755 if (unlikely(var141 == NULL)) {
756 if(catchStack.cursor >= 0){
757 longjmp(catchStack.envs[catchStack.cursor], 1);
758 }
759 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _pkgconfigs");
760 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_c, 83);
761 fatal_exit(1);
762 }
763 var139 = var141;
764 RET_LABEL140:(void)0;
765 }
766 }
767 {
768 core___core__Array___core__abstract_collection__SimpleCollection__add_all(var136, var139); /* Direct call array$Array$add_all on <var136:Array[String]>*/
769 }
770 {
771 { /* Inline abstract_compiler$AbstractCompilerVisitor$compiler (var_v) on <var_v:AbstractCompilerVisitor> */
772 var144 = var_v->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
773 if (unlikely(var144 == NULL)) {
774 if(catchStack.cursor >= 0){
775 longjmp(catchStack.envs[catchStack.cursor], 1);
776 }
777 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
778 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1214);
779 fatal_exit(1);
780 }
781 var142 = var144;
782 RET_LABEL143:(void)0;
783 }
784 }
785 {
786 { /* Inline abstract_compiler$AbstractCompiler$extern_bodies (var142) on <var142:AbstractCompiler> */
787 var147 = var142->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___extern_bodies].val; /* _extern_bodies on <var142:AbstractCompiler> */
788 if (unlikely(var147 == NULL)) {
789 if(catchStack.cursor >= 0){
790 longjmp(catchStack.envs[catchStack.cursor], 1);
791 }
792 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _extern_bodies");
793 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1075);
794 fatal_exit(1);
795 }
796 var145 = var147;
797 RET_LABEL146:(void)0;
798 }
799 }
800 {
801 core___core__Array___core__abstract_collection__SimpleCollection__add(var145, var_f); /* Direct call array$Array$add on <var145:Array[ExternFile]>*/
802 }
803 {
804 ((void(*)(val* self))((((long)var_130&3)?class_info[((long)var_130&3)]:var_130->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_130); /* next on <var_130:IndexedIterator[String]>*/
805 }
806 }
807 BREAK_label132: (void)0;
808 {
809 ((void(*)(val* self))((((long)var_130&3)?class_info[((long)var_130&3)]:var_130->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_130); /* finish on <var_130:IndexedIterator[String]>*/
810 }
811 {
812 { /* Inline light$MModule$nitni_ccu= (self,((val*)NULL)) on <self:MModule> */
813 self->attrs[COLOR_nitc__light__MModule___nitni_ccu].val = ((val*)NULL); /* _nitni_ccu on <self:MModule> */
814 RET_LABEL148:(void)0;
815 }
816 }
817 {
818 { /* Inline light_ffi$MModule$compiled_ffi_methods (self) on <self:MModule> */
819 var151 = self->attrs[COLOR_nitc__light_ffi__MModule___compiled_ffi_methods].val; /* _compiled_ffi_methods on <self:MModule> */
820 if (unlikely(var151 == NULL)) {
821 if(catchStack.cursor >= 0){
822 longjmp(catchStack.envs[catchStack.cursor], 1);
823 }
824 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiled_ffi_methods");
825 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 66);
826 fatal_exit(1);
827 }
828 var149 = var151;
829 RET_LABEL150:(void)0;
830 }
831 }
832 {
833 core___core__HashSet___core__abstract_collection__RemovableCollection__clear(var149); /* Direct call hash_collection$HashSet$clear on <var149:HashSet[AMethPropdef]>*/
834 }
835 {
836 { /* Inline light_ffi$MModule$ffi_ccu= (self,((val*)NULL)) on <self:MModule> */
837 self->attrs[COLOR_nitc__light_ffi__MModule___ffi_ccu].val = ((val*)NULL); /* _ffi_ccu on <self:MModule> */
838 RET_LABEL152:(void)0;
839 }
840 }
841 {
842 { /* Inline light_ffi_base$MModule$ffi_files (self) on <self:MModule> */
843 var155 = self->attrs[COLOR_nitc__light_ffi_base__MModule___ffi_files].val; /* _ffi_files on <self:MModule> */
844 if (unlikely(var155 == NULL)) {
845 if(catchStack.cursor >= 0){
846 longjmp(catchStack.envs[catchStack.cursor], 1);
847 }
848 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ffi_files");
849 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 82);
850 fatal_exit(1);
851 }
852 var153 = var155;
853 RET_LABEL154:(void)0;
854 }
855 }
856 {
857 core___core__AbstractArray___core__abstract_collection__RemovableCollection__clear(var153); /* Direct call array$AbstractArray$clear on <var153:Array[ExternFile]>*/
858 }
859 RET_LABEL:;
860 }
861 /* method light$MModule$ensure_compile_nitni_base for (self: MModule, AbstractCompilerVisitor) */
862 void nitc__light___MModule___ensure_compile_nitni_base(val* self, val* p0) {
863 val* var_v /* var v: AbstractCompilerVisitor */;
864 val* var /* : nullable CCompilationUnit */;
865 val* var2 /* : nullable CCompilationUnit */;
866 short int var3 /* : Bool */;
867 short int var4 /* : Bool */;
868 val* var_other /* var other: nullable Object */;
869 short int var6 /* : Bool */;
870 short int var7 /* : Bool */;
871 val* var8 /* : CCompilationUnit */;
872 var_v = p0;
873 {
874 { /* Inline light$MModule$nitni_ccu (self) on <self:MModule> */
875 var2 = self->attrs[COLOR_nitc__light__MModule___nitni_ccu].val; /* _nitni_ccu on <self:MModule> */
876 var = var2;
877 RET_LABEL1:(void)0;
878 }
879 }
880 if (var == NULL) {
881 var3 = 0; /* is null */
882 } else {
883 var3 = 1; /* arg is null and recv is not */
884 }
885 if (0) {
886 { /* Inline kernel$Object$!= (var,((val*)NULL)) on <var:nullable CCompilationUnit> */
887 var_other = ((val*)NULL);
888 {
889 var6 = ((short int(*)(val* self, val* p0))(var->class->vft[COLOR_core__kernel__Object___61d_61d]))(var, var_other); /* == on <var:nullable CCompilationUnit(CCompilationUnit)>*/
890 }
891 var7 = !var6;
892 var4 = var7;
893 goto RET_LABEL5;
894 RET_LABEL5:(void)0;
895 }
896 var3 = var4;
897 }
898 if (var3){
899 goto RET_LABEL;
900 } else {
901 }
902 var8 = NEW_nitc__CCompilationUnit(&type_nitc__CCompilationUnit);
903 {
904 { /* Inline kernel$Object$init (var8) on <var8:CCompilationUnit> */
905 RET_LABEL9:(void)0;
906 }
907 }
908 {
909 { /* Inline light$MModule$nitni_ccu= (self,var8) on <self:MModule> */
910 self->attrs[COLOR_nitc__light__MModule___nitni_ccu].val = var8; /* _nitni_ccu on <self:MModule> */
911 RET_LABEL10:(void)0;
912 }
913 }
914 RET_LABEL:;
915 }
916 /* method light$MModule$collect_linker_libs for (self: MModule): nullable Array[String] */
917 val* nitc__light___MModule___collect_linker_libs(val* self) {
918 val* var /* : nullable Array[String] */;
919 val* var1 /* : MultiHashMap[String, String] */;
920 val* var3 /* : MultiHashMap[String, String] */;
921 val* var4 /* : RemovableCollection[nullable Object] */;
922 static val* varonce;
923 val* var5 /* : String */;
924 char* var6 /* : CString */;
925 val* var7 /* : String */;
926 val* var8 /* : nullable Int */;
927 val* var9 /* : nullable Int */;
928 val* var10 /* : nullable Bool */;
929 val* var11 /* : nullable Bool */;
930 short int var12 /* : Bool */;
931 short int var13 /* : Bool */;
932 val* var14 /* : MultiHashMap[String, String] */;
933 val* var16 /* : MultiHashMap[String, String] */;
934 static val* varonce17;
935 val* var18 /* : String */;
936 char* var19 /* : CString */;
937 val* var20 /* : String */;
938 val* var21 /* : nullable Int */;
939 val* var22 /* : nullable Int */;
940 val* var23 /* : nullable Bool */;
941 val* var24 /* : nullable Bool */;
942 val* var25 /* : nullable Object */;
943 {
944 { /* Inline light_c$MModule$ldflags (self) on <self:MModule> */
945 var3 = self->attrs[COLOR_nitc__light_c__MModule___ldflags].val; /* _ldflags on <self:MModule> */
946 if (unlikely(var3 == NULL)) {
947 if(catchStack.cursor >= 0){
948 longjmp(catchStack.envs[catchStack.cursor], 1);
949 }
950 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ldflags");
951 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_c, 80);
952 fatal_exit(1);
953 }
954 var1 = var3;
955 RET_LABEL2:(void)0;
956 }
957 }
958 {
959 var4 = core___core__HashMap___core__abstract_collection__MapRead__keys(var1);
960 }
961 if (likely(varonce!=NULL)) {
962 var5 = varonce;
963 } else {
964 var6 = "";
965 var8 = (val*)(0l<<2|1);
966 var9 = (val*)(0l<<2|1);
967 var10 = (val*)((long)(0)<<2|3);
968 var11 = (val*)((long)(0)<<2|3);
969 var7 = core__flat___CString___to_s_unsafe(var6, var8, var9, var10, var11);
970 var5 = var7;
971 varonce = var5;
972 }
973 {
974 var12 = ((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])>*/
975 }
976 var13 = !var12;
977 if (var13){
978 var = ((val*)NULL);
979 goto RET_LABEL;
980 } else {
981 }
982 {
983 { /* Inline light_c$MModule$ldflags (self) on <self:MModule> */
984 var16 = self->attrs[COLOR_nitc__light_c__MModule___ldflags].val; /* _ldflags on <self:MModule> */
985 if (unlikely(var16 == NULL)) {
986 if(catchStack.cursor >= 0){
987 longjmp(catchStack.envs[catchStack.cursor], 1);
988 }
989 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ldflags");
990 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_c, 80);
991 fatal_exit(1);
992 }
993 var14 = var16;
994 RET_LABEL15:(void)0;
995 }
996 }
997 if (likely(varonce17!=NULL)) {
998 var18 = varonce17;
999 } else {
1000 var19 = "";
1001 var21 = (val*)(0l<<2|1);
1002 var22 = (val*)(0l<<2|1);
1003 var23 = (val*)((long)(0)<<2|3);
1004 var24 = (val*)((long)(0)<<2|3);
1005 var20 = core__flat___CString___to_s_unsafe(var19, var21, var22, var23, var24);
1006 var18 = var20;
1007 varonce17 = var18;
1008 }
1009 {
1010 var25 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var14, var18);
1011 }
1012 var = var25;
1013 goto RET_LABEL;
1014 RET_LABEL:;
1015 return var;
1016 }
1017 /* method light$AMethPropdef$compile_ffi_support_to_c for (self: AMethPropdef, AbstractCompilerVisitor) */
1018 void nitc__light___AMethPropdef___compile_ffi_support_to_c(val* self, val* p0) {
1019 val* var_v /* var v: AbstractCompilerVisitor */;
1020 val* var /* : nullable MPropDef */;
1021 val* var2 /* : nullable MPropDef */;
1022 val* var3 /* : MClassDef */;
1023 val* var5 /* : MClassDef */;
1024 val* var6 /* : MModule */;
1025 val* var8 /* : MModule */;
1026 val* var_mmodule /* var mmodule: MModule */;
1027 val* var9 /* : AbstractCompiler */;
1028 val* var11 /* : AbstractCompiler */;
1029 val* var12 /* : ModelBuilder */;
1030 val* var14 /* : ModelBuilder */;
1031 val* var15 /* : nullable AModule */;
1032 val* var_amodule /* var amodule: nullable AModule */;
1033 val* var16 /* : nullable MPropDef */;
1034 val* var18 /* : nullable MPropDef */;
1035 val* var19 /* : MClassDef */;
1036 val* var21 /* : MClassDef */;
1037 val* var22 /* : MClassType */;
1038 val* var24 /* : MClassType */;
1039 val* var_mclass_type /* var mclass_type: MClassType */;
1040 val* var25 /* : nullable MPropDef */;
1041 val* var27 /* : nullable MPropDef */;
1042 val* var28 /* : MProperty */;
1043 val* var30 /* : MProperty */;
1044 static val* varonce;
1045 val* var31 /* : String */;
1046 char* var32 /* : CString */;
1047 val* var33 /* : String */;
1048 val* var34 /* : nullable Int */;
1049 val* var35 /* : nullable Int */;
1050 val* var36 /* : nullable Bool */;
1051 val* var37 /* : nullable Bool */;
1052 val* var38 /* : Sys */;
1053 val* var39 /* : SignatureLength */;
1054 val* var40 /* : Sys */;
1055 val* var41 /* : CallContext */;
1056 val* var42 /* : String */;
1057 val* var_csignature /* var csignature: String */;
1058 val* var44 /* : NativeArray[String] */;
1059 static val* varonce43;
1060 static val* varonce45;
1061 val* var46 /* : String */;
1062 char* var47 /* : CString */;
1063 val* var48 /* : String */;
1064 val* var49 /* : nullable Int */;
1065 val* var50 /* : nullable Int */;
1066 val* var51 /* : nullable Bool */;
1067 val* var52 /* : nullable Bool */;
1068 val* var53 /* : String */;
1069 var_v = p0;
1070 {
1071 { /* Inline modelize_property$APropdef$mpropdef (self) on <self:AMethPropdef> */
1072 var2 = self->attrs[COLOR_nitc__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:AMethPropdef> */
1073 var = var2;
1074 RET_LABEL1:(void)0;
1075 }
1076 }
1077 if (var == NULL) {
1078 if(catchStack.cursor >= 0){
1079 longjmp(catchStack.envs[catchStack.cursor], 1);
1080 }
1081 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1082 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light, 86);
1083 fatal_exit(1);
1084 } else {
1085 { /* Inline model$MPropDef$mclassdef (var) on <var:nullable MPropDef(nullable MMethodDef)> */
1086 if (unlikely(var == NULL)) {
1087 if(catchStack.cursor >= 0){
1088 longjmp(catchStack.envs[catchStack.cursor], 1);
1089 }
1090 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1091 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2354);
1092 fatal_exit(1);
1093 }
1094 var5 = var->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var:nullable MPropDef(nullable MMethodDef)> */
1095 if (unlikely(var5 == NULL)) {
1096 if(catchStack.cursor >= 0){
1097 longjmp(catchStack.envs[catchStack.cursor], 1);
1098 }
1099 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1100 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2354);
1101 fatal_exit(1);
1102 }
1103 var3 = var5;
1104 RET_LABEL4:(void)0;
1105 }
1106 }
1107 {
1108 { /* Inline model$MClassDef$mmodule (var3) on <var3:MClassDef> */
1109 var8 = var3->attrs[COLOR_nitc__model__MClassDef___mmodule].val; /* _mmodule on <var3:MClassDef> */
1110 if (unlikely(var8 == NULL)) {
1111 if(catchStack.cursor >= 0){
1112 longjmp(catchStack.envs[catchStack.cursor], 1);
1113 }
1114 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
1115 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 588);
1116 fatal_exit(1);
1117 }
1118 var6 = var8;
1119 RET_LABEL7:(void)0;
1120 }
1121 }
1122 var_mmodule = var6;
1123 {
1124 { /* Inline abstract_compiler$AbstractCompilerVisitor$compiler (var_v) on <var_v:AbstractCompilerVisitor> */
1125 var11 = var_v->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:AbstractCompilerVisitor> */
1126 if (unlikely(var11 == NULL)) {
1127 if(catchStack.cursor >= 0){
1128 longjmp(catchStack.envs[catchStack.cursor], 1);
1129 }
1130 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1131 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1214);
1132 fatal_exit(1);
1133 }
1134 var9 = var11;
1135 RET_LABEL10:(void)0;
1136 }
1137 }
1138 {
1139 { /* Inline abstract_compiler$AbstractCompiler$modelbuilder (var9) on <var9:AbstractCompiler> */
1140 var14 = var9->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var9:AbstractCompiler> */
1141 if (unlikely(var14 == NULL)) {
1142 if(catchStack.cursor >= 0){
1143 longjmp(catchStack.envs[catchStack.cursor], 1);
1144 }
1145 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1146 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 552);
1147 fatal_exit(1);
1148 }
1149 var12 = var14;
1150 RET_LABEL13:(void)0;
1151 }
1152 }
1153 {
1154 var15 = nitc__loader___ModelBuilder___mmodule2node(var12, var_mmodule);
1155 }
1156 var_amodule = var15;
1157 {
1158 { /* Inline modelize_property$APropdef$mpropdef (self) on <self:AMethPropdef> */
1159 var18 = self->attrs[COLOR_nitc__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:AMethPropdef> */
1160 var16 = var18;
1161 RET_LABEL17:(void)0;
1162 }
1163 }
1164 if (var16 == NULL) {
1165 if(catchStack.cursor >= 0){
1166 longjmp(catchStack.envs[catchStack.cursor], 1);
1167 }
1168 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1169 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light, 88);
1170 fatal_exit(1);
1171 } else {
1172 { /* Inline model$MPropDef$mclassdef (var16) on <var16:nullable MPropDef(nullable MMethodDef)> */
1173 if (unlikely(var16 == NULL)) {
1174 if(catchStack.cursor >= 0){
1175 longjmp(catchStack.envs[catchStack.cursor], 1);
1176 }
1177 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1178 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2354);
1179 fatal_exit(1);
1180 }
1181 var21 = var16->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var16:nullable MPropDef(nullable MMethodDef)> */
1182 if (unlikely(var21 == NULL)) {
1183 if(catchStack.cursor >= 0){
1184 longjmp(catchStack.envs[catchStack.cursor], 1);
1185 }
1186 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1187 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2354);
1188 fatal_exit(1);
1189 }
1190 var19 = var21;
1191 RET_LABEL20:(void)0;
1192 }
1193 }
1194 {
1195 { /* Inline model$MClassDef$bound_mtype (var19) on <var19:MClassDef> */
1196 var24 = var19->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var19:MClassDef> */
1197 if (unlikely(var24 == NULL)) {
1198 if(catchStack.cursor >= 0){
1199 longjmp(catchStack.envs[catchStack.cursor], 1);
1200 }
1201 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
1202 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 594);
1203 fatal_exit(1);
1204 }
1205 var22 = var24;
1206 RET_LABEL23:(void)0;
1207 }
1208 }
1209 var_mclass_type = var22;
1210 {
1211 { /* Inline modelize_property$APropdef$mpropdef (self) on <self:AMethPropdef> */
1212 var27 = self->attrs[COLOR_nitc__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:AMethPropdef> */
1213 var25 = var27;
1214 RET_LABEL26:(void)0;
1215 }
1216 }
1217 if (var25 == NULL) {
1218 if(catchStack.cursor >= 0){
1219 longjmp(catchStack.envs[catchStack.cursor], 1);
1220 }
1221 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1222 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light, 91);
1223 fatal_exit(1);
1224 } else {
1225 { /* Inline model$MPropDef$mproperty (var25) on <var25:nullable MPropDef(nullable MMethodDef)> */
1226 if (unlikely(var25 == NULL)) {
1227 if(catchStack.cursor >= 0){
1228 longjmp(catchStack.envs[catchStack.cursor], 1);
1229 }
1230 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1231 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2357);
1232 fatal_exit(1);
1233 }
1234 var30 = var25->attrs[COLOR_nitc__model__MPropDef___mproperty].val; /* _mproperty on <var25:nullable MPropDef(nullable MMethodDef)> */
1235 if (unlikely(var30 == NULL)) {
1236 if(catchStack.cursor >= 0){
1237 longjmp(catchStack.envs[catchStack.cursor], 1);
1238 }
1239 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
1240 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2357);
1241 fatal_exit(1);
1242 }
1243 var28 = var30;
1244 RET_LABEL29:(void)0;
1245 }
1246 }
1247 if (likely(varonce!=NULL)) {
1248 var31 = varonce;
1249 } else {
1250 var32 = "___impl";
1251 var34 = (val*)(7l<<2|1);
1252 var35 = (val*)(7l<<2|1);
1253 var36 = (val*)((long)(0)<<2|3);
1254 var37 = (val*)((long)(0)<<2|3);
1255 var33 = core__flat___CString___to_s_unsafe(var32, var34, var35, var36, var37);
1256 var31 = var33;
1257 varonce = var31;
1258 }
1259 var38 = glob_sys;
1260 {
1261 var39 = nitc__nitni_utilities___core__Sys___long_signature(var38);
1262 }
1263 var40 = glob_sys;
1264 {
1265 var41 = nitc__nitni_utilities___core__Sys___internal_call_context(var40);
1266 }
1267 {
1268 var42 = nitc__nitni_utilities___MMethod___build_csignature(var28, var_mclass_type, var_mmodule, var31, var39, var41);
1269 }
1270 var_csignature = var42;
1271 if (unlikely(varonce43==NULL)) {
1272 var44 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
1273 if (likely(varonce45!=NULL)) {
1274 var46 = varonce45;
1275 } else {
1276 var47 = ";";
1277 var49 = (val*)(1l<<2|1);
1278 var50 = (val*)(1l<<2|1);
1279 var51 = (val*)((long)(0)<<2|3);
1280 var52 = (val*)((long)(0)<<2|3);
1281 var48 = core__flat___CString___to_s_unsafe(var47, var49, var50, var51, var52);
1282 var46 = var48;
1283 varonce45 = var46;
1284 }
1285 ((struct instance_core__NativeArray*)var44)->values[1]=var46;
1286 } else {
1287 var44 = varonce43;
1288 varonce43 = NULL;
1289 }
1290 ((struct instance_core__NativeArray*)var44)->values[0]=var_csignature;
1291 {
1292 var53 = ((val*(*)(val* self))(var44->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var44); /* native_to_s on <var44:NativeArray[String]>*/
1293 }
1294 varonce43 = var44;
1295 {
1296 nitc___nitc__AbstractCompilerVisitor___declare_once(var_v, var53); /* Direct call abstract_compiler$AbstractCompilerVisitor$declare_once on <var_v:AbstractCompilerVisitor>*/
1297 }
1298 if (var_amodule == NULL) {
1299 if(catchStack.cursor >= 0){
1300 longjmp(catchStack.envs[catchStack.cursor], 1);
1301 }
1302 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1303 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light, 95);
1304 fatal_exit(1);
1305 } else {
1306 nitc__light_ffi___AModule___ensure_compile_ffi_wrapper(var_amodule); /* Direct call light_ffi$AModule$ensure_compile_ffi_wrapper on <var_amodule:nullable AModule>*/
1307 }
1308 {
1309 nitc__light_ffi___AMethPropdef___compile_ffi_method(self, var_mmodule); /* Direct call light_ffi$AMethPropdef$compile_ffi_method on <self:AMethPropdef>*/
1310 }
1311 {
1312 nitc__light___MModule___ensure_compile_nitni_base(var_mmodule, var_v); /* Direct call light$MModule$ensure_compile_nitni_base on <var_mmodule:MModule>*/
1313 }
1314 RET_LABEL:;
1315 }
1316 /* method light$AMethPropdef$compile_externmeth_to_c for (self: AMethPropdef, AbstractCompilerVisitor, MMethodDef, Array[RuntimeVariable]): Bool */
1317 short int nitc__light___AMethPropdef___compile_externmeth_to_c(val* self, val* p0, val* p1, val* p2) {
1318 short int var /* : Bool */;
1319 val* var_v /* var v: AbstractCompilerVisitor */;
1320 val* var_mpropdef /* var mpropdef: MMethodDef */;
1321 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
1322 val* var1 /* : nullable AExternCodeBlock */;
1323 val* var3 /* : nullable AExternCodeBlock */;
1324 short int var4 /* : Bool */;
1325 short int var5 /* : Bool */;
1326 val* var_other /* var other: nullable Object */;
1327 short int var7 /* : Bool */;
1328 short int var9 /* : Bool */;
1329 short int var10 /* : Bool */;
1330 short int var11 /* : Bool */;
1331 short int var12 /* : Bool */;
1332 val* var13 /* : MClassDef */;
1333 val* var15 /* : MClassDef */;
1334 val* var16 /* : MModule */;
1335 val* var18 /* : MModule */;
1336 val* var_mmodule /* var mmodule: MModule */;
1337 val* var20 /* : MClassDef */;
1338 val* var22 /* : MClassDef */;
1339 val* var23 /* : MClassType */;
1340 val* var25 /* : MClassType */;
1341 val* var_mclass_type /* var mclass_type: MClassType */;
1342 val* var26 /* : MProperty */;
1343 val* var28 /* : MProperty */;
1344 val* var29 /* : MClassDef */;
1345 val* var31 /* : MClassDef */;
1346 val* var32 /* : MClassType */;
1347 val* var34 /* : MClassType */;
1348 static val* varonce;
1349 val* var35 /* : String */;
1350 char* var36 /* : CString */;
1351 val* var37 /* : String */;
1352 val* var38 /* : nullable Int */;
1353 val* var39 /* : nullable Int */;
1354 val* var40 /* : nullable Bool */;
1355 val* var41 /* : nullable Bool */;
1356 val* var42 /* : Sys */;
1357 val* var43 /* : SignatureLength */;
1358 val* var44 /* : String */;
1359 val* var_externname /* var externname: String */;
1360 val* var_recv_var /* var recv_var: nullable RuntimeVariable */;
1361 val* var45 /* : nullable MSignature */;
1362 val* var47 /* : nullable MSignature */;
1363 val* var48 /* : nullable MType */;
1364 val* var50 /* : nullable MType */;
1365 val* var_return_mtype /* var return_mtype: nullable MType */;
1366 short int var51 /* : Bool */;
1367 short int var52 /* : Bool */;
1368 val* var_other54 /* var other: nullable Object */;
1369 short int var55 /* : Bool */;
1370 short int var56 /* : Bool */;
1371 val* var57 /* : MType */;
1372 val* var58 /* : RuntimeVariable */;
1373 val* var59 /* : Array[String] */;
1374 val* var_arguments_for_c /* var arguments_for_c: Array[String] */;
1375 long var_a /* var a: Int */;
1376 long var60 /* : Int */;
1377 long var62 /* : Int */;
1378 long var_ /* var : Int */;
1379 short int var63 /* : Bool */;
1380 short int var65 /* : Bool */;
1381 int cltype;
1382 int idtype;
1383 const char* var_class_name;
1384 short int var66 /* : Bool */;
1385 val* var67 /* : nullable Object */;
1386 val* var_arg /* var arg: RuntimeVariable */;
1387 short int var68 /* : Bool */;
1388 short int var70 /* : Bool */;
1389 val* var71 /* : MClassDef */;
1390 val* var73 /* : MClassDef */;
1391 val* var74 /* : MClass */;
1392 val* var76 /* : MClass */;
1393 val* var77 /* : MClassType */;
1394 val* var79 /* : MClassType */;
1395 val* var_param_mtype /* var param_mtype: MType */;
1396 val* var80 /* : nullable MSignature */;
1397 val* var82 /* : nullable MSignature */;
1398 val* var83 /* : Array[MParameter] */;
1399 val* var85 /* : Array[MParameter] */;
1400 long var86 /* : Int */;
1401 short int var88 /* : Bool */;
1402 int cltype89;
1403 int idtype90;
1404 const char* var_class_name91;
1405 long var92 /* : Int */;
1406 val* var93 /* : nullable Object */;
1407 val* var94 /* : MType */;
1408 val* var96 /* : MType */;
1409 val* var97 /* : MType */;
1410 short int var98 /* : Bool */;
1411 val* var99 /* : String */;
1412 val* var101 /* : String */;
1413 val* var103 /* : NativeArray[String] */;
1414 static val* varonce102;
1415 static val* varonce104;
1416 val* var105 /* : String */;
1417 char* var106 /* : CString */;
1418 val* var107 /* : String */;
1419 val* var108 /* : nullable Int */;
1420 val* var109 /* : nullable Int */;
1421 val* var110 /* : nullable Bool */;
1422 val* var111 /* : nullable Bool */;
1423 static val* varonce112;
1424 val* var113 /* : String */;
1425 char* var114 /* : CString */;
1426 val* var115 /* : String */;
1427 val* var116 /* : nullable Int */;
1428 val* var117 /* : nullable Int */;
1429 val* var118 /* : nullable Bool */;
1430 val* var119 /* : nullable Bool */;
1431 val* var120 /* : String */;
1432 val* var121 /* : String */;
1433 val* var123 /* : NativeArray[String] */;
1434 static val* varonce122;
1435 static val* varonce124;
1436 val* var125 /* : String */;
1437 char* var126 /* : CString */;
1438 val* var127 /* : String */;
1439 val* var128 /* : nullable Int */;
1440 val* var129 /* : nullable Int */;
1441 val* var130 /* : nullable Bool */;
1442 val* var131 /* : nullable Bool */;
1443 static val* varonce132;
1444 val* var133 /* : String */;
1445 char* var134 /* : CString */;
1446 val* var135 /* : String */;
1447 val* var136 /* : nullable Int */;
1448 val* var137 /* : nullable Int */;
1449 val* var138 /* : nullable Bool */;
1450 val* var139 /* : nullable Bool */;
1451 val* var140 /* : String */;
1452 val* var141 /* : String */;
1453 val* var143 /* : NativeArray[String] */;
1454 static val* varonce142;
1455 static val* varonce144;
1456 val* var145 /* : String */;
1457 char* var146 /* : CString */;
1458 val* var147 /* : String */;
1459 val* var148 /* : nullable Int */;
1460 val* var149 /* : nullable Int */;
1461 val* var150 /* : nullable Bool */;
1462 val* var151 /* : nullable Bool */;
1463 static val* varonce152;
1464 val* var153 /* : String */;
1465 char* var154 /* : CString */;
1466 val* var155 /* : String */;
1467 val* var156 /* : nullable Int */;
1468 val* var157 /* : nullable Int */;
1469 val* var158 /* : nullable Bool */;
1470 val* var159 /* : nullable Bool */;
1471 static val* varonce160;
1472 val* var161 /* : String */;
1473 char* var162 /* : CString */;
1474 val* var163 /* : String */;
1475 val* var164 /* : nullable Int */;
1476 val* var165 /* : nullable Int */;
1477 val* var166 /* : nullable Bool */;
1478 val* var167 /* : nullable Bool */;
1479 val* var168 /* : String */;
1480 val* var169 /* : String */;
1481 val* var171 /* : String */;
1482 val* var172 /* : String */;
1483 val* var174 /* : NativeArray[String] */;
1484 static val* varonce173;
1485 static val* varonce175;
1486 val* var176 /* : String */;
1487 char* var177 /* : CString */;
1488 val* var178 /* : String */;
1489 val* var179 /* : nullable Int */;
1490 val* var180 /* : nullable Int */;
1491 val* var181 /* : nullable Bool */;
1492 val* var182 /* : nullable Bool */;
1493 val* var183 /* : String */;
1494 val* var184 /* : String */;
1495 long var185 /* : Int */;
1496 short int var186 /* : Bool */;
1497 short int var187 /* : Bool */;
1498 short int var189 /* : Bool */;
1499 short int var191 /* : Bool */;
1500 val* var193 /* : NativeArray[String] */;
1501 static val* varonce192;
1502 static val* varonce194;
1503 val* var195 /* : String */;
1504 char* var196 /* : CString */;
1505 val* var197 /* : String */;
1506 val* var198 /* : nullable Int */;
1507 val* var199 /* : nullable Int */;
1508 val* var200 /* : nullable Bool */;
1509 val* var201 /* : nullable Bool */;
1510 static val* varonce202;
1511 val* var203 /* : String */;
1512 char* var204 /* : CString */;
1513 val* var205 /* : String */;
1514 val* var206 /* : nullable Int */;
1515 val* var207 /* : nullable Int */;
1516 val* var208 /* : nullable Bool */;
1517 val* var209 /* : nullable Bool */;
1518 static val* varonce210;
1519 val* var211 /* : String */;
1520 char* var212 /* : CString */;
1521 val* var213 /* : String */;
1522 val* var214 /* : nullable Int */;
1523 val* var215 /* : nullable Int */;
1524 val* var216 /* : nullable Bool */;
1525 val* var217 /* : nullable Bool */;
1526 val* var218 /* : String */;
1527 val* var219 /* : String */;
1528 short int var220 /* : Bool */;
1529 short int var221 /* : Bool */;
1530 short int var223 /* : Bool */;
1531 short int var224 /* : Bool */;
1532 short int var225 /* : Bool */;
1533 val* var227 /* : NativeArray[String] */;
1534 static val* varonce226;
1535 static val* varonce228;
1536 val* var229 /* : String */;
1537 char* var230 /* : CString */;
1538 val* var231 /* : String */;
1539 val* var232 /* : nullable Int */;
1540 val* var233 /* : nullable Int */;
1541 val* var234 /* : nullable Bool */;
1542 val* var235 /* : nullable Bool */;
1543 static val* varonce236;
1544 val* var237 /* : String */;
1545 char* var238 /* : CString */;
1546 val* var239 /* : String */;
1547 val* var240 /* : nullable Int */;
1548 val* var241 /* : nullable Int */;
1549 val* var242 /* : nullable Bool */;
1550 val* var243 /* : nullable Bool */;
1551 static val* varonce244;
1552 val* var245 /* : String */;
1553 char* var246 /* : CString */;
1554 val* var247 /* : String */;
1555 val* var248 /* : nullable Int */;
1556 val* var249 /* : nullable Int */;
1557 val* var250 /* : nullable Bool */;
1558 val* var251 /* : nullable Bool */;
1559 val* var252 /* : String */;
1560 static val* varonce253;
1561 val* var254 /* : String */;
1562 char* var255 /* : CString */;
1563 val* var256 /* : String */;
1564 val* var257 /* : nullable Int */;
1565 val* var258 /* : nullable Int */;
1566 val* var259 /* : nullable Bool */;
1567 val* var260 /* : nullable Bool */;
1568 val* var261 /* : String */;
1569 val* var262 /* : String */;
1570 static val* varonce263;
1571 val* var264 /* : String */;
1572 char* var265 /* : CString */;
1573 val* var266 /* : String */;
1574 val* var267 /* : nullable Int */;
1575 val* var268 /* : nullable Int */;
1576 val* var269 /* : nullable Bool */;
1577 val* var270 /* : nullable Bool */;
1578 val* var272 /* : NativeArray[String] */;
1579 static val* varonce271;
1580 static val* varonce273;
1581 val* var274 /* : String */;
1582 char* var275 /* : CString */;
1583 val* var276 /* : String */;
1584 val* var277 /* : nullable Int */;
1585 val* var278 /* : nullable Int */;
1586 val* var279 /* : nullable Bool */;
1587 val* var280 /* : nullable Bool */;
1588 static val* varonce281;
1589 val* var282 /* : String */;
1590 char* var283 /* : CString */;
1591 val* var284 /* : String */;
1592 val* var285 /* : nullable Int */;
1593 val* var286 /* : nullable Int */;
1594 val* var287 /* : nullable Bool */;
1595 val* var288 /* : nullable Bool */;
1596 static val* varonce289;
1597 val* var290 /* : String */;
1598 char* var291 /* : CString */;
1599 val* var292 /* : String */;
1600 val* var293 /* : nullable Int */;
1601 val* var294 /* : nullable Int */;
1602 val* var295 /* : nullable Bool */;
1603 val* var296 /* : nullable Bool */;
1604 static val* varonce297;
1605 val* var298 /* : String */;
1606 char* var299 /* : CString */;
1607 val* var300 /* : String */;
1608 val* var301 /* : nullable Int */;
1609 val* var302 /* : nullable Int */;
1610 val* var303 /* : nullable Bool */;
1611 val* var304 /* : nullable Bool */;
1612 val* var305 /* : String */;
1613 val* var306 /* : String */;
1614 val* var308 /* : NativeArray[String] */;
1615 static val* varonce307;
1616 static val* varonce309;
1617 val* var310 /* : String */;
1618 char* var311 /* : CString */;
1619 val* var312 /* : String */;
1620 val* var313 /* : nullable Int */;
1621 val* var314 /* : nullable Int */;
1622 val* var315 /* : nullable Bool */;
1623 val* var316 /* : nullable Bool */;
1624 val* var317 /* : String */;
1625 val* var318 /* : String */;
1626 val* var319 /* : RuntimeVariable */;
1627 var_v = p0;
1628 var_mpropdef = p1;
1629 var_arguments = p2;
1630 {
1631 { /* Inline parser_nodes$AMethPropdef$n_extern_code_block (self) on <self:AMethPropdef> */
1632 var3 = self->attrs[COLOR_nitc__parser_nodes__AMethPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AMethPropdef> */
1633 var1 = var3;
1634 RET_LABEL2:(void)0;
1635 }
1636 }
1637 if (var1 == NULL) {
1638 var4 = 1; /* is null */
1639 } else {
1640 var4 = 0; /* arg is null but recv is not */
1641 }
1642 if (0) {
1643 { /* Inline kernel$Object$== (var1,((val*)NULL)) on <var1:nullable AExternCodeBlock> */
1644 var_other = ((val*)NULL);
1645 {
1646 { /* Inline kernel$Object$is_same_instance (var1,var_other) on <var1:nullable AExternCodeBlock(AExternCodeBlock)> */
1647 var9 = var1 == var_other;
1648 var7 = var9;
1649 goto RET_LABEL8;
1650 RET_LABEL8:(void)0;
1651 }
1652 }
1653 var5 = var7;
1654 goto RET_LABEL6;
1655 RET_LABEL6:(void)0;
1656 }
1657 var4 = var5;
1658 }
1659 if (var4){
1660 {
1661 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>*/
1662 }
1663 var = var10;
1664 goto RET_LABEL;
1665 } else {
1666 }
1667 {
1668 var11 = nitc__light_only___AMethPropdef___accept_externmeth(self);
1669 }
1670 var12 = !var11;
1671 if (var12){
1672 var = 0;
1673 goto RET_LABEL;
1674 } else {
1675 }
1676 {
1677 { /* Inline model$MPropDef$mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
1678 var15 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
1679 if (unlikely(var15 == NULL)) {
1680 if(catchStack.cursor >= 0){
1681 longjmp(catchStack.envs[catchStack.cursor], 1);
1682 }
1683 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1684 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2354);
1685 fatal_exit(1);
1686 }
1687 var13 = var15;
1688 RET_LABEL14:(void)0;
1689 }
1690 }
1691 {
1692 { /* Inline model$MClassDef$mmodule (var13) on <var13:MClassDef> */
1693 var18 = var13->attrs[COLOR_nitc__model__MClassDef___mmodule].val; /* _mmodule on <var13:MClassDef> */
1694 if (unlikely(var18 == NULL)) {
1695 if(catchStack.cursor >= 0){
1696 longjmp(catchStack.envs[catchStack.cursor], 1);
1697 }
1698 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
1699 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 588);
1700 fatal_exit(1);
1701 }
1702 var16 = var18;
1703 RET_LABEL17:(void)0;
1704 }
1705 }
1706 var_mmodule = var16;
1707 {
1708 { /* Inline light_ffi$MModule$uses_ffi= (var_mmodule,1) on <var_mmodule:MModule> */
1709 var_mmodule->attrs[COLOR_nitc__light_ffi__MModule___uses_ffi].s = 1; /* _uses_ffi on <var_mmodule:MModule> */
1710 RET_LABEL19:(void)0;
1711 }
1712 }
1713 {
1714 { /* Inline model$MPropDef$mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
1715 var22 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
1716 if (unlikely(var22 == NULL)) {
1717 if(catchStack.cursor >= 0){
1718 longjmp(catchStack.envs[catchStack.cursor], 1);
1719 }
1720 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1721 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2354);
1722 fatal_exit(1);
1723 }
1724 var20 = var22;
1725 RET_LABEL21:(void)0;
1726 }
1727 }
1728 {
1729 { /* Inline model$MClassDef$bound_mtype (var20) on <var20:MClassDef> */
1730 var25 = var20->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var20:MClassDef> */
1731 if (unlikely(var25 == NULL)) {
1732 if(catchStack.cursor >= 0){
1733 longjmp(catchStack.envs[catchStack.cursor], 1);
1734 }
1735 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
1736 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 594);
1737 fatal_exit(1);
1738 }
1739 var23 = var25;
1740 RET_LABEL24:(void)0;
1741 }
1742 }
1743 var_mclass_type = var23;
1744 {
1745 { /* Inline model$MPropDef$mproperty (var_mpropdef) on <var_mpropdef:MMethodDef> */
1746 var28 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MMethodDef> */
1747 if (unlikely(var28 == NULL)) {
1748 if(catchStack.cursor >= 0){
1749 longjmp(catchStack.envs[catchStack.cursor], 1);
1750 }
1751 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
1752 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2357);
1753 fatal_exit(1);
1754 }
1755 var26 = var28;
1756 RET_LABEL27:(void)0;
1757 }
1758 }
1759 {
1760 { /* Inline model$MPropDef$mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
1761 var31 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
1762 if (unlikely(var31 == NULL)) {
1763 if(catchStack.cursor >= 0){
1764 longjmp(catchStack.envs[catchStack.cursor], 1);
1765 }
1766 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1767 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2354);
1768 fatal_exit(1);
1769 }
1770 var29 = var31;
1771 RET_LABEL30:(void)0;
1772 }
1773 }
1774 {
1775 { /* Inline model$MClassDef$bound_mtype (var29) on <var29:MClassDef> */
1776 var34 = var29->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var29:MClassDef> */
1777 if (unlikely(var34 == NULL)) {
1778 if(catchStack.cursor >= 0){
1779 longjmp(catchStack.envs[catchStack.cursor], 1);
1780 }
1781 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
1782 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 594);
1783 fatal_exit(1);
1784 }
1785 var32 = var34;
1786 RET_LABEL33:(void)0;
1787 }
1788 }
1789 if (likely(varonce!=NULL)) {
1790 var35 = varonce;
1791 } else {
1792 var36 = "___impl";
1793 var38 = (val*)(7l<<2|1);
1794 var39 = (val*)(7l<<2|1);
1795 var40 = (val*)((long)(0)<<2|3);
1796 var41 = (val*)((long)(0)<<2|3);
1797 var37 = core__flat___CString___to_s_unsafe(var36, var38, var39, var40, var41);
1798 var35 = var37;
1799 varonce = var35;
1800 }
1801 var42 = glob_sys;
1802 {
1803 var43 = nitc__nitni_utilities___core__Sys___long_signature(var42);
1804 }
1805 {
1806 var44 = nitc__nitni_utilities___MMethod___build_cname(var26, var32, var_mmodule, var35, var43);
1807 }
1808 var_externname = var44;
1809 var_recv_var = ((val*)NULL);
1810 {
1811 { /* Inline model$MMethodDef$msignature (var_mpropdef) on <var_mpropdef:MMethodDef> */
1812 var47 = var_mpropdef->attrs[COLOR_nitc__model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:MMethodDef> */
1813 var45 = var47;
1814 RET_LABEL46:(void)0;
1815 }
1816 }
1817 if (var45 == NULL) {
1818 if(catchStack.cursor >= 0){
1819 longjmp(catchStack.envs[catchStack.cursor], 1);
1820 }
1821 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1822 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light, 122);
1823 fatal_exit(1);
1824 } else {
1825 { /* Inline model$MSignature$return_mtype (var45) on <var45:nullable MSignature> */
1826 if (unlikely(var45 == NULL)) {
1827 if(catchStack.cursor >= 0){
1828 longjmp(catchStack.envs[catchStack.cursor], 1);
1829 }
1830 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1831 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1891);
1832 fatal_exit(1);
1833 }
1834 var50 = var45->attrs[COLOR_nitc__model__MSignature___return_mtype].val; /* _return_mtype on <var45:nullable MSignature> */
1835 var48 = var50;
1836 RET_LABEL49:(void)0;
1837 }
1838 }
1839 var_return_mtype = var48;
1840 if (var_return_mtype == NULL) {
1841 var51 = 0; /* is null */
1842 } else {
1843 var51 = 1; /* arg is null and recv is not */
1844 }
1845 if (0) {
1846 { /* Inline kernel$Object$!= (var_return_mtype,((val*)NULL)) on <var_return_mtype:nullable MType> */
1847 var_other54 = ((val*)NULL);
1848 {
1849 var55 = ((short int(*)(val* self, val* p0))(var_return_mtype->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_return_mtype, var_other54); /* == on <var_return_mtype:nullable MType(MType)>*/
1850 }
1851 var56 = !var55;
1852 var52 = var56;
1853 goto RET_LABEL53;
1854 RET_LABEL53:(void)0;
1855 }
1856 var51 = var52;
1857 }
1858 if (var51){
1859 {
1860 var57 = ((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)>*/
1861 }
1862 var_return_mtype = var57;
1863 {
1864 var58 = nitc___nitc__AbstractCompilerVisitor___new_var(var_v, var_return_mtype);
1865 }
1866 var_recv_var = var58;
1867 } else {
1868 }
1869 {
1870 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>*/
1871 }
1872 {
1873 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>*/
1874 }
1875 var59 = NEW_core__Array(&type_core__Array__core__String);
1876 {
1877 core___core__Array___core__kernel__Object__init(var59); /* Direct call array$Array$init on <var59:Array[String]>*/
1878 }
1879 var_arguments_for_c = var59;
1880 var_a = 0l;
1881 {
1882 { /* Inline array$AbstractArrayRead$length (var_arguments) on <var_arguments:Array[RuntimeVariable]> */
1883 var62 = var_arguments->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_arguments:Array[RuntimeVariable]> */
1884 var60 = var62;
1885 RET_LABEL61:(void)0;
1886 }
1887 }
1888 var_ = var60;
1889 for(;;) {
1890 {
1891 { /* Inline kernel$Int$< (var_a,var_) on <var_a:Int> */
1892 /* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
1893 /* <var_:Int> isa OTHER */
1894 var65 = 1; /* easy <var_:Int> isa OTHER*/
1895 if (unlikely(!var65)) {
1896 var_class_name = type_core__Int.name;
1897 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1898 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
1899 fatal_exit(1);
1900 }
1901 var66 = var_a < var_;
1902 var63 = var66;
1903 goto RET_LABEL64;
1904 RET_LABEL64:(void)0;
1905 }
1906 }
1907 if (var63){
1908 } else {
1909 goto BREAK_label;
1910 }
1911 {
1912 var67 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_arguments, var_a);
1913 }
1914 var_arg = var67;
1915 {
1916 { /* Inline kernel$Int$== (var_a,0l) on <var_a:Int> */
1917 var70 = var_a == 0l;
1918 var68 = var70;
1919 goto RET_LABEL69;
1920 RET_LABEL69:(void)0;
1921 }
1922 }
1923 if (var68){
1924 {
1925 { /* Inline model$MPropDef$mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
1926 var73 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
1927 if (unlikely(var73 == NULL)) {
1928 if(catchStack.cursor >= 0){
1929 longjmp(catchStack.envs[catchStack.cursor], 1);
1930 }
1931 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1932 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2354);
1933 fatal_exit(1);
1934 }
1935 var71 = var73;
1936 RET_LABEL72:(void)0;
1937 }
1938 }
1939 {
1940 { /* Inline model$MClassDef$mclass (var71) on <var71:MClassDef> */
1941 var76 = var71->attrs[COLOR_nitc__model__MClassDef___mclass].val; /* _mclass on <var71:MClassDef> */
1942 if (unlikely(var76 == NULL)) {
1943 if(catchStack.cursor >= 0){
1944 longjmp(catchStack.envs[catchStack.cursor], 1);
1945 }
1946 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1947 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 591);
1948 fatal_exit(1);
1949 }
1950 var74 = var76;
1951 RET_LABEL75:(void)0;
1952 }
1953 }
1954 {
1955 { /* Inline model$MClass$mclass_type (var74) on <var74:MClass> */
1956 var79 = var74->attrs[COLOR_nitc__model__MClass___mclass_type].val; /* _mclass_type on <var74:MClass> */
1957 if (unlikely(var79 == NULL)) {
1958 if(catchStack.cursor >= 0){
1959 longjmp(catchStack.envs[catchStack.cursor], 1);
1960 }
1961 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
1962 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 520);
1963 fatal_exit(1);
1964 }
1965 var77 = var79;
1966 RET_LABEL78:(void)0;
1967 }
1968 }
1969 var_param_mtype = var77;
1970 } else {
1971 {
1972 { /* Inline model$MMethodDef$msignature (var_mpropdef) on <var_mpropdef:MMethodDef> */
1973 var82 = var_mpropdef->attrs[COLOR_nitc__model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:MMethodDef> */
1974 var80 = var82;
1975 RET_LABEL81:(void)0;
1976 }
1977 }
1978 if (var80 == NULL) {
1979 if(catchStack.cursor >= 0){
1980 longjmp(catchStack.envs[catchStack.cursor], 1);
1981 }
1982 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1983 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light, 137);
1984 fatal_exit(1);
1985 } else {
1986 { /* Inline model$MSignature$mparameters (var80) on <var80:nullable MSignature> */
1987 if (unlikely(var80 == NULL)) {
1988 if(catchStack.cursor >= 0){
1989 longjmp(catchStack.envs[catchStack.cursor], 1);
1990 }
1991 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1992 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1879);
1993 fatal_exit(1);
1994 }
1995 var85 = var80->attrs[COLOR_nitc__model__MSignature___mparameters].val; /* _mparameters on <var80:nullable MSignature> */
1996 if (unlikely(var85 == NULL)) {
1997 if(catchStack.cursor >= 0){
1998 longjmp(catchStack.envs[catchStack.cursor], 1);
1999 }
2000 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
2001 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1879);
2002 fatal_exit(1);
2003 }
2004 var83 = var85;
2005 RET_LABEL84:(void)0;
2006 }
2007 }
2008 {
2009 { /* Inline kernel$Int$- (var_a,1l) on <var_a:Int> */
2010 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
2011 /* <1l:Int> isa OTHER */
2012 var88 = 1; /* easy <1l:Int> isa OTHER*/
2013 if (unlikely(!var88)) {
2014 var_class_name91 = type_core__Int.name;
2015 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name91);
2016 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
2017 fatal_exit(1);
2018 }
2019 var92 = var_a - 1l;
2020 var86 = var92;
2021 goto RET_LABEL87;
2022 RET_LABEL87:(void)0;
2023 }
2024 }
2025 {
2026 var93 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var83, var86);
2027 }
2028 {
2029 { /* Inline model$MParameter$mtype (var93) on <var93:nullable Object(MParameter)> */
2030 var96 = var93->attrs[COLOR_nitc__model__MParameter___mtype].val; /* _mtype on <var93:nullable Object(MParameter)> */
2031 if (unlikely(var96 == NULL)) {
2032 if(catchStack.cursor >= 0){
2033 longjmp(catchStack.envs[catchStack.cursor], 1);
2034 }
2035 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2036 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1996);
2037 fatal_exit(1);
2038 }
2039 var94 = var96;
2040 RET_LABEL95:(void)0;
2041 }
2042 }
2043 var_param_mtype = var94;
2044 }
2045 {
2046 var97 = ((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>*/
2047 }
2048 var_param_mtype = var97;
2049 {
2050 var98 = ((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>*/
2051 }
2052 if (var98){
2053 {
2054 { /* Inline abstract_compiler$RuntimeVariable$name (var_arg) on <var_arg:RuntimeVariable> */
2055 var101 = var_arg->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___name].val; /* _name on <var_arg:RuntimeVariable> */
2056 if (unlikely(var101 == NULL)) {
2057 if(catchStack.cursor >= 0){
2058 longjmp(catchStack.envs[catchStack.cursor], 1);
2059 }
2060 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2061 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1980);
2062 fatal_exit(1);
2063 }
2064 var99 = var101;
2065 RET_LABEL100:(void)0;
2066 }
2067 }
2068 {
2069 core___core__Array___core__abstract_collection__SimpleCollection__add(var_arguments_for_c, var99); /* Direct call array$Array$add on <var_arguments_for_c:Array[String]>*/
2070 }
2071 } else {
2072 if (unlikely(varonce102==NULL)) {
2073 var103 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
2074 if (likely(varonce104!=NULL)) {
2075 var105 = varonce104;
2076 } else {
2077 var106 = "struct nitni_instance* var_for_c_";
2078 var108 = (val*)(33l<<2|1);
2079 var109 = (val*)(33l<<2|1);
2080 var110 = (val*)((long)(0)<<2|3);
2081 var111 = (val*)((long)(0)<<2|3);
2082 var107 = core__flat___CString___to_s_unsafe(var106, var108, var109, var110, var111);
2083 var105 = var107;
2084 varonce104 = var105;
2085 }
2086 ((struct instance_core__NativeArray*)var103)->values[0]=var105;
2087 if (likely(varonce112!=NULL)) {
2088 var113 = varonce112;
2089 } else {
2090 var114 = ";";
2091 var116 = (val*)(1l<<2|1);
2092 var117 = (val*)(1l<<2|1);
2093 var118 = (val*)((long)(0)<<2|3);
2094 var119 = (val*)((long)(0)<<2|3);
2095 var115 = core__flat___CString___to_s_unsafe(var114, var116, var117, var118, var119);
2096 var113 = var115;
2097 varonce112 = var113;
2098 }
2099 ((struct instance_core__NativeArray*)var103)->values[2]=var113;
2100 } else {
2101 var103 = varonce102;
2102 varonce102 = NULL;
2103 }
2104 var120 = core__flat___Int___core__abstract_text__Object__to_s(var_a);
2105 ((struct instance_core__NativeArray*)var103)->values[1]=var120;
2106 {
2107 var121 = ((val*(*)(val* self))(var103->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var103); /* native_to_s on <var103:NativeArray[String]>*/
2108 }
2109 varonce102 = var103;
2110 {
2111 nitc___nitc__AbstractCompilerVisitor___add(var_v, var121); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:AbstractCompilerVisitor>*/
2112 }
2113 if (unlikely(varonce122==NULL)) {
2114 var123 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
2115 if (likely(varonce124!=NULL)) {
2116 var125 = varonce124;
2117 } else {
2118 var126 = "var_for_c_";
2119 var128 = (val*)(10l<<2|1);
2120 var129 = (val*)(10l<<2|1);
2121 var130 = (val*)((long)(0)<<2|3);
2122 var131 = (val*)((long)(0)<<2|3);
2123 var127 = core__flat___CString___to_s_unsafe(var126, var128, var129, var130, var131);
2124 var125 = var127;
2125 varonce124 = var125;
2126 }
2127 ((struct instance_core__NativeArray*)var123)->values[0]=var125;
2128 if (likely(varonce132!=NULL)) {
2129 var133 = varonce132;
2130 } else {
2131 var134 = " = nit_alloc(sizeof(struct nitni_instance));";
2132 var136 = (val*)(44l<<2|1);
2133 var137 = (val*)(44l<<2|1);
2134 var138 = (val*)((long)(0)<<2|3);
2135 var139 = (val*)((long)(0)<<2|3);
2136 var135 = core__flat___CString___to_s_unsafe(var134, var136, var137, var138, var139);
2137 var133 = var135;
2138 varonce132 = var133;
2139 }
2140 ((struct instance_core__NativeArray*)var123)->values[2]=var133;
2141 } else {
2142 var123 = varonce122;
2143 varonce122 = NULL;
2144 }
2145 var140 = core__flat___Int___core__abstract_text__Object__to_s(var_a);
2146 ((struct instance_core__NativeArray*)var123)->values[1]=var140;
2147 {
2148 var141 = ((val*(*)(val* self))(var123->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var123); /* native_to_s on <var123:NativeArray[String]>*/
2149 }
2150 varonce122 = var123;
2151 {
2152 nitc___nitc__AbstractCompilerVisitor___add(var_v, var141); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:AbstractCompilerVisitor>*/
2153 }
2154 if (unlikely(varonce142==NULL)) {
2155 var143 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
2156 if (likely(varonce144!=NULL)) {
2157 var145 = varonce144;
2158 } else {
2159 var146 = "var_for_c_";
2160 var148 = (val*)(10l<<2|1);
2161 var149 = (val*)(10l<<2|1);
2162 var150 = (val*)((long)(0)<<2|3);
2163 var151 = (val*)((long)(0)<<2|3);
2164 var147 = core__flat___CString___to_s_unsafe(var146, var148, var149, var150, var151);
2165 var145 = var147;
2166 varonce144 = var145;
2167 }
2168 ((struct instance_core__NativeArray*)var143)->values[0]=var145;
2169 if (likely(varonce152!=NULL)) {
2170 var153 = varonce152;
2171 } else {
2172 var154 = "->value = ";
2173 var156 = (val*)(10l<<2|1);
2174 var157 = (val*)(10l<<2|1);
2175 var158 = (val*)((long)(0)<<2|3);
2176 var159 = (val*)((long)(0)<<2|3);
2177 var155 = core__flat___CString___to_s_unsafe(var154, var156, var157, var158, var159);
2178 var153 = var155;
2179 varonce152 = var153;
2180 }
2181 ((struct instance_core__NativeArray*)var143)->values[2]=var153;
2182 if (likely(varonce160!=NULL)) {
2183 var161 = varonce160;
2184 } else {
2185 var162 = ";";
2186 var164 = (val*)(1l<<2|1);
2187 var165 = (val*)(1l<<2|1);
2188 var166 = (val*)((long)(0)<<2|3);
2189 var167 = (val*)((long)(0)<<2|3);
2190 var163 = core__flat___CString___to_s_unsafe(var162, var164, var165, var166, var167);
2191 var161 = var163;
2192 varonce160 = var161;
2193 }
2194 ((struct instance_core__NativeArray*)var143)->values[4]=var161;
2195 } else {
2196 var143 = varonce142;
2197 varonce142 = NULL;
2198 }
2199 var168 = core__flat___Int___core__abstract_text__Object__to_s(var_a);
2200 ((struct instance_core__NativeArray*)var143)->values[1]=var168;
2201 {
2202 { /* Inline abstract_compiler$RuntimeVariable$name (var_arg) on <var_arg:RuntimeVariable> */
2203 var171 = var_arg->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___name].val; /* _name on <var_arg:RuntimeVariable> */
2204 if (unlikely(var171 == NULL)) {
2205 if(catchStack.cursor >= 0){
2206 longjmp(catchStack.envs[catchStack.cursor], 1);
2207 }
2208 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2209 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1980);
2210 fatal_exit(1);
2211 }
2212 var169 = var171;
2213 RET_LABEL170:(void)0;
2214 }
2215 }
2216 ((struct instance_core__NativeArray*)var143)->values[3]=var169;
2217 {
2218 var172 = ((val*(*)(val* self))(var143->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var143); /* native_to_s on <var143:NativeArray[String]>*/
2219 }
2220 varonce142 = var143;
2221 {
2222 nitc___nitc__AbstractCompilerVisitor___add(var_v, var172); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:AbstractCompilerVisitor>*/
2223 }
2224 if (unlikely(varonce173==NULL)) {
2225 var174 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
2226 if (likely(varonce175!=NULL)) {
2227 var176 = varonce175;
2228 } else {
2229 var177 = "var_for_c_";
2230 var179 = (val*)(10l<<2|1);
2231 var180 = (val*)(10l<<2|1);
2232 var181 = (val*)((long)(0)<<2|3);
2233 var182 = (val*)((long)(0)<<2|3);
2234 var178 = core__flat___CString___to_s_unsafe(var177, var179, var180, var181, var182);
2235 var176 = var178;
2236 varonce175 = var176;
2237 }
2238 ((struct instance_core__NativeArray*)var174)->values[0]=var176;
2239 } else {
2240 var174 = varonce173;
2241 varonce173 = NULL;
2242 }
2243 var183 = core__flat___Int___core__abstract_text__Object__to_s(var_a);
2244 ((struct instance_core__NativeArray*)var174)->values[1]=var183;
2245 {
2246 var184 = ((val*(*)(val* self))(var174->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var174); /* native_to_s on <var174:NativeArray[String]>*/
2247 }
2248 varonce173 = var174;
2249 {
2250 core___core__Array___core__abstract_collection__SimpleCollection__add(var_arguments_for_c, var184); /* Direct call array$Array$add on <var_arguments_for_c:Array[String]>*/
2251 }
2252 }
2253 {
2254 var185 = core___core__Int___Discrete__successor(var_a, 1l);
2255 }
2256 var_a = var185;
2257 }
2258 BREAK_label: (void)0;
2259 if (var_recv_var == NULL) {
2260 var186 = 1; /* is null */
2261 } else {
2262 var186 = 0; /* arg is null but recv is not */
2263 }
2264 if (0) {
2265 { /* Inline kernel$Object$== (var_recv_var,((val*)NULL)) on <var_recv_var:nullable RuntimeVariable> */
2266 var_other = ((val*)NULL);
2267 {
2268 { /* Inline kernel$Object$is_same_instance (var_recv_var,var_other) on <var_recv_var:nullable RuntimeVariable(RuntimeVariable)> */
2269 var191 = var_recv_var == var_other;
2270 var189 = var191;
2271 goto RET_LABEL190;
2272 RET_LABEL190:(void)0;
2273 }
2274 }
2275 var187 = var189;
2276 goto RET_LABEL188;
2277 RET_LABEL188:(void)0;
2278 }
2279 var186 = var187;
2280 }
2281 if (var186){
2282 if (unlikely(varonce192==NULL)) {
2283 var193 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
2284 if (likely(varonce194!=NULL)) {
2285 var195 = varonce194;
2286 } else {
2287 var196 = "(";
2288 var198 = (val*)(1l<<2|1);
2289 var199 = (val*)(1l<<2|1);
2290 var200 = (val*)((long)(0)<<2|3);
2291 var201 = (val*)((long)(0)<<2|3);
2292 var197 = core__flat___CString___to_s_unsafe(var196, var198, var199, var200, var201);
2293 var195 = var197;
2294 varonce194 = var195;
2295 }
2296 ((struct instance_core__NativeArray*)var193)->values[1]=var195;
2297 if (likely(varonce202!=NULL)) {
2298 var203 = varonce202;
2299 } else {
2300 var204 = ");";
2301 var206 = (val*)(2l<<2|1);
2302 var207 = (val*)(2l<<2|1);
2303 var208 = (val*)((long)(0)<<2|3);
2304 var209 = (val*)((long)(0)<<2|3);
2305 var205 = core__flat___CString___to_s_unsafe(var204, var206, var207, var208, var209);
2306 var203 = var205;
2307 varonce202 = var203;
2308 }
2309 ((struct instance_core__NativeArray*)var193)->values[3]=var203;
2310 } else {
2311 var193 = varonce192;
2312 varonce192 = NULL;
2313 }
2314 ((struct instance_core__NativeArray*)var193)->values[0]=var_externname;
2315 if (likely(varonce210!=NULL)) {
2316 var211 = varonce210;
2317 } else {
2318 var212 = ", ";
2319 var214 = (val*)(2l<<2|1);
2320 var215 = (val*)(2l<<2|1);
2321 var216 = (val*)((long)(0)<<2|3);
2322 var217 = (val*)((long)(0)<<2|3);
2323 var213 = core__flat___CString___to_s_unsafe(var212, var214, var215, var216, var217);
2324 var211 = var213;
2325 varonce210 = var211;
2326 }
2327 {
2328 var218 = core__abstract_text___Collection___join(var_arguments_for_c, var211, ((val*)NULL));
2329 }
2330 ((struct instance_core__NativeArray*)var193)->values[2]=var218;
2331 {
2332 var219 = ((val*(*)(val* self))(var193->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var193); /* native_to_s on <var193:NativeArray[String]>*/
2333 }
2334 varonce192 = var193;
2335 {
2336 nitc___nitc__AbstractCompilerVisitor___add(var_v, var219); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:AbstractCompilerVisitor>*/
2337 }
2338 } else {
2339 if (var_return_mtype == NULL) {
2340 var220 = 0; /* is null */
2341 } else {
2342 var220 = 1; /* arg is null and recv is not */
2343 }
2344 if (0) {
2345 { /* Inline kernel$Object$!= (var_return_mtype,((val*)NULL)) on <var_return_mtype:nullable MType> */
2346 var_other54 = ((val*)NULL);
2347 {
2348 var223 = ((short int(*)(val* self, val* p0))(var_return_mtype->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_return_mtype, var_other54); /* == on <var_return_mtype:nullable MType(MType)>*/
2349 }
2350 var224 = !var223;
2351 var221 = var224;
2352 goto RET_LABEL222;
2353 RET_LABEL222:(void)0;
2354 }
2355 var220 = var221;
2356 }
2357 if (unlikely(!var220)) {
2358 if(catchStack.cursor >= 0){
2359 longjmp(catchStack.envs[catchStack.cursor], 1);
2360 }
2361 PRINT_ERROR("Runtime error: %s", "Assert failed");
2362 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light, 154);
2363 fatal_exit(1);
2364 }
2365 {
2366 var225 = ((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)>*/
2367 }
2368 if (var225){
2369 if (unlikely(varonce226==NULL)) {
2370 var227 = NEW_core__NativeArray((int)6l, &type_core__NativeArray__core__String);
2371 if (likely(varonce228!=NULL)) {
2372 var229 = varonce228;
2373 } else {
2374 var230 = " = ";
2375 var232 = (val*)(3l<<2|1);
2376 var233 = (val*)(3l<<2|1);
2377 var234 = (val*)((long)(0)<<2|3);
2378 var235 = (val*)((long)(0)<<2|3);
2379 var231 = core__flat___CString___to_s_unsafe(var230, var232, var233, var234, var235);
2380 var229 = var231;
2381 varonce228 = var229;
2382 }
2383 ((struct instance_core__NativeArray*)var227)->values[1]=var229;
2384 if (likely(varonce236!=NULL)) {
2385 var237 = varonce236;
2386 } else {
2387 var238 = "(";
2388 var240 = (val*)(1l<<2|1);
2389 var241 = (val*)(1l<<2|1);
2390 var242 = (val*)((long)(0)<<2|3);
2391 var243 = (val*)((long)(0)<<2|3);
2392 var239 = core__flat___CString___to_s_unsafe(var238, var240, var241, var242, var243);
2393 var237 = var239;
2394 varonce236 = var237;
2395 }
2396 ((struct instance_core__NativeArray*)var227)->values[3]=var237;
2397 if (likely(varonce244!=NULL)) {
2398 var245 = varonce244;
2399 } else {
2400 var246 = ");";
2401 var248 = (val*)(2l<<2|1);
2402 var249 = (val*)(2l<<2|1);
2403 var250 = (val*)((long)(0)<<2|3);
2404 var251 = (val*)((long)(0)<<2|3);
2405 var247 = core__flat___CString___to_s_unsafe(var246, var248, var249, var250, var251);
2406 var245 = var247;
2407 varonce244 = var245;
2408 }
2409 ((struct instance_core__NativeArray*)var227)->values[5]=var245;
2410 } else {
2411 var227 = varonce226;
2412 varonce226 = NULL;
2413 }
2414 {
2415 var252 = ((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)>*/
2416 }
2417 ((struct instance_core__NativeArray*)var227)->values[0]=var252;
2418 ((struct instance_core__NativeArray*)var227)->values[2]=var_externname;
2419 if (likely(varonce253!=NULL)) {
2420 var254 = varonce253;
2421 } else {
2422 var255 = ", ";
2423 var257 = (val*)(2l<<2|1);
2424 var258 = (val*)(2l<<2|1);
2425 var259 = (val*)((long)(0)<<2|3);
2426 var260 = (val*)((long)(0)<<2|3);
2427 var256 = core__flat___CString___to_s_unsafe(var255, var257, var258, var259, var260);
2428 var254 = var256;
2429 varonce253 = var254;
2430 }
2431 {
2432 var261 = core__abstract_text___Collection___join(var_arguments_for_c, var254, ((val*)NULL));
2433 }
2434 ((struct instance_core__NativeArray*)var227)->values[4]=var261;
2435 {
2436 var262 = ((val*(*)(val* self))(var227->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var227); /* native_to_s on <var227:NativeArray[String]>*/
2437 }
2438 varonce226 = var227;
2439 {
2440 nitc___nitc__AbstractCompilerVisitor___add(var_v, var262); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:AbstractCompilerVisitor>*/
2441 }
2442 } else {
2443 if (likely(varonce263!=NULL)) {
2444 var264 = varonce263;
2445 } else {
2446 var265 = "struct nitni_instance* ret_var;";
2447 var267 = (val*)(31l<<2|1);
2448 var268 = (val*)(31l<<2|1);
2449 var269 = (val*)((long)(0)<<2|3);
2450 var270 = (val*)((long)(0)<<2|3);
2451 var266 = core__flat___CString___to_s_unsafe(var265, var267, var268, var269, var270);
2452 var264 = var266;
2453 varonce263 = var264;
2454 }
2455 {
2456 nitc___nitc__AbstractCompilerVisitor___add(var_v, var264); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:AbstractCompilerVisitor>*/
2457 }
2458 if (unlikely(varonce271==NULL)) {
2459 var272 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
2460 if (likely(varonce273!=NULL)) {
2461 var274 = varonce273;
2462 } else {
2463 var275 = "ret_var = ";
2464 var277 = (val*)(10l<<2|1);
2465 var278 = (val*)(10l<<2|1);
2466 var279 = (val*)((long)(0)<<2|3);
2467 var280 = (val*)((long)(0)<<2|3);
2468 var276 = core__flat___CString___to_s_unsafe(var275, var277, var278, var279, var280);
2469 var274 = var276;
2470 varonce273 = var274;
2471 }
2472 ((struct instance_core__NativeArray*)var272)->values[0]=var274;
2473 if (likely(varonce281!=NULL)) {
2474 var282 = varonce281;
2475 } else {
2476 var283 = "(";
2477 var285 = (val*)(1l<<2|1);
2478 var286 = (val*)(1l<<2|1);
2479 var287 = (val*)((long)(0)<<2|3);
2480 var288 = (val*)((long)(0)<<2|3);
2481 var284 = core__flat___CString___to_s_unsafe(var283, var285, var286, var287, var288);
2482 var282 = var284;
2483 varonce281 = var282;
2484 }
2485 ((struct instance_core__NativeArray*)var272)->values[2]=var282;
2486 if (likely(varonce289!=NULL)) {
2487 var290 = varonce289;
2488 } else {
2489 var291 = ");";
2490 var293 = (val*)(2l<<2|1);
2491 var294 = (val*)(2l<<2|1);
2492 var295 = (val*)((long)(0)<<2|3);
2493 var296 = (val*)((long)(0)<<2|3);
2494 var292 = core__flat___CString___to_s_unsafe(var291, var293, var294, var295, var296);
2495 var290 = var292;
2496 varonce289 = var290;
2497 }
2498 ((struct instance_core__NativeArray*)var272)->values[4]=var290;
2499 } else {
2500 var272 = varonce271;
2501 varonce271 = NULL;
2502 }
2503 ((struct instance_core__NativeArray*)var272)->values[1]=var_externname;
2504 if (likely(varonce297!=NULL)) {
2505 var298 = varonce297;
2506 } else {
2507 var299 = ", ";
2508 var301 = (val*)(2l<<2|1);
2509 var302 = (val*)(2l<<2|1);
2510 var303 = (val*)((long)(0)<<2|3);
2511 var304 = (val*)((long)(0)<<2|3);
2512 var300 = core__flat___CString___to_s_unsafe(var299, var301, var302, var303, var304);
2513 var298 = var300;
2514 varonce297 = var298;
2515 }
2516 {
2517 var305 = core__abstract_text___Collection___join(var_arguments_for_c, var298, ((val*)NULL));
2518 }
2519 ((struct instance_core__NativeArray*)var272)->values[3]=var305;
2520 {
2521 var306 = ((val*(*)(val* self))(var272->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var272); /* native_to_s on <var272:NativeArray[String]>*/
2522 }
2523 varonce271 = var272;
2524 {
2525 nitc___nitc__AbstractCompilerVisitor___add(var_v, var306); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:AbstractCompilerVisitor>*/
2526 }
2527 if (unlikely(varonce307==NULL)) {
2528 var308 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
2529 if (likely(varonce309!=NULL)) {
2530 var310 = varonce309;
2531 } else {
2532 var311 = " = ret_var->value;";
2533 var313 = (val*)(18l<<2|1);
2534 var314 = (val*)(18l<<2|1);
2535 var315 = (val*)((long)(0)<<2|3);
2536 var316 = (val*)((long)(0)<<2|3);
2537 var312 = core__flat___CString___to_s_unsafe(var311, var313, var314, var315, var316);
2538 var310 = var312;
2539 varonce309 = var310;
2540 }
2541 ((struct instance_core__NativeArray*)var308)->values[1]=var310;
2542 } else {
2543 var308 = varonce307;
2544 varonce307 = NULL;
2545 }
2546 {
2547 var317 = ((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)>*/
2548 }
2549 ((struct instance_core__NativeArray*)var308)->values[0]=var317;
2550 {
2551 var318 = ((val*(*)(val* self))(var308->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var308); /* native_to_s on <var308:NativeArray[String]>*/
2552 }
2553 varonce307 = var308;
2554 {
2555 nitc___nitc__AbstractCompilerVisitor___add(var_v, var318); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:AbstractCompilerVisitor>*/
2556 }
2557 }
2558 {
2559 var319 = ((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>*/
2560 }
2561 var_recv_var = var319;
2562 {
2563 nitc___nitc__AbstractCompilerVisitor___ret(var_v, var_recv_var); /* Direct call abstract_compiler$AbstractCompilerVisitor$ret on <var_v:AbstractCompilerVisitor>*/
2564 }
2565 }
2566 {
2567 nitc__light___AMethPropdef___compile_ffi_support_to_c(self, var_v); /* Direct call light$AMethPropdef$compile_ffi_support_to_c on <self:AMethPropdef>*/
2568 }
2569 var = 1;
2570 goto RET_LABEL;
2571 RET_LABEL:;
2572 return var;
2573 }
2574 /* method light$AMethPropdef$compile_externinit_to_c for (self: AMethPropdef, AbstractCompilerVisitor, MMethodDef, Array[RuntimeVariable]): Bool */
2575 short int nitc__light___AMethPropdef___compile_externinit_to_c(val* self, val* p0, val* p1, val* p2) {
2576 short int var /* : Bool */;
2577 val* var_v /* var v: AbstractCompilerVisitor */;
2578 val* var_mpropdef /* var mpropdef: MMethodDef */;
2579 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
2580 val* var1 /* : nullable AExternCodeBlock */;
2581 val* var3 /* : nullable AExternCodeBlock */;
2582 short int var4 /* : Bool */;
2583 short int var5 /* : Bool */;
2584 val* var_other /* var other: nullable Object */;
2585 short int var7 /* : Bool */;
2586 short int var9 /* : Bool */;
2587 short int var10 /* : Bool */;
2588 short int var11 /* : Bool */;
2589 short int var12 /* : Bool */;
2590 val* var13 /* : MClassDef */;
2591 val* var15 /* : MClassDef */;
2592 val* var16 /* : MModule */;
2593 val* var18 /* : MModule */;
2594 val* var_mmodule /* var mmodule: MModule */;
2595 val* var20 /* : MClassDef */;
2596 val* var22 /* : MClassDef */;
2597 val* var23 /* : MClassType */;
2598 val* var25 /* : MClassType */;
2599 val* var_mclass_type /* var mclass_type: MClassType */;
2600 val* var26 /* : MProperty */;
2601 val* var28 /* : MProperty */;
2602 val* var29 /* : MClassDef */;
2603 val* var31 /* : MClassDef */;
2604 val* var32 /* : MClassType */;
2605 val* var34 /* : MClassType */;
2606 static val* varonce;
2607 val* var35 /* : String */;
2608 char* var36 /* : CString */;
2609 val* var37 /* : String */;
2610 val* var38 /* : nullable Int */;
2611 val* var39 /* : nullable Int */;
2612 val* var40 /* : nullable Bool */;
2613 val* var41 /* : nullable Bool */;
2614 val* var42 /* : Sys */;
2615 val* var43 /* : SignatureLength */;
2616 val* var44 /* : String */;
2617 val* var_externname /* var externname: String */;
2618 val* var45 /* : nullable Object */;
2619 val* var46 /* : MType */;
2620 val* var48 /* : MType */;
2621 val* var_return_mtype /* var return_mtype: MType */;
2622 val* var49 /* : RuntimeVariable */;
2623 val* var_recv_var /* var recv_var: RuntimeVariable */;
2624 val* var50 /* : nullable Object */;
2625 val* var51 /* : Array[String] */;
2626 val* var_arguments_for_c /* var arguments_for_c: Array[String] */;
2627 long var_a /* var a: Int */;
2628 long var52 /* : Int */;
2629 long var54 /* : Int */;
2630 long var_ /* var : Int */;
2631 short int var55 /* : Bool */;
2632 short int var57 /* : Bool */;
2633 int cltype;
2634 int idtype;
2635 const char* var_class_name;
2636 short int var58 /* : Bool */;
2637 val* var59 /* : nullable Object */;
2638 val* var_arg /* var arg: RuntimeVariable */;
2639 val* var60 /* : nullable MSignature */;
2640 val* var62 /* : nullable MSignature */;
2641 val* var63 /* : Array[MParameter] */;
2642 val* var65 /* : Array[MParameter] */;
2643 val* var66 /* : nullable Object */;
2644 val* var67 /* : MType */;
2645 val* var69 /* : MType */;
2646 val* var_param_mtype /* var param_mtype: MType */;
2647 val* var70 /* : MType */;
2648 short int var71 /* : Bool */;
2649 val* var72 /* : String */;
2650 val* var74 /* : String */;
2651 val* var76 /* : NativeArray[String] */;
2652 static val* varonce75;
2653 static val* varonce77;
2654 val* var78 /* : String */;
2655 char* var79 /* : CString */;
2656 val* var80 /* : String */;
2657 val* var81 /* : nullable Int */;
2658 val* var82 /* : nullable Int */;
2659 val* var83 /* : nullable Bool */;
2660 val* var84 /* : nullable Bool */;
2661 static val* varonce85;
2662 val* var86 /* : String */;
2663 char* var87 /* : CString */;
2664 val* var88 /* : String */;
2665 val* var89 /* : nullable Int */;
2666 val* var90 /* : nullable Int */;
2667 val* var91 /* : nullable Bool */;
2668 val* var92 /* : nullable Bool */;
2669 val* var93 /* : String */;
2670 val* var94 /* : String */;
2671 val* var96 /* : NativeArray[String] */;
2672 static val* varonce95;
2673 static val* varonce97;
2674 val* var98 /* : String */;
2675 char* var99 /* : CString */;
2676 val* var100 /* : String */;
2677 val* var101 /* : nullable Int */;
2678 val* var102 /* : nullable Int */;
2679 val* var103 /* : nullable Bool */;
2680 val* var104 /* : nullable Bool */;
2681 static val* varonce105;
2682 val* var106 /* : String */;
2683 char* var107 /* : CString */;
2684 val* var108 /* : String */;
2685 val* var109 /* : nullable Int */;
2686 val* var110 /* : nullable Int */;
2687 val* var111 /* : nullable Bool */;
2688 val* var112 /* : nullable Bool */;
2689 val* var113 /* : String */;
2690 val* var114 /* : String */;
2691 val* var116 /* : NativeArray[String] */;
2692 static val* varonce115;
2693 static val* varonce117;
2694 val* var118 /* : String */;
2695 char* var119 /* : CString */;
2696 val* var120 /* : String */;
2697 val* var121 /* : nullable Int */;
2698 val* var122 /* : nullable Int */;
2699 val* var123 /* : nullable Bool */;
2700 val* var124 /* : nullable Bool */;
2701 static val* varonce125;
2702 val* var126 /* : String */;
2703 char* var127 /* : CString */;
2704 val* var128 /* : String */;
2705 val* var129 /* : nullable Int */;
2706 val* var130 /* : nullable Int */;
2707 val* var131 /* : nullable Bool */;
2708 val* var132 /* : nullable Bool */;
2709 static val* varonce133;
2710 val* var134 /* : String */;
2711 char* var135 /* : CString */;
2712 val* var136 /* : String */;
2713 val* var137 /* : nullable Int */;
2714 val* var138 /* : nullable Int */;
2715 val* var139 /* : nullable Bool */;
2716 val* var140 /* : nullable Bool */;
2717 val* var141 /* : String */;
2718 val* var142 /* : String */;
2719 val* var144 /* : String */;
2720 val* var145 /* : String */;
2721 val* var147 /* : NativeArray[String] */;
2722 static val* varonce146;
2723 static val* varonce148;
2724 val* var149 /* : String */;
2725 char* var150 /* : CString */;
2726 val* var151 /* : String */;
2727 val* var152 /* : nullable Int */;
2728 val* var153 /* : nullable Int */;
2729 val* var154 /* : nullable Bool */;
2730 val* var155 /* : nullable Bool */;
2731 val* var156 /* : String */;
2732 val* var157 /* : String */;
2733 long var158 /* : Int */;
2734 short int var159 /* : Bool */;
2735 val* var161 /* : NativeArray[String] */;
2736 static val* varonce160;
2737 static val* varonce162;
2738 val* var163 /* : String */;
2739 char* var164 /* : CString */;
2740 val* var165 /* : String */;
2741 val* var166 /* : nullable Int */;
2742 val* var167 /* : nullable Int */;
2743 val* var168 /* : nullable Bool */;
2744 val* var169 /* : nullable Bool */;
2745 static val* varonce170;
2746 val* var171 /* : String */;
2747 char* var172 /* : CString */;
2748 val* var173 /* : String */;
2749 val* var174 /* : nullable Int */;
2750 val* var175 /* : nullable Int */;
2751 val* var176 /* : nullable Bool */;
2752 val* var177 /* : nullable Bool */;
2753 static val* varonce178;
2754 val* var179 /* : String */;
2755 char* var180 /* : CString */;
2756 val* var181 /* : String */;
2757 val* var182 /* : nullable Int */;
2758 val* var183 /* : nullable Int */;
2759 val* var184 /* : nullable Bool */;
2760 val* var185 /* : nullable Bool */;
2761 val* var186 /* : String */;
2762 static val* varonce187;
2763 val* var188 /* : String */;
2764 char* var189 /* : CString */;
2765 val* var190 /* : String */;
2766 val* var191 /* : nullable Int */;
2767 val* var192 /* : nullable Int */;
2768 val* var193 /* : nullable Bool */;
2769 val* var194 /* : nullable Bool */;
2770 val* var195 /* : String */;
2771 val* var196 /* : String */;
2772 static val* varonce197;
2773 val* var198 /* : String */;
2774 char* var199 /* : CString */;
2775 val* var200 /* : String */;
2776 val* var201 /* : nullable Int */;
2777 val* var202 /* : nullable Int */;
2778 val* var203 /* : nullable Bool */;
2779 val* var204 /* : nullable Bool */;
2780 val* var206 /* : NativeArray[String] */;
2781 static val* varonce205;
2782 static val* varonce207;
2783 val* var208 /* : String */;
2784 char* var209 /* : CString */;
2785 val* var210 /* : String */;
2786 val* var211 /* : nullable Int */;
2787 val* var212 /* : nullable Int */;
2788 val* var213 /* : nullable Bool */;
2789 val* var214 /* : nullable Bool */;
2790 static val* varonce215;
2791 val* var216 /* : String */;
2792 char* var217 /* : CString */;
2793 val* var218 /* : String */;
2794 val* var219 /* : nullable Int */;
2795 val* var220 /* : nullable Int */;
2796 val* var221 /* : nullable Bool */;
2797 val* var222 /* : nullable Bool */;
2798 static val* varonce223;
2799 val* var224 /* : String */;
2800 char* var225 /* : CString */;
2801 val* var226 /* : String */;
2802 val* var227 /* : nullable Int */;
2803 val* var228 /* : nullable Int */;
2804 val* var229 /* : nullable Bool */;
2805 val* var230 /* : nullable Bool */;
2806 static val* varonce231;
2807 val* var232 /* : String */;
2808 char* var233 /* : CString */;
2809 val* var234 /* : String */;
2810 val* var235 /* : nullable Int */;
2811 val* var236 /* : nullable Int */;
2812 val* var237 /* : nullable Bool */;
2813 val* var238 /* : nullable Bool */;
2814 val* var239 /* : String */;
2815 val* var240 /* : String */;
2816 val* var242 /* : NativeArray[String] */;
2817 static val* varonce241;
2818 static val* varonce243;
2819 val* var244 /* : String */;
2820 char* var245 /* : CString */;
2821 val* var246 /* : String */;
2822 val* var247 /* : nullable Int */;
2823 val* var248 /* : nullable Int */;
2824 val* var249 /* : nullable Bool */;
2825 val* var250 /* : nullable Bool */;
2826 val* var251 /* : String */;
2827 val* var252 /* : String */;
2828 val* var253 /* : RuntimeVariable */;
2829 var_v = p0;
2830 var_mpropdef = p1;
2831 var_arguments = p2;
2832 {
2833 { /* Inline parser_nodes$AMethPropdef$n_extern_code_block (self) on <self:AMethPropdef> */
2834 var3 = self->attrs[COLOR_nitc__parser_nodes__AMethPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AMethPropdef> */
2835 var1 = var3;
2836 RET_LABEL2:(void)0;
2837 }
2838 }
2839 if (var1 == NULL) {
2840 var4 = 1; /* is null */
2841 } else {
2842 var4 = 0; /* arg is null but recv is not */
2843 }
2844 if (0) {
2845 { /* Inline kernel$Object$== (var1,((val*)NULL)) on <var1:nullable AExternCodeBlock> */
2846 var_other = ((val*)NULL);
2847 {
2848 { /* Inline kernel$Object$is_same_instance (var1,var_other) on <var1:nullable AExternCodeBlock(AExternCodeBlock)> */
2849 var9 = var1 == var_other;
2850 var7 = var9;
2851 goto RET_LABEL8;
2852 RET_LABEL8:(void)0;
2853 }
2854 }
2855 var5 = var7;
2856 goto RET_LABEL6;
2857 RET_LABEL6:(void)0;
2858 }
2859 var4 = var5;
2860 }
2861 if (var4){
2862 {
2863 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>*/
2864 }
2865 var = var10;
2866 goto RET_LABEL;
2867 } else {
2868 }
2869 {
2870 var11 = nitc__light_only___AMethPropdef___accept_externmeth(self);
2871 }
2872 var12 = !var11;
2873 if (var12){
2874 var = 0;
2875 goto RET_LABEL;
2876 } else {
2877 }
2878 {
2879 { /* Inline model$MPropDef$mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
2880 var15 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
2881 if (unlikely(var15 == NULL)) {
2882 if(catchStack.cursor >= 0){
2883 longjmp(catchStack.envs[catchStack.cursor], 1);
2884 }
2885 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
2886 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2354);
2887 fatal_exit(1);
2888 }
2889 var13 = var15;
2890 RET_LABEL14:(void)0;
2891 }
2892 }
2893 {
2894 { /* Inline model$MClassDef$mmodule (var13) on <var13:MClassDef> */
2895 var18 = var13->attrs[COLOR_nitc__model__MClassDef___mmodule].val; /* _mmodule on <var13:MClassDef> */
2896 if (unlikely(var18 == NULL)) {
2897 if(catchStack.cursor >= 0){
2898 longjmp(catchStack.envs[catchStack.cursor], 1);
2899 }
2900 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
2901 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 588);
2902 fatal_exit(1);
2903 }
2904 var16 = var18;
2905 RET_LABEL17:(void)0;
2906 }
2907 }
2908 var_mmodule = var16;
2909 {
2910 { /* Inline light_ffi$MModule$uses_ffi= (var_mmodule,1) on <var_mmodule:MModule> */
2911 var_mmodule->attrs[COLOR_nitc__light_ffi__MModule___uses_ffi].s = 1; /* _uses_ffi on <var_mmodule:MModule> */
2912 RET_LABEL19:(void)0;
2913 }
2914 }
2915 {
2916 { /* Inline model$MPropDef$mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
2917 var22 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
2918 if (unlikely(var22 == NULL)) {
2919 if(catchStack.cursor >= 0){
2920 longjmp(catchStack.envs[catchStack.cursor], 1);
2921 }
2922 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
2923 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2354);
2924 fatal_exit(1);
2925 }
2926 var20 = var22;
2927 RET_LABEL21:(void)0;
2928 }
2929 }
2930 {
2931 { /* Inline model$MClassDef$bound_mtype (var20) on <var20:MClassDef> */
2932 var25 = var20->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var20:MClassDef> */
2933 if (unlikely(var25 == NULL)) {
2934 if(catchStack.cursor >= 0){
2935 longjmp(catchStack.envs[catchStack.cursor], 1);
2936 }
2937 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
2938 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 594);
2939 fatal_exit(1);
2940 }
2941 var23 = var25;
2942 RET_LABEL24:(void)0;
2943 }
2944 }
2945 var_mclass_type = var23;
2946 {
2947 { /* Inline model$MPropDef$mproperty (var_mpropdef) on <var_mpropdef:MMethodDef> */
2948 var28 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MMethodDef> */
2949 if (unlikely(var28 == NULL)) {
2950 if(catchStack.cursor >= 0){
2951 longjmp(catchStack.envs[catchStack.cursor], 1);
2952 }
2953 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
2954 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2357);
2955 fatal_exit(1);
2956 }
2957 var26 = var28;
2958 RET_LABEL27:(void)0;
2959 }
2960 }
2961 {
2962 { /* Inline model$MPropDef$mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
2963 var31 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
2964 if (unlikely(var31 == NULL)) {
2965 if(catchStack.cursor >= 0){
2966 longjmp(catchStack.envs[catchStack.cursor], 1);
2967 }
2968 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
2969 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2354);
2970 fatal_exit(1);
2971 }
2972 var29 = var31;
2973 RET_LABEL30:(void)0;
2974 }
2975 }
2976 {
2977 { /* Inline model$MClassDef$bound_mtype (var29) on <var29:MClassDef> */
2978 var34 = var29->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var29:MClassDef> */
2979 if (unlikely(var34 == NULL)) {
2980 if(catchStack.cursor >= 0){
2981 longjmp(catchStack.envs[catchStack.cursor], 1);
2982 }
2983 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
2984 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 594);
2985 fatal_exit(1);
2986 }
2987 var32 = var34;
2988 RET_LABEL33:(void)0;
2989 }
2990 }
2991 if (likely(varonce!=NULL)) {
2992 var35 = varonce;
2993 } else {
2994 var36 = "___impl";
2995 var38 = (val*)(7l<<2|1);
2996 var39 = (val*)(7l<<2|1);
2997 var40 = (val*)((long)(0)<<2|3);
2998 var41 = (val*)((long)(0)<<2|3);
2999 var37 = core__flat___CString___to_s_unsafe(var36, var38, var39, var40, var41);
3000 var35 = var37;
3001 varonce = var35;
3002 }
3003 var42 = glob_sys;
3004 {
3005 var43 = nitc__nitni_utilities___core__Sys___long_signature(var42);
3006 }
3007 {
3008 var44 = nitc__nitni_utilities___MMethod___build_cname(var26, var32, var_mmodule, var35, var43);
3009 }
3010 var_externname = var44;
3011 {
3012 var45 = core___core__SequenceRead___Collection__first(var_arguments);
3013 }
3014 {
3015 { /* Inline abstract_compiler$RuntimeVariable$mtype (var45) on <var45:nullable Object(RuntimeVariable)> */
3016 var48 = var45->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var45:nullable Object(RuntimeVariable)> */
3017 if (unlikely(var48 == NULL)) {
3018 if(catchStack.cursor >= 0){
3019 longjmp(catchStack.envs[catchStack.cursor], 1);
3020 }
3021 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3022 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1983);
3023 fatal_exit(1);
3024 }
3025 var46 = var48;
3026 RET_LABEL47:(void)0;
3027 }
3028 }
3029 var_return_mtype = var46;
3030 {
3031 var49 = nitc___nitc__AbstractCompilerVisitor___new_var(var_v, var_return_mtype);
3032 }
3033 var_recv_var = var49;
3034 {
3035 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>*/
3036 }
3037 {
3038 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>*/
3039 }
3040 {
3041 var50 = core___core__AbstractArray___core__abstract_collection__Sequence__shift(var_arguments);
3042 }
3043 var51 = NEW_core__Array(&type_core__Array__core__String);
3044 {
3045 core___core__Array___core__kernel__Object__init(var51); /* Direct call array$Array$init on <var51:Array[String]>*/
3046 }
3047 var_arguments_for_c = var51;
3048 var_a = 0l;
3049 {
3050 { /* Inline array$AbstractArrayRead$length (var_arguments) on <var_arguments:Array[RuntimeVariable]> */
3051 var54 = var_arguments->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_arguments:Array[RuntimeVariable]> */
3052 var52 = var54;
3053 RET_LABEL53:(void)0;
3054 }
3055 }
3056 var_ = var52;
3057 for(;;) {
3058 {
3059 { /* Inline kernel$Int$< (var_a,var_) on <var_a:Int> */
3060 /* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
3061 /* <var_:Int> isa OTHER */
3062 var57 = 1; /* easy <var_:Int> isa OTHER*/
3063 if (unlikely(!var57)) {
3064 var_class_name = type_core__Int.name;
3065 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3066 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
3067 fatal_exit(1);
3068 }
3069 var58 = var_a < var_;
3070 var55 = var58;
3071 goto RET_LABEL56;
3072 RET_LABEL56:(void)0;
3073 }
3074 }
3075 if (var55){
3076 } else {
3077 goto BREAK_label;
3078 }
3079 {
3080 var59 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_arguments, var_a);
3081 }
3082 var_arg = var59;
3083 {
3084 { /* Inline model$MMethodDef$msignature (var_mpropdef) on <var_mpropdef:MMethodDef> */
3085 var62 = var_mpropdef->attrs[COLOR_nitc__model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:MMethodDef> */
3086 var60 = var62;
3087 RET_LABEL61:(void)0;
3088 }
3089 }
3090 if (var60 == NULL) {
3091 if(catchStack.cursor >= 0){
3092 longjmp(catchStack.envs[catchStack.cursor], 1);
3093 }
3094 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3095 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light, 195);
3096 fatal_exit(1);
3097 } else {
3098 { /* Inline model$MSignature$mparameters (var60) on <var60:nullable MSignature> */
3099 if (unlikely(var60 == NULL)) {
3100 if(catchStack.cursor >= 0){
3101 longjmp(catchStack.envs[catchStack.cursor], 1);
3102 }
3103 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3104 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1879);
3105 fatal_exit(1);
3106 }
3107 var65 = var60->attrs[COLOR_nitc__model__MSignature___mparameters].val; /* _mparameters on <var60:nullable MSignature> */
3108 if (unlikely(var65 == NULL)) {
3109 if(catchStack.cursor >= 0){
3110 longjmp(catchStack.envs[catchStack.cursor], 1);
3111 }
3112 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
3113 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1879);
3114 fatal_exit(1);
3115 }
3116 var63 = var65;
3117 RET_LABEL64:(void)0;
3118 }
3119 }
3120 {
3121 var66 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var63, var_a);
3122 }
3123 {
3124 { /* Inline model$MParameter$mtype (var66) on <var66:nullable Object(MParameter)> */
3125 var69 = var66->attrs[COLOR_nitc__model__MParameter___mtype].val; /* _mtype on <var66:nullable Object(MParameter)> */
3126 if (unlikely(var69 == NULL)) {
3127 if(catchStack.cursor >= 0){
3128 longjmp(catchStack.envs[catchStack.cursor], 1);
3129 }
3130 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3131 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1996);
3132 fatal_exit(1);
3133 }
3134 var67 = var69;
3135 RET_LABEL68:(void)0;
3136 }
3137 }
3138 var_param_mtype = var67;
3139 {
3140 var70 = ((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>*/
3141 }
3142 var_param_mtype = var70;
3143 {
3144 var71 = ((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>*/
3145 }
3146 if (var71){
3147 {
3148 { /* Inline abstract_compiler$RuntimeVariable$name (var_arg) on <var_arg:RuntimeVariable> */
3149 var74 = var_arg->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___name].val; /* _name on <var_arg:RuntimeVariable> */
3150 if (unlikely(var74 == NULL)) {
3151 if(catchStack.cursor >= 0){
3152 longjmp(catchStack.envs[catchStack.cursor], 1);
3153 }
3154 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
3155 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1980);
3156 fatal_exit(1);
3157 }
3158 var72 = var74;
3159 RET_LABEL73:(void)0;
3160 }
3161 }
3162 {
3163 core___core__Array___core__abstract_collection__SimpleCollection__add(var_arguments_for_c, var72); /* Direct call array$Array$add on <var_arguments_for_c:Array[String]>*/
3164 }
3165 } else {
3166 if (unlikely(varonce75==NULL)) {
3167 var76 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
3168 if (likely(varonce77!=NULL)) {
3169 var78 = varonce77;
3170 } else {
3171 var79 = "struct nitni_instance* var_for_c_";
3172 var81 = (val*)(33l<<2|1);
3173 var82 = (val*)(33l<<2|1);
3174 var83 = (val*)((long)(0)<<2|3);
3175 var84 = (val*)((long)(0)<<2|3);
3176 var80 = core__flat___CString___to_s_unsafe(var79, var81, var82, var83, var84);
3177 var78 = var80;
3178 varonce77 = var78;
3179 }
3180 ((struct instance_core__NativeArray*)var76)->values[0]=var78;
3181 if (likely(varonce85!=NULL)) {
3182 var86 = varonce85;
3183 } else {
3184 var87 = ";";
3185 var89 = (val*)(1l<<2|1);
3186 var90 = (val*)(1l<<2|1);
3187 var91 = (val*)((long)(0)<<2|3);
3188 var92 = (val*)((long)(0)<<2|3);
3189 var88 = core__flat___CString___to_s_unsafe(var87, var89, var90, var91, var92);
3190 var86 = var88;
3191 varonce85 = var86;
3192 }
3193 ((struct instance_core__NativeArray*)var76)->values[2]=var86;
3194 } else {
3195 var76 = varonce75;
3196 varonce75 = NULL;
3197 }
3198 var93 = core__flat___Int___core__abstract_text__Object__to_s(var_a);
3199 ((struct instance_core__NativeArray*)var76)->values[1]=var93;
3200 {
3201 var94 = ((val*(*)(val* self))(var76->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var76); /* native_to_s on <var76:NativeArray[String]>*/
3202 }
3203 varonce75 = var76;
3204 {
3205 nitc___nitc__AbstractCompilerVisitor___add(var_v, var94); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:AbstractCompilerVisitor>*/
3206 }
3207 if (unlikely(varonce95==NULL)) {
3208 var96 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
3209 if (likely(varonce97!=NULL)) {
3210 var98 = varonce97;
3211 } else {
3212 var99 = "var_for_c_";
3213 var101 = (val*)(10l<<2|1);
3214 var102 = (val*)(10l<<2|1);
3215 var103 = (val*)((long)(0)<<2|3);
3216 var104 = (val*)((long)(0)<<2|3);
3217 var100 = core__flat___CString___to_s_unsafe(var99, var101, var102, var103, var104);
3218 var98 = var100;
3219 varonce97 = var98;
3220 }
3221 ((struct instance_core__NativeArray*)var96)->values[0]=var98;
3222 if (likely(varonce105!=NULL)) {
3223 var106 = varonce105;
3224 } else {
3225 var107 = " = nit_alloc(sizeof(struct nitni_instance));";
3226 var109 = (val*)(44l<<2|1);
3227 var110 = (val*)(44l<<2|1);
3228 var111 = (val*)((long)(0)<<2|3);
3229 var112 = (val*)((long)(0)<<2|3);
3230 var108 = core__flat___CString___to_s_unsafe(var107, var109, var110, var111, var112);
3231 var106 = var108;
3232 varonce105 = var106;
3233 }
3234 ((struct instance_core__NativeArray*)var96)->values[2]=var106;
3235 } else {
3236 var96 = varonce95;
3237 varonce95 = NULL;
3238 }
3239 var113 = core__flat___Int___core__abstract_text__Object__to_s(var_a);
3240 ((struct instance_core__NativeArray*)var96)->values[1]=var113;
3241 {
3242 var114 = ((val*(*)(val* self))(var96->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var96); /* native_to_s on <var96:NativeArray[String]>*/
3243 }
3244 varonce95 = var96;
3245 {
3246 nitc___nitc__AbstractCompilerVisitor___add(var_v, var114); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:AbstractCompilerVisitor>*/
3247 }
3248 if (unlikely(varonce115==NULL)) {
3249 var116 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
3250 if (likely(varonce117!=NULL)) {
3251 var118 = varonce117;
3252 } else {
3253 var119 = "var_for_c_";
3254 var121 = (val*)(10l<<2|1);
3255 var122 = (val*)(10l<<2|1);
3256 var123 = (val*)((long)(0)<<2|3);
3257 var124 = (val*)((long)(0)<<2|3);
3258 var120 = core__flat___CString___to_s_unsafe(var119, var121, var122, var123, var124);
3259 var118 = var120;
3260 varonce117 = var118;
3261 }
3262 ((struct instance_core__NativeArray*)var116)->values[0]=var118;
3263 if (likely(varonce125!=NULL)) {
3264 var126 = varonce125;
3265 } else {
3266 var127 = "->value = ";
3267 var129 = (val*)(10l<<2|1);
3268 var130 = (val*)(10l<<2|1);
3269 var131 = (val*)((long)(0)<<2|3);
3270 var132 = (val*)((long)(0)<<2|3);
3271 var128 = core__flat___CString___to_s_unsafe(var127, var129, var130, var131, var132);
3272 var126 = var128;
3273 varonce125 = var126;
3274 }
3275 ((struct instance_core__NativeArray*)var116)->values[2]=var126;
3276 if (likely(varonce133!=NULL)) {
3277 var134 = varonce133;
3278 } else {
3279 var135 = ";";
3280 var137 = (val*)(1l<<2|1);
3281 var138 = (val*)(1l<<2|1);
3282 var139 = (val*)((long)(0)<<2|3);
3283 var140 = (val*)((long)(0)<<2|3);
3284 var136 = core__flat___CString___to_s_unsafe(var135, var137, var138, var139, var140);
3285 var134 = var136;
3286 varonce133 = var134;
3287 }
3288 ((struct instance_core__NativeArray*)var116)->values[4]=var134;
3289 } else {
3290 var116 = varonce115;
3291 varonce115 = NULL;
3292 }
3293 var141 = core__flat___Int___core__abstract_text__Object__to_s(var_a);
3294 ((struct instance_core__NativeArray*)var116)->values[1]=var141;
3295 {
3296 { /* Inline abstract_compiler$RuntimeVariable$name (var_arg) on <var_arg:RuntimeVariable> */
3297 var144 = var_arg->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___name].val; /* _name on <var_arg:RuntimeVariable> */
3298 if (unlikely(var144 == NULL)) {
3299 if(catchStack.cursor >= 0){
3300 longjmp(catchStack.envs[catchStack.cursor], 1);
3301 }
3302 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
3303 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1980);
3304 fatal_exit(1);
3305 }
3306 var142 = var144;
3307 RET_LABEL143:(void)0;
3308 }
3309 }
3310 ((struct instance_core__NativeArray*)var116)->values[3]=var142;
3311 {
3312 var145 = ((val*(*)(val* self))(var116->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var116); /* native_to_s on <var116:NativeArray[String]>*/
3313 }
3314 varonce115 = var116;
3315 {
3316 nitc___nitc__AbstractCompilerVisitor___add(var_v, var145); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:AbstractCompilerVisitor>*/
3317 }
3318 if (unlikely(varonce146==NULL)) {
3319 var147 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
3320 if (likely(varonce148!=NULL)) {
3321 var149 = varonce148;
3322 } else {
3323 var150 = "var_for_c_";
3324 var152 = (val*)(10l<<2|1);
3325 var153 = (val*)(10l<<2|1);
3326 var154 = (val*)((long)(0)<<2|3);
3327 var155 = (val*)((long)(0)<<2|3);
3328 var151 = core__flat___CString___to_s_unsafe(var150, var152, var153, var154, var155);
3329 var149 = var151;
3330 varonce148 = var149;
3331 }
3332 ((struct instance_core__NativeArray*)var147)->values[0]=var149;
3333 } else {
3334 var147 = varonce146;
3335 varonce146 = NULL;
3336 }
3337 var156 = core__flat___Int___core__abstract_text__Object__to_s(var_a);
3338 ((struct instance_core__NativeArray*)var147)->values[1]=var156;
3339 {
3340 var157 = ((val*(*)(val* self))(var147->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var147); /* native_to_s on <var147:NativeArray[String]>*/
3341 }
3342 varonce146 = var147;
3343 {
3344 core___core__Array___core__abstract_collection__SimpleCollection__add(var_arguments_for_c, var157); /* Direct call array$Array$add on <var_arguments_for_c:Array[String]>*/
3345 }
3346 }
3347 {
3348 var158 = core___core__Int___Discrete__successor(var_a, 1l);
3349 }
3350 var_a = var158;
3351 }
3352 BREAK_label: (void)0;
3353 {
3354 var159 = ((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>*/
3355 }
3356 if (var159){
3357 if (unlikely(varonce160==NULL)) {
3358 var161 = NEW_core__NativeArray((int)6l, &type_core__NativeArray__core__String);
3359 if (likely(varonce162!=NULL)) {
3360 var163 = varonce162;
3361 } else {
3362 var164 = " = ";
3363 var166 = (val*)(3l<<2|1);
3364 var167 = (val*)(3l<<2|1);
3365 var168 = (val*)((long)(0)<<2|3);
3366 var169 = (val*)((long)(0)<<2|3);
3367 var165 = core__flat___CString___to_s_unsafe(var164, var166, var167, var168, var169);
3368 var163 = var165;
3369 varonce162 = var163;
3370 }
3371 ((struct instance_core__NativeArray*)var161)->values[1]=var163;
3372 if (likely(varonce170!=NULL)) {
3373 var171 = varonce170;
3374 } else {
3375 var172 = "(";
3376 var174 = (val*)(1l<<2|1);
3377 var175 = (val*)(1l<<2|1);
3378 var176 = (val*)((long)(0)<<2|3);
3379 var177 = (val*)((long)(0)<<2|3);
3380 var173 = core__flat___CString___to_s_unsafe(var172, var174, var175, var176, var177);
3381 var171 = var173;
3382 varonce170 = var171;
3383 }
3384 ((struct instance_core__NativeArray*)var161)->values[3]=var171;
3385 if (likely(varonce178!=NULL)) {
3386 var179 = varonce178;
3387 } else {
3388 var180 = ");";
3389 var182 = (val*)(2l<<2|1);
3390 var183 = (val*)(2l<<2|1);
3391 var184 = (val*)((long)(0)<<2|3);
3392 var185 = (val*)((long)(0)<<2|3);
3393 var181 = core__flat___CString___to_s_unsafe(var180, var182, var183, var184, var185);
3394 var179 = var181;
3395 varonce178 = var179;
3396 }
3397 ((struct instance_core__NativeArray*)var161)->values[5]=var179;
3398 } else {
3399 var161 = varonce160;
3400 varonce160 = NULL;
3401 }
3402 {
3403 var186 = ((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>*/
3404 }
3405 ((struct instance_core__NativeArray*)var161)->values[0]=var186;
3406 ((struct instance_core__NativeArray*)var161)->values[2]=var_externname;
3407 if (likely(varonce187!=NULL)) {
3408 var188 = varonce187;
3409 } else {
3410 var189 = ", ";
3411 var191 = (val*)(2l<<2|1);
3412 var192 = (val*)(2l<<2|1);
3413 var193 = (val*)((long)(0)<<2|3);
3414 var194 = (val*)((long)(0)<<2|3);
3415 var190 = core__flat___CString___to_s_unsafe(var189, var191, var192, var193, var194);
3416 var188 = var190;
3417 varonce187 = var188;
3418 }
3419 {
3420 var195 = core__abstract_text___Collection___join(var_arguments_for_c, var188, ((val*)NULL));
3421 }
3422 ((struct instance_core__NativeArray*)var161)->values[4]=var195;
3423 {
3424 var196 = ((val*(*)(val* self))(var161->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var161); /* native_to_s on <var161:NativeArray[String]>*/
3425 }
3426 varonce160 = var161;
3427 {
3428 nitc___nitc__AbstractCompilerVisitor___add(var_v, var196); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:AbstractCompilerVisitor>*/
3429 }
3430 } else {
3431 if (likely(varonce197!=NULL)) {
3432 var198 = varonce197;
3433 } else {
3434 var199 = "struct nitni_instance* ret_var;";
3435 var201 = (val*)(31l<<2|1);
3436 var202 = (val*)(31l<<2|1);
3437 var203 = (val*)((long)(0)<<2|3);
3438 var204 = (val*)((long)(0)<<2|3);
3439 var200 = core__flat___CString___to_s_unsafe(var199, var201, var202, var203, var204);
3440 var198 = var200;
3441 varonce197 = var198;
3442 }
3443 {
3444 nitc___nitc__AbstractCompilerVisitor___add(var_v, var198); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:AbstractCompilerVisitor>*/
3445 }
3446 if (unlikely(varonce205==NULL)) {
3447 var206 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
3448 if (likely(varonce207!=NULL)) {
3449 var208 = varonce207;
3450 } else {
3451 var209 = "ret_var = ";
3452 var211 = (val*)(10l<<2|1);
3453 var212 = (val*)(10l<<2|1);
3454 var213 = (val*)((long)(0)<<2|3);
3455 var214 = (val*)((long)(0)<<2|3);
3456 var210 = core__flat___CString___to_s_unsafe(var209, var211, var212, var213, var214);
3457 var208 = var210;
3458 varonce207 = var208;
3459 }
3460 ((struct instance_core__NativeArray*)var206)->values[0]=var208;
3461 if (likely(varonce215!=NULL)) {
3462 var216 = varonce215;
3463 } else {
3464 var217 = "(";
3465 var219 = (val*)(1l<<2|1);
3466 var220 = (val*)(1l<<2|1);
3467 var221 = (val*)((long)(0)<<2|3);
3468 var222 = (val*)((long)(0)<<2|3);
3469 var218 = core__flat___CString___to_s_unsafe(var217, var219, var220, var221, var222);
3470 var216 = var218;
3471 varonce215 = var216;
3472 }
3473 ((struct instance_core__NativeArray*)var206)->values[2]=var216;
3474 if (likely(varonce223!=NULL)) {
3475 var224 = varonce223;
3476 } else {
3477 var225 = ");";
3478 var227 = (val*)(2l<<2|1);
3479 var228 = (val*)(2l<<2|1);
3480 var229 = (val*)((long)(0)<<2|3);
3481 var230 = (val*)((long)(0)<<2|3);
3482 var226 = core__flat___CString___to_s_unsafe(var225, var227, var228, var229, var230);
3483 var224 = var226;
3484 varonce223 = var224;
3485 }
3486 ((struct instance_core__NativeArray*)var206)->values[4]=var224;
3487 } else {
3488 var206 = varonce205;
3489 varonce205 = NULL;
3490 }
3491 ((struct instance_core__NativeArray*)var206)->values[1]=var_externname;
3492 if (likely(varonce231!=NULL)) {
3493 var232 = varonce231;
3494 } else {
3495 var233 = ", ";
3496 var235 = (val*)(2l<<2|1);
3497 var236 = (val*)(2l<<2|1);
3498 var237 = (val*)((long)(0)<<2|3);
3499 var238 = (val*)((long)(0)<<2|3);
3500 var234 = core__flat___CString___to_s_unsafe(var233, var235, var236, var237, var238);
3501 var232 = var234;
3502 varonce231 = var232;
3503 }
3504 {
3505 var239 = core__abstract_text___Collection___join(var_arguments_for_c, var232, ((val*)NULL));
3506 }
3507 ((struct instance_core__NativeArray*)var206)->values[3]=var239;
3508 {
3509 var240 = ((val*(*)(val* self))(var206->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var206); /* native_to_s on <var206:NativeArray[String]>*/
3510 }
3511 varonce205 = var206;
3512 {
3513 nitc___nitc__AbstractCompilerVisitor___add(var_v, var240); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:AbstractCompilerVisitor>*/
3514 }
3515 if (unlikely(varonce241==NULL)) {
3516 var242 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
3517 if (likely(varonce243!=NULL)) {
3518 var244 = varonce243;
3519 } else {
3520 var245 = " = ret_var->value;";
3521 var247 = (val*)(18l<<2|1);
3522 var248 = (val*)(18l<<2|1);
3523 var249 = (val*)((long)(0)<<2|3);
3524 var250 = (val*)((long)(0)<<2|3);
3525 var246 = core__flat___CString___to_s_unsafe(var245, var247, var248, var249, var250);
3526 var244 = var246;
3527 varonce243 = var244;
3528 }
3529 ((struct instance_core__NativeArray*)var242)->values[1]=var244;
3530 } else {
3531 var242 = varonce241;
3532 varonce241 = NULL;
3533 }
3534 {
3535 var251 = ((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>*/
3536 }
3537 ((struct instance_core__NativeArray*)var242)->values[0]=var251;
3538 {
3539 var252 = ((val*(*)(val* self))(var242->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var242); /* native_to_s on <var242:NativeArray[String]>*/
3540 }
3541 varonce241 = var242;
3542 {
3543 nitc___nitc__AbstractCompilerVisitor___add(var_v, var252); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <var_v:AbstractCompilerVisitor>*/
3544 }
3545 }
3546 {
3547 var253 = ((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>*/
3548 }
3549 var_recv_var = var253;
3550 {
3551 nitc___nitc__AbstractCompilerVisitor___ret(var_v, var_recv_var); /* Direct call abstract_compiler$AbstractCompilerVisitor$ret on <var_v:AbstractCompilerVisitor>*/
3552 }
3553 {
3554 nitc__light___AMethPropdef___compile_ffi_support_to_c(self, var_v); /* Direct call light$AMethPropdef$compile_ffi_support_to_c on <self:AMethPropdef>*/
3555 }
3556 var = 1;
3557 goto RET_LABEL;
3558 RET_LABEL:;
3559 return var;
3560 }
3561 /* method light$CCompilationUnit$write_as_nitni for (self: CCompilationUnit, MModule, String) */
3562 void nitc__light___CCompilationUnit___write_as_nitni(val* self, val* p0, val* p1) {
3563 val* var_mmodule /* var mmodule: MModule */;
3564 val* var_compdir /* var compdir: String */;
3565 val* var /* : NativeArray[String] */;
3566 static val* varonce;
3567 static val* varonce1;
3568 val* var2 /* : String */;
3569 char* var3 /* : CString */;
3570 val* var4 /* : String */;
3571 val* var5 /* : nullable Int */;
3572 val* var6 /* : nullable Int */;
3573 val* var7 /* : nullable Bool */;
3574 val* var8 /* : nullable Bool */;
3575 val* var9 /* : String */;
3576 val* var10 /* : String */;
3577 val* var_base_name /* var base_name: String */;
3578 val* var12 /* : NativeArray[String] */;
3579 static val* varonce11;
3580 static val* varonce13;
3581 val* var14 /* : String */;
3582 char* var15 /* : CString */;
3583 val* var16 /* : String */;
3584 val* var17 /* : nullable Int */;
3585 val* var18 /* : nullable Int */;
3586 val* var19 /* : nullable Bool */;
3587 val* var20 /* : nullable Bool */;
3588 val* var21 /* : String */;
3589 val* var_h_file /* var h_file: String */;
3590 val* var23 /* : NativeArray[String] */;
3591 static val* varonce22;
3592 static val* varonce24;
3593 val* var25 /* : String */;
3594 char* var26 /* : CString */;
3595 val* var27 /* : String */;
3596 val* var28 /* : nullable Int */;
3597 val* var29 /* : nullable Int */;
3598 val* var30 /* : nullable Bool */;
3599 val* var31 /* : nullable Bool */;
3600 val* var32 /* : String */;
3601 val* var33 /* : Array[String] */;
3602 val* var35 /* : NativeArray[String] */;
3603 static val* varonce34;
3604 static val* varonce36;
3605 val* var37 /* : String */;
3606 char* var38 /* : CString */;
3607 val* var39 /* : String */;
3608 val* var40 /* : nullable Int */;
3609 val* var41 /* : nullable Int */;
3610 val* var42 /* : nullable Bool */;
3611 val* var43 /* : nullable Bool */;
3612 val* var44 /* : String */;
3613 val* var45 /* : String */;
3614 val* var46 /* : Text */;
3615 val* var47 /* : String */;
3616 val* var49 /* : NativeArray[String] */;
3617 static val* varonce48;
3618 static val* varonce50;
3619 val* var51 /* : String */;
3620 char* var52 /* : CString */;
3621 val* var53 /* : String */;
3622 val* var54 /* : nullable Int */;
3623 val* var55 /* : nullable Int */;
3624 val* var56 /* : nullable Bool */;
3625 val* var57 /* : nullable Bool */;
3626 val* var58 /* : String */;
3627 val* var_c_file /* var c_file: String */;
3628 val* var60 /* : NativeArray[String] */;
3629 static val* varonce59;
3630 static val* varonce61;
3631 val* var62 /* : String */;
3632 char* var63 /* : CString */;
3633 val* var64 /* : String */;
3634 val* var65 /* : nullable Int */;
3635 val* var66 /* : nullable Int */;
3636 val* var67 /* : nullable Bool */;
3637 val* var68 /* : nullable Bool */;
3638 val* var69 /* : String */;
3639 val* var70 /* : Array[String] */;
3640 val* var_ /* var : Array[String] */;
3641 val* var72 /* : NativeArray[String] */;
3642 static val* varonce71;
3643 static val* varonce73;
3644 val* var74 /* : String */;
3645 char* var75 /* : CString */;
3646 val* var76 /* : String */;
3647 val* var77 /* : nullable Int */;
3648 val* var78 /* : nullable Int */;
3649 val* var79 /* : nullable Bool */;
3650 val* var80 /* : nullable Bool */;
3651 static val* varonce81;
3652 val* var82 /* : String */;
3653 char* var83 /* : CString */;
3654 val* var84 /* : String */;
3655 val* var85 /* : nullable Int */;
3656 val* var86 /* : nullable Int */;
3657 val* var87 /* : nullable Bool */;
3658 val* var88 /* : nullable Bool */;
3659 val* var89 /* : String */;
3660 val* var90 /* : Array[String] */;
3661 val* var92 /* : Array[String] */;
3662 val* var94 /* : NativeArray[String] */;
3663 static val* varonce93;
3664 static val* varonce95;
3665 val* var96 /* : String */;
3666 char* var97 /* : CString */;
3667 val* var98 /* : String */;
3668 val* var99 /* : nullable Int */;
3669 val* var100 /* : nullable Int */;
3670 val* var101 /* : nullable Bool */;
3671 val* var102 /* : nullable Bool */;
3672 val* var103 /* : String */;
3673 var_mmodule = p0;
3674 var_compdir = p1;
3675 if (unlikely(varonce==NULL)) {
3676 var = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
3677 if (likely(varonce1!=NULL)) {
3678 var2 = varonce1;
3679 } else {
3680 var3 = "._nitni";
3681 var5 = (val*)(7l<<2|1);
3682 var6 = (val*)(7l<<2|1);
3683 var7 = (val*)((long)(0)<<2|3);
3684 var8 = (val*)((long)(0)<<2|3);
3685 var4 = core__flat___CString___to_s_unsafe(var3, var5, var6, var7, var8);
3686 var2 = var4;
3687 varonce1 = var2;
3688 }
3689 ((struct instance_core__NativeArray*)var)->values[1]=var2;
3690 } else {
3691 var = varonce;
3692 varonce = NULL;
3693 }
3694 {
3695 var9 = nitc___nitc__MModule___nitc__model_base__MEntity__c_name(var_mmodule);
3696 }
3697 ((struct instance_core__NativeArray*)var)->values[0]=var9;
3698 {
3699 var10 = ((val*(*)(val* self))(var->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var); /* native_to_s on <var:NativeArray[String]>*/
3700 }
3701 varonce = var;
3702 var_base_name = var10;
3703 if (unlikely(varonce11==NULL)) {
3704 var12 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
3705 if (likely(varonce13!=NULL)) {
3706 var14 = varonce13;
3707 } else {
3708 var15 = ".h";
3709 var17 = (val*)(2l<<2|1);
3710 var18 = (val*)(2l<<2|1);
3711 var19 = (val*)((long)(0)<<2|3);
3712 var20 = (val*)((long)(0)<<2|3);
3713 var16 = core__flat___CString___to_s_unsafe(var15, var17, var18, var19, var20);
3714 var14 = var16;
3715 varonce13 = var14;
3716 }
3717 ((struct instance_core__NativeArray*)var12)->values[1]=var14;
3718 } else {
3719 var12 = varonce11;
3720 varonce11 = NULL;
3721 }
3722 ((struct instance_core__NativeArray*)var12)->values[0]=var_base_name;
3723 {
3724 var21 = ((val*(*)(val* self))(var12->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var12); /* native_to_s on <var12:NativeArray[String]>*/
3725 }
3726 varonce11 = var12;
3727 var_h_file = var21;
3728 if (unlikely(varonce22==NULL)) {
3729 var23 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
3730 if (likely(varonce24!=NULL)) {
3731 var25 = varonce24;
3732 } else {
3733 var26 = "/";
3734 var28 = (val*)(1l<<2|1);
3735 var29 = (val*)(1l<<2|1);
3736 var30 = (val*)((long)(0)<<2|3);
3737 var31 = (val*)((long)(0)<<2|3);
3738 var27 = core__flat___CString___to_s_unsafe(var26, var28, var29, var30, var31);
3739 var25 = var27;
3740 varonce24 = var25;
3741 }
3742 ((struct instance_core__NativeArray*)var23)->values[1]=var25;
3743 } else {
3744 var23 = varonce22;
3745 varonce22 = NULL;
3746 }
3747 ((struct instance_core__NativeArray*)var23)->values[0]=var_compdir;
3748 ((struct instance_core__NativeArray*)var23)->values[2]=var_h_file;
3749 {
3750 var32 = ((val*(*)(val* self))(var23->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var23); /* native_to_s on <var23:NativeArray[String]>*/
3751 }
3752 varonce22 = var23;
3753 var33 = NEW_core__Array(&type_core__Array__core__String);
3754 {
3755 core___core__Array___core__kernel__Object__init(var33); /* Direct call array$Array$init on <var33:Array[String]>*/
3756 }
3757 if (unlikely(varonce34==NULL)) {
3758 var35 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
3759 if (likely(varonce36!=NULL)) {
3760 var37 = varonce36;
3761 } else {
3762 var38 = "_NITG_NITNI_H";
3763 var40 = (val*)(13l<<2|1);
3764 var41 = (val*)(13l<<2|1);
3765 var42 = (val*)((long)(0)<<2|3);
3766 var43 = (val*)((long)(0)<<2|3);
3767 var39 = core__flat___CString___to_s_unsafe(var38, var40, var41, var42, var43);
3768 var37 = var39;
3769 varonce36 = var37;
3770 }
3771 ((struct instance_core__NativeArray*)var35)->values[1]=var37;
3772 } else {
3773 var35 = varonce34;
3774 varonce34 = NULL;
3775 }
3776 {
3777 var44 = nitc___nitc__MModule___nitc__model_base__MEntity__c_name(var_mmodule);
3778 }
3779 {
3780 var45 = core___core__String___Object__to_s(var44);
3781 }
3782 {
3783 var46 = ((val*(*)(val* self))(var45->class->vft[COLOR_core__abstract_text__Text__to_upper]))(var45); /* to_upper on <var45:String>*/
3784 }
3785 ((struct instance_core__NativeArray*)var35)->values[0]=var46;
3786 {
3787 var47 = ((val*(*)(val* self))(var35->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var35); /* native_to_s on <var35:NativeArray[String]>*/
3788 }
3789 varonce34 = var35;
3790 {
3791 nitc__light_ffi_base___CCompilationUnit___write_header_to_file(self, var_mmodule, var32, var33, var47); /* Direct call light_ffi_base$CCompilationUnit$write_header_to_file on <self:CCompilationUnit>*/
3792 }
3793 if (unlikely(varonce48==NULL)) {
3794 var49 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
3795 if (likely(varonce50!=NULL)) {
3796 var51 = varonce50;
3797 } else {
3798 var52 = ".c";
3799 var54 = (val*)(2l<<2|1);
3800 var55 = (val*)(2l<<2|1);
3801 var56 = (val*)((long)(0)<<2|3);
3802 var57 = (val*)((long)(0)<<2|3);
3803 var53 = core__flat___CString___to_s_unsafe(var52, var54, var55, var56, var57);
3804 var51 = var53;
3805 varonce50 = var51;
3806 }
3807 ((struct instance_core__NativeArray*)var49)->values[1]=var51;
3808 } else {
3809 var49 = varonce48;
3810 varonce48 = NULL;
3811 }
3812 ((struct instance_core__NativeArray*)var49)->values[0]=var_base_name;
3813 {
3814 var58 = ((val*(*)(val* self))(var49->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var49); /* native_to_s on <var49:NativeArray[String]>*/
3815 }
3816 varonce48 = var49;
3817 var_c_file = var58;
3818 if (unlikely(varonce59==NULL)) {
3819 var60 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
3820 if (likely(varonce61!=NULL)) {
3821 var62 = varonce61;
3822 } else {
3823 var63 = "/";
3824 var65 = (val*)(1l<<2|1);
3825 var66 = (val*)(1l<<2|1);
3826 var67 = (val*)((long)(0)<<2|3);
3827 var68 = (val*)((long)(0)<<2|3);
3828 var64 = core__flat___CString___to_s_unsafe(var63, var65, var66, var67, var68);
3829 var62 = var64;
3830 varonce61 = var62;
3831 }
3832 ((struct instance_core__NativeArray*)var60)->values[1]=var62;
3833 } else {
3834 var60 = varonce59;
3835 varonce59 = NULL;
3836 }
3837 ((struct instance_core__NativeArray*)var60)->values[0]=var_compdir;
3838 ((struct instance_core__NativeArray*)var60)->values[2]=var_c_file;
3839 {
3840 var69 = ((val*(*)(val* self))(var60->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var60); /* native_to_s on <var60:NativeArray[String]>*/
3841 }
3842 varonce59 = var60;
3843 var70 = NEW_core__Array(&type_core__Array__core__String);
3844 {
3845 core___core__Array___with_capacity(var70, 1l); /* Direct call array$Array$with_capacity on <var70:Array[String]>*/
3846 }
3847 var_ = var70;
3848 if (unlikely(varonce71==NULL)) {
3849 var72 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
3850 if (likely(varonce73!=NULL)) {
3851 var74 = varonce73;
3852 } else {
3853 var75 = "\"";
3854 var77 = (val*)(1l<<2|1);
3855 var78 = (val*)(1l<<2|1);
3856 var79 = (val*)((long)(0)<<2|3);
3857 var80 = (val*)((long)(0)<<2|3);
3858 var76 = core__flat___CString___to_s_unsafe(var75, var77, var78, var79, var80);
3859 var74 = var76;
3860 varonce73 = var74;
3861 }
3862 ((struct instance_core__NativeArray*)var72)->values[0]=var74;
3863 if (likely(varonce81!=NULL)) {
3864 var82 = varonce81;
3865 } else {
3866 var83 = "\"";
3867 var85 = (val*)(1l<<2|1);
3868 var86 = (val*)(1l<<2|1);
3869 var87 = (val*)((long)(0)<<2|3);
3870 var88 = (val*)((long)(0)<<2|3);
3871 var84 = core__flat___CString___to_s_unsafe(var83, var85, var86, var87, var88);
3872 var82 = var84;
3873 varonce81 = var82;
3874 }
3875 ((struct instance_core__NativeArray*)var72)->values[2]=var82;
3876 } else {
3877 var72 = varonce71;
3878 varonce71 = NULL;
3879 }
3880 ((struct instance_core__NativeArray*)var72)->values[1]=var_h_file;
3881 {
3882 var89 = ((val*(*)(val* self))(var72->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var72); /* native_to_s on <var72:NativeArray[String]>*/
3883 }
3884 varonce71 = var72;
3885 {
3886 core___core__AbstractArray___core__abstract_collection__Sequence__push(var_, var89); /* Direct call array$AbstractArray$push on <var_:Array[String]>*/
3887 }
3888 {
3889 nitc__light_ffi_base___CCompilationUnit___write_body_to_file(self, var_mmodule, var69, var_); /* Direct call light_ffi_base$CCompilationUnit$write_body_to_file on <self:CCompilationUnit>*/
3890 }
3891 {
3892 { /* Inline c_tools$CCompilationUnit$files (self) on <self:CCompilationUnit> */
3893 var92 = self->attrs[COLOR_nitc__c_tools__CCompilationUnit___files].val; /* _files on <self:CCompilationUnit> */
3894 if (unlikely(var92 == NULL)) {
3895 if(catchStack.cursor >= 0){
3896 longjmp(catchStack.envs[catchStack.cursor], 1);
3897 }
3898 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files");
3899 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 47);
3900 fatal_exit(1);
3901 }
3902 var90 = var92;
3903 RET_LABEL91:(void)0;
3904 }
3905 }
3906 if (unlikely(varonce93==NULL)) {
3907 var94 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
3908 if (likely(varonce95!=NULL)) {
3909 var96 = varonce95;
3910 } else {
3911 var97 = "/";
3912 var99 = (val*)(1l<<2|1);
3913 var100 = (val*)(1l<<2|1);
3914 var101 = (val*)((long)(0)<<2|3);
3915 var102 = (val*)((long)(0)<<2|3);
3916 var98 = core__flat___CString___to_s_unsafe(var97, var99, var100, var101, var102);
3917 var96 = var98;
3918 varonce95 = var96;
3919 }
3920 ((struct instance_core__NativeArray*)var94)->values[1]=var96;
3921 } else {
3922 var94 = varonce93;
3923 varonce93 = NULL;
3924 }
3925 ((struct instance_core__NativeArray*)var94)->values[0]=var_compdir;
3926 ((struct instance_core__NativeArray*)var94)->values[2]=var_c_file;
3927 {
3928 var103 = ((val*(*)(val* self))(var94->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var94); /* native_to_s on <var94:NativeArray[String]>*/
3929 }
3930 varonce93 = var94;
3931 {
3932 core___core__Array___core__abstract_collection__SimpleCollection__add(var90, var103); /* Direct call array$Array$add on <var90:Array[String]>*/
3933 }
3934 RET_LABEL:;
3935 }