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