Merge: doc: fixed some typos and other misc. corrections
[nit.git] / c_src / nitc__platform.sep.1.c
1 #include "nitc__platform.sep.0.h"
2 /* method platform$ToolContext$platform_from_name for (self: ToolContext, String): nullable Platform */
3 val* nitc__platform___ToolContext___platform_from_name(val* self, val* p0) {
4 val* var /* : nullable Platform */;
5 val* var_name /* var name: String */;
6 var_name = p0;
7 var = ((val*)NULL);
8 goto RET_LABEL;
9 RET_LABEL:;
10 return var;
11 }
12 /* method platform$PlatformPhase$process_annotated_node for (self: PlatformPhase, ANode, AAnnotation) */
13 void nitc__platform___nitc__platform__PlatformPhase___nitc__phase__Phase__process_annotated_node(val* self, val* p0, val* p1) {
14 val* var_nmoduledecl /* var nmoduledecl: ANode */;
15 val* var_nat /* var nat: AAnnotation */;
16 static val* varonce;
17 val* var /* : String */;
18 char* var1 /* : CString */;
19 val* var2 /* : String */;
20 val* var3 /* : nullable Int */;
21 val* var4 /* : nullable Int */;
22 val* var5 /* : nullable Bool */;
23 val* var6 /* : nullable Bool */;
24 val* var_annotation_name /* var annotation_name: String */;
25 val* var7 /* : String */;
26 short int var8 /* : Bool */;
27 val* var_other /* var other: nullable Object */;
28 short int var10 /* : Bool */;
29 short int var11 /* : Bool */;
30 val* var12 /* : ToolContext */;
31 val* var14 /* : ToolContext */;
32 val* var15 /* : ModelBuilder */;
33 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
34 short int var16 /* : Bool */;
35 int cltype;
36 int idtype;
37 short int var17 /* : Bool */;
38 val* var19 /* : NativeArray[String] */;
39 static val* varonce18;
40 static val* varonce20;
41 val* var21 /* : String */;
42 char* var22 /* : CString */;
43 val* var23 /* : String */;
44 val* var24 /* : nullable Int */;
45 val* var25 /* : nullable Int */;
46 val* var26 /* : nullable Bool */;
47 val* var27 /* : nullable Bool */;
48 static val* varonce28;
49 val* var29 /* : String */;
50 char* var30 /* : CString */;
51 val* var31 /* : String */;
52 val* var32 /* : nullable Int */;
53 val* var33 /* : nullable Int */;
54 val* var34 /* : nullable Bool */;
55 val* var35 /* : nullable Bool */;
56 val* var36 /* : String */;
57 val* var37 /* : ANodes[AExpr] */;
58 val* var39 /* : ANodes[AExpr] */;
59 val* var_args /* var args: ANodes[AExpr] */;
60 long var40 /* : Int */;
61 short int var41 /* : Bool */;
62 short int var43 /* : Bool */;
63 int cltype44;
64 int idtype45;
65 const char* var_class_name;
66 short int var46 /* : Bool */;
67 val* var48 /* : NativeArray[String] */;
68 static val* varonce47;
69 static val* varonce49;
70 val* var50 /* : String */;
71 char* var51 /* : CString */;
72 val* var52 /* : String */;
73 val* var53 /* : nullable Int */;
74 val* var54 /* : nullable Int */;
75 val* var55 /* : nullable Bool */;
76 val* var56 /* : nullable Bool */;
77 static val* varonce57;
78 val* var58 /* : String */;
79 char* var59 /* : CString */;
80 val* var60 /* : String */;
81 val* var61 /* : nullable Int */;
82 val* var62 /* : nullable Int */;
83 val* var63 /* : nullable Bool */;
84 val* var64 /* : nullable Bool */;
85 val* var65 /* : String */;
86 short int var66 /* : Bool */;
87 val* var67 /* : AModuleName */;
88 val* var69 /* : AModuleName */;
89 val* var70 /* : String */;
90 val* var_platform_name /* var platform_name: nullable Object */;
91 val* var71 /* : nullable Object */;
92 val* var72 /* : nullable String */;
93 short int var73 /* : Bool */;
94 short int var74 /* : Bool */;
95 val* var76 /* : NativeArray[String] */;
96 static val* varonce75;
97 static val* varonce77;
98 val* var78 /* : String */;
99 char* var79 /* : CString */;
100 val* var80 /* : String */;
101 val* var81 /* : nullable Int */;
102 val* var82 /* : nullable Int */;
103 val* var83 /* : nullable Bool */;
104 val* var84 /* : nullable Bool */;
105 static val* varonce85;
106 val* var86 /* : String */;
107 char* var87 /* : CString */;
108 val* var88 /* : String */;
109 val* var89 /* : nullable Int */;
110 val* var90 /* : nullable Int */;
111 val* var91 /* : nullable Bool */;
112 val* var92 /* : nullable Bool */;
113 val* var93 /* : String */;
114 val* var_format_error /* var format_error: String */;
115 val* var94 /* : nullable ANode */;
116 val* var96 /* : nullable ANode */;
117 short int var97 /* : Bool */;
118 int cltype98;
119 int idtype99;
120 const char* var_class_name100;
121 val* var_nmodule /* var nmodule: AModule */;
122 val* var101 /* : nullable MModule */;
123 val* var103 /* : nullable MModule */;
124 val* var_mmodule /* var mmodule: nullable MModule */;
125 val* var104 /* : ToolContext */;
126 val* var106 /* : ToolContext */;
127 val* var107 /* : nullable Platform */;
128 val* var_platform /* var platform: nullable Platform */;
129 short int var108 /* : Bool */;
130 short int var109 /* : Bool */;
131 val* var_other111 /* var other: nullable Object */;
132 short int var112 /* : Bool */;
133 short int var114 /* : Bool */;
134 val* var115 /* : ToolContext */;
135 val* var117 /* : ToolContext */;
136 val* var118 /* : Location */;
137 val* var120 /* : Location */;
138 val* var122 /* : NativeArray[String] */;
139 static val* varonce121;
140 static val* varonce123;
141 val* var124 /* : String */;
142 char* var125 /* : CString */;
143 val* var126 /* : String */;
144 val* var127 /* : nullable Int */;
145 val* var128 /* : nullable Int */;
146 val* var129 /* : nullable Bool */;
147 val* var130 /* : nullable Bool */;
148 static val* varonce131;
149 val* var132 /* : String */;
150 char* var133 /* : CString */;
151 val* var134 /* : String */;
152 val* var135 /* : nullable Int */;
153 val* var136 /* : nullable Int */;
154 val* var137 /* : nullable Bool */;
155 val* var138 /* : nullable Bool */;
156 val* var139 /* : String */;
157 val* var140 /* : Message */;
158 val* var141 /* : nullable Platform */;
159 val* var_previous_target_platform /* var previous_target_platform: nullable Platform */;
160 short int var142 /* : Bool */;
161 short int var143 /* : Bool */;
162 short int var144 /* : Bool */;
163 short int var146 /* : Bool */;
164 short int var147 /* : Bool */;
165 short int var_ /* var : Bool */;
166 short int var148 /* : Bool */;
167 short int var150 /* : Bool */;
168 short int var151 /* : Bool */;
169 val* var153 /* : NativeArray[String] */;
170 static val* varonce152;
171 static val* varonce154;
172 val* var155 /* : String */;
173 char* var156 /* : CString */;
174 val* var157 /* : String */;
175 val* var158 /* : nullable Int */;
176 val* var159 /* : nullable Int */;
177 val* var160 /* : nullable Bool */;
178 val* var161 /* : nullable Bool */;
179 static val* varonce162;
180 val* var163 /* : String */;
181 char* var164 /* : CString */;
182 val* var165 /* : String */;
183 val* var166 /* : nullable Int */;
184 val* var167 /* : nullable Int */;
185 val* var168 /* : nullable Bool */;
186 val* var169 /* : nullable Bool */;
187 val* var170 /* : String */;
188 val* var171 /* : String */;
189 var_nmoduledecl = p0;
190 var_nat = p1;
191 if (likely(varonce!=NULL)) {
192 var = varonce;
193 } else {
194 var1 = "platform";
195 var3 = (val*)(8l<<2|1);
196 var4 = (val*)(8l<<2|1);
197 var5 = (val*)((long)(0)<<2|3);
198 var6 = (val*)((long)(0)<<2|3);
199 var2 = core__flat___CString___to_s_unsafe(var1, var3, var4, var5, var6);
200 var = var2;
201 varonce = var;
202 }
203 var_annotation_name = var;
204 {
205 var7 = nitc___nitc__AAnnotation___name(var_nat);
206 }
207 {
208 { /* Inline kernel$Object$!= (var7,var_annotation_name) on <var7:String> */
209 var_other = var_annotation_name;
210 {
211 var10 = ((short int(*)(val* self, val* p0))(var7->class->vft[COLOR_core__kernel__Object___61d_61d]))(var7, var_other); /* == on <var7:String>*/
212 }
213 var11 = !var10;
214 var8 = var11;
215 goto RET_LABEL9;
216 RET_LABEL9:(void)0;
217 }
218 }
219 if (var8){
220 goto RET_LABEL;
221 } else {
222 }
223 {
224 { /* Inline phase$Phase$toolcontext (self) on <self:PlatformPhase> */
225 var14 = self->attrs[COLOR_nitc__phase__Phase___toolcontext].val; /* _toolcontext on <self:PlatformPhase> */
226 if (unlikely(var14 == NULL)) {
227 if(catchStack.cursor >= 0){
228 longjmp(catchStack.envs[catchStack.cursor], 1);
229 }
230 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
231 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 210);
232 fatal_exit(1);
233 }
234 var12 = var14;
235 RET_LABEL13:(void)0;
236 }
237 }
238 {
239 var15 = nitc__modelbuilder_base___ToolContext___modelbuilder(var12);
240 }
241 var_modelbuilder = var15;
242 /* <var_nmoduledecl:ANode> isa AModuledecl */
243 cltype = type_nitc__AModuledecl.color;
244 idtype = type_nitc__AModuledecl.id;
245 if(cltype >= var_nmoduledecl->type->table_size) {
246 var16 = 0;
247 } else {
248 var16 = var_nmoduledecl->type->type_table[cltype] == idtype;
249 }
250 var17 = !var16;
251 if (var17){
252 if (unlikely(varonce18==NULL)) {
253 var19 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
254 if (likely(varonce20!=NULL)) {
255 var21 = varonce20;
256 } else {
257 var22 = "Syntax Error: only the declaration of modules may use `";
258 var24 = (val*)(55l<<2|1);
259 var25 = (val*)(55l<<2|1);
260 var26 = (val*)((long)(0)<<2|3);
261 var27 = (val*)((long)(0)<<2|3);
262 var23 = core__flat___CString___to_s_unsafe(var22, var24, var25, var26, var27);
263 var21 = var23;
264 varonce20 = var21;
265 }
266 ((struct instance_core__NativeArray*)var19)->values[0]=var21;
267 if (likely(varonce28!=NULL)) {
268 var29 = varonce28;
269 } else {
270 var30 = "`.";
271 var32 = (val*)(2l<<2|1);
272 var33 = (val*)(2l<<2|1);
273 var34 = (val*)((long)(0)<<2|3);
274 var35 = (val*)((long)(0)<<2|3);
275 var31 = core__flat___CString___to_s_unsafe(var30, var32, var33, var34, var35);
276 var29 = var31;
277 varonce28 = var29;
278 }
279 ((struct instance_core__NativeArray*)var19)->values[2]=var29;
280 } else {
281 var19 = varonce18;
282 varonce18 = NULL;
283 }
284 ((struct instance_core__NativeArray*)var19)->values[1]=var_annotation_name;
285 {
286 var36 = ((val*(*)(val* self))(var19->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var19); /* native_to_s on <var19:NativeArray[String]>*/
287 }
288 varonce18 = var19;
289 {
290 nitc___nitc__ModelBuilder___error(var_modelbuilder, var_nat, var36); /* Direct call modelbuilder_base$ModelBuilder$error on <var_modelbuilder:ModelBuilder>*/
291 }
292 goto RET_LABEL;
293 } else {
294 }
295 {
296 { /* Inline parser_nodes$AAnnotation$n_args (var_nat) on <var_nat:AAnnotation> */
297 var39 = var_nat->attrs[COLOR_nitc__parser_nodes__AAnnotation___n_args].val; /* _n_args on <var_nat:AAnnotation> */
298 if (unlikely(var39 == NULL)) {
299 if(catchStack.cursor >= 0){
300 longjmp(catchStack.envs[catchStack.cursor], 1);
301 }
302 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
303 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 3007);
304 fatal_exit(1);
305 }
306 var37 = var39;
307 RET_LABEL38:(void)0;
308 }
309 }
310 var_args = var37;
311 {
312 var40 = nitc___nitc__ANodes___core__abstract_collection__Collection__length(var_args);
313 }
314 {
315 { /* Inline kernel$Int$> (var40,1l) on <var40:Int> */
316 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
317 /* <1l:Int> isa OTHER */
318 var43 = 1; /* easy <1l:Int> isa OTHER*/
319 if (unlikely(!var43)) {
320 var_class_name = type_core__Int.name;
321 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
322 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
323 fatal_exit(1);
324 }
325 var46 = var40 > 1l;
326 var41 = var46;
327 goto RET_LABEL42;
328 RET_LABEL42:(void)0;
329 }
330 }
331 if (var41){
332 if (unlikely(varonce47==NULL)) {
333 var48 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
334 if (likely(varonce49!=NULL)) {
335 var50 = varonce49;
336 } else {
337 var51 = "Syntax Error: `";
338 var53 = (val*)(15l<<2|1);
339 var54 = (val*)(15l<<2|1);
340 var55 = (val*)((long)(0)<<2|3);
341 var56 = (val*)((long)(0)<<2|3);
342 var52 = core__flat___CString___to_s_unsafe(var51, var53, var54, var55, var56);
343 var50 = var52;
344 varonce49 = var50;
345 }
346 ((struct instance_core__NativeArray*)var48)->values[0]=var50;
347 if (likely(varonce57!=NULL)) {
348 var58 = varonce57;
349 } else {
350 var59 = "` expects at most a single argument.";
351 var61 = (val*)(36l<<2|1);
352 var62 = (val*)(36l<<2|1);
353 var63 = (val*)((long)(0)<<2|3);
354 var64 = (val*)((long)(0)<<2|3);
355 var60 = core__flat___CString___to_s_unsafe(var59, var61, var62, var63, var64);
356 var58 = var60;
357 varonce57 = var58;
358 }
359 ((struct instance_core__NativeArray*)var48)->values[2]=var58;
360 } else {
361 var48 = varonce47;
362 varonce47 = NULL;
363 }
364 ((struct instance_core__NativeArray*)var48)->values[1]=var_annotation_name;
365 {
366 var65 = ((val*(*)(val* self))(var48->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var48); /* native_to_s on <var48:NativeArray[String]>*/
367 }
368 varonce47 = var48;
369 {
370 nitc___nitc__ModelBuilder___error(var_modelbuilder, var_nat, var65); /* Direct call modelbuilder_base$ModelBuilder$error on <var_modelbuilder:ModelBuilder>*/
371 }
372 goto RET_LABEL;
373 } else {
374 {
375 var66 = nitc___nitc__ANodes___core__abstract_collection__Collection__is_empty(var_args);
376 }
377 if (var66){
378 {
379 { /* Inline parser_nodes$AModuledecl$n_name (var_nmoduledecl) on <var_nmoduledecl:ANode(AModuledecl)> */
380 var69 = var_nmoduledecl->attrs[COLOR_nitc__parser_nodes__AModuledecl___n_name].val; /* _n_name on <var_nmoduledecl:ANode(AModuledecl)> */
381 if (unlikely(var69 == NULL)) {
382 if(catchStack.cursor >= 0){
383 longjmp(catchStack.envs[catchStack.cursor], 1);
384 }
385 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
386 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 1149);
387 fatal_exit(1);
388 }
389 var67 = var69;
390 RET_LABEL68:(void)0;
391 }
392 }
393 {
394 var70 = nitc__parser_work___Prod___collect_text(var67);
395 }
396 var_platform_name = var70;
397 } else {
398 {
399 var71 = core___core__SequenceRead___Collection__first(var_args);
400 }
401 {
402 var72 = nitc__literal___AExpr___as_string(var71);
403 }
404 var_platform_name = var72;
405 if (var_platform_name == NULL) {
406 var73 = 1; /* is null */
407 } else {
408 var73 = 0; /* arg is null but recv is not */
409 }
410 if (0) {
411 var74 = ((short int(*)(val* self, val* p0))(var_platform_name->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_platform_name, ((val*)NULL)); /* == on <var_platform_name:nullable Object(nullable String)>*/
412 var73 = var74;
413 }
414 if (var73){
415 if (unlikely(varonce75==NULL)) {
416 var76 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
417 if (likely(varonce77!=NULL)) {
418 var78 = varonce77;
419 } else {
420 var79 = "Syntax Error: `";
421 var81 = (val*)(15l<<2|1);
422 var82 = (val*)(15l<<2|1);
423 var83 = (val*)((long)(0)<<2|3);
424 var84 = (val*)((long)(0)<<2|3);
425 var80 = core__flat___CString___to_s_unsafe(var79, var81, var82, var83, var84);
426 var78 = var80;
427 varonce77 = var78;
428 }
429 ((struct instance_core__NativeArray*)var76)->values[0]=var78;
430 if (likely(varonce85!=NULL)) {
431 var86 = varonce85;
432 } else {
433 var87 = "` expects its argument to be the name of the target platform as a String literal.";
434 var89 = (val*)(81l<<2|1);
435 var90 = (val*)(81l<<2|1);
436 var91 = (val*)((long)(0)<<2|3);
437 var92 = (val*)((long)(0)<<2|3);
438 var88 = core__flat___CString___to_s_unsafe(var87, var89, var90, var91, var92);
439 var86 = var88;
440 varonce85 = var86;
441 }
442 ((struct instance_core__NativeArray*)var76)->values[2]=var86;
443 } else {
444 var76 = varonce75;
445 varonce75 = NULL;
446 }
447 ((struct instance_core__NativeArray*)var76)->values[1]=var_annotation_name;
448 {
449 var93 = ((val*(*)(val* self))(var76->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var76); /* native_to_s on <var76:NativeArray[String]>*/
450 }
451 varonce75 = var76;
452 var_format_error = var93;
453 {
454 nitc___nitc__ModelBuilder___error(var_modelbuilder, var_nat, var_format_error); /* Direct call modelbuilder_base$ModelBuilder$error on <var_modelbuilder:ModelBuilder>*/
455 }
456 goto RET_LABEL;
457 } else {
458 }
459 }
460 }
461 {
462 { /* Inline parser_nodes$ANode$parent (var_nmoduledecl) on <var_nmoduledecl:ANode(AModuledecl)> */
463 var96 = var_nmoduledecl->attrs[COLOR_nitc__parser_nodes__ANode___parent].val; /* _parent on <var_nmoduledecl:ANode(AModuledecl)> */
464 var94 = var96;
465 RET_LABEL95:(void)0;
466 }
467 }
468 /* <var94:nullable ANode> isa AModule */
469 cltype98 = type_nitc__AModule.color;
470 idtype99 = type_nitc__AModule.id;
471 if(var94 == NULL) {
472 var97 = 0;
473 } else {
474 if(cltype98 >= var94->type->table_size) {
475 var97 = 0;
476 } else {
477 var97 = var94->type->type_table[cltype98] == idtype99;
478 }
479 }
480 if (unlikely(!var97)) {
481 var_class_name100 = var94 == NULL ? "null" : var94->type->name;
482 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "AModule", var_class_name100);
483 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__platform, 67);
484 fatal_exit(1);
485 }
486 var_nmodule = var94;
487 {
488 { /* Inline loader$AModule$mmodule (var_nmodule) on <var_nmodule:AModule> */
489 var103 = var_nmodule->attrs[COLOR_nitc__loader__AModule___mmodule].val; /* _mmodule on <var_nmodule:AModule> */
490 var101 = var103;
491 RET_LABEL102:(void)0;
492 }
493 }
494 var_mmodule = var101;
495 {
496 { /* Inline phase$Phase$toolcontext (self) on <self:PlatformPhase> */
497 var106 = self->attrs[COLOR_nitc__phase__Phase___toolcontext].val; /* _toolcontext on <self:PlatformPhase> */
498 if (unlikely(var106 == NULL)) {
499 if(catchStack.cursor >= 0){
500 longjmp(catchStack.envs[catchStack.cursor], 1);
501 }
502 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
503 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 210);
504 fatal_exit(1);
505 }
506 var104 = var106;
507 RET_LABEL105:(void)0;
508 }
509 }
510 {
511 var107 = nitc__platform___ToolContext___platform_from_name(var104, var_platform_name);
512 }
513 var_platform = var107;
514 if (var_platform == NULL) {
515 var108 = 1; /* is null */
516 } else {
517 var108 = 0; /* arg is null but recv is not */
518 }
519 if (0) {
520 { /* Inline kernel$Object$== (var_platform,((val*)NULL)) on <var_platform:nullable Platform> */
521 var_other111 = ((val*)NULL);
522 {
523 { /* Inline kernel$Object$is_same_instance (var_platform,var_other111) on <var_platform:nullable Platform(Platform)> */
524 var114 = var_platform == var_other111;
525 var112 = var114;
526 goto RET_LABEL113;
527 RET_LABEL113:(void)0;
528 }
529 }
530 var109 = var112;
531 goto RET_LABEL110;
532 RET_LABEL110:(void)0;
533 }
534 var108 = var109;
535 }
536 if (var108){
537 {
538 { /* Inline phase$Phase$toolcontext (self) on <self:PlatformPhase> */
539 var117 = self->attrs[COLOR_nitc__phase__Phase___toolcontext].val; /* _toolcontext on <self:PlatformPhase> */
540 if (unlikely(var117 == NULL)) {
541 if(catchStack.cursor >= 0){
542 longjmp(catchStack.envs[catchStack.cursor], 1);
543 }
544 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
545 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 210);
546 fatal_exit(1);
547 }
548 var115 = var117;
549 RET_LABEL116:(void)0;
550 }
551 }
552 {
553 { /* Inline parser_nodes$ANode$location (var_nat) on <var_nat:AAnnotation> */
554 var120 = var_nat->attrs[COLOR_nitc__parser_nodes__ANode___location].val; /* _location on <var_nat:AAnnotation> */
555 if (unlikely(var120 == NULL)) {
556 if(catchStack.cursor >= 0){
557 longjmp(catchStack.envs[catchStack.cursor], 1);
558 }
559 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
560 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 25);
561 fatal_exit(1);
562 }
563 var118 = var120;
564 RET_LABEL119:(void)0;
565 }
566 }
567 if (unlikely(varonce121==NULL)) {
568 var122 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
569 if (likely(varonce123!=NULL)) {
570 var124 = varonce123;
571 } else {
572 var125 = "Error: target platform `";
573 var127 = (val*)(24l<<2|1);
574 var128 = (val*)(24l<<2|1);
575 var129 = (val*)((long)(0)<<2|3);
576 var130 = (val*)((long)(0)<<2|3);
577 var126 = core__flat___CString___to_s_unsafe(var125, var127, var128, var129, var130);
578 var124 = var126;
579 varonce123 = var124;
580 }
581 ((struct instance_core__NativeArray*)var122)->values[0]=var124;
582 if (likely(varonce131!=NULL)) {
583 var132 = varonce131;
584 } else {
585 var133 = "` unknown.";
586 var135 = (val*)(10l<<2|1);
587 var136 = (val*)(10l<<2|1);
588 var137 = (val*)((long)(0)<<2|3);
589 var138 = (val*)((long)(0)<<2|3);
590 var134 = core__flat___CString___to_s_unsafe(var133, var135, var136, var137, var138);
591 var132 = var134;
592 varonce131 = var132;
593 }
594 ((struct instance_core__NativeArray*)var122)->values[2]=var132;
595 } else {
596 var122 = varonce121;
597 varonce121 = NULL;
598 }
599 ((struct instance_core__NativeArray*)var122)->values[1]=var_platform_name;
600 {
601 var139 = ((val*(*)(val* self))(var122->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var122); /* native_to_s on <var122:NativeArray[String]>*/
602 }
603 varonce121 = var122;
604 {
605 var140 = nitc___nitc__ToolContext___error(var115, var118, var139);
606 }
607 goto RET_LABEL;
608 } else {
609 }
610 if (var_mmodule == NULL) {
611 if(catchStack.cursor >= 0){
612 longjmp(catchStack.envs[catchStack.cursor], 1);
613 }
614 PRINT_ERROR("Runtime error: %s", "Receiver is null");
615 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__platform, 76);
616 fatal_exit(1);
617 } else {
618 var141 = nitc__platform___MModule___target_platform(var_mmodule);
619 }
620 var_previous_target_platform = var141;
621 if (var_previous_target_platform == NULL) {
622 var143 = 0; /* is null */
623 } else {
624 var143 = 1; /* arg is null and recv is not */
625 }
626 if (0) {
627 { /* Inline kernel$Object$!= (var_previous_target_platform,((val*)NULL)) on <var_previous_target_platform:nullable Platform> */
628 var_other = ((val*)NULL);
629 {
630 var146 = ((short int(*)(val* self, val* p0))(var_previous_target_platform->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_previous_target_platform, var_other); /* == on <var_previous_target_platform:nullable Platform(Platform)>*/
631 }
632 var147 = !var146;
633 var144 = var147;
634 goto RET_LABEL145;
635 RET_LABEL145:(void)0;
636 }
637 var143 = var144;
638 }
639 var_ = var143;
640 if (var143){
641 {
642 { /* Inline kernel$Object$!= (var_previous_target_platform,var_platform) on <var_previous_target_platform:nullable Platform(Platform)> */
643 var_other = var_platform;
644 {
645 var150 = ((short int(*)(val* self, val* p0))(var_previous_target_platform->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_previous_target_platform, var_other); /* == on <var_previous_target_platform:nullable Platform(Platform)>*/
646 }
647 var151 = !var150;
648 var148 = var151;
649 goto RET_LABEL149;
650 RET_LABEL149:(void)0;
651 }
652 }
653 var142 = var148;
654 } else {
655 var142 = var_;
656 }
657 if (var142){
658 if (unlikely(varonce152==NULL)) {
659 var153 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
660 if (likely(varonce154!=NULL)) {
661 var155 = varonce154;
662 } else {
663 var156 = "Syntax Error: a target platform has already been defined as `";
664 var158 = (val*)(61l<<2|1);
665 var159 = (val*)(61l<<2|1);
666 var160 = (val*)((long)(0)<<2|3);
667 var161 = (val*)((long)(0)<<2|3);
668 var157 = core__flat___CString___to_s_unsafe(var156, var158, var159, var160, var161);
669 var155 = var157;
670 varonce154 = var155;
671 }
672 ((struct instance_core__NativeArray*)var153)->values[0]=var155;
673 if (likely(varonce162!=NULL)) {
674 var163 = varonce162;
675 } else {
676 var164 = "`.";
677 var166 = (val*)(2l<<2|1);
678 var167 = (val*)(2l<<2|1);
679 var168 = (val*)((long)(0)<<2|3);
680 var169 = (val*)((long)(0)<<2|3);
681 var165 = core__flat___CString___to_s_unsafe(var164, var166, var167, var168, var169);
682 var163 = var165;
683 varonce162 = var163;
684 }
685 ((struct instance_core__NativeArray*)var153)->values[2]=var163;
686 } else {
687 var153 = varonce152;
688 varonce152 = NULL;
689 }
690 {
691 var170 = ((val*(*)(val* self))(var_previous_target_platform->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_previous_target_platform); /* to_s on <var_previous_target_platform:nullable Platform(Platform)>*/
692 }
693 ((struct instance_core__NativeArray*)var153)->values[1]=var170;
694 {
695 var171 = ((val*(*)(val* self))(var153->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var153); /* native_to_s on <var153:NativeArray[String]>*/
696 }
697 varonce152 = var153;
698 {
699 nitc___nitc__ModelBuilder___error(var_modelbuilder, var_nat, var171); /* Direct call modelbuilder_base$ModelBuilder$error on <var_modelbuilder:ModelBuilder>*/
700 }
701 } else {
702 }
703 if (var_mmodule == NULL) {
704 if(catchStack.cursor >= 0){
705 longjmp(catchStack.envs[catchStack.cursor], 1);
706 }
707 PRINT_ERROR("Runtime error: %s", "Receiver is null");
708 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__platform, 81);
709 fatal_exit(1);
710 } else {
711 { /* Inline platform$MModule$local_target_platform= (var_mmodule,var_platform) on <var_mmodule:nullable MModule> */
712 if (unlikely(var_mmodule == NULL)) {
713 if(catchStack.cursor >= 0){
714 longjmp(catchStack.envs[catchStack.cursor], 1);
715 }
716 PRINT_ERROR("Runtime error: %s", "Receiver is null");
717 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__platform, 86);
718 fatal_exit(1);
719 }
720 var_mmodule->attrs[COLOR_nitc__platform__MModule___local_target_platform].val = var_platform; /* _local_target_platform on <var_mmodule:nullable MModule> */
721 RET_LABEL172:(void)0;
722 }
723 }
724 RET_LABEL:;
725 }
726 /* method platform$MModule$local_target_platform for (self: MModule): nullable Platform */
727 val* nitc__platform___MModule___local_target_platform(val* self) {
728 val* var /* : nullable Platform */;
729 val* var1 /* : nullable Platform */;
730 var1 = self->attrs[COLOR_nitc__platform__MModule___local_target_platform].val; /* _local_target_platform on <self:MModule> */
731 var = var1;
732 RET_LABEL:;
733 return var;
734 }
735 /* method platform$MModule$local_target_platform= for (self: MModule, nullable Platform) */
736 void nitc__platform___MModule___local_target_platform_61d(val* self, val* p0) {
737 self->attrs[COLOR_nitc__platform__MModule___local_target_platform].val = p0; /* _local_target_platform on <self:MModule> */
738 RET_LABEL:;
739 }
740 /* method platform$MModule$target_platform for (self: MModule): nullable Platform */
741 val* nitc__platform___MModule___target_platform(val* self) {
742 val* var /* : nullable Platform */;
743 val* var1 /* : nullable Platform */;
744 val* var3 /* : nullable Platform */;
745 val* var_ltp /* var ltp: nullable Platform */;
746 short int var4 /* : Bool */;
747 short int var5 /* : Bool */;
748 val* var_other /* var other: nullable Object */;
749 short int var7 /* : Bool */;
750 short int var8 /* : Bool */;
751 val* var9 /* : POSetElement[MModule] */;
752 val* var11 /* : POSetElement[MModule] */;
753 val* var12 /* : Collection[nullable Object] */;
754 val* var_ /* var : Collection[MModule] */;
755 val* var13 /* : Iterator[nullable Object] */;
756 val* var_14 /* var : Iterator[MModule] */;
757 short int var15 /* : Bool */;
758 val* var16 /* : nullable Object */;
759 val* var_mmodule /* var mmodule: MModule */;
760 val* var17 /* : nullable Platform */;
761 val* var19 /* : nullable Platform */;
762 short int var20 /* : Bool */;
763 short int var21 /* : Bool */;
764 short int var23 /* : Bool */;
765 short int var24 /* : Bool */;
766 {
767 { /* Inline platform$MModule$local_target_platform (self) on <self:MModule> */
768 var3 = self->attrs[COLOR_nitc__platform__MModule___local_target_platform].val; /* _local_target_platform on <self:MModule> */
769 var1 = var3;
770 RET_LABEL2:(void)0;
771 }
772 }
773 var_ltp = var1;
774 if (var_ltp == NULL) {
775 var4 = 0; /* is null */
776 } else {
777 var4 = 1; /* arg is null and recv is not */
778 }
779 if (0) {
780 { /* Inline kernel$Object$!= (var_ltp,((val*)NULL)) on <var_ltp:nullable Platform> */
781 var_other = ((val*)NULL);
782 {
783 var7 = ((short int(*)(val* self, val* p0))(var_ltp->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_ltp, var_other); /* == on <var_ltp:nullable Platform(Platform)>*/
784 }
785 var8 = !var7;
786 var5 = var8;
787 goto RET_LABEL6;
788 RET_LABEL6:(void)0;
789 }
790 var4 = var5;
791 }
792 if (var4){
793 var = var_ltp;
794 goto RET_LABEL;
795 } else {
796 }
797 {
798 { /* Inline mmodule$MModule$in_importation (self) on <self:MModule> */
799 var11 = self->attrs[COLOR_nitc__mmodule__MModule___in_importation].val; /* _in_importation on <self:MModule> */
800 if (unlikely(var11 == NULL)) {
801 if(catchStack.cursor >= 0){
802 longjmp(catchStack.envs[catchStack.cursor], 1);
803 }
804 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
805 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 108);
806 fatal_exit(1);
807 }
808 var9 = var11;
809 RET_LABEL10:(void)0;
810 }
811 }
812 {
813 var12 = poset___poset__POSetElement___greaters(var9);
814 }
815 var_ = var12;
816 {
817 var13 = ((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[MModule]>*/
818 }
819 var_14 = var13;
820 for(;;) {
821 {
822 var15 = ((short int(*)(val* self))((((long)var_14&3)?class_info[((long)var_14&3)]:var_14->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_14); /* is_ok on <var_14:Iterator[MModule]>*/
823 }
824 if (var15){
825 } else {
826 goto BREAK_label;
827 }
828 {
829 var16 = ((val*(*)(val* self))((((long)var_14&3)?class_info[((long)var_14&3)]:var_14->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_14); /* item on <var_14:Iterator[MModule]>*/
830 }
831 var_mmodule = var16;
832 {
833 { /* Inline platform$MModule$local_target_platform (var_mmodule) on <var_mmodule:MModule> */
834 var19 = var_mmodule->attrs[COLOR_nitc__platform__MModule___local_target_platform].val; /* _local_target_platform on <var_mmodule:MModule> */
835 var17 = var19;
836 RET_LABEL18:(void)0;
837 }
838 }
839 var_ltp = var17;
840 if (var_ltp == NULL) {
841 var20 = 0; /* is null */
842 } else {
843 var20 = 1; /* arg is null and recv is not */
844 }
845 if (0) {
846 { /* Inline kernel$Object$!= (var_ltp,((val*)NULL)) on <var_ltp:nullable Platform> */
847 var_other = ((val*)NULL);
848 {
849 var23 = ((short int(*)(val* self, val* p0))(var_ltp->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_ltp, var_other); /* == on <var_ltp:nullable Platform(Platform)>*/
850 }
851 var24 = !var23;
852 var21 = var24;
853 goto RET_LABEL22;
854 RET_LABEL22:(void)0;
855 }
856 var20 = var21;
857 }
858 if (var20){
859 var = var_ltp;
860 goto RET_LABEL;
861 } else {
862 }
863 {
864 ((void(*)(val* self))((((long)var_14&3)?class_info[((long)var_14&3)]:var_14->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_14); /* next on <var_14:Iterator[MModule]>*/
865 }
866 }
867 BREAK_label: (void)0;
868 {
869 ((void(*)(val* self))((((long)var_14&3)?class_info[((long)var_14&3)]:var_14->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_14); /* finish on <var_14:Iterator[MModule]>*/
870 }
871 var = ((val*)NULL);
872 goto RET_LABEL;
873 RET_LABEL:;
874 return var;
875 }
876 /* method platform$Platform$supports_libunwind for (self: Platform): Bool */
877 short int nitc___nitc__Platform___supports_libunwind(val* self) {
878 short int var /* : Bool */;
879 var = 1;
880 goto RET_LABEL;
881 RET_LABEL:;
882 return var;
883 }
884 /* method platform$Platform$supports_libgc for (self: Platform): Bool */
885 short int nitc___nitc__Platform___supports_libgc(val* self) {
886 short int var /* : Bool */;
887 var = 1;
888 goto RET_LABEL;
889 RET_LABEL:;
890 return var;
891 }
892 /* method platform$Platform$no_main for (self: Platform): Bool */
893 short int nitc___nitc__Platform___no_main(val* self) {
894 short int var /* : Bool */;
895 var = 0;
896 goto RET_LABEL;
897 RET_LABEL:;
898 return var;
899 }
900 /* method platform$Platform$supports_linker_script for (self: Platform): Bool */
901 short int nitc___nitc__Platform___supports_linker_script(val* self) {
902 short int var /* : Bool */;
903 var = 1;
904 goto RET_LABEL;
905 RET_LABEL:;
906 return var;
907 }