README: document nit_env.sh
[nit.git] / c_src / nit__extern_classes.sep.1.c
1 #include "nit__extern_classes.sep.0.h"
2 /* method extern_classes#ToolContext#extern_classes_typing_phase_ast for (self: ToolContext): Phase */
3 val* nit__extern_classes___ToolContext___extern_classes_typing_phase_ast(val* self) {
4 val* var /* : Phase */;
5 val* var1 /* : Phase */;
6 var1 = self->attrs[COLOR_nit__extern_classes__ToolContext___extern_classes_typing_phase_ast].val; /* _extern_classes_typing_phase_ast on <self:ToolContext> */
7 if (unlikely(var1 == NULL)) {
8 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _extern_classes_typing_phase_ast");
9 PRINT_ERROR(" (%s:%d)\n", FILE_nit__extern_classes, 24);
10 fatal_exit(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method extern_classes#ExternClassesTypingPhaseAst#process_nclassdef for (self: ExternClassesTypingPhaseAst, AClassdef) */
17 void nit__extern_classes___nit__extern_classes__ExternClassesTypingPhaseAst___nit__phase__Phase__process_nclassdef(val* self, val* p0) {
18 val* var_nclassdef /* var nclassdef: AClassdef */;
19 short int var /* : Bool */;
20 int cltype;
21 int idtype;
22 short int var1 /* : Bool */;
23 val* var2 /* : nullable AExternCodeBlock */;
24 val* var4 /* : nullable AExternCodeBlock */;
25 val* var_code_block /* var code_block: nullable AExternCodeBlock */;
26 short int var5 /* : Bool */;
27 short int var6 /* : Bool */;
28 val* var_other /* var other: nullable Object */;
29 short int var8 /* : Bool */;
30 short int var10 /* : Bool */;
31 val* var11 /* : nullable TKwredef */;
32 val* var13 /* : nullable TKwredef */;
33 short int var14 /* : Bool */;
34 short int var15 /* : Bool */;
35 val* var_other17 /* var other: nullable Object */;
36 short int var18 /* : Bool */;
37 short int var19 /* : Bool */;
38 val* var20 /* : ToolContext */;
39 val* var22 /* : ToolContext */;
40 val* var23 /* : Location */;
41 val* var25 /* : Location */;
42 static val* varonce;
43 val* var26 /* : String */;
44 char* var27 /* : NativeString */;
45 val* var28 /* : FlatString */;
46 val* var29 /* : Message */;
47 val* var30 /* : nullable FFILanguage */;
48 val* var32 /* : nullable FFILanguage */;
49 val* var33 /* : ForeignType */;
50 val* var_ftype /* var ftype: ForeignType */;
51 val* var34 /* : nullable MClassDef */;
52 val* var36 /* : nullable MClassDef */;
53 val* var38 /* : nullable MClassDef */;
54 val* var40 /* : nullable MClassDef */;
55 var_nclassdef = p0;
56 /* <var_nclassdef:AClassdef> isa AStdClassdef */
57 cltype = type_nit__AStdClassdef.color;
58 idtype = type_nit__AStdClassdef.id;
59 if(cltype >= var_nclassdef->type->table_size) {
60 var = 0;
61 } else {
62 var = var_nclassdef->type->type_table[cltype] == idtype;
63 }
64 var1 = !var;
65 if (var1){
66 goto RET_LABEL;
67 } else {
68 }
69 {
70 { /* Inline parser_nodes#AStdClassdef#n_extern_code_block (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
71 var4 = var_nclassdef->attrs[COLOR_nit__parser_nodes__AStdClassdef___n_extern_code_block].val; /* _n_extern_code_block on <var_nclassdef:AClassdef(AStdClassdef)> */
72 var2 = var4;
73 RET_LABEL3:(void)0;
74 }
75 }
76 var_code_block = var2;
77 if (var_code_block == NULL) {
78 var5 = 1; /* is null */
79 } else {
80 var5 = 0; /* arg is null but recv is not */
81 }
82 if (0) {
83 { /* Inline kernel#Object#== (var_code_block,((val*)NULL)) on <var_code_block:nullable AExternCodeBlock> */
84 var_other = ((val*)NULL);
85 {
86 { /* Inline kernel#Object#is_same_instance (var_code_block,var_other) on <var_code_block:nullable AExternCodeBlock(AExternCodeBlock)> */
87 var10 = var_code_block == var_other;
88 var8 = var10;
89 goto RET_LABEL9;
90 RET_LABEL9:(void)0;
91 }
92 }
93 var6 = var8;
94 goto RET_LABEL7;
95 RET_LABEL7:(void)0;
96 }
97 var5 = var6;
98 }
99 if (var5){
100 goto RET_LABEL;
101 } else {
102 }
103 {
104 { /* Inline parser_nodes#ADefinition#n_kwredef (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
105 var13 = var_nclassdef->attrs[COLOR_nit__parser_nodes__ADefinition___n_kwredef].val; /* _n_kwredef on <var_nclassdef:AClassdef(AStdClassdef)> */
106 var11 = var13;
107 RET_LABEL12:(void)0;
108 }
109 }
110 if (var11 == NULL) {
111 var14 = 0; /* is null */
112 } else {
113 var14 = 1; /* arg is null and recv is not */
114 }
115 if (0) {
116 { /* Inline kernel#Object#!= (var11,((val*)NULL)) on <var11:nullable TKwredef> */
117 var_other17 = ((val*)NULL);
118 {
119 var18 = ((short int(*)(val* self, val* p0))(var11->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var11, var_other17); /* == on <var11:nullable TKwredef(TKwredef)>*/
120 }
121 var19 = !var18;
122 var15 = var19;
123 goto RET_LABEL16;
124 RET_LABEL16:(void)0;
125 }
126 var14 = var15;
127 }
128 if (var14){
129 {
130 { /* Inline phase#Phase#toolcontext (self) on <self:ExternClassesTypingPhaseAst> */
131 var22 = self->attrs[COLOR_nit__phase__Phase___toolcontext].val; /* _toolcontext on <self:ExternClassesTypingPhaseAst> */
132 if (unlikely(var22 == NULL)) {
133 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
134 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 200);
135 fatal_exit(1);
136 }
137 var20 = var22;
138 RET_LABEL21:(void)0;
139 }
140 }
141 {
142 { /* Inline parser_nodes#ANode#location (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
143 var25 = var_nclassdef->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on <var_nclassdef:AClassdef(AStdClassdef)> */
144 if (unlikely(var25 == NULL)) {
145 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
146 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 24);
147 fatal_exit(1);
148 }
149 var23 = var25;
150 RET_LABEL24:(void)0;
151 }
152 }
153 if (likely(varonce!=NULL)) {
154 var26 = varonce;
155 } else {
156 var27 = "FFI Error: only the introduction of a class can declare an extern type.";
157 var28 = standard___standard__NativeString___to_s_with_length(var27, 71l);
158 var26 = var28;
159 varonce = var26;
160 }
161 {
162 var29 = nit___nit__ToolContext___error(var20, var23, var26);
163 }
164 goto RET_LABEL;
165 } else {
166 }
167 {
168 { /* Inline light_ffi_base#AExternCodeBlock#language (var_code_block) on <var_code_block:nullable AExternCodeBlock(AExternCodeBlock)> */
169 var32 = var_code_block->attrs[COLOR_nit__light_ffi_base__AExternCodeBlock___language].val; /* _language on <var_code_block:nullable AExternCodeBlock(AExternCodeBlock)> */
170 var30 = var32;
171 RET_LABEL31:(void)0;
172 }
173 }
174 if (var30 == NULL) {
175 PRINT_ERROR("Runtime error: %s", "Receiver is null");
176 PRINT_ERROR(" (%s:%d)\n", FILE_nit__extern_classes, 47);
177 fatal_exit(1);
178 } else {
179 var33 = nit___nit__CLanguage___nit__light_ffi_base__FFILanguage__get_ftype(var30, var_code_block, var_nclassdef);
180 }
181 var_ftype = var33;
182 {
183 { /* Inline modelize_class#AClassdef#mclassdef (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
184 var36 = var_nclassdef->attrs[COLOR_nit__modelize_class__AClassdef___mclassdef].val; /* _mclassdef on <var_nclassdef:AClassdef(AStdClassdef)> */
185 var34 = var36;
186 RET_LABEL35:(void)0;
187 }
188 }
189 if (var34 == NULL) {
190 PRINT_ERROR("Runtime error: %s", "Receiver is null");
191 PRINT_ERROR(" (%s:%d)\n", FILE_nit__extern_classes, 48);
192 fatal_exit(1);
193 } else {
194 { /* Inline extern_classes#MClassDef#ftype_cache= (var34,var_ftype) on <var34:nullable MClassDef> */
195 if (unlikely(var34 == NULL)) {
196 PRINT_ERROR("Runtime error: %s", "Receiver is null");
197 PRINT_ERROR(" (%s:%d)\n", FILE_nit__extern_classes, 54);
198 fatal_exit(1);
199 }
200 var34->attrs[COLOR_nit__extern_classes__MClassDef___ftype_cache].val = var_ftype; /* _ftype_cache on <var34:nullable MClassDef> */
201 RET_LABEL37:(void)0;
202 }
203 }
204 {
205 { /* Inline modelize_class#AClassdef#mclassdef (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
206 var40 = var_nclassdef->attrs[COLOR_nit__modelize_class__AClassdef___mclassdef].val; /* _mclassdef on <var_nclassdef:AClassdef(AStdClassdef)> */
207 var38 = var40;
208 RET_LABEL39:(void)0;
209 }
210 }
211 if (var38 == NULL) {
212 PRINT_ERROR("Runtime error: %s", "Receiver is null");
213 PRINT_ERROR(" (%s:%d)\n", FILE_nit__extern_classes, 49);
214 fatal_exit(1);
215 } else {
216 { /* Inline extern_classes#MClassDef#ftype_computed= (var38,1) on <var38:nullable MClassDef> */
217 if (unlikely(var38 == NULL)) {
218 PRINT_ERROR("Runtime error: %s", "Receiver is null");
219 PRINT_ERROR(" (%s:%d)\n", FILE_nit__extern_classes, 55);
220 fatal_exit(1);
221 }
222 var38->attrs[COLOR_nit__extern_classes__MClassDef___ftype_computed].s = 1; /* _ftype_computed on <var38:nullable MClassDef> */
223 RET_LABEL41:(void)0;
224 }
225 }
226 RET_LABEL:;
227 }
228 /* method extern_classes#MClassDef#ftype_cache for (self: MClassDef): nullable ForeignType */
229 val* nit__extern_classes___MClassDef___ftype_cache(val* self) {
230 val* var /* : nullable ForeignType */;
231 val* var1 /* : nullable ForeignType */;
232 var1 = self->attrs[COLOR_nit__extern_classes__MClassDef___ftype_cache].val; /* _ftype_cache on <self:MClassDef> */
233 var = var1;
234 RET_LABEL:;
235 return var;
236 }
237 /* method extern_classes#MClassDef#ftype_cache= for (self: MClassDef, nullable ForeignType) */
238 void nit__extern_classes___MClassDef___ftype_cache_61d(val* self, val* p0) {
239 self->attrs[COLOR_nit__extern_classes__MClassDef___ftype_cache].val = p0; /* _ftype_cache on <self:MClassDef> */
240 RET_LABEL:;
241 }
242 /* method extern_classes#MClassDef#ftype_computed= for (self: MClassDef, Bool) */
243 void nit__extern_classes___MClassDef___ftype_computed_61d(val* self, short int p0) {
244 self->attrs[COLOR_nit__extern_classes__MClassDef___ftype_computed].s = p0; /* _ftype_computed on <self:MClassDef> */
245 RET_LABEL:;
246 }
247 /* method extern_classes#MClassDef#ftype for (self: MClassDef): nullable ForeignType */
248 val* nit__extern_classes___MClassDef___ftype(val* self) {
249 val* var /* : nullable ForeignType */;
250 val* var1 /* : nullable ForeignType */;
251 val* var3 /* : nullable ForeignType */;
252 {
253 { /* Inline extern_classes#MClassDef#ftype_cache (self) on <self:MClassDef> */
254 var3 = self->attrs[COLOR_nit__extern_classes__MClassDef___ftype_cache].val; /* _ftype_cache on <self:MClassDef> */
255 var1 = var3;
256 RET_LABEL2:(void)0;
257 }
258 }
259 var = var1;
260 goto RET_LABEL;
261 RET_LABEL:;
262 return var;
263 }
264 /* method extern_classes#ExternClassesTypingPhaseModel#process_nclassdef for (self: ExternClassesTypingPhaseModel, AClassdef) */
265 void nit__extern_classes___nit__extern_classes__ExternClassesTypingPhaseModel___nit__phase__Phase__process_nclassdef(val* self, val* p0) {
266 val* var_nclassdef /* var nclassdef: AClassdef */;
267 short int var /* : Bool */;
268 int cltype;
269 int idtype;
270 short int var1 /* : Bool */;
271 val* var2 /* : nullable MClassDef */;
272 val* var4 /* : nullable MClassDef */;
273 val* var_mclassdef /* var mclassdef: nullable MClassDef */;
274 short int var5 /* : Bool */;
275 short int var6 /* : Bool */;
276 val* var_other /* var other: nullable Object */;
277 short int var8 /* : Bool */;
278 short int var10 /* : Bool */;
279 val* var11 /* : MClass */;
280 val* var13 /* : MClass */;
281 val* var_mclass /* var mclass: MClass */;
282 short int var14 /* : Bool */;
283 short int var15 /* : Bool */;
284 val* var16 /* : MClassKind */;
285 val* var18 /* : MClassKind */;
286 val* var19 /* : Sys */;
287 val* var20 /* : MClassKind */;
288 short int var21 /* : Bool */;
289 val* var_other23 /* var other: nullable Object */;
290 short int var24 /* : Bool */;
291 short int var25 /* : Bool */;
292 val* var26 /* : nullable ForeignType */;
293 var_nclassdef = p0;
294 /* <var_nclassdef:AClassdef> isa AStdClassdef */
295 cltype = type_nit__AStdClassdef.color;
296 idtype = type_nit__AStdClassdef.id;
297 if(cltype >= var_nclassdef->type->table_size) {
298 var = 0;
299 } else {
300 var = var_nclassdef->type->type_table[cltype] == idtype;
301 }
302 var1 = !var;
303 if (var1){
304 goto RET_LABEL;
305 } else {
306 }
307 {
308 { /* Inline modelize_class#AClassdef#mclassdef (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
309 var4 = var_nclassdef->attrs[COLOR_nit__modelize_class__AClassdef___mclassdef].val; /* _mclassdef on <var_nclassdef:AClassdef(AStdClassdef)> */
310 var2 = var4;
311 RET_LABEL3:(void)0;
312 }
313 }
314 var_mclassdef = var2;
315 if (var_mclassdef == NULL) {
316 var5 = 1; /* is null */
317 } else {
318 var5 = 0; /* arg is null but recv is not */
319 }
320 if (0) {
321 { /* Inline kernel#Object#== (var_mclassdef,((val*)NULL)) on <var_mclassdef:nullable MClassDef> */
322 var_other = ((val*)NULL);
323 {
324 { /* Inline kernel#Object#is_same_instance (var_mclassdef,var_other) on <var_mclassdef:nullable MClassDef(MClassDef)> */
325 var10 = var_mclassdef == var_other;
326 var8 = var10;
327 goto RET_LABEL9;
328 RET_LABEL9:(void)0;
329 }
330 }
331 var6 = var8;
332 goto RET_LABEL7;
333 RET_LABEL7:(void)0;
334 }
335 var5 = var6;
336 }
337 if (var5){
338 goto RET_LABEL;
339 } else {
340 }
341 {
342 { /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:nullable MClassDef(MClassDef)> */
343 var13 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:nullable MClassDef(MClassDef)> */
344 if (unlikely(var13 == NULL)) {
345 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
346 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
347 fatal_exit(1);
348 }
349 var11 = var13;
350 RET_LABEL12:(void)0;
351 }
352 }
353 var_mclass = var11;
354 {
355 var14 = nit___nit__MClassDef___is_intro(var_mclassdef);
356 }
357 var15 = !var14;
358 if (var15){
359 goto RET_LABEL;
360 } else {
361 }
362 {
363 { /* Inline model#MClass#kind (var_mclass) on <var_mclass:MClass> */
364 var18 = var_mclass->attrs[COLOR_nit__model__MClass___kind].val; /* _kind on <var_mclass:MClass> */
365 if (unlikely(var18 == NULL)) {
366 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
367 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 436);
368 fatal_exit(1);
369 }
370 var16 = var18;
371 RET_LABEL17:(void)0;
372 }
373 }
374 var19 = glob_sys;
375 {
376 var20 = nit__model___standard__Sys___extern_kind(var19);
377 }
378 {
379 { /* Inline kernel#Object#!= (var16,var20) on <var16:MClassKind> */
380 var_other23 = var20;
381 {
382 var24 = ((short int(*)(val* self, val* p0))(var16->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var16, var_other23); /* == on <var16:MClassKind>*/
383 }
384 var25 = !var24;
385 var21 = var25;
386 goto RET_LABEL22;
387 RET_LABEL22:(void)0;
388 }
389 }
390 if (var21){
391 goto RET_LABEL;
392 } else {
393 }
394 {
395 var26 = nit__extern_classes___MClass___compute_ftype(var_mclass, self);
396 }
397 RET_LABEL:;
398 }
399 /* method extern_classes#MClass#ftype_cache for (self: MClass): nullable ForeignType */
400 val* nit__extern_classes___MClass___ftype_cache(val* self) {
401 val* var /* : nullable ForeignType */;
402 val* var1 /* : nullable ForeignType */;
403 var1 = self->attrs[COLOR_nit__extern_classes__MClass___ftype_cache].val; /* _ftype_cache on <self:MClass> */
404 var = var1;
405 RET_LABEL:;
406 return var;
407 }
408 /* method extern_classes#MClass#ftype_cache= for (self: MClass, nullable ForeignType) */
409 void nit__extern_classes___MClass___ftype_cache_61d(val* self, val* p0) {
410 self->attrs[COLOR_nit__extern_classes__MClass___ftype_cache].val = p0; /* _ftype_cache on <self:MClass> */
411 RET_LABEL:;
412 }
413 /* method extern_classes#MClass#ftype_computed for (self: MClass): Bool */
414 short int nit__extern_classes___MClass___ftype_computed(val* self) {
415 short int var /* : Bool */;
416 short int var1 /* : Bool */;
417 var1 = self->attrs[COLOR_nit__extern_classes__MClass___ftype_computed].s; /* _ftype_computed on <self:MClass> */
418 var = var1;
419 RET_LABEL:;
420 return var;
421 }
422 /* method extern_classes#MClass#ftype_computed= for (self: MClass, Bool) */
423 void nit__extern_classes___MClass___ftype_computed_61d(val* self, short int p0) {
424 self->attrs[COLOR_nit__extern_classes__MClass___ftype_computed].s = p0; /* _ftype_computed on <self:MClass> */
425 RET_LABEL:;
426 }
427 /* method extern_classes#MClass#ctype for (self: MClass): nullable String */
428 val* nit__extern_classes___MClass___ctype(val* self) {
429 val* var /* : nullable String */;
430 val* var1 /* : nullable ForeignType */;
431 val* var3 /* : nullable ForeignType */;
432 val* var4 /* : String */;
433 {
434 { /* Inline extern_classes#MClass#ftype_cache (self) on <self:MClass> */
435 var3 = self->attrs[COLOR_nit__extern_classes__MClass___ftype_cache].val; /* _ftype_cache on <self:MClass> */
436 var1 = var3;
437 RET_LABEL2:(void)0;
438 }
439 }
440 if (var1 == NULL) {
441 PRINT_ERROR("Runtime error: %s", "Receiver is null");
442 PRINT_ERROR(" (%s:%d)\n", FILE_nit__extern_classes, 91);
443 fatal_exit(1);
444 } else {
445 var4 = ((val*(*)(val* self))(var1->class->vft[COLOR_nit__light_ffi_base__ForeignType__ctype]))(var1); /* ctype on <var1:nullable ForeignType>*/
446 }
447 var = var4;
448 goto RET_LABEL;
449 RET_LABEL:;
450 return var;
451 }
452 /* method extern_classes#MClass#compute_ftype for (self: MClass, ExternClassesTypingPhaseModel): nullable ForeignType */
453 val* nit__extern_classes___MClass___compute_ftype(val* self, val* p0) {
454 val* var /* : nullable ForeignType */;
455 val* var_v /* var v: ExternClassesTypingPhaseModel */;
456 short int var1 /* : Bool */;
457 short int var3 /* : Bool */;
458 val* var4 /* : nullable ForeignType */;
459 val* var6 /* : nullable ForeignType */;
460 val* var7 /* : MClassKind */;
461 val* var9 /* : MClassKind */;
462 val* var10 /* : Sys */;
463 val* var11 /* : MClassKind */;
464 short int var12 /* : Bool */;
465 val* var_other /* var other: nullable Object */;
466 short int var14 /* : Bool */;
467 short int var15 /* : Bool */;
468 val* var16 /* : String */;
469 val* var18 /* : String */;
470 static val* varonce;
471 val* var19 /* : String */;
472 char* var20 /* : NativeString */;
473 val* var21 /* : FlatString */;
474 short int var22 /* : Bool */;
475 val* var23 /* : ForeignType */;
476 val* var26 /* : nullable ForeignType */;
477 val* var28 /* : nullable ForeignType */;
478 val* var29 /* : MClassDef */;
479 val* var31 /* : MClassDef */;
480 val* var32 /* : nullable ForeignType */;
481 val* var_ftype /* var ftype: nullable ForeignType */;
482 short int var33 /* : Bool */;
483 short int var34 /* : Bool */;
484 val* var_other36 /* var other: nullable Object */;
485 short int var37 /* : Bool */;
486 short int var39 /* : Bool */;
487 val* var_ftype_b /* var ftype_b: nullable ForeignType */;
488 val* var40 /* : MClassDef */;
489 val* var42 /* : MClassDef */;
490 val* var43 /* : MModule */;
491 val* var45 /* : MModule */;
492 val* var46 /* : POSetElement[MClass] */;
493 val* var47 /* : Collection[nullable Object] */;
494 val* var_ /* var : Collection[MClass] */;
495 val* var48 /* : Iterator[nullable Object] */;
496 val* var_49 /* var : Iterator[MClass] */;
497 short int var50 /* : Bool */;
498 val* var51 /* : nullable Object */;
499 val* var_s /* var s: MClass */;
500 val* var52 /* : nullable ForeignType */;
501 val* var_super_ftype /* var super_ftype: nullable ForeignType */;
502 short int var53 /* : Bool */;
503 short int var54 /* : Bool */;
504 short int var56 /* : Bool */;
505 short int var57 /* : Bool */;
506 short int var58 /* : Bool */;
507 short int var59 /* : Bool */;
508 short int var61 /* : Bool */;
509 short int var63 /* : Bool */;
510 short int var64 /* : Bool */;
511 short int var66 /* : Bool */;
512 short int var67 /* : Bool */;
513 val* var68 /* : ToolContext */;
514 val* var70 /* : ToolContext */;
515 val* var72 /* : NativeArray[String] */;
516 static val* varonce71;
517 static val* varonce73;
518 val* var74 /* : String */;
519 char* var75 /* : NativeString */;
520 val* var76 /* : FlatString */;
521 static val* varonce77;
522 val* var78 /* : String */;
523 char* var79 /* : NativeString */;
524 val* var80 /* : FlatString */;
525 val* var81 /* : String */;
526 val* var82 /* : String */;
527 val* var83 /* : Message */;
528 var_v = p0;
529 {
530 { /* Inline extern_classes#MClass#ftype_computed (self) on <self:MClass> */
531 var3 = self->attrs[COLOR_nit__extern_classes__MClass___ftype_computed].s; /* _ftype_computed on <self:MClass> */
532 var1 = var3;
533 RET_LABEL2:(void)0;
534 }
535 }
536 if (var1){
537 {
538 { /* Inline extern_classes#MClass#ftype_cache (self) on <self:MClass> */
539 var6 = self->attrs[COLOR_nit__extern_classes__MClass___ftype_cache].val; /* _ftype_cache on <self:MClass> */
540 var4 = var6;
541 RET_LABEL5:(void)0;
542 }
543 }
544 var = var4;
545 goto RET_LABEL;
546 } else {
547 }
548 {
549 { /* Inline model#MClass#kind (self) on <self:MClass> */
550 var9 = self->attrs[COLOR_nit__model__MClass___kind].val; /* _kind on <self:MClass> */
551 if (unlikely(var9 == NULL)) {
552 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
553 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 436);
554 fatal_exit(1);
555 }
556 var7 = var9;
557 RET_LABEL8:(void)0;
558 }
559 }
560 var10 = glob_sys;
561 {
562 var11 = nit__model___standard__Sys___extern_kind(var10);
563 }
564 {
565 { /* Inline kernel#Object#!= (var7,var11) on <var7:MClassKind> */
566 var_other = var11;
567 {
568 var14 = ((short int(*)(val* self, val* p0))(var7->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var7, var_other); /* == on <var7:MClassKind>*/
569 }
570 var15 = !var14;
571 var12 = var15;
572 goto RET_LABEL13;
573 RET_LABEL13:(void)0;
574 }
575 }
576 if (var12){
577 var = ((val*)NULL);
578 goto RET_LABEL;
579 } else {
580 }
581 {
582 { /* Inline model#MClass#name (self) on <self:MClass> */
583 var18 = self->attrs[COLOR_nit__model__MClass___name].val; /* _name on <self:MClass> */
584 if (unlikely(var18 == NULL)) {
585 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
586 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 362);
587 fatal_exit(1);
588 }
589 var16 = var18;
590 RET_LABEL17:(void)0;
591 }
592 }
593 if (likely(varonce!=NULL)) {
594 var19 = varonce;
595 } else {
596 var20 = "Pointer";
597 var21 = standard___standard__NativeString___to_s_with_length(var20, 7l);
598 var19 = var21;
599 varonce = var19;
600 }
601 {
602 var22 = ((short int(*)(val* self, val* p0))(var16->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var16, var19); /* == on <var16:String>*/
603 }
604 if (var22){
605 var23 = NEW_nit__ForeignType(&type_nit__ForeignType);
606 {
607 ((void(*)(val* self))(var23->class->vft[COLOR_standard__kernel__Object__init]))(var23); /* init on <var23:ForeignType>*/
608 }
609 {
610 { /* Inline extern_classes#MClass#ftype_cache= (self,var23) on <self:MClass> */
611 self->attrs[COLOR_nit__extern_classes__MClass___ftype_cache].val = var23; /* _ftype_cache on <self:MClass> */
612 RET_LABEL24:(void)0;
613 }
614 }
615 {
616 { /* Inline extern_classes#MClass#ftype_computed= (self,1) on <self:MClass> */
617 self->attrs[COLOR_nit__extern_classes__MClass___ftype_computed].s = 1; /* _ftype_computed on <self:MClass> */
618 RET_LABEL25:(void)0;
619 }
620 }
621 {
622 { /* Inline extern_classes#MClass#ftype_cache (self) on <self:MClass> */
623 var28 = self->attrs[COLOR_nit__extern_classes__MClass___ftype_cache].val; /* _ftype_cache on <self:MClass> */
624 var26 = var28;
625 RET_LABEL27:(void)0;
626 }
627 }
628 var = var26;
629 goto RET_LABEL;
630 } else {
631 }
632 {
633 { /* Inline model#MClass#intro (self) on <self:MClass> */
634 var31 = self->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on <self:MClass> */
635 if (unlikely(var31 == NULL)) {
636 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
637 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 460);
638 fatal_exit(1);
639 }
640 var29 = var31;
641 RET_LABEL30:(void)0;
642 }
643 }
644 {
645 var32 = nit__extern_classes___MClassDef___ftype(var29);
646 }
647 var_ftype = var32;
648 if (var_ftype == NULL) {
649 var33 = 1; /* is null */
650 } else {
651 var33 = 0; /* arg is null but recv is not */
652 }
653 if (0) {
654 { /* Inline kernel#Object#== (var_ftype,((val*)NULL)) on <var_ftype:nullable ForeignType> */
655 var_other36 = ((val*)NULL);
656 {
657 { /* Inline kernel#Object#is_same_instance (var_ftype,var_other36) on <var_ftype:nullable ForeignType(ForeignType)> */
658 var39 = var_ftype == var_other36;
659 var37 = var39;
660 goto RET_LABEL38;
661 RET_LABEL38:(void)0;
662 }
663 }
664 var34 = var37;
665 goto RET_LABEL35;
666 RET_LABEL35:(void)0;
667 }
668 var33 = var34;
669 }
670 if (var33){
671 var_ftype_b = ((val*)NULL);
672 {
673 { /* Inline model#MClass#intro (self) on <self:MClass> */
674 var42 = self->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on <self:MClass> */
675 if (unlikely(var42 == NULL)) {
676 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
677 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 460);
678 fatal_exit(1);
679 }
680 var40 = var42;
681 RET_LABEL41:(void)0;
682 }
683 }
684 {
685 { /* Inline model#MClassDef#mmodule (var40) on <var40:MClassDef> */
686 var45 = var40->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var40:MClassDef> */
687 if (unlikely(var45 == NULL)) {
688 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
689 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550);
690 fatal_exit(1);
691 }
692 var43 = var45;
693 RET_LABEL44:(void)0;
694 }
695 }
696 {
697 var46 = nit___nit__MClass___in_hierarchy(self, var43);
698 }
699 {
700 var47 = poset___poset__POSetElement___direct_greaters(var46);
701 }
702 var_ = var47;
703 {
704 var48 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[MClass]>*/
705 }
706 var_49 = var48;
707 for(;;) {
708 {
709 var50 = ((short int(*)(val* self))((((long)var_49&3)?class_info[((long)var_49&3)]:var_49->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_49); /* is_ok on <var_49:Iterator[MClass]>*/
710 }
711 if (var50){
712 {
713 var51 = ((val*(*)(val* self))((((long)var_49&3)?class_info[((long)var_49&3)]:var_49->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_49); /* item on <var_49:Iterator[MClass]>*/
714 }
715 var_s = var51;
716 {
717 var52 = nit__extern_classes___MClass___compute_ftype(var_s, var_v);
718 }
719 var_super_ftype = var52;
720 if (var_super_ftype == NULL) {
721 var53 = 0; /* is null */
722 } else {
723 var53 = 1; /* arg is null and recv is not */
724 }
725 if (0) {
726 { /* Inline kernel#Object#!= (var_super_ftype,((val*)NULL)) on <var_super_ftype:nullable ForeignType> */
727 var_other = ((val*)NULL);
728 {
729 var56 = ((short int(*)(val* self, val* p0))(var_super_ftype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_super_ftype, var_other); /* == on <var_super_ftype:nullable ForeignType(ForeignType)>*/
730 }
731 var57 = !var56;
732 var54 = var57;
733 goto RET_LABEL55;
734 RET_LABEL55:(void)0;
735 }
736 var53 = var54;
737 }
738 if (var53){
739 if (var_ftype_b == NULL) {
740 var58 = 1; /* is null */
741 } else {
742 var58 = 0; /* arg is null but recv is not */
743 }
744 if (0) {
745 { /* Inline kernel#Object#== (var_ftype_b,((val*)NULL)) on <var_ftype_b:nullable ForeignType> */
746 var_other36 = ((val*)NULL);
747 {
748 { /* Inline kernel#Object#is_same_instance (var_ftype_b,var_other36) on <var_ftype_b:nullable ForeignType(ForeignType)> */
749 var63 = var_ftype_b == var_other36;
750 var61 = var63;
751 goto RET_LABEL62;
752 RET_LABEL62:(void)0;
753 }
754 }
755 var59 = var61;
756 goto RET_LABEL60;
757 RET_LABEL60:(void)0;
758 }
759 var58 = var59;
760 }
761 if (var58){
762 var_ftype_b = var_super_ftype;
763 goto BREAK_label;
764 } else {
765 {
766 { /* Inline kernel#Object#!= (var_super_ftype,var_ftype_b) on <var_super_ftype:nullable ForeignType(ForeignType)> */
767 var_other = var_ftype_b;
768 {
769 var66 = ((short int(*)(val* self, val* p0))(var_super_ftype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_super_ftype, var_other); /* == on <var_super_ftype:nullable ForeignType(ForeignType)>*/
770 }
771 var67 = !var66;
772 var64 = var67;
773 goto RET_LABEL65;
774 RET_LABEL65:(void)0;
775 }
776 }
777 if (var64){
778 {
779 { /* Inline phase#Phase#toolcontext (var_v) on <var_v:ExternClassesTypingPhaseModel> */
780 var70 = var_v->attrs[COLOR_nit__phase__Phase___toolcontext].val; /* _toolcontext on <var_v:ExternClassesTypingPhaseModel> */
781 if (unlikely(var70 == NULL)) {
782 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
783 PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 200);
784 fatal_exit(1);
785 }
786 var68 = var70;
787 RET_LABEL69:(void)0;
788 }
789 }
790 if (unlikely(varonce71==NULL)) {
791 var72 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
792 if (likely(varonce73!=NULL)) {
793 var74 = varonce73;
794 } else {
795 var75 = "FFI Error: extern type conflict in `";
796 var76 = standard___standard__NativeString___to_s_with_length(var75, 36l);
797 var74 = var76;
798 varonce73 = var74;
799 }
800 ((struct instance_standard__NativeArray*)var72)->values[0]=var74;
801 if (likely(varonce77!=NULL)) {
802 var78 = varonce77;
803 } else {
804 var79 = "`.";
805 var80 = standard___standard__NativeString___to_s_with_length(var79, 2l);
806 var78 = var80;
807 varonce77 = var78;
808 }
809 ((struct instance_standard__NativeArray*)var72)->values[2]=var78;
810 } else {
811 var72 = varonce71;
812 varonce71 = NULL;
813 }
814 {
815 var81 = ((val*(*)(val* self))(self->class->vft[COLOR_standard__string__Object__to_s]))(self); /* to_s on <self:MClass>*/
816 }
817 ((struct instance_standard__NativeArray*)var72)->values[1]=var81;
818 {
819 var82 = ((val*(*)(val* self))(var72->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var72); /* native_to_s on <var72:NativeArray[String]>*/
820 }
821 varonce71 = var72;
822 {
823 var83 = nit___nit__ToolContext___error(var68, ((val*)NULL), var82);
824 }
825 var = ((val*)NULL);
826 goto RET_LABEL;
827 } else {
828 }
829 }
830 } else {
831 }
832 BREAK_label: (void)0;
833 {
834 ((void(*)(val* self))((((long)var_49&3)?class_info[((long)var_49&3)]:var_49->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_49); /* next on <var_49:Iterator[MClass]>*/
835 }
836 } else {
837 goto BREAK_label84;
838 }
839 }
840 BREAK_label84: (void)0;
841 {
842 ((void(*)(val* self))((((long)var_49&3)?class_info[((long)var_49&3)]:var_49->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_49); /* finish on <var_49:Iterator[MClass]>*/
843 }
844 var_ftype = var_ftype_b;
845 } else {
846 }
847 {
848 { /* Inline extern_classes#MClass#ftype_cache= (self,var_ftype) on <self:MClass> */
849 self->attrs[COLOR_nit__extern_classes__MClass___ftype_cache].val = var_ftype; /* _ftype_cache on <self:MClass> */
850 RET_LABEL85:(void)0;
851 }
852 }
853 {
854 { /* Inline extern_classes#MClass#ftype_computed= (self,1) on <self:MClass> */
855 self->attrs[COLOR_nit__extern_classes__MClass___ftype_computed].s = 1; /* _ftype_computed on <self:MClass> */
856 RET_LABEL86:(void)0;
857 }
858 }
859 var = var_ftype;
860 goto RET_LABEL;
861 RET_LABEL:;
862 return var;
863 }