update NOTICE
[nit.git] / c_src / platform.sep.1.c
1 #include "platform.sep.0.h"
2 /* method platform#ToolContext#platform_from_name for (self: ToolContext, String): nullable Platform */
3 val* platform__ToolContext__platform_from_name(val* self, val* p0) {
4 val* var /* : nullable Platform */;
5 val* var_name /* var name: String */;
6 val* var1 /* : null */;
7 var_name = p0;
8 var1 = NULL;
9 var = var1;
10 goto RET_LABEL;
11 RET_LABEL:;
12 return var;
13 }
14 /* method platform#ToolContext#platform_from_name for (self: Object, String): nullable Platform */
15 val* VIRTUAL_platform__ToolContext__platform_from_name(val* self, val* p0) {
16 val* var /* : nullable Platform */;
17 val* var1 /* : nullable Platform */;
18 var1 = platform__ToolContext__platform_from_name(self, p0);
19 var = var1;
20 RET_LABEL:;
21 return var;
22 }
23 /* method platform#PlatformPhase#process_annotated_node for (self: PlatformPhase, ANode, AAnnotation) */
24 void platform__PlatformPhase__process_annotated_node(val* self, val* p0, val* p1) {
25 val* var_nmoduledecl /* var nmoduledecl: ANode */;
26 val* var_nat /* var nat: AAnnotation */;
27 static val* varonce;
28 val* var /* : String */;
29 char* var1 /* : NativeString */;
30 long var2 /* : Int */;
31 val* var3 /* : FlatString */;
32 val* var_annotation_name /* var annotation_name: String */;
33 val* var4 /* : String */;
34 short int var5 /* : Bool */;
35 short int var6 /* : Bool */;
36 val* var_other /* var other: nullable Object */;
37 short int var8 /* : Bool */;
38 short int var9 /* : Bool */;
39 short int var10 /* : Bool */;
40 val* var11 /* : ToolContext */;
41 val* var13 /* : ToolContext */;
42 val* var14 /* : ModelBuilder */;
43 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
44 short int var15 /* : Bool */;
45 int cltype;
46 int idtype;
47 short int var16 /* : Bool */;
48 static val* varonce17;
49 val* var18 /* : String */;
50 char* var19 /* : NativeString */;
51 long var20 /* : Int */;
52 val* var21 /* : FlatString */;
53 static val* varonce22;
54 val* var23 /* : String */;
55 char* var24 /* : NativeString */;
56 long var25 /* : Int */;
57 val* var26 /* : FlatString */;
58 val* var27 /* : Array[Object] */;
59 long var28 /* : Int */;
60 val* var29 /* : NativeArray[Object] */;
61 val* var30 /* : String */;
62 val* var31 /* : ANodes[AExpr] */;
63 val* var33 /* : ANodes[AExpr] */;
64 val* var_args /* var args: ANodes[AExpr] */;
65 long var34 /* : Int */;
66 long var35 /* : Int */;
67 short int var36 /* : Bool */;
68 short int var38 /* : Bool */;
69 int cltype39;
70 int idtype40;
71 const char* var_class_name;
72 short int var41 /* : Bool */;
73 static val* varonce42;
74 val* var43 /* : String */;
75 char* var44 /* : NativeString */;
76 long var45 /* : Int */;
77 val* var46 /* : FlatString */;
78 static val* varonce47;
79 val* var48 /* : String */;
80 char* var49 /* : NativeString */;
81 long var50 /* : Int */;
82 val* var51 /* : FlatString */;
83 val* var52 /* : Array[Object] */;
84 long var53 /* : Int */;
85 val* var54 /* : NativeArray[Object] */;
86 val* var55 /* : String */;
87 short int var56 /* : Bool */;
88 val* var57 /* : AModuleName */;
89 val* var59 /* : AModuleName */;
90 val* var60 /* : String */;
91 val* var_platform_name /* var platform_name: nullable Object */;
92 val* var61 /* : nullable Object */;
93 val* var62 /* : nullable String */;
94 val* var63 /* : null */;
95 short int var64 /* : Bool */;
96 short int var65 /* : Bool */;
97 static val* varonce66;
98 val* var67 /* : String */;
99 char* var68 /* : NativeString */;
100 long var69 /* : Int */;
101 val* var70 /* : FlatString */;
102 static val* varonce71;
103 val* var72 /* : String */;
104 char* var73 /* : NativeString */;
105 long var74 /* : Int */;
106 val* var75 /* : FlatString */;
107 val* var76 /* : Array[Object] */;
108 long var77 /* : Int */;
109 val* var78 /* : NativeArray[Object] */;
110 val* var79 /* : String */;
111 val* var_format_error /* var format_error: String */;
112 val* var80 /* : nullable ANode */;
113 val* var82 /* : nullable ANode */;
114 short int var83 /* : Bool */;
115 int cltype84;
116 int idtype85;
117 const char* var_class_name86;
118 val* var_nmodule /* var nmodule: AModule */;
119 val* var87 /* : nullable MModule */;
120 val* var89 /* : nullable MModule */;
121 val* var_mmodule /* var mmodule: nullable MModule */;
122 val* var90 /* : ToolContext */;
123 val* var92 /* : ToolContext */;
124 val* var93 /* : nullable Platform */;
125 val* var_platform /* var platform: nullable Platform */;
126 val* var94 /* : null */;
127 short int var95 /* : Bool */;
128 short int var96 /* : Bool */;
129 val* var97 /* : ToolContext */;
130 val* var99 /* : ToolContext */;
131 val* var100 /* : Location */;
132 val* var102 /* : Location */;
133 static val* varonce103;
134 val* var104 /* : String */;
135 char* var105 /* : NativeString */;
136 long var106 /* : Int */;
137 val* var107 /* : FlatString */;
138 static val* varonce108;
139 val* var109 /* : String */;
140 char* var110 /* : NativeString */;
141 long var111 /* : Int */;
142 val* var112 /* : FlatString */;
143 val* var113 /* : Array[Object] */;
144 long var114 /* : Int */;
145 val* var115 /* : NativeArray[Object] */;
146 val* var116 /* : String */;
147 val* var117 /* : nullable Platform */;
148 val* var_previous_target_platform /* var previous_target_platform: nullable Platform */;
149 short int var118 /* : Bool */;
150 val* var119 /* : null */;
151 short int var120 /* : Bool */;
152 short int var121 /* : Bool */;
153 short int var_ /* var : Bool */;
154 short int var122 /* : Bool */;
155 short int var123 /* : Bool */;
156 static val* varonce124;
157 val* var125 /* : String */;
158 char* var126 /* : NativeString */;
159 long var127 /* : Int */;
160 val* var128 /* : FlatString */;
161 static val* varonce129;
162 val* var130 /* : String */;
163 char* var131 /* : NativeString */;
164 long var132 /* : Int */;
165 val* var133 /* : FlatString */;
166 val* var134 /* : Array[Object] */;
167 long var135 /* : Int */;
168 val* var136 /* : NativeArray[Object] */;
169 val* var137 /* : String */;
170 var_nmoduledecl = p0;
171 var_nat = p1;
172 if (varonce) {
173 var = varonce;
174 } else {
175 var1 = "platform";
176 var2 = 8;
177 var3 = string__NativeString__to_s_with_length(var1, var2);
178 var = var3;
179 varonce = var;
180 }
181 var_annotation_name = var;
182 {
183 var4 = annotation__AAnnotation__name(var_nat);
184 }
185 {
186 { /* Inline kernel#Object#!= (var4,var_annotation_name) on <var4:String> */
187 var_other = var_annotation_name;
188 {
189 var9 = ((short int (*)(val*, val*))(var4->class->vft[COLOR_kernel__Object___61d_61d]))(var4, var_other) /* == on <var4:String>*/;
190 var8 = var9;
191 }
192 var10 = !var8;
193 var6 = var10;
194 goto RET_LABEL7;
195 RET_LABEL7:(void)0;
196 }
197 var5 = var6;
198 }
199 if (var5){
200 goto RET_LABEL;
201 } else {
202 }
203 {
204 { /* Inline phase#Phase#toolcontext (self) on <self:PlatformPhase> */
205 var13 = self->attrs[COLOR_phase__Phase___toolcontext].val; /* _toolcontext on <self:PlatformPhase> */
206 if (unlikely(var13 == NULL)) {
207 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
208 PRINT_ERROR(" (%s:%d)\n", "phase.nit", 162);
209 show_backtrace(1);
210 }
211 var11 = var13;
212 RET_LABEL12:(void)0;
213 }
214 }
215 {
216 var14 = modelbuilder__ToolContext__modelbuilder(var11);
217 }
218 var_modelbuilder = var14;
219 /* <var_nmoduledecl:ANode> isa AModuledecl */
220 cltype = type_parser_nodes__AModuledecl.color;
221 idtype = type_parser_nodes__AModuledecl.id;
222 if(cltype >= var_nmoduledecl->type->table_size) {
223 var15 = 0;
224 } else {
225 var15 = var_nmoduledecl->type->type_table[cltype] == idtype;
226 }
227 var16 = !var15;
228 if (var16){
229 if (varonce17) {
230 var18 = varonce17;
231 } else {
232 var19 = "Syntax error: only the declaration of modules may use \"";
233 var20 = 55;
234 var21 = string__NativeString__to_s_with_length(var19, var20);
235 var18 = var21;
236 varonce17 = var18;
237 }
238 if (varonce22) {
239 var23 = varonce22;
240 } else {
241 var24 = "\".";
242 var25 = 2;
243 var26 = string__NativeString__to_s_with_length(var24, var25);
244 var23 = var26;
245 varonce22 = var23;
246 }
247 var27 = NEW_array__Array(&type_array__Arraykernel__Object);
248 { /* var27 = array_instance Array[Object] */
249 var28 = 3;
250 var29 = NEW_array__NativeArray(var28, &type_array__NativeArraykernel__Object);
251 ((struct instance_array__NativeArray*)var29)->values[0] = (val*) var18;
252 ((struct instance_array__NativeArray*)var29)->values[1] = (val*) var_annotation_name;
253 ((struct instance_array__NativeArray*)var29)->values[2] = (val*) var23;
254 {
255 ((void (*)(val*, val*, long))(var27->class->vft[COLOR_array__Array__with_native]))(var27, var29, var28) /* with_native on <var27:Array[Object]>*/;
256 }
257 }
258 {
259 var30 = ((val* (*)(val*))(var27->class->vft[COLOR_string__Object__to_s]))(var27) /* to_s on <var27:Array[Object]>*/;
260 }
261 {
262 modelbuilder__ModelBuilder__error(var_modelbuilder, var_nat, var30); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
263 }
264 goto RET_LABEL;
265 } else {
266 }
267 {
268 { /* Inline parser_nodes#AAnnotation#n_args (var_nat) on <var_nat:AAnnotation> */
269 var33 = var_nat->attrs[COLOR_parser_nodes__AAnnotation___n_args].val; /* _n_args on <var_nat:AAnnotation> */
270 if (unlikely(var33 == NULL)) {
271 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
272 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 2039);
273 show_backtrace(1);
274 }
275 var31 = var33;
276 RET_LABEL32:(void)0;
277 }
278 }
279 var_args = var31;
280 {
281 var34 = parser_nodes__ANodes__length(var_args);
282 }
283 var35 = 1;
284 {
285 { /* Inline kernel#Int#> (var34,var35) on <var34:Int> */
286 /* Covariant cast for argument 0 (i) <var35:Int> isa OTHER */
287 /* <var35:Int> isa OTHER */
288 var38 = 1; /* easy <var35:Int> isa OTHER*/
289 if (unlikely(!var38)) {
290 var_class_name = type_kernel__Int.name;
291 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
292 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
293 show_backtrace(1);
294 }
295 var41 = var34 > var35;
296 var36 = var41;
297 goto RET_LABEL37;
298 RET_LABEL37:(void)0;
299 }
300 }
301 if (var36){
302 if (varonce42) {
303 var43 = varonce42;
304 } else {
305 var44 = "Syntax error: \"";
306 var45 = 15;
307 var46 = string__NativeString__to_s_with_length(var44, var45);
308 var43 = var46;
309 varonce42 = var43;
310 }
311 if (varonce47) {
312 var48 = varonce47;
313 } else {
314 var49 = "\" expects at most a single argument.";
315 var50 = 36;
316 var51 = string__NativeString__to_s_with_length(var49, var50);
317 var48 = var51;
318 varonce47 = var48;
319 }
320 var52 = NEW_array__Array(&type_array__Arraykernel__Object);
321 { /* var52 = array_instance Array[Object] */
322 var53 = 3;
323 var54 = NEW_array__NativeArray(var53, &type_array__NativeArraykernel__Object);
324 ((struct instance_array__NativeArray*)var54)->values[0] = (val*) var43;
325 ((struct instance_array__NativeArray*)var54)->values[1] = (val*) var_annotation_name;
326 ((struct instance_array__NativeArray*)var54)->values[2] = (val*) var48;
327 {
328 ((void (*)(val*, val*, long))(var52->class->vft[COLOR_array__Array__with_native]))(var52, var54, var53) /* with_native on <var52:Array[Object]>*/;
329 }
330 }
331 {
332 var55 = ((val* (*)(val*))(var52->class->vft[COLOR_string__Object__to_s]))(var52) /* to_s on <var52:Array[Object]>*/;
333 }
334 {
335 modelbuilder__ModelBuilder__error(var_modelbuilder, var_nat, var55); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
336 }
337 goto RET_LABEL;
338 } else {
339 {
340 var56 = parser_nodes__ANodes__is_empty(var_args);
341 }
342 if (var56){
343 {
344 { /* Inline parser_nodes#AModuledecl#n_name (var_nmoduledecl) on <var_nmoduledecl:ANode(AModuledecl)> */
345 var59 = var_nmoduledecl->attrs[COLOR_parser_nodes__AModuledecl___n_name].val; /* _n_name on <var_nmoduledecl:ANode(AModuledecl)> */
346 if (unlikely(var59 == NULL)) {
347 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
348 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 869);
349 show_backtrace(1);
350 }
351 var57 = var59;
352 RET_LABEL58:(void)0;
353 }
354 }
355 {
356 var60 = parser_work__Prod__collect_text(var57);
357 }
358 var_platform_name = var60;
359 } else {
360 {
361 var61 = abstract_collection__SequenceRead__first(var_args);
362 }
363 {
364 var62 = annotation__AExpr__as_string(var61);
365 }
366 var_platform_name = var62;
367 var63 = NULL;
368 if (var_platform_name == NULL) {
369 var64 = 1; /* is null */
370 } else {
371 var64 = 0; /* arg is null but recv is not */
372 }
373 if (0) {
374 var65 = string__FlatString___61d_61d(var_platform_name, var63);
375 var64 = var65;
376 }
377 if (var64){
378 if (varonce66) {
379 var67 = varonce66;
380 } else {
381 var68 = "Syntax error: \"";
382 var69 = 15;
383 var70 = string__NativeString__to_s_with_length(var68, var69);
384 var67 = var70;
385 varonce66 = var67;
386 }
387 if (varonce71) {
388 var72 = varonce71;
389 } else {
390 var73 = "\" expects its argument to be the name of the target platform as a String literal.";
391 var74 = 81;
392 var75 = string__NativeString__to_s_with_length(var73, var74);
393 var72 = var75;
394 varonce71 = var72;
395 }
396 var76 = NEW_array__Array(&type_array__Arraykernel__Object);
397 { /* var76 = array_instance Array[Object] */
398 var77 = 3;
399 var78 = NEW_array__NativeArray(var77, &type_array__NativeArraykernel__Object);
400 ((struct instance_array__NativeArray*)var78)->values[0] = (val*) var67;
401 ((struct instance_array__NativeArray*)var78)->values[1] = (val*) var_annotation_name;
402 ((struct instance_array__NativeArray*)var78)->values[2] = (val*) var72;
403 {
404 ((void (*)(val*, val*, long))(var76->class->vft[COLOR_array__Array__with_native]))(var76, var78, var77) /* with_native on <var76:Array[Object]>*/;
405 }
406 }
407 {
408 var79 = ((val* (*)(val*))(var76->class->vft[COLOR_string__Object__to_s]))(var76) /* to_s on <var76:Array[Object]>*/;
409 }
410 var_format_error = var79;
411 {
412 modelbuilder__ModelBuilder__error(var_modelbuilder, var_nat, var_format_error); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
413 }
414 goto RET_LABEL;
415 } else {
416 }
417 }
418 }
419 {
420 { /* Inline parser_nodes#ANode#parent (var_nmoduledecl) on <var_nmoduledecl:ANode(AModuledecl)> */
421 var82 = var_nmoduledecl->attrs[COLOR_parser_nodes__ANode___parent].val; /* _parent on <var_nmoduledecl:ANode(AModuledecl)> */
422 var80 = var82;
423 RET_LABEL81:(void)0;
424 }
425 }
426 /* <var80:nullable ANode> isa AModule */
427 cltype84 = type_parser_nodes__AModule.color;
428 idtype85 = type_parser_nodes__AModule.id;
429 if(var80 == NULL) {
430 var83 = 0;
431 } else {
432 if(cltype84 >= var80->type->table_size) {
433 var83 = 0;
434 } else {
435 var83 = var80->type->type_table[cltype84] == idtype85;
436 }
437 }
438 if (unlikely(!var83)) {
439 var_class_name86 = var80 == NULL ? "null" : var80->type->name;
440 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "AModule", var_class_name86);
441 PRINT_ERROR(" (%s:%d)\n", "platform.nit", 67);
442 show_backtrace(1);
443 }
444 var_nmodule = var80;
445 {
446 { /* Inline modelbuilder#AModule#mmodule (var_nmodule) on <var_nmodule:AModule> */
447 var89 = var_nmodule->attrs[COLOR_modelbuilder__AModule___mmodule].val; /* _mmodule on <var_nmodule:AModule> */
448 var87 = var89;
449 RET_LABEL88:(void)0;
450 }
451 }
452 var_mmodule = var87;
453 {
454 { /* Inline phase#Phase#toolcontext (self) on <self:PlatformPhase> */
455 var92 = self->attrs[COLOR_phase__Phase___toolcontext].val; /* _toolcontext on <self:PlatformPhase> */
456 if (unlikely(var92 == NULL)) {
457 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
458 PRINT_ERROR(" (%s:%d)\n", "phase.nit", 162);
459 show_backtrace(1);
460 }
461 var90 = var92;
462 RET_LABEL91:(void)0;
463 }
464 }
465 {
466 var93 = platform__ToolContext__platform_from_name(var90, var_platform_name);
467 }
468 var_platform = var93;
469 var94 = NULL;
470 if (var_platform == NULL) {
471 var95 = 1; /* is null */
472 } else {
473 var95 = 0; /* arg is null but recv is not */
474 }
475 if (0) {
476 var96 = ((short int (*)(val*, val*))(var_platform->class->vft[COLOR_kernel__Object___61d_61d]))(var_platform, var94) /* == on <var_platform:nullable Platform>*/;
477 var95 = var96;
478 }
479 if (var95){
480 {
481 { /* Inline phase#Phase#toolcontext (self) on <self:PlatformPhase> */
482 var99 = self->attrs[COLOR_phase__Phase___toolcontext].val; /* _toolcontext on <self:PlatformPhase> */
483 if (unlikely(var99 == NULL)) {
484 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
485 PRINT_ERROR(" (%s:%d)\n", "phase.nit", 162);
486 show_backtrace(1);
487 }
488 var97 = var99;
489 RET_LABEL98:(void)0;
490 }
491 }
492 {
493 { /* Inline parser_nodes#ANode#location (var_nat) on <var_nat:AAnnotation> */
494 var102 = var_nat->attrs[COLOR_parser_nodes__ANode___location].val; /* _location on <var_nat:AAnnotation> */
495 if (unlikely(var102 == NULL)) {
496 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
497 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 23);
498 show_backtrace(1);
499 }
500 var100 = var102;
501 RET_LABEL101:(void)0;
502 }
503 }
504 if (varonce103) {
505 var104 = varonce103;
506 } else {
507 var105 = "Error: target platform \"";
508 var106 = 24;
509 var107 = string__NativeString__to_s_with_length(var105, var106);
510 var104 = var107;
511 varonce103 = var104;
512 }
513 if (varonce108) {
514 var109 = varonce108;
515 } else {
516 var110 = "\" unknown";
517 var111 = 9;
518 var112 = string__NativeString__to_s_with_length(var110, var111);
519 var109 = var112;
520 varonce108 = var109;
521 }
522 var113 = NEW_array__Array(&type_array__Arraykernel__Object);
523 { /* var113 = array_instance Array[Object] */
524 var114 = 3;
525 var115 = NEW_array__NativeArray(var114, &type_array__NativeArraykernel__Object);
526 ((struct instance_array__NativeArray*)var115)->values[0] = (val*) var104;
527 ((struct instance_array__NativeArray*)var115)->values[1] = (val*) var_platform_name;
528 ((struct instance_array__NativeArray*)var115)->values[2] = (val*) var109;
529 {
530 ((void (*)(val*, val*, long))(var113->class->vft[COLOR_array__Array__with_native]))(var113, var115, var114) /* with_native on <var113:Array[Object]>*/;
531 }
532 }
533 {
534 var116 = ((val* (*)(val*))(var113->class->vft[COLOR_string__Object__to_s]))(var113) /* to_s on <var113:Array[Object]>*/;
535 }
536 {
537 toolcontext__ToolContext__error(var97, var100, var116); /* Direct call toolcontext#ToolContext#error on <var97:ToolContext>*/
538 }
539 goto RET_LABEL;
540 } else {
541 }
542 if (var_mmodule == NULL) {
543 PRINT_ERROR("Runtime error: %s", "Receiver is null");
544 PRINT_ERROR(" (%s:%d)\n", "platform.nit", 76);
545 show_backtrace(1);
546 } else {
547 var117 = platform__MModule__target_platform(var_mmodule);
548 }
549 var_previous_target_platform = var117;
550 var119 = NULL;
551 if (var_previous_target_platform == NULL) {
552 var120 = 0; /* is null */
553 } else {
554 var120 = 1; /* arg is null and recv is not */
555 }
556 if (0) {
557 var121 = ((short int (*)(val*, val*))(var_previous_target_platform->class->vft[COLOR_kernel__Object___33d_61d]))(var_previous_target_platform, var119) /* != on <var_previous_target_platform:nullable Platform>*/;
558 var120 = var121;
559 }
560 var_ = var120;
561 if (var120){
562 {
563 var123 = ((short int (*)(val*, val*))(var_previous_target_platform->class->vft[COLOR_kernel__Object___33d_61d]))(var_previous_target_platform, var_platform) /* != on <var_previous_target_platform:nullable Platform(Platform)>*/;
564 var122 = var123;
565 }
566 var118 = var122;
567 } else {
568 var118 = var_;
569 }
570 if (var118){
571 if (varonce124) {
572 var125 = varonce124;
573 } else {
574 var126 = "Syntax error: a target platform has already been defined as \"";
575 var127 = 61;
576 var128 = string__NativeString__to_s_with_length(var126, var127);
577 var125 = var128;
578 varonce124 = var125;
579 }
580 if (varonce129) {
581 var130 = varonce129;
582 } else {
583 var131 = "\".";
584 var132 = 2;
585 var133 = string__NativeString__to_s_with_length(var131, var132);
586 var130 = var133;
587 varonce129 = var130;
588 }
589 var134 = NEW_array__Array(&type_array__Arraykernel__Object);
590 { /* var134 = array_instance Array[Object] */
591 var135 = 3;
592 var136 = NEW_array__NativeArray(var135, &type_array__NativeArraykernel__Object);
593 ((struct instance_array__NativeArray*)var136)->values[0] = (val*) var125;
594 ((struct instance_array__NativeArray*)var136)->values[1] = (val*) var_previous_target_platform;
595 ((struct instance_array__NativeArray*)var136)->values[2] = (val*) var130;
596 {
597 ((void (*)(val*, val*, long))(var134->class->vft[COLOR_array__Array__with_native]))(var134, var136, var135) /* with_native on <var134:Array[Object]>*/;
598 }
599 }
600 {
601 var137 = ((val* (*)(val*))(var134->class->vft[COLOR_string__Object__to_s]))(var134) /* to_s on <var134:Array[Object]>*/;
602 }
603 {
604 modelbuilder__ModelBuilder__error(var_modelbuilder, var_nat, var137); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
605 }
606 } else {
607 }
608 if (var_mmodule == NULL) {
609 PRINT_ERROR("Runtime error: %s", "Receiver is null");
610 PRINT_ERROR(" (%s:%d)\n", "platform.nit", 81);
611 show_backtrace(1);
612 } else {
613 { /* Inline platform#MModule#local_target_platform= (var_mmodule,var_platform) on <var_mmodule:nullable MModule> */
614 if (unlikely(var_mmodule == NULL)) {
615 PRINT_ERROR("Runtime error: %s", "Receiver is null");
616 PRINT_ERROR(" (%s:%d)\n", "platform.nit", 86);
617 show_backtrace(1);
618 }
619 var_mmodule->attrs[COLOR_platform__MModule___local_target_platform].val = var_platform; /* _local_target_platform on <var_mmodule:nullable MModule> */
620 RET_LABEL138:(void)0;
621 }
622 }
623 RET_LABEL:;
624 }
625 /* method platform#PlatformPhase#process_annotated_node for (self: Object, ANode, AAnnotation) */
626 void VIRTUAL_platform__PlatformPhase__process_annotated_node(val* self, val* p0, val* p1) {
627 platform__PlatformPhase__process_annotated_node(self, p0, p1); /* Direct call platform#PlatformPhase#process_annotated_node on <self:Object(PlatformPhase)>*/
628 RET_LABEL:;
629 }
630 /* method platform#MModule#local_target_platform for (self: MModule): nullable Platform */
631 val* platform__MModule__local_target_platform(val* self) {
632 val* var /* : nullable Platform */;
633 val* var1 /* : nullable Platform */;
634 var1 = self->attrs[COLOR_platform__MModule___local_target_platform].val; /* _local_target_platform on <self:MModule> */
635 var = var1;
636 RET_LABEL:;
637 return var;
638 }
639 /* method platform#MModule#local_target_platform for (self: Object): nullable Platform */
640 val* VIRTUAL_platform__MModule__local_target_platform(val* self) {
641 val* var /* : nullable Platform */;
642 val* var1 /* : nullable Platform */;
643 val* var3 /* : nullable Platform */;
644 { /* Inline platform#MModule#local_target_platform (self) on <self:Object(MModule)> */
645 var3 = self->attrs[COLOR_platform__MModule___local_target_platform].val; /* _local_target_platform on <self:Object(MModule)> */
646 var1 = var3;
647 RET_LABEL2:(void)0;
648 }
649 var = var1;
650 RET_LABEL:;
651 return var;
652 }
653 /* method platform#MModule#local_target_platform= for (self: MModule, nullable Platform) */
654 void platform__MModule__local_target_platform_61d(val* self, val* p0) {
655 self->attrs[COLOR_platform__MModule___local_target_platform].val = p0; /* _local_target_platform on <self:MModule> */
656 RET_LABEL:;
657 }
658 /* method platform#MModule#local_target_platform= for (self: Object, nullable Platform) */
659 void VIRTUAL_platform__MModule__local_target_platform_61d(val* self, val* p0) {
660 { /* Inline platform#MModule#local_target_platform= (self,p0) on <self:Object(MModule)> */
661 self->attrs[COLOR_platform__MModule___local_target_platform].val = p0; /* _local_target_platform on <self:Object(MModule)> */
662 RET_LABEL1:(void)0;
663 }
664 RET_LABEL:;
665 }
666 /* method platform#MModule#target_platform for (self: MModule): nullable Platform */
667 val* platform__MModule__target_platform(val* self) {
668 val* var /* : nullable Platform */;
669 val* var1 /* : nullable Platform */;
670 val* var3 /* : nullable Platform */;
671 val* var_ltp /* var ltp: nullable Platform */;
672 val* var4 /* : null */;
673 short int var5 /* : Bool */;
674 short int var6 /* : Bool */;
675 val* var7 /* : POSetElement[MModule] */;
676 val* var9 /* : POSetElement[MModule] */;
677 val* var10 /* : Collection[Object] */;
678 val* var_ /* var : Collection[MModule] */;
679 val* var11 /* : Iterator[nullable Object] */;
680 val* var_12 /* var : Iterator[MModule] */;
681 short int var13 /* : Bool */;
682 val* var14 /* : nullable Object */;
683 val* var_mmodule /* var mmodule: MModule */;
684 val* var15 /* : nullable Platform */;
685 val* var17 /* : nullable Platform */;
686 val* var18 /* : null */;
687 short int var19 /* : Bool */;
688 short int var20 /* : Bool */;
689 val* var22 /* : null */;
690 {
691 { /* Inline platform#MModule#local_target_platform (self) on <self:MModule> */
692 var3 = self->attrs[COLOR_platform__MModule___local_target_platform].val; /* _local_target_platform on <self:MModule> */
693 var1 = var3;
694 RET_LABEL2:(void)0;
695 }
696 }
697 var_ltp = var1;
698 var4 = NULL;
699 if (var_ltp == NULL) {
700 var5 = 0; /* is null */
701 } else {
702 var5 = 1; /* arg is null and recv is not */
703 }
704 if (0) {
705 var6 = ((short int (*)(val*, val*))(var_ltp->class->vft[COLOR_kernel__Object___33d_61d]))(var_ltp, var4) /* != on <var_ltp:nullable Platform>*/;
706 var5 = var6;
707 }
708 if (var5){
709 var = var_ltp;
710 goto RET_LABEL;
711 } else {
712 }
713 {
714 { /* Inline mmodule#MModule#in_importation (self) on <self:MModule> */
715 var9 = self->attrs[COLOR_mmodule__MModule___in_importation].val; /* _in_importation on <self:MModule> */
716 if (unlikely(var9 == NULL)) {
717 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
718 PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 93);
719 show_backtrace(1);
720 }
721 var7 = var9;
722 RET_LABEL8:(void)0;
723 }
724 }
725 {
726 var10 = poset__POSetElement__greaters(var7);
727 }
728 var_ = var10;
729 {
730 var11 = ((val* (*)(val*))(var_->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Collection[MModule]>*/;
731 }
732 var_12 = var11;
733 for(;;) {
734 {
735 var13 = ((short int (*)(val*))(var_12->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_12) /* is_ok on <var_12:Iterator[MModule]>*/;
736 }
737 if (var13){
738 {
739 var14 = ((val* (*)(val*))(var_12->class->vft[COLOR_abstract_collection__Iterator__item]))(var_12) /* item on <var_12:Iterator[MModule]>*/;
740 }
741 var_mmodule = var14;
742 {
743 { /* Inline platform#MModule#local_target_platform (var_mmodule) on <var_mmodule:MModule> */
744 var17 = var_mmodule->attrs[COLOR_platform__MModule___local_target_platform].val; /* _local_target_platform on <var_mmodule:MModule> */
745 var15 = var17;
746 RET_LABEL16:(void)0;
747 }
748 }
749 var_ltp = var15;
750 var18 = NULL;
751 if (var_ltp == NULL) {
752 var19 = 0; /* is null */
753 } else {
754 var19 = 1; /* arg is null and recv is not */
755 }
756 if (0) {
757 var20 = ((short int (*)(val*, val*))(var_ltp->class->vft[COLOR_kernel__Object___33d_61d]))(var_ltp, var18) /* != on <var_ltp:nullable Platform>*/;
758 var19 = var20;
759 }
760 if (var19){
761 var = var_ltp;
762 goto RET_LABEL;
763 } else {
764 }
765 {
766 ((void (*)(val*))(var_12->class->vft[COLOR_abstract_collection__Iterator__next]))(var_12) /* next on <var_12:Iterator[MModule]>*/;
767 }
768 } else {
769 goto BREAK_label;
770 }
771 }
772 BREAK_label: (void)0;
773 {
774 { /* Inline abstract_collection#Iterator#finish (var_12) on <var_12:Iterator[MModule]> */
775 RET_LABEL21:(void)0;
776 }
777 }
778 var22 = NULL;
779 var = var22;
780 goto RET_LABEL;
781 RET_LABEL:;
782 return var;
783 }
784 /* method platform#MModule#target_platform for (self: Object): nullable Platform */
785 val* VIRTUAL_platform__MModule__target_platform(val* self) {
786 val* var /* : nullable Platform */;
787 val* var1 /* : nullable Platform */;
788 var1 = platform__MModule__target_platform(self);
789 var = var1;
790 RET_LABEL:;
791 return var;
792 }
793 /* method platform#Platform#supports_libunwind for (self: Platform): Bool */
794 short int platform__Platform__supports_libunwind(val* self) {
795 short int var /* : Bool */;
796 short int var1 /* : Bool */;
797 var1 = 1;
798 var = var1;
799 goto RET_LABEL;
800 RET_LABEL:;
801 return var;
802 }
803 /* method platform#Platform#supports_libunwind for (self: Object): Bool */
804 short int VIRTUAL_platform__Platform__supports_libunwind(val* self) {
805 short int var /* : Bool */;
806 short int var1 /* : Bool */;
807 var1 = platform__Platform__supports_libunwind(self);
808 var = var1;
809 RET_LABEL:;
810 return var;
811 }
812 /* method platform#Platform#supports_libgc for (self: Platform): Bool */
813 short int platform__Platform__supports_libgc(val* self) {
814 short int var /* : Bool */;
815 short int var1 /* : Bool */;
816 var1 = 1;
817 var = var1;
818 goto RET_LABEL;
819 RET_LABEL:;
820 return var;
821 }
822 /* method platform#Platform#supports_libgc for (self: Object): Bool */
823 short int VIRTUAL_platform__Platform__supports_libgc(val* self) {
824 short int var /* : Bool */;
825 short int var1 /* : Bool */;
826 var1 = platform__Platform__supports_libgc(self);
827 var = var1;
828 RET_LABEL:;
829 return var;
830 }
831 /* method platform#Platform#no_main for (self: Platform): Bool */
832 short int platform__Platform__no_main(val* self) {
833 short int var /* : Bool */;
834 short int var1 /* : Bool */;
835 var1 = 0;
836 var = var1;
837 goto RET_LABEL;
838 RET_LABEL:;
839 return var;
840 }
841 /* method platform#Platform#no_main for (self: Object): Bool */
842 short int VIRTUAL_platform__Platform__no_main(val* self) {
843 short int var /* : Bool */;
844 short int var1 /* : Bool */;
845 var1 = platform__Platform__no_main(self);
846 var = var1;
847 RET_LABEL:;
848 return var;
849 }