nitc: let CC, CXX and NO_STACKTRACE use env value
[nit.git] / c_src / nitc__light_ffi.sep.1.c
1 #include "nitc__light_ffi.sep.0.h"
2 /* method light_ffi#MModule#uses_ffi for (self: MModule): Bool */
3 short int nitc__light_ffi___MModule___uses_ffi(val* self) {
4 short int var /* : Bool */;
5 short int var1 /* : Bool */;
6 var1 = self->attrs[COLOR_nitc__light_ffi__MModule___uses_ffi].s; /* _uses_ffi on <self:MModule> */
7 var = var1;
8 RET_LABEL:;
9 return var;
10 }
11 /* method light_ffi#MModule#uses_ffi= for (self: MModule, Bool) */
12 void nitc__light_ffi___MModule___uses_ffi_61d(val* self, short int p0) {
13 self->attrs[COLOR_nitc__light_ffi__MModule___uses_ffi].s = p0; /* _uses_ffi on <self:MModule> */
14 RET_LABEL:;
15 }
16 /* method light_ffi#MModule#ffi_ccu for (self: MModule): nullable CCompilationUnit */
17 val* nitc__light_ffi___MModule___ffi_ccu(val* self) {
18 val* var /* : nullable CCompilationUnit */;
19 val* var1 /* : nullable CCompilationUnit */;
20 var1 = self->attrs[COLOR_nitc__light_ffi__MModule___ffi_ccu].val; /* _ffi_ccu on <self:MModule> */
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method light_ffi#MModule#ffi_ccu= for (self: MModule, nullable CCompilationUnit) */
26 void nitc__light_ffi___MModule___ffi_ccu_61d(val* self, val* p0) {
27 self->attrs[COLOR_nitc__light_ffi__MModule___ffi_ccu].val = p0; /* _ffi_ccu on <self:MModule> */
28 RET_LABEL:;
29 }
30 /* method light_ffi#MModule#present_languages for (self: MModule): HashSet[FFILanguage] */
31 val* nitc__light_ffi___MModule___present_languages(val* self) {
32 val* var /* : HashSet[FFILanguage] */;
33 val* var1 /* : HashSet[FFILanguage] */;
34 var1 = self->attrs[COLOR_nitc__light_ffi__MModule___present_languages].val; /* _present_languages on <self:MModule> */
35 if (unlikely(var1 == NULL)) {
36 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _present_languages");
37 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 50);
38 fatal_exit(1);
39 }
40 var = var1;
41 RET_LABEL:;
42 return var;
43 }
44 /* method light_ffi#MModule#finalize_ffi_wrapper for (self: MModule, String, MModule) */
45 void nitc__light_ffi___MModule___finalize_ffi_wrapper(val* self, val* p0, val* p1) {
46 val* var_compdir /* var compdir: String */;
47 val* var_mainmodule /* var mainmodule: MModule */;
48 val* var /* : MultiHashMap[String, String] */;
49 val* var2 /* : MultiHashMap[String, String] */;
50 static val* varonce;
51 val* var3 /* : String */;
52 char* var4 /* : NativeString */;
53 val* var5 /* : String */;
54 val* var6 /* : nullable Object */;
55 static val* varonce7;
56 val* var8 /* : String */;
57 char* var9 /* : NativeString */;
58 val* var10 /* : String */;
59 val* var11 /* : String */;
60 val* var_cflags /* var cflags: String */;
61 val* var12 /* : nullable CCompilationUnit */;
62 val* var14 /* : nullable CCompilationUnit */;
63 val* var15 /* : nullable CCompilationUnit */;
64 val* var17 /* : nullable CCompilationUnit */;
65 val* var18 /* : Array[String] */;
66 val* var20 /* : Array[String] */;
67 val* var_ /* var : Array[String] */;
68 val* var21 /* : IndexedIterator[nullable Object] */;
69 val* var_22 /* var : IndexedIterator[String] */;
70 short int var23 /* : Bool */;
71 val* var24 /* : nullable Object */;
72 val* var_filename /* var filename: String */;
73 val* var25 /* : ExternCFile */;
74 val* var_f /* var f: ExternCFile */;
75 val* var26 /* : Array[String] */;
76 val* var28 /* : Array[String] */;
77 val* var29 /* : Array[String] */;
78 val* var31 /* : Array[String] */;
79 val* var32 /* : Array[ExternFile] */;
80 val* var34 /* : Array[ExternFile] */;
81 var_compdir = p0;
82 var_mainmodule = p1;
83 {
84 { /* Inline light_c#MModule#cflags (self) on <self:MModule> */
85 var2 = self->attrs[COLOR_nitc__light_c__MModule___cflags].val; /* _cflags on <self:MModule> */
86 if (unlikely(var2 == NULL)) {
87 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cflags");
88 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_c, 77);
89 fatal_exit(1);
90 }
91 var = var2;
92 RET_LABEL1:(void)0;
93 }
94 }
95 if (likely(varonce!=NULL)) {
96 var3 = varonce;
97 } else {
98 var4 = "";
99 var5 = core__flat___NativeString___to_s_full(var4, 0l, 0l);
100 var3 = var5;
101 varonce = var3;
102 }
103 {
104 var6 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var, var3);
105 }
106 if (likely(varonce7!=NULL)) {
107 var8 = varonce7;
108 } else {
109 var9 = " ";
110 var10 = core__flat___NativeString___to_s_full(var9, 1l, 1l);
111 var8 = var10;
112 varonce7 = var8;
113 }
114 {
115 var11 = core__abstract_text___Collection___join(var6, var8);
116 }
117 var_cflags = var11;
118 {
119 { /* Inline light_ffi#MModule#ffi_ccu (self) on <self:MModule> */
120 var14 = self->attrs[COLOR_nitc__light_ffi__MModule___ffi_ccu].val; /* _ffi_ccu on <self:MModule> */
121 var12 = var14;
122 RET_LABEL13:(void)0;
123 }
124 }
125 if (var12 == NULL) {
126 PRINT_ERROR("Runtime error: %s", "Receiver is null");
127 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 58);
128 fatal_exit(1);
129 } else {
130 nitc__light_ffi_base___CCompilationUnit___write_as_impl(var12, self, var_compdir); /* Direct call light_ffi_base#CCompilationUnit#write_as_impl on <var12:nullable CCompilationUnit>*/
131 }
132 {
133 { /* Inline light_ffi#MModule#ffi_ccu (self) on <self:MModule> */
134 var17 = self->attrs[COLOR_nitc__light_ffi__MModule___ffi_ccu].val; /* _ffi_ccu on <self:MModule> */
135 var15 = var17;
136 RET_LABEL16:(void)0;
137 }
138 }
139 if (var15 == NULL) {
140 PRINT_ERROR("Runtime error: %s", "Receiver is null");
141 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 59);
142 fatal_exit(1);
143 } else {
144 { /* Inline c_tools#CCompilationUnit#files (var15) on <var15:nullable CCompilationUnit> */
145 if (unlikely(var15 == NULL)) {
146 PRINT_ERROR("Runtime error: %s", "Receiver is null");
147 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 47);
148 fatal_exit(1);
149 }
150 var20 = var15->attrs[COLOR_nitc__c_tools__CCompilationUnit___files].val; /* _files on <var15:nullable CCompilationUnit> */
151 if (unlikely(var20 == NULL)) {
152 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files");
153 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 47);
154 fatal_exit(1);
155 }
156 var18 = var20;
157 RET_LABEL19:(void)0;
158 }
159 }
160 var_ = var18;
161 {
162 var21 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
163 }
164 var_22 = var21;
165 for(;;) {
166 {
167 var23 = ((short int(*)(val* self))((((long)var_22&3)?class_info[((long)var_22&3)]:var_22->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_22); /* is_ok on <var_22:IndexedIterator[String]>*/
168 }
169 if (var23){
170 } else {
171 goto BREAK_label;
172 }
173 {
174 var24 = ((val*(*)(val* self))((((long)var_22&3)?class_info[((long)var_22&3)]:var_22->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_22); /* item on <var_22:IndexedIterator[String]>*/
175 }
176 var_filename = var24;
177 var25 = NEW_nitc__ExternCFile(&type_nitc__ExternCFile);
178 {
179 ((void(*)(val* self, val* p0))(var25->class->vft[COLOR_nitc__c_tools__ExternFile__filename_61d]))(var25, var_filename); /* filename= on <var25:ExternCFile>*/
180 }
181 {
182 ((void(*)(val* self, val* p0))(var25->class->vft[COLOR_nitc__c_tools__ExternCFile__cflags_61d]))(var25, var_cflags); /* cflags= on <var25:ExternCFile>*/
183 }
184 {
185 ((void(*)(val* self))(var25->class->vft[COLOR_core__kernel__Object__init]))(var25); /* init on <var25:ExternCFile>*/
186 }
187 var_f = var25;
188 {
189 { /* Inline c_tools#ExternFile#pkgconfigs (var_f) on <var_f:ExternCFile> */
190 var28 = var_f->attrs[COLOR_nitc__c_tools__ExternFile___pkgconfigs].val; /* _pkgconfigs on <var_f:ExternCFile> */
191 if (unlikely(var28 == NULL)) {
192 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _pkgconfigs");
193 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 123);
194 fatal_exit(1);
195 }
196 var26 = var28;
197 RET_LABEL27:(void)0;
198 }
199 }
200 {
201 { /* Inline light_c#MModule#pkgconfigs (self) on <self:MModule> */
202 var31 = self->attrs[COLOR_nitc__light_c__MModule___pkgconfigs].val; /* _pkgconfigs on <self:MModule> */
203 if (unlikely(var31 == NULL)) {
204 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _pkgconfigs");
205 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_c, 83);
206 fatal_exit(1);
207 }
208 var29 = var31;
209 RET_LABEL30:(void)0;
210 }
211 }
212 {
213 core___core__Array___core__abstract_collection__SimpleCollection__add_all(var26, var29); /* Direct call array#Array#add_all on <var26:Array[String]>*/
214 }
215 {
216 { /* Inline light_ffi_base#MModule#ffi_files (self) on <self:MModule> */
217 var34 = self->attrs[COLOR_nitc__light_ffi_base__MModule___ffi_files].val; /* _ffi_files on <self:MModule> */
218 if (unlikely(var34 == NULL)) {
219 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ffi_files");
220 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 82);
221 fatal_exit(1);
222 }
223 var32 = var34;
224 RET_LABEL33:(void)0;
225 }
226 }
227 {
228 core___core__Array___core__abstract_collection__SimpleCollection__add(var32, var_f); /* Direct call array#Array#add on <var32:Array[ExternFile]>*/
229 }
230 {
231 ((void(*)(val* self))((((long)var_22&3)?class_info[((long)var_22&3)]:var_22->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_22); /* next on <var_22:IndexedIterator[String]>*/
232 }
233 }
234 BREAK_label: (void)0;
235 {
236 ((void(*)(val* self))((((long)var_22&3)?class_info[((long)var_22&3)]:var_22->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_22); /* finish on <var_22:IndexedIterator[String]>*/
237 }
238 RET_LABEL:;
239 }
240 /* method light_ffi#MModule#compiled_ffi_methods for (self: MModule): HashSet[AMethPropdef] */
241 val* nitc__light_ffi___MModule___compiled_ffi_methods(val* self) {
242 val* var /* : HashSet[AMethPropdef] */;
243 val* var1 /* : HashSet[AMethPropdef] */;
244 var1 = self->attrs[COLOR_nitc__light_ffi__MModule___compiled_ffi_methods].val; /* _compiled_ffi_methods on <self:MModule> */
245 if (unlikely(var1 == NULL)) {
246 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiled_ffi_methods");
247 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 66);
248 fatal_exit(1);
249 }
250 var = var1;
251 RET_LABEL:;
252 return var;
253 }
254 /* method light_ffi#AModule#ensure_compile_ffi_wrapper for (self: AModule) */
255 void nitc__light_ffi___AModule___ensure_compile_ffi_wrapper(val* self) {
256 val* var /* : nullable MModule */;
257 val* var2 /* : nullable MModule */;
258 val* var_mmodule /* var mmodule: nullable MModule */;
259 short int var3 /* : Bool */;
260 short int var4 /* : Bool */;
261 short int var5 /* : Bool */;
262 val* var_other /* var other: nullable Object */;
263 short int var7 /* : Bool */;
264 short int var9 /* : Bool */;
265 short int var_ /* var : Bool */;
266 val* var10 /* : nullable CCompilationUnit */;
267 val* var12 /* : nullable CCompilationUnit */;
268 short int var13 /* : Bool */;
269 short int var14 /* : Bool */;
270 val* var_other16 /* var other: nullable Object */;
271 short int var17 /* : Bool */;
272 short int var18 /* : Bool */;
273 val* var19 /* : CCompilationUnit */;
274 val* var_ffi_ccu /* var ffi_ccu: CCompilationUnit */;
275 val* var22 /* : ANodes[AExternCodeBlock] */;
276 val* var24 /* : ANodes[AExternCodeBlock] */;
277 val* var_25 /* var : ANodes[AExternCodeBlock] */;
278 val* var26 /* : Iterator[ANode] */;
279 val* var_27 /* var : Iterator[AExternCodeBlock] */;
280 short int var28 /* : Bool */;
281 val* var29 /* : nullable Object */;
282 val* var_block /* var block: AExternCodeBlock */;
283 val* var30 /* : nullable FFILanguage */;
284 val* var32 /* : nullable FFILanguage */;
285 val* var_language /* var language: nullable FFILanguage */;
286 short int var33 /* : Bool */;
287 short int var34 /* : Bool */;
288 short int var36 /* : Bool */;
289 short int var37 /* : Bool */;
290 val* var38 /* : HashSet[FFILanguage] */;
291 val* var40 /* : HashSet[FFILanguage] */;
292 val* var41 /* : Template */;
293 val* var43 /* : Template */;
294 val* var44 /* : NativeArray[String] */;
295 static val* varonce;
296 static val* varonce45;
297 val* var46 /* : String */;
298 char* var47 /* : NativeString */;
299 val* var48 /* : String */;
300 static val* varonce49;
301 val* var50 /* : String */;
302 char* var51 /* : NativeString */;
303 val* var52 /* : String */;
304 val* var53 /* : String */;
305 val* var54 /* : String */;
306 val* var55 /* : Template */;
307 val* var57 /* : Template */;
308 static val* varonce58;
309 val* var59 /* : String */;
310 char* var60 /* : NativeString */;
311 val* var61 /* : String */;
312 val* var62 /* : Template */;
313 val* var64 /* : Template */;
314 static val* varonce65;
315 val* var66 /* : String */;
316 char* var67 /* : NativeString */;
317 val* var68 /* : String */;
318 val* var69 /* : Template */;
319 val* var71 /* : Template */;
320 static val* varonce72;
321 val* var73 /* : String */;
322 char* var74 /* : NativeString */;
323 val* var75 /* : String */;
324 val* var76 /* : Template */;
325 val* var78 /* : Template */;
326 static val* varonce79;
327 val* var80 /* : String */;
328 char* var81 /* : NativeString */;
329 val* var82 /* : String */;
330 val* var83 /* : Template */;
331 val* var85 /* : Template */;
332 static val* varonce86;
333 val* var87 /* : String */;
334 char* var88 /* : NativeString */;
335 val* var89 /* : String */;
336 val* var90 /* : Template */;
337 val* var92 /* : Template */;
338 static val* varonce93;
339 val* var94 /* : String */;
340 char* var95 /* : NativeString */;
341 val* var96 /* : String */;
342 val* var97 /* : ANodes[AClassdef] */;
343 val* var99 /* : ANodes[AClassdef] */;
344 val* var_100 /* var : ANodes[AClassdef] */;
345 val* var101 /* : Iterator[ANode] */;
346 val* var_102 /* var : Iterator[AClassdef] */;
347 short int var103 /* : Bool */;
348 val* var105 /* : nullable Object */;
349 val* var_nclassdef /* var nclassdef: AClassdef */;
350 short int var106 /* : Bool */;
351 short int var107 /* : Bool */;
352 int cltype;
353 int idtype;
354 short int var_108 /* var : Bool */;
355 val* var109 /* : nullable AExternCodeBlock */;
356 val* var111 /* : nullable AExternCodeBlock */;
357 short int var112 /* : Bool */;
358 short int var113 /* : Bool */;
359 short int var115 /* : Bool */;
360 short int var116 /* : Bool */;
361 val* var118 /* : nullable AExternCodeBlock */;
362 val* var120 /* : nullable AExternCodeBlock */;
363 val* var121 /* : nullable FFILanguage */;
364 val* var123 /* : nullable FFILanguage */;
365 val* var_language124 /* var language: nullable FFILanguage */;
366 short int var125 /* : Bool */;
367 short int var126 /* : Bool */;
368 short int var128 /* : Bool */;
369 short int var129 /* : Bool */;
370 val* var130 /* : HashSet[FFILanguage] */;
371 val* var132 /* : HashSet[FFILanguage] */;
372 val* var133 /* : nullable AExternCodeBlock */;
373 val* var135 /* : nullable AExternCodeBlock */;
374 val* var136 /* : nullable FFILanguage */;
375 val* var138 /* : nullable FFILanguage */;
376 val* var139 /* : nullable AExternCodeBlock */;
377 val* var141 /* : nullable AExternCodeBlock */;
378 val* var_block143 /* var block: AExternCodeBlock */;
379 val* var_m /* var m: AClassdef */;
380 val* var_ecc /* var ecc: CCompilationUnit */;
381 val* var_mmodule144 /* var mmodule: MModule */;
382 {
383 { /* Inline loader#AModule#mmodule (self) on <self:AModule> */
384 var2 = self->attrs[COLOR_nitc__loader__AModule___mmodule].val; /* _mmodule on <self:AModule> */
385 var = var2;
386 RET_LABEL1:(void)0;
387 }
388 }
389 var_mmodule = var;
390 if (var_mmodule == NULL) {
391 var4 = 1; /* is null */
392 } else {
393 var4 = 0; /* arg is null but recv is not */
394 }
395 if (0) {
396 { /* Inline kernel#Object#== (var_mmodule,((val*)NULL)) on <var_mmodule:nullable MModule> */
397 var_other = ((val*)NULL);
398 {
399 { /* Inline kernel#Object#is_same_instance (var_mmodule,var_other) on <var_mmodule:nullable MModule(MModule)> */
400 var9 = var_mmodule == var_other;
401 var7 = var9;
402 goto RET_LABEL8;
403 RET_LABEL8:(void)0;
404 }
405 }
406 var5 = var7;
407 goto RET_LABEL6;
408 RET_LABEL6:(void)0;
409 }
410 var4 = var5;
411 }
412 var_ = var4;
413 if (var4){
414 var3 = var_;
415 } else {
416 {
417 { /* Inline light_ffi#MModule#ffi_ccu (var_mmodule) on <var_mmodule:nullable MModule(MModule)> */
418 var12 = var_mmodule->attrs[COLOR_nitc__light_ffi__MModule___ffi_ccu].val; /* _ffi_ccu on <var_mmodule:nullable MModule(MModule)> */
419 var10 = var12;
420 RET_LABEL11:(void)0;
421 }
422 }
423 if (var10 == NULL) {
424 var13 = 0; /* is null */
425 } else {
426 var13 = 1; /* arg is null and recv is not */
427 }
428 if (0) {
429 { /* Inline kernel#Object#!= (var10,((val*)NULL)) on <var10:nullable CCompilationUnit> */
430 var_other16 = ((val*)NULL);
431 {
432 var17 = ((short int(*)(val* self, val* p0))(var10->class->vft[COLOR_core__kernel__Object___61d_61d]))(var10, var_other16); /* == on <var10:nullable CCompilationUnit(CCompilationUnit)>*/
433 }
434 var18 = !var17;
435 var14 = var18;
436 goto RET_LABEL15;
437 RET_LABEL15:(void)0;
438 }
439 var13 = var14;
440 }
441 var3 = var13;
442 }
443 if (var3){
444 goto RET_LABEL;
445 } else {
446 }
447 var19 = NEW_nitc__CCompilationUnit(&type_nitc__CCompilationUnit);
448 {
449 { /* Inline kernel#Object#init (var19) on <var19:CCompilationUnit> */
450 RET_LABEL20:(void)0;
451 }
452 }
453 var_ffi_ccu = var19;
454 {
455 { /* Inline light_ffi#MModule#ffi_ccu= (var_mmodule,var_ffi_ccu) on <var_mmodule:nullable MModule(MModule)> */
456 var_mmodule->attrs[COLOR_nitc__light_ffi__MModule___ffi_ccu].val = var_ffi_ccu; /* _ffi_ccu on <var_mmodule:nullable MModule(MModule)> */
457 RET_LABEL21:(void)0;
458 }
459 }
460 {
461 { /* Inline parser_nodes#AModule#n_extern_code_blocks (self) on <self:AModule> */
462 var24 = self->attrs[COLOR_nitc__parser_nodes__AModule___n_extern_code_blocks].val; /* _n_extern_code_blocks on <self:AModule> */
463 if (unlikely(var24 == NULL)) {
464 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_extern_code_blocks");
465 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 1059);
466 fatal_exit(1);
467 }
468 var22 = var24;
469 RET_LABEL23:(void)0;
470 }
471 }
472 var_25 = var22;
473 {
474 var26 = nitc___nitc__ANodes___core__abstract_collection__Collection__iterator(var_25);
475 }
476 var_27 = var26;
477 for(;;) {
478 {
479 var28 = ((short int(*)(val* self))((((long)var_27&3)?class_info[((long)var_27&3)]:var_27->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_27); /* is_ok on <var_27:Iterator[AExternCodeBlock]>*/
480 }
481 if (var28){
482 } else {
483 goto BREAK_label;
484 }
485 {
486 var29 = ((val*(*)(val* self))((((long)var_27&3)?class_info[((long)var_27&3)]:var_27->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_27); /* item on <var_27:Iterator[AExternCodeBlock]>*/
487 }
488 var_block = var29;
489 {
490 { /* Inline light_ffi_base#AExternCodeBlock#language (var_block) on <var_block:AExternCodeBlock> */
491 var32 = var_block->attrs[COLOR_nitc__light_ffi_base__AExternCodeBlock___language].val; /* _language on <var_block:AExternCodeBlock> */
492 var30 = var32;
493 RET_LABEL31:(void)0;
494 }
495 }
496 var_language = var30;
497 if (var_language == NULL) {
498 var33 = 0; /* is null */
499 } else {
500 var33 = 1; /* arg is null and recv is not */
501 }
502 if (0) {
503 { /* Inline kernel#Object#!= (var_language,((val*)NULL)) on <var_language:nullable FFILanguage> */
504 var_other16 = ((val*)NULL);
505 {
506 var36 = ((short int(*)(val* self, val* p0))(var_language->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_language, var_other16); /* == on <var_language:nullable FFILanguage(FFILanguage)>*/
507 }
508 var37 = !var36;
509 var34 = var37;
510 goto RET_LABEL35;
511 RET_LABEL35:(void)0;
512 }
513 var33 = var34;
514 }
515 if (unlikely(!var33)) {
516 PRINT_ERROR("Runtime error: %s", "Assert failed");
517 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 88);
518 fatal_exit(1);
519 }
520 {
521 { /* Inline light_ffi#MModule#present_languages (var_mmodule) on <var_mmodule:nullable MModule(MModule)> */
522 var40 = var_mmodule->attrs[COLOR_nitc__light_ffi__MModule___present_languages].val; /* _present_languages on <var_mmodule:nullable MModule(MModule)> */
523 if (unlikely(var40 == NULL)) {
524 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _present_languages");
525 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 50);
526 fatal_exit(1);
527 }
528 var38 = var40;
529 RET_LABEL39:(void)0;
530 }
531 }
532 {
533 core___core__HashSet___core__abstract_collection__SimpleCollection__add(var38, var_language); /* Direct call hash_collection#HashSet#add on <var38:HashSet[FFILanguage]>*/
534 }
535 {
536 nitc___nitc__CLanguage___nitc__light_ffi_base__FFILanguage__compile_module_block(var_language, var_block, var_ffi_ccu, var_mmodule); /* Direct call light_c#CLanguage#compile_module_block on <var_language:nullable FFILanguage(FFILanguage)>*/
537 }
538 {
539 ((void(*)(val* self))((((long)var_27&3)?class_info[((long)var_27&3)]:var_27->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_27); /* next on <var_27:Iterator[AExternCodeBlock]>*/
540 }
541 }
542 BREAK_label: (void)0;
543 {
544 ((void(*)(val* self))((((long)var_27&3)?class_info[((long)var_27&3)]:var_27->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_27); /* finish on <var_27:Iterator[AExternCodeBlock]>*/
545 }
546 {
547 { /* Inline c_tools#CCompilationUnit#header_c_base (var_ffi_ccu) on <var_ffi_ccu:CCompilationUnit> */
548 var43 = var_ffi_ccu->attrs[COLOR_nitc__c_tools__CCompilationUnit___header_c_base].val; /* _header_c_base on <var_ffi_ccu:CCompilationUnit> */
549 if (unlikely(var43 == NULL)) {
550 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header_c_base");
551 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 24);
552 fatal_exit(1);
553 }
554 var41 = var43;
555 RET_LABEL42:(void)0;
556 }
557 }
558 if (unlikely(varonce==NULL)) {
559 var44 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
560 if (likely(varonce45!=NULL)) {
561 var46 = varonce45;
562 } else {
563 var47 = "#include \"";
564 var48 = core__flat___NativeString___to_s_full(var47, 10l, 10l);
565 var46 = var48;
566 varonce45 = var46;
567 }
568 ((struct instance_core__NativeArray*)var44)->values[0]=var46;
569 if (likely(varonce49!=NULL)) {
570 var50 = varonce49;
571 } else {
572 var51 = "._nitni.h\"\n";
573 var52 = core__flat___NativeString___to_s_full(var51, 11l, 11l);
574 var50 = var52;
575 varonce49 = var50;
576 }
577 ((struct instance_core__NativeArray*)var44)->values[2]=var50;
578 } else {
579 var44 = varonce;
580 varonce = NULL;
581 }
582 {
583 var53 = nitc___nitc__MModule___nitc__model_base__MEntity__c_name(var_mmodule);
584 }
585 ((struct instance_core__NativeArray*)var44)->values[1]=var53;
586 {
587 var54 = ((val*(*)(val* self))(var44->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var44); /* native_to_s on <var44:NativeArray[String]>*/
588 }
589 varonce = var44;
590 {
591 template___template__Template___add(var41, var54); /* Direct call template#Template#add on <var41:Template>*/
592 }
593 {
594 { /* Inline c_tools#CCompilationUnit#body_decl (var_ffi_ccu) on <var_ffi_ccu:CCompilationUnit> */
595 var57 = var_ffi_ccu->attrs[COLOR_nitc__c_tools__CCompilationUnit___body_decl].val; /* _body_decl on <var_ffi_ccu:CCompilationUnit> */
596 if (unlikely(var57 == NULL)) {
597 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _body_decl");
598 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 37);
599 fatal_exit(1);
600 }
601 var55 = var57;
602 RET_LABEL56:(void)0;
603 }
604 }
605 if (likely(varonce58!=NULL)) {
606 var59 = varonce58;
607 } else {
608 var60 = "#ifdef ANDROID\n";
609 var61 = core__flat___NativeString___to_s_full(var60, 15l, 15l);
610 var59 = var61;
611 varonce58 = var59;
612 }
613 {
614 template___template__Template___add(var55, var59); /* Direct call template#Template#add on <var55:Template>*/
615 }
616 {
617 { /* Inline c_tools#CCompilationUnit#body_decl (var_ffi_ccu) on <var_ffi_ccu:CCompilationUnit> */
618 var64 = var_ffi_ccu->attrs[COLOR_nitc__c_tools__CCompilationUnit___body_decl].val; /* _body_decl on <var_ffi_ccu:CCompilationUnit> */
619 if (unlikely(var64 == NULL)) {
620 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _body_decl");
621 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 37);
622 fatal_exit(1);
623 }
624 var62 = var64;
625 RET_LABEL63:(void)0;
626 }
627 }
628 if (likely(varonce65!=NULL)) {
629 var66 = varonce65;
630 } else {
631 var67 = "\t#include <android/log.h>\n";
632 var68 = core__flat___NativeString___to_s_full(var67, 26l, 26l);
633 var66 = var68;
634 varonce65 = var66;
635 }
636 {
637 template___template__Template___add(var62, var66); /* Direct call template#Template#add on <var62:Template>*/
638 }
639 {
640 { /* Inline c_tools#CCompilationUnit#body_decl (var_ffi_ccu) on <var_ffi_ccu:CCompilationUnit> */
641 var71 = var_ffi_ccu->attrs[COLOR_nitc__c_tools__CCompilationUnit___body_decl].val; /* _body_decl on <var_ffi_ccu:CCompilationUnit> */
642 if (unlikely(var71 == NULL)) {
643 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _body_decl");
644 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 37);
645 fatal_exit(1);
646 }
647 var69 = var71;
648 RET_LABEL70:(void)0;
649 }
650 }
651 if (likely(varonce72!=NULL)) {
652 var73 = varonce72;
653 } else {
654 var74 = "\t#define PRINT_ERROR(...) (void)__android_log_print(ANDROID_LOG_WARN, \"Nit\", __VA_ARGS__)\n";
655 var75 = core__flat___NativeString___to_s_full(var74, 90l, 90l);
656 var73 = var75;
657 varonce72 = var73;
658 }
659 {
660 template___template__Template___add(var69, var73); /* Direct call template#Template#add on <var69:Template>*/
661 }
662 {
663 { /* Inline c_tools#CCompilationUnit#body_decl (var_ffi_ccu) on <var_ffi_ccu:CCompilationUnit> */
664 var78 = var_ffi_ccu->attrs[COLOR_nitc__c_tools__CCompilationUnit___body_decl].val; /* _body_decl on <var_ffi_ccu:CCompilationUnit> */
665 if (unlikely(var78 == NULL)) {
666 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _body_decl");
667 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 37);
668 fatal_exit(1);
669 }
670 var76 = var78;
671 RET_LABEL77:(void)0;
672 }
673 }
674 if (likely(varonce79!=NULL)) {
675 var80 = varonce79;
676 } else {
677 var81 = "#else\n";
678 var82 = core__flat___NativeString___to_s_full(var81, 6l, 6l);
679 var80 = var82;
680 varonce79 = var80;
681 }
682 {
683 template___template__Template___add(var76, var80); /* Direct call template#Template#add on <var76:Template>*/
684 }
685 {
686 { /* Inline c_tools#CCompilationUnit#body_decl (var_ffi_ccu) on <var_ffi_ccu:CCompilationUnit> */
687 var85 = var_ffi_ccu->attrs[COLOR_nitc__c_tools__CCompilationUnit___body_decl].val; /* _body_decl on <var_ffi_ccu:CCompilationUnit> */
688 if (unlikely(var85 == NULL)) {
689 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _body_decl");
690 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 37);
691 fatal_exit(1);
692 }
693 var83 = var85;
694 RET_LABEL84:(void)0;
695 }
696 }
697 if (likely(varonce86!=NULL)) {
698 var87 = varonce86;
699 } else {
700 var88 = "\t#define PRINT_ERROR(...) fprintf(stderr, __VA_ARGS__)\n";
701 var89 = core__flat___NativeString___to_s_full(var88, 55l, 55l);
702 var87 = var89;
703 varonce86 = var87;
704 }
705 {
706 template___template__Template___add(var83, var87); /* Direct call template#Template#add on <var83:Template>*/
707 }
708 {
709 { /* Inline c_tools#CCompilationUnit#body_decl (var_ffi_ccu) on <var_ffi_ccu:CCompilationUnit> */
710 var92 = var_ffi_ccu->attrs[COLOR_nitc__c_tools__CCompilationUnit___body_decl].val; /* _body_decl on <var_ffi_ccu:CCompilationUnit> */
711 if (unlikely(var92 == NULL)) {
712 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _body_decl");
713 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 37);
714 fatal_exit(1);
715 }
716 var90 = var92;
717 RET_LABEL91:(void)0;
718 }
719 }
720 if (likely(varonce93!=NULL)) {
721 var94 = varonce93;
722 } else {
723 var95 = "#endif\n";
724 var96 = core__flat___NativeString___to_s_full(var95, 7l, 7l);
725 var94 = var96;
726 varonce93 = var94;
727 }
728 {
729 template___template__Template___add(var90, var94); /* Direct call template#Template#add on <var90:Template>*/
730 }
731 {
732 { /* Inline parser_nodes#AModule#n_classdefs (self) on <self:AModule> */
733 var99 = self->attrs[COLOR_nitc__parser_nodes__AModule___n_classdefs].val; /* _n_classdefs on <self:AModule> */
734 if (unlikely(var99 == NULL)) {
735 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_classdefs");
736 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 1062);
737 fatal_exit(1);
738 }
739 var97 = var99;
740 RET_LABEL98:(void)0;
741 }
742 }
743 var_100 = var97;
744 {
745 var101 = nitc___nitc__ANodes___core__abstract_collection__Collection__iterator(var_100);
746 }
747 var_102 = var101;
748 for(;;) {
749 {
750 var103 = ((short int(*)(val* self))((((long)var_102&3)?class_info[((long)var_102&3)]:var_102->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_102); /* is_ok on <var_102:Iterator[AClassdef]>*/
751 }
752 if (var103){
753 } else {
754 goto BREAK_label104;
755 }
756 {
757 var105 = ((val*(*)(val* self))((((long)var_102&3)?class_info[((long)var_102&3)]:var_102->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_102); /* item on <var_102:Iterator[AClassdef]>*/
758 }
759 var_nclassdef = var105;
760 /* <var_nclassdef:AClassdef> isa AStdClassdef */
761 cltype = type_nitc__AStdClassdef.color;
762 idtype = type_nitc__AStdClassdef.id;
763 if(cltype >= var_nclassdef->type->table_size) {
764 var107 = 0;
765 } else {
766 var107 = var_nclassdef->type->type_table[cltype] == idtype;
767 }
768 var_108 = var107;
769 if (var107){
770 {
771 { /* Inline parser_nodes#AStdClassdef#n_extern_code_block (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
772 var111 = var_nclassdef->attrs[COLOR_nitc__parser_nodes__AStdClassdef___n_extern_code_block].val; /* _n_extern_code_block on <var_nclassdef:AClassdef(AStdClassdef)> */
773 var109 = var111;
774 RET_LABEL110:(void)0;
775 }
776 }
777 if (var109 == NULL) {
778 var112 = 0; /* is null */
779 } else {
780 var112 = 1; /* arg is null and recv is not */
781 }
782 if (0) {
783 { /* Inline kernel#Object#!= (var109,((val*)NULL)) on <var109:nullable AExternCodeBlock> */
784 var_other16 = ((val*)NULL);
785 {
786 var115 = ((short int(*)(val* self, val* p0))(var109->class->vft[COLOR_core__kernel__Object___61d_61d]))(var109, var_other16); /* == on <var109:nullable AExternCodeBlock(AExternCodeBlock)>*/
787 }
788 var116 = !var115;
789 var113 = var116;
790 goto RET_LABEL114;
791 RET_LABEL114:(void)0;
792 }
793 var112 = var113;
794 }
795 var106 = var112;
796 } else {
797 var106 = var_108;
798 }
799 if (var106){
800 {
801 { /* Inline light_ffi#MModule#uses_ffi= (var_mmodule,1) on <var_mmodule:nullable MModule(MModule)> */
802 var_mmodule->attrs[COLOR_nitc__light_ffi__MModule___uses_ffi].s = 1; /* _uses_ffi on <var_mmodule:nullable MModule(MModule)> */
803 RET_LABEL117:(void)0;
804 }
805 }
806 {
807 { /* Inline parser_nodes#AStdClassdef#n_extern_code_block (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
808 var120 = var_nclassdef->attrs[COLOR_nitc__parser_nodes__AStdClassdef___n_extern_code_block].val; /* _n_extern_code_block on <var_nclassdef:AClassdef(AStdClassdef)> */
809 var118 = var120;
810 RET_LABEL119:(void)0;
811 }
812 }
813 if (var118 == NULL) {
814 PRINT_ERROR("Runtime error: %s", "Receiver is null");
815 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 106);
816 fatal_exit(1);
817 } else {
818 { /* Inline light_ffi_base#AExternCodeBlock#language (var118) on <var118:nullable AExternCodeBlock> */
819 if (unlikely(var118 == NULL)) {
820 PRINT_ERROR("Runtime error: %s", "Receiver is null");
821 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 102);
822 fatal_exit(1);
823 }
824 var123 = var118->attrs[COLOR_nitc__light_ffi_base__AExternCodeBlock___language].val; /* _language on <var118:nullable AExternCodeBlock> */
825 var121 = var123;
826 RET_LABEL122:(void)0;
827 }
828 }
829 var_language124 = var121;
830 if (var_language124 == NULL) {
831 var125 = 0; /* is null */
832 } else {
833 var125 = 1; /* arg is null and recv is not */
834 }
835 if (0) {
836 { /* Inline kernel#Object#!= (var_language124,((val*)NULL)) on <var_language124:nullable FFILanguage> */
837 var_other16 = ((val*)NULL);
838 {
839 var128 = ((short int(*)(val* self, val* p0))(var_language124->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_language124, var_other16); /* == on <var_language124:nullable FFILanguage(FFILanguage)>*/
840 }
841 var129 = !var128;
842 var126 = var129;
843 goto RET_LABEL127;
844 RET_LABEL127:(void)0;
845 }
846 var125 = var126;
847 }
848 if (unlikely(!var125)) {
849 PRINT_ERROR("Runtime error: %s", "Assert failed");
850 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 107);
851 fatal_exit(1);
852 }
853 {
854 { /* Inline light_ffi#MModule#present_languages (var_mmodule) on <var_mmodule:nullable MModule(MModule)> */
855 var132 = var_mmodule->attrs[COLOR_nitc__light_ffi__MModule___present_languages].val; /* _present_languages on <var_mmodule:nullable MModule(MModule)> */
856 if (unlikely(var132 == NULL)) {
857 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _present_languages");
858 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 50);
859 fatal_exit(1);
860 }
861 var130 = var132;
862 RET_LABEL131:(void)0;
863 }
864 }
865 {
866 core___core__HashSet___core__abstract_collection__SimpleCollection__add(var130, var_language124); /* Direct call hash_collection#HashSet#add on <var130:HashSet[FFILanguage]>*/
867 }
868 {
869 { /* Inline parser_nodes#AStdClassdef#n_extern_code_block (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
870 var135 = var_nclassdef->attrs[COLOR_nitc__parser_nodes__AStdClassdef___n_extern_code_block].val; /* _n_extern_code_block on <var_nclassdef:AClassdef(AStdClassdef)> */
871 var133 = var135;
872 RET_LABEL134:(void)0;
873 }
874 }
875 if (var133 == NULL) {
876 PRINT_ERROR("Runtime error: %s", "Receiver is null");
877 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 109);
878 fatal_exit(1);
879 } else {
880 { /* Inline light_ffi_base#AExternCodeBlock#language (var133) on <var133:nullable AExternCodeBlock> */
881 if (unlikely(var133 == NULL)) {
882 PRINT_ERROR("Runtime error: %s", "Receiver is null");
883 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 102);
884 fatal_exit(1);
885 }
886 var138 = var133->attrs[COLOR_nitc__light_ffi_base__AExternCodeBlock___language].val; /* _language on <var133:nullable AExternCodeBlock> */
887 var136 = var138;
888 RET_LABEL137:(void)0;
889 }
890 }
891 {
892 { /* Inline parser_nodes#AStdClassdef#n_extern_code_block (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
893 var141 = var_nclassdef->attrs[COLOR_nitc__parser_nodes__AStdClassdef___n_extern_code_block].val; /* _n_extern_code_block on <var_nclassdef:AClassdef(AStdClassdef)> */
894 var139 = var141;
895 RET_LABEL140:(void)0;
896 }
897 }
898 if (unlikely(var139 == NULL)) {
899 PRINT_ERROR("Runtime error: %s", "Cast failed");
900 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 110);
901 fatal_exit(1);
902 }
903 if (var136 == NULL) {
904 PRINT_ERROR("Runtime error: %s", "Receiver is null");
905 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 109);
906 fatal_exit(1);
907 } else {
908 { /* Inline light_c#CLanguage#compile_extern_class (var136,var139,var_nclassdef,var_ffi_ccu,var_mmodule) on <var136:nullable FFILanguage> */
909 var_block143 = var139;
910 var_m = var_nclassdef;
911 var_ecc = var_ffi_ccu;
912 var_mmodule144 = var_mmodule;
913 RET_LABEL142:(void)0;
914 }
915 }
916 } else {
917 }
918 {
919 ((void(*)(val* self))((((long)var_102&3)?class_info[((long)var_102&3)]:var_102->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_102); /* next on <var_102:Iterator[AClassdef]>*/
920 }
921 }
922 BREAK_label104: (void)0;
923 {
924 ((void(*)(val* self))((((long)var_102&3)?class_info[((long)var_102&3)]:var_102->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_102); /* finish on <var_102:Iterator[AClassdef]>*/
925 }
926 RET_LABEL:;
927 }
928 /* method light_ffi#AMethPropdef#compile_ffi_method for (self: AMethPropdef, MModule) */
929 void nitc__light_ffi___AMethPropdef___compile_ffi_method(val* self, val* p0) {
930 val* var_mmodule /* var mmodule: MModule */;
931 val* var /* : nullable AExternCodeBlock */;
932 val* var2 /* : nullable AExternCodeBlock */;
933 short int var3 /* : Bool */;
934 short int var4 /* : Bool */;
935 val* var_other /* var other: nullable Object */;
936 short int var6 /* : Bool */;
937 short int var7 /* : Bool */;
938 val* var8 /* : HashSet[AMethPropdef] */;
939 val* var10 /* : HashSet[AMethPropdef] */;
940 short int var11 /* : Bool */;
941 val* var12 /* : HashSet[AMethPropdef] */;
942 val* var14 /* : HashSet[AMethPropdef] */;
943 val* var15 /* : nullable AExternCodeBlock */;
944 val* var17 /* : nullable AExternCodeBlock */;
945 val* var18 /* : nullable FFILanguage */;
946 val* var20 /* : nullable FFILanguage */;
947 val* var_language /* var language: nullable FFILanguage */;
948 short int var21 /* : Bool */;
949 short int var22 /* : Bool */;
950 short int var24 /* : Bool */;
951 short int var25 /* : Bool */;
952 val* var26 /* : HashSet[FFILanguage] */;
953 val* var28 /* : HashSet[FFILanguage] */;
954 val* var29 /* : nullable AExternCodeBlock */;
955 val* var31 /* : nullable AExternCodeBlock */;
956 val* var32 /* : nullable FFILanguage */;
957 val* var34 /* : nullable FFILanguage */;
958 val* var35 /* : nullable AExternCodeBlock */;
959 val* var37 /* : nullable AExternCodeBlock */;
960 val* var38 /* : nullable CCompilationUnit */;
961 val* var40 /* : nullable CCompilationUnit */;
962 var_mmodule = p0;
963 {
964 { /* Inline parser_nodes#AMethPropdef#n_extern_code_block (self) on <self:AMethPropdef> */
965 var2 = self->attrs[COLOR_nitc__parser_nodes__AMethPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AMethPropdef> */
966 var = var2;
967 RET_LABEL1:(void)0;
968 }
969 }
970 if (var == NULL) {
971 var3 = 0; /* is null */
972 } else {
973 var3 = 1; /* arg is null and recv is not */
974 }
975 if (0) {
976 { /* Inline kernel#Object#!= (var,((val*)NULL)) on <var:nullable AExternCodeBlock> */
977 var_other = ((val*)NULL);
978 {
979 var6 = ((short int(*)(val* self, val* p0))(var->class->vft[COLOR_core__kernel__Object___61d_61d]))(var, var_other); /* == on <var:nullable AExternCodeBlock(AExternCodeBlock)>*/
980 }
981 var7 = !var6;
982 var4 = var7;
983 goto RET_LABEL5;
984 RET_LABEL5:(void)0;
985 }
986 var3 = var4;
987 }
988 if (unlikely(!var3)) {
989 PRINT_ERROR("Runtime error: %s", "Assert failed");
990 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 120);
991 fatal_exit(1);
992 }
993 {
994 { /* Inline light_ffi#MModule#compiled_ffi_methods (var_mmodule) on <var_mmodule:MModule> */
995 var10 = var_mmodule->attrs[COLOR_nitc__light_ffi__MModule___compiled_ffi_methods].val; /* _compiled_ffi_methods on <var_mmodule:MModule> */
996 if (unlikely(var10 == NULL)) {
997 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiled_ffi_methods");
998 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 66);
999 fatal_exit(1);
1000 }
1001 var8 = var10;
1002 RET_LABEL9:(void)0;
1003 }
1004 }
1005 {
1006 var11 = core___core__HashSet___core__abstract_collection__Collection__has(var8, self);
1007 }
1008 if (var11){
1009 goto RET_LABEL;
1010 } else {
1011 }
1012 {
1013 { /* Inline light_ffi#MModule#compiled_ffi_methods (var_mmodule) on <var_mmodule:MModule> */
1014 var14 = var_mmodule->attrs[COLOR_nitc__light_ffi__MModule___compiled_ffi_methods].val; /* _compiled_ffi_methods on <var_mmodule:MModule> */
1015 if (unlikely(var14 == NULL)) {
1016 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiled_ffi_methods");
1017 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 66);
1018 fatal_exit(1);
1019 }
1020 var12 = var14;
1021 RET_LABEL13:(void)0;
1022 }
1023 }
1024 {
1025 core___core__HashSet___core__abstract_collection__SimpleCollection__add(var12, self); /* Direct call hash_collection#HashSet#add on <var12:HashSet[AMethPropdef]>*/
1026 }
1027 {
1028 { /* Inline parser_nodes#AMethPropdef#n_extern_code_block (self) on <self:AMethPropdef> */
1029 var17 = self->attrs[COLOR_nitc__parser_nodes__AMethPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AMethPropdef> */
1030 var15 = var17;
1031 RET_LABEL16:(void)0;
1032 }
1033 }
1034 if (var15 == NULL) {
1035 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1036 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 125);
1037 fatal_exit(1);
1038 } else {
1039 { /* Inline light_ffi_base#AExternCodeBlock#language (var15) on <var15:nullable AExternCodeBlock> */
1040 if (unlikely(var15 == NULL)) {
1041 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1042 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 102);
1043 fatal_exit(1);
1044 }
1045 var20 = var15->attrs[COLOR_nitc__light_ffi_base__AExternCodeBlock___language].val; /* _language on <var15:nullable AExternCodeBlock> */
1046 var18 = var20;
1047 RET_LABEL19:(void)0;
1048 }
1049 }
1050 var_language = var18;
1051 if (var_language == NULL) {
1052 var21 = 0; /* is null */
1053 } else {
1054 var21 = 1; /* arg is null and recv is not */
1055 }
1056 if (0) {
1057 { /* Inline kernel#Object#!= (var_language,((val*)NULL)) on <var_language:nullable FFILanguage> */
1058 var_other = ((val*)NULL);
1059 {
1060 var24 = ((short int(*)(val* self, val* p0))(var_language->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_language, var_other); /* == on <var_language:nullable FFILanguage(FFILanguage)>*/
1061 }
1062 var25 = !var24;
1063 var22 = var25;
1064 goto RET_LABEL23;
1065 RET_LABEL23:(void)0;
1066 }
1067 var21 = var22;
1068 }
1069 if (unlikely(!var21)) {
1070 PRINT_ERROR("Runtime error: %s", "Assert failed");
1071 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 126);
1072 fatal_exit(1);
1073 }
1074 {
1075 { /* Inline light_ffi#MModule#present_languages (var_mmodule) on <var_mmodule:MModule> */
1076 var28 = var_mmodule->attrs[COLOR_nitc__light_ffi__MModule___present_languages].val; /* _present_languages on <var_mmodule:MModule> */
1077 if (unlikely(var28 == NULL)) {
1078 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _present_languages");
1079 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 50);
1080 fatal_exit(1);
1081 }
1082 var26 = var28;
1083 RET_LABEL27:(void)0;
1084 }
1085 }
1086 {
1087 core___core__HashSet___core__abstract_collection__SimpleCollection__add(var26, var_language); /* Direct call hash_collection#HashSet#add on <var26:HashSet[FFILanguage]>*/
1088 }
1089 {
1090 { /* Inline parser_nodes#AMethPropdef#n_extern_code_block (self) on <self:AMethPropdef> */
1091 var31 = self->attrs[COLOR_nitc__parser_nodes__AMethPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AMethPropdef> */
1092 var29 = var31;
1093 RET_LABEL30:(void)0;
1094 }
1095 }
1096 if (var29 == NULL) {
1097 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1098 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 128);
1099 fatal_exit(1);
1100 } else {
1101 { /* Inline light_ffi_base#AExternCodeBlock#language (var29) on <var29:nullable AExternCodeBlock> */
1102 if (unlikely(var29 == NULL)) {
1103 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1104 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 102);
1105 fatal_exit(1);
1106 }
1107 var34 = var29->attrs[COLOR_nitc__light_ffi_base__AExternCodeBlock___language].val; /* _language on <var29:nullable AExternCodeBlock> */
1108 var32 = var34;
1109 RET_LABEL33:(void)0;
1110 }
1111 }
1112 {
1113 { /* Inline parser_nodes#AMethPropdef#n_extern_code_block (self) on <self:AMethPropdef> */
1114 var37 = self->attrs[COLOR_nitc__parser_nodes__AMethPropdef___n_extern_code_block].val; /* _n_extern_code_block on <self:AMethPropdef> */
1115 var35 = var37;
1116 RET_LABEL36:(void)0;
1117 }
1118 }
1119 if (unlikely(var35 == NULL)) {
1120 PRINT_ERROR("Runtime error: %s", "Cast failed");
1121 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 129);
1122 fatal_exit(1);
1123 }
1124 {
1125 { /* Inline light_ffi#MModule#ffi_ccu (var_mmodule) on <var_mmodule:MModule> */
1126 var40 = var_mmodule->attrs[COLOR_nitc__light_ffi__MModule___ffi_ccu].val; /* _ffi_ccu on <var_mmodule:MModule> */
1127 var38 = var40;
1128 RET_LABEL39:(void)0;
1129 }
1130 }
1131 if (unlikely(var38 == NULL)) {
1132 PRINT_ERROR("Runtime error: %s", "Cast failed");
1133 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 129);
1134 fatal_exit(1);
1135 }
1136 if (var32 == NULL) {
1137 PRINT_ERROR("Runtime error: %s", "Receiver is null");
1138 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi, 128);
1139 fatal_exit(1);
1140 } else {
1141 nitc___nitc__CLanguage___nitc__light_ffi_base__FFILanguage__compile_extern_method(var32, var35, self, var38, var_mmodule); /* Direct call light_c#CLanguage#compile_extern_method on <var32:nullable FFILanguage>*/
1142 }
1143 RET_LABEL:;
1144 }