Merge: model: add `MType::as_notnullable` to remove the `nullable` modifier
[nit.git] / c_src / c_compiler_options.sep.1.c
1 #include "c_compiler_options.sep.0.h"
2 /* method c_compiler_options#ToolContext#c_compiler_options_phase for (self: ToolContext): Phase */
3 val* c_compiler_options__ToolContext__c_compiler_options_phase(val* self) {
4 val* var /* : Phase */;
5 val* var1 /* : Phase */;
6 var1 = self->attrs[COLOR_c_compiler_options__ToolContext___64dc_compiler_options_phase].val; /* @c_compiler_options_phase on <self:ToolContext> */
7 if (var1 == NULL) {
8 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @c_compiler_options_phase");
9 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/c_compiler_options.nit", 26);
10 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method c_compiler_options#ToolContext#c_compiler_options_phase for (self: Object): Phase */
17 val* VIRTUAL_c_compiler_options__ToolContext__c_compiler_options_phase(val* self) {
18 val* var /* : Phase */;
19 val* var1 /* : Phase */;
20 var1 = c_compiler_options__ToolContext__c_compiler_options_phase(self);
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method c_compiler_options#ToolContext#c_compiler_options_phase= for (self: ToolContext, Phase) */
26 void c_compiler_options__ToolContext__c_compiler_options_phase_61d(val* self, val* p0) {
27 self->attrs[COLOR_c_compiler_options__ToolContext___64dc_compiler_options_phase].val = p0; /* @c_compiler_options_phase on <self:ToolContext> */
28 RET_LABEL:;
29 }
30 /* method c_compiler_options#ToolContext#c_compiler_options_phase= for (self: Object, Phase) */
31 void VIRTUAL_c_compiler_options__ToolContext__c_compiler_options_phase_61d(val* self, val* p0) {
32 c_compiler_options__ToolContext__c_compiler_options_phase_61d(self, p0);
33 RET_LABEL:;
34 }
35 /* method c_compiler_options#CCompilerOptionsPhase#compiler_annotation_name for (self: CCompilerOptionsPhase): String */
36 val* c_compiler_options__CCompilerOptionsPhase__compiler_annotation_name(val* self) {
37 val* var /* : String */;
38 static val* varonce;
39 val* var1 /* : String */;
40 char* var2 /* : NativeString */;
41 long var3 /* : Int */;
42 val* var4 /* : String */;
43 if (varonce) {
44 var1 = varonce;
45 } else {
46 var2 = "c_compiler_option";
47 var3 = 17;
48 var4 = string__NativeString__to_s_with_length(var2, var3);
49 var1 = var4;
50 varonce = var1;
51 }
52 var = var1;
53 goto RET_LABEL;
54 RET_LABEL:;
55 return var;
56 }
57 /* method c_compiler_options#CCompilerOptionsPhase#compiler_annotation_name for (self: Object): String */
58 val* VIRTUAL_c_compiler_options__CCompilerOptionsPhase__compiler_annotation_name(val* self) {
59 val* var /* : String */;
60 val* var1 /* : String */;
61 var1 = c_compiler_options__CCompilerOptionsPhase__compiler_annotation_name(self);
62 var = var1;
63 RET_LABEL:;
64 return var;
65 }
66 /* method c_compiler_options#CCompilerOptionsPhase#linker_annotation_name for (self: CCompilerOptionsPhase): String */
67 val* c_compiler_options__CCompilerOptionsPhase__linker_annotation_name(val* self) {
68 val* var /* : String */;
69 static val* varonce;
70 val* var1 /* : String */;
71 char* var2 /* : NativeString */;
72 long var3 /* : Int */;
73 val* var4 /* : String */;
74 if (varonce) {
75 var1 = varonce;
76 } else {
77 var2 = "c_linker_option";
78 var3 = 15;
79 var4 = string__NativeString__to_s_with_length(var2, var3);
80 var1 = var4;
81 varonce = var1;
82 }
83 var = var1;
84 goto RET_LABEL;
85 RET_LABEL:;
86 return var;
87 }
88 /* method c_compiler_options#CCompilerOptionsPhase#linker_annotation_name for (self: Object): String */
89 val* VIRTUAL_c_compiler_options__CCompilerOptionsPhase__linker_annotation_name(val* self) {
90 val* var /* : String */;
91 val* var1 /* : String */;
92 var1 = c_compiler_options__CCompilerOptionsPhase__linker_annotation_name(self);
93 var = var1;
94 RET_LABEL:;
95 return var;
96 }
97 /* method c_compiler_options#CCompilerOptionsPhase#cpp_compiler_annotation_name for (self: CCompilerOptionsPhase): String */
98 val* c_compiler_options__CCompilerOptionsPhase__cpp_compiler_annotation_name(val* self) {
99 val* var /* : String */;
100 static val* varonce;
101 val* var1 /* : String */;
102 char* var2 /* : NativeString */;
103 long var3 /* : Int */;
104 val* var4 /* : String */;
105 if (varonce) {
106 var1 = varonce;
107 } else {
108 var2 = "cpp_compiler_option";
109 var3 = 19;
110 var4 = string__NativeString__to_s_with_length(var2, var3);
111 var1 = var4;
112 varonce = var1;
113 }
114 var = var1;
115 goto RET_LABEL;
116 RET_LABEL:;
117 return var;
118 }
119 /* method c_compiler_options#CCompilerOptionsPhase#cpp_compiler_annotation_name for (self: Object): String */
120 val* VIRTUAL_c_compiler_options__CCompilerOptionsPhase__cpp_compiler_annotation_name(val* self) {
121 val* var /* : String */;
122 val* var1 /* : String */;
123 var1 = c_compiler_options__CCompilerOptionsPhase__cpp_compiler_annotation_name(self);
124 var = var1;
125 RET_LABEL:;
126 return var;
127 }
128 /* method c_compiler_options#CCompilerOptionsPhase#process_annotated_node for (self: CCompilerOptionsPhase, ANode, AAnnotation) */
129 void c_compiler_options__CCompilerOptionsPhase__process_annotated_node(val* self, val* p0, val* p1) {
130 val* var_nmoduledecl /* var nmoduledecl: ANode */;
131 val* var_nat /* var nat: AAnnotation */;
132 val* var /* : AAtid */;
133 val* var1 /* : Token */;
134 val* var2 /* : String */;
135 val* var_annotation_name /* var annotation_name: String */;
136 short int var3 /* : Bool */;
137 short int var4 /* : Bool */;
138 val* var5 /* : String */;
139 short int var6 /* : Bool */;
140 short int var_ /* var : Bool */;
141 val* var7 /* : String */;
142 short int var8 /* : Bool */;
143 short int var_9 /* var : Bool */;
144 val* var10 /* : String */;
145 short int var11 /* : Bool */;
146 val* var12 /* : ToolContext */;
147 val* var13 /* : ModelBuilder */;
148 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
149 short int var14 /* : Bool */;
150 int cltype;
151 int idtype;
152 short int var15 /* : Bool */;
153 static val* varonce;
154 val* var16 /* : String */;
155 char* var17 /* : NativeString */;
156 long var18 /* : Int */;
157 val* var19 /* : String */;
158 static val* varonce20;
159 val* var21 /* : String */;
160 char* var22 /* : NativeString */;
161 long var23 /* : Int */;
162 val* var24 /* : String */;
163 val* var25 /* : Array[Object] */;
164 long var26 /* : Int */;
165 val* var27 /* : NativeArray[Object] */;
166 val* var28 /* : String */;
167 val* var29 /* : ANodes[AAtArg] */;
168 val* var_args /* var args: ANodes[AAtArg] */;
169 short int var30 /* : Bool */;
170 static val* varonce31;
171 val* var32 /* : String */;
172 char* var33 /* : NativeString */;
173 long var34 /* : Int */;
174 val* var35 /* : String */;
175 static val* varonce36;
176 val* var37 /* : String */;
177 char* var38 /* : NativeString */;
178 long var39 /* : Int */;
179 val* var40 /* : String */;
180 val* var41 /* : Array[Object] */;
181 long var42 /* : Int */;
182 val* var43 /* : NativeArray[Object] */;
183 val* var44 /* : String */;
184 val* var45 /* : Array[CCompilerOption] */;
185 val* var_options /* var options: Array[CCompilerOption] */;
186 val* var46 /* : Iterator[nullable Object] */;
187 short int var47 /* : Bool */;
188 val* var48 /* : nullable Object */;
189 val* var_arg /* var arg: AAtArg */;
190 short int var49 /* : Bool */;
191 int cltype50;
192 int idtype51;
193 short int var52 /* : Bool */;
194 static val* varonce53;
195 val* var54 /* : String */;
196 char* var55 /* : NativeString */;
197 long var56 /* : Int */;
198 val* var57 /* : String */;
199 static val* varonce58;
200 val* var59 /* : String */;
201 char* var60 /* : NativeString */;
202 long var61 /* : Int */;
203 val* var62 /* : String */;
204 val* var63 /* : Array[Object] */;
205 long var64 /* : Int */;
206 val* var65 /* : NativeArray[Object] */;
207 val* var66 /* : String */;
208 val* var67 /* : AExpr */;
209 val* var_expr /* var expr: AExpr */;
210 short int var68 /* : Bool */;
211 int cltype69;
212 int idtype70;
213 val* var71 /* : String */;
214 val* var_text /* var text: String */;
215 long var72 /* : Int */;
216 long var73 /* : Int */;
217 long var74 /* : Int */;
218 long var75 /* : Int */;
219 long var77 /* : Int */;
220 val* var78 /* : String */;
221 val* var79 /* : DirectCCompilerOption */;
222 val* var_opt /* var opt: DirectCCompilerOption */;
223 short int var80 /* : Bool */;
224 int cltype81;
225 int idtype82;
226 val* var83 /* : AExprs */;
227 val* var84 /* : Array[AExpr] */;
228 val* var_exec_args /* var exec_args: Array[AExpr] */;
229 short int var85 /* : Bool */;
230 val* var86 /* : TId */;
231 val* var87 /* : String */;
232 static val* varonce88;
233 val* var89 /* : String */;
234 char* var90 /* : NativeString */;
235 long var91 /* : Int */;
236 val* var92 /* : String */;
237 short int var93 /* : Bool */;
238 short int var_94 /* var : Bool */;
239 short int var95 /* : Bool */;
240 static val* varonce96;
241 val* var97 /* : String */;
242 char* var98 /* : NativeString */;
243 long var99 /* : Int */;
244 val* var100 /* : String */;
245 static val* varonce101;
246 val* var102 /* : String */;
247 char* var103 /* : NativeString */;
248 long var104 /* : Int */;
249 val* var105 /* : String */;
250 val* var106 /* : Array[Object] */;
251 long var107 /* : Int */;
252 val* var108 /* : NativeArray[Object] */;
253 val* var109 /* : String */;
254 val* var110 /* : Array[String] */;
255 val* var_exec_args_as_strings /* var exec_args_as_strings: Array[String] */;
256 val* var111 /* : Iterator[nullable Object] */;
257 short int var112 /* : Bool */;
258 val* var113 /* : nullable Object */;
259 val* var_exec_arg /* var exec_arg: AExpr */;
260 short int var114 /* : Bool */;
261 int cltype115;
262 int idtype116;
263 short int var117 /* : Bool */;
264 static val* varonce118;
265 val* var119 /* : String */;
266 char* var120 /* : NativeString */;
267 long var121 /* : Int */;
268 val* var122 /* : String */;
269 val* var123 /* : String */;
270 val* var_arg_string /* var arg_string: String */;
271 long var124 /* : Int */;
272 long var125 /* : Int */;
273 long var126 /* : Int */;
274 long var127 /* : Int */;
275 long var129 /* : Int */;
276 val* var130 /* : String */;
277 val* var131 /* : ExecCCompilerOption */;
278 val* var_opt132 /* var opt: ExecCCompilerOption */;
279 static val* varonce133;
280 val* var134 /* : String */;
281 char* var135 /* : NativeString */;
282 long var136 /* : Int */;
283 val* var137 /* : String */;
284 static val* varonce138;
285 val* var139 /* : String */;
286 char* var140 /* : NativeString */;
287 long var141 /* : Int */;
288 val* var142 /* : String */;
289 val* var143 /* : Array[Object] */;
290 long var144 /* : Int */;
291 val* var145 /* : NativeArray[Object] */;
292 val* var146 /* : String */;
293 val* var148 /* : Array[DirectCCompilerOption] */;
294 val* var_simplified_options /* var simplified_options: Array[DirectCCompilerOption] */;
295 val* var149 /* : Iterator[nullable Object] */;
296 short int var150 /* : Bool */;
297 val* var151 /* : nullable Object */;
298 val* var_opt152 /* var opt: CCompilerOption */;
299 short int var153 /* : Bool */;
300 int cltype154;
301 int idtype155;
302 val* var156 /* : Array[String] */;
303 val* var_cmd_args /* var cmd_args: Array[String] */;
304 long var157 /* : Int */;
305 long var158 /* : Int */;
306 short int var159 /* : Bool */;
307 short int var161 /* : Bool */;
308 val* var162 /* : IProcess */;
309 long var163 /* : Int */;
310 val* var164 /* : nullable Object */;
311 val* var165 /* : Array[String] */;
312 val* var_proc /* var proc: nullable Object */;
313 long var166 /* : Int */;
314 long var167 /* : Int */;
315 short int var168 /* : Bool */;
316 short int var170 /* : Bool */;
317 int cltype171;
318 int idtype172;
319 const char* var_class_name;
320 short int var173 /* : Bool */;
321 long var174 /* : Int */;
322 long var175 /* : Int */;
323 long var176 /* : Int */;
324 long var177 /* : Int */;
325 long var179 /* : Int */;
326 val* var180 /* : Array[nullable Object] */;
327 val* var_rest_args /* var rest_args: Array[String] */;
328 val* var181 /* : IProcess */;
329 long var182 /* : Int */;
330 val* var183 /* : nullable Object */;
331 long var184 /* : Int */;
332 long var_status /* var status: Int */;
333 long var185 /* : Int */;
334 short int var186 /* : Bool */;
335 short int var188 /* : Bool */;
336 short int var189 /* : Bool */;
337 val* var190 /* : ACallExpr */;
338 static val* varonce191;
339 val* var192 /* : String */;
340 char* var193 /* : NativeString */;
341 long var194 /* : Int */;
342 val* var195 /* : String */;
343 static val* varonce196;
344 val* var197 /* : String */;
345 char* var198 /* : NativeString */;
346 long var199 /* : Int */;
347 val* var200 /* : String */;
348 val* var201 /* : Array[Object] */;
349 long var202 /* : Int */;
350 val* var203 /* : NativeArray[Object] */;
351 val* var204 /* : String */;
352 val* var205 /* : String */;
353 static val* varonce206;
354 val* var207 /* : String */;
355 char* var208 /* : NativeString */;
356 long var209 /* : Int */;
357 val* var210 /* : String */;
358 static val* varonce211;
359 val* var212 /* : String */;
360 char* var213 /* : NativeString */;
361 long var214 /* : Int */;
362 val* var215 /* : String */;
363 val* var216 /* : String */;
364 val* var_result /* var result: String */;
365 short int var217 /* : Bool */;
366 val* var218 /* : ACallExpr */;
367 static val* varonce219;
368 val* var220 /* : String */;
369 char* var221 /* : NativeString */;
370 long var222 /* : Int */;
371 val* var223 /* : String */;
372 val* var224 /* : DirectCCompilerOption */;
373 short int var225 /* : Bool */;
374 int cltype226;
375 int idtype227;
376 val* var229 /* : nullable ANode */;
377 short int var230 /* : Bool */;
378 int cltype231;
379 int idtype232;
380 const char* var_class_name233;
381 val* var_nmodule /* var nmodule: AModule */;
382 val* var234 /* : Iterator[nullable Object] */;
383 short int var235 /* : Bool */;
384 val* var236 /* : nullable Object */;
385 val* var_opt237 /* var opt: DirectCCompilerOption */;
386 val* var238 /* : String */;
387 val* var_cmd /* var cmd: String */;
388 val* var239 /* : String */;
389 short int var240 /* : Bool */;
390 val* var241 /* : String */;
391 short int var242 /* : Bool */;
392 val* var243 /* : String */;
393 short int var244 /* : Bool */;
394 var_nmoduledecl = p0;
395 var_nat = p1;
396 var = ((val* (*)(val*))(var_nat->class->vft[COLOR_parser_nodes__AAnnotation__n_atid]))(var_nat) /* n_atid on <var_nat:AAnnotation>*/;
397 var1 = ((val* (*)(val*))(var->class->vft[COLOR_parser_nodes__AAtid__n_id]))(var) /* n_id on <var:AAtid>*/;
398 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__Token__text]))(var1) /* text on <var1:Token>*/;
399 var_annotation_name = var2;
400 var5 = ((val* (*)(val*))(self->class->vft[COLOR_c_compiler_options__CCompilerOptionsPhase__compiler_annotation_name]))(self) /* compiler_annotation_name on <self:CCompilerOptionsPhase>*/;
401 var6 = ((short int (*)(val*, val*))(var_annotation_name->class->vft[COLOR_kernel__Object___33d_61d]))(var_annotation_name, var5) /* != on <var_annotation_name:String>*/;
402 var_ = var6;
403 if (var6){
404 var7 = ((val* (*)(val*))(self->class->vft[COLOR_c_compiler_options__CCompilerOptionsPhase__linker_annotation_name]))(self) /* linker_annotation_name on <self:CCompilerOptionsPhase>*/;
405 var8 = ((short int (*)(val*, val*))(var_annotation_name->class->vft[COLOR_kernel__Object___33d_61d]))(var_annotation_name, var7) /* != on <var_annotation_name:String>*/;
406 var4 = var8;
407 } else {
408 var4 = var_;
409 }
410 var_9 = var4;
411 if (var4){
412 var10 = ((val* (*)(val*))(self->class->vft[COLOR_c_compiler_options__CCompilerOptionsPhase__cpp_compiler_annotation_name]))(self) /* cpp_compiler_annotation_name on <self:CCompilerOptionsPhase>*/;
413 var11 = ((short int (*)(val*, val*))(var_annotation_name->class->vft[COLOR_kernel__Object___33d_61d]))(var_annotation_name, var10) /* != on <var_annotation_name:String>*/;
414 var3 = var11;
415 } else {
416 var3 = var_9;
417 }
418 if (var3){
419 goto RET_LABEL;
420 } else {
421 }
422 var12 = ((val* (*)(val*))(self->class->vft[COLOR_phase__Phase__toolcontext]))(self) /* toolcontext on <self:CCompilerOptionsPhase>*/;
423 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_modelbuilder__ToolContext__modelbuilder]))(var12) /* modelbuilder on <var12:ToolContext>*/;
424 var_modelbuilder = var13;
425 /* <var_nmoduledecl:ANode> isa AModuledecl */
426 cltype = type_parser_nodes__AModuledecl.color;
427 idtype = type_parser_nodes__AModuledecl.id;
428 if(cltype >= var_nmoduledecl->type->table_size) {
429 var14 = 0;
430 } else {
431 var14 = var_nmoduledecl->type->type_table[cltype] == idtype;
432 }
433 var15 = !var14;
434 if (var15){
435 if (varonce) {
436 var16 = varonce;
437 } else {
438 var17 = "Syntax error: only the declaration of modules may use \"";
439 var18 = 55;
440 var19 = string__NativeString__to_s_with_length(var17, var18);
441 var16 = var19;
442 varonce = var16;
443 }
444 if (varonce20) {
445 var21 = varonce20;
446 } else {
447 var22 = "\".";
448 var23 = 2;
449 var24 = string__NativeString__to_s_with_length(var22, var23);
450 var21 = var24;
451 varonce20 = var21;
452 }
453 var25 = NEW_array__Array(&type_array__Arraykernel__Object);
454 { /* var25 = array_instance Array[Object] */
455 var26 = 3;
456 var27 = NEW_array__NativeArray(var26, &type_array__NativeArraykernel__Object);
457 ((struct instance_array__NativeArray*)var27)->values[0] = (val*) var16;
458 ((struct instance_array__NativeArray*)var27)->values[1] = (val*) var_annotation_name;
459 ((struct instance_array__NativeArray*)var27)->values[2] = (val*) var21;
460 ((void (*)(val*, val*, long))(var25->class->vft[COLOR_array__Array__with_native]))(var25, var27, var26) /* with_native on <var25:Array[Object]>*/;
461 }
462 var28 = ((val* (*)(val*))(var25->class->vft[COLOR_string__Object__to_s]))(var25) /* to_s on <var25:Array[Object]>*/;
463 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_nat, var28) /* error on <var_modelbuilder:ModelBuilder>*/;
464 goto RET_LABEL;
465 } else {
466 }
467 var29 = ((val* (*)(val*))(var_nat->class->vft[COLOR_parser_nodes__AAnnotation__n_args]))(var_nat) /* n_args on <var_nat:AAnnotation>*/;
468 var_args = var29;
469 var30 = ((short int (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_args) /* is_empty on <var_args:ANodes[AAtArg]>*/;
470 if (var30){
471 if (varonce31) {
472 var32 = varonce31;
473 } else {
474 var33 = "Syntax error: \"";
475 var34 = 15;
476 var35 = string__NativeString__to_s_with_length(var33, var34);
477 var32 = var35;
478 varonce31 = var32;
479 }
480 if (varonce36) {
481 var37 = varonce36;
482 } else {
483 var38 = "\" expects at least one argument.";
484 var39 = 32;
485 var40 = string__NativeString__to_s_with_length(var38, var39);
486 var37 = var40;
487 varonce36 = var37;
488 }
489 var41 = NEW_array__Array(&type_array__Arraykernel__Object);
490 { /* var41 = array_instance Array[Object] */
491 var42 = 3;
492 var43 = NEW_array__NativeArray(var42, &type_array__NativeArraykernel__Object);
493 ((struct instance_array__NativeArray*)var43)->values[0] = (val*) var32;
494 ((struct instance_array__NativeArray*)var43)->values[1] = (val*) var_annotation_name;
495 ((struct instance_array__NativeArray*)var43)->values[2] = (val*) var37;
496 ((void (*)(val*, val*, long))(var41->class->vft[COLOR_array__Array__with_native]))(var41, var43, var42) /* with_native on <var41:Array[Object]>*/;
497 }
498 var44 = ((val* (*)(val*))(var41->class->vft[COLOR_string__Object__to_s]))(var41) /* to_s on <var41:Array[Object]>*/;
499 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_nat, var44) /* error on <var_modelbuilder:ModelBuilder>*/;
500 goto RET_LABEL;
501 } else {
502 }
503 var45 = NEW_array__Array(&type_array__Arrayc_compiler_options__CCompilerOption);
504 ((void (*)(val*))(var45->class->vft[COLOR_array__Array__init]))(var45) /* init on <var45:Array[CCompilerOption]>*/;
505 var_options = var45;
506 var46 = ((val* (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_args) /* iterator on <var_args:ANodes[AAtArg]>*/;
507 for(;;) {
508 var47 = ((short int (*)(val*))(var46->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var46) /* is_ok on <var46:Iterator[nullable Object]>*/;
509 if(!var47) break;
510 var48 = ((val* (*)(val*))(var46->class->vft[COLOR_abstract_collection__Iterator__item]))(var46) /* item on <var46:Iterator[nullable Object]>*/;
511 var_arg = var48;
512 /* <var_arg:AAtArg> isa AExprAtArg */
513 cltype50 = type_parser_nodes__AExprAtArg.color;
514 idtype51 = type_parser_nodes__AExprAtArg.id;
515 if(cltype50 >= var_arg->type->table_size) {
516 var49 = 0;
517 } else {
518 var49 = var_arg->type->type_table[cltype50] == idtype51;
519 }
520 var52 = !var49;
521 if (var52){
522 if (varonce53) {
523 var54 = varonce53;
524 } else {
525 var55 = "Syntax error: \"";
526 var56 = 15;
527 var57 = string__NativeString__to_s_with_length(var55, var56);
528 var54 = var57;
529 varonce53 = var54;
530 }
531 if (varonce58) {
532 var59 = varonce58;
533 } else {
534 var60 = "\" expects its arguments to be the name of the package as String literals or a call to `exex(\"local_program\")`.";
535 var61 = 110;
536 var62 = string__NativeString__to_s_with_length(var60, var61);
537 var59 = var62;
538 varonce58 = var59;
539 }
540 var63 = NEW_array__Array(&type_array__Arraykernel__Object);
541 { /* var63 = array_instance Array[Object] */
542 var64 = 3;
543 var65 = NEW_array__NativeArray(var64, &type_array__NativeArraykernel__Object);
544 ((struct instance_array__NativeArray*)var65)->values[0] = (val*) var54;
545 ((struct instance_array__NativeArray*)var65)->values[1] = (val*) var_annotation_name;
546 ((struct instance_array__NativeArray*)var65)->values[2] = (val*) var59;
547 ((void (*)(val*, val*, long))(var63->class->vft[COLOR_array__Array__with_native]))(var63, var65, var64) /* with_native on <var63:Array[Object]>*/;
548 }
549 var66 = ((val* (*)(val*))(var63->class->vft[COLOR_string__Object__to_s]))(var63) /* to_s on <var63:Array[Object]>*/;
550 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_nat, var66) /* error on <var_modelbuilder:ModelBuilder>*/;
551 goto RET_LABEL;
552 } else {
553 }
554 var67 = ((val* (*)(val*))(var_arg->class->vft[COLOR_parser_nodes__AExprAtArg__n_expr]))(var_arg) /* n_expr on <var_arg:AAtArg(AExprAtArg)>*/;
555 var_expr = var67;
556 /* <var_expr:AExpr> isa AStringFormExpr */
557 cltype69 = type_parser_nodes__AStringFormExpr.color;
558 idtype70 = type_parser_nodes__AStringFormExpr.id;
559 if(cltype69 >= var_expr->type->table_size) {
560 var68 = 0;
561 } else {
562 var68 = var_expr->type->type_table[cltype69] == idtype70;
563 }
564 if (var68){
565 var71 = ((val* (*)(val*))(var_expr->class->vft[COLOR_modelize_property__Prod__collect_text]))(var_expr) /* collect_text on <var_expr:AExpr(AStringFormExpr)>*/;
566 var_text = var71;
567 var72 = 1;
568 var73 = ((long (*)(val*))(var_text->class->vft[COLOR_abstract_collection__Collection__length]))(var_text) /* length on <var_text:String>*/;
569 var74 = 2;
570 { /* Inline kernel#Int#- (var73,var74) */
571 var77 = var73 - var74;
572 var75 = var77;
573 goto RET_LABEL76;
574 RET_LABEL76:(void)0;
575 }
576 var78 = ((val* (*)(val*, long, long))(var_text->class->vft[COLOR_string__AbstractString__substring]))(var_text, var72, var75) /* substring on <var_text:String>*/;
577 var_text = var78;
578 var79 = NEW_c_compiler_options__DirectCCompilerOption(&type_c_compiler_options__DirectCCompilerOption);
579 ((void (*)(val*, val*))(var79->class->vft[COLOR_c_compiler_options__DirectCCompilerOption__init]))(var79, var_text) /* init on <var79:DirectCCompilerOption>*/;
580 var_opt = var79;
581 ((void (*)(val*, val*))(var_options->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_options, var_opt) /* add on <var_options:Array[CCompilerOption]>*/;
582 } else {
583 /* <var_expr:AExpr> isa ACallExpr */
584 cltype81 = type_parser_nodes__ACallExpr.color;
585 idtype82 = type_parser_nodes__ACallExpr.id;
586 if(cltype81 >= var_expr->type->table_size) {
587 var80 = 0;
588 } else {
589 var80 = var_expr->type->type_table[cltype81] == idtype82;
590 }
591 if (var80){
592 var83 = ((val* (*)(val*))(var_expr->class->vft[COLOR_parser_nodes__ACallFormExpr__n_args]))(var_expr) /* n_args on <var_expr:AExpr(ACallExpr)>*/;
593 var84 = ((val* (*)(val*))(var83->class->vft[COLOR_typing__AExprs__to_a]))(var83) /* to_a on <var83:AExprs>*/;
594 var_exec_args = var84;
595 var86 = ((val* (*)(val*))(var_expr->class->vft[COLOR_parser_nodes__ACallFormExpr__n_id]))(var_expr) /* n_id on <var_expr:AExpr(ACallExpr)>*/;
596 var87 = ((val* (*)(val*))(var86->class->vft[COLOR_parser_nodes__Token__text]))(var86) /* text on <var86:TId>*/;
597 if (varonce88) {
598 var89 = varonce88;
599 } else {
600 var90 = "exec";
601 var91 = 4;
602 var92 = string__NativeString__to_s_with_length(var90, var91);
603 var89 = var92;
604 varonce88 = var89;
605 }
606 var93 = ((short int (*)(val*, val*))(var87->class->vft[COLOR_kernel__Object___33d_61d]))(var87, var89) /* != on <var87:String>*/;
607 var_94 = var93;
608 if (var93){
609 var85 = var_94;
610 } else {
611 var95 = ((short int (*)(val*))(var_exec_args->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_exec_args) /* is_empty on <var_exec_args:Array[AExpr]>*/;
612 var85 = var95;
613 }
614 if (var85){
615 if (varonce96) {
616 var97 = varonce96;
617 } else {
618 var98 = "Syntax error: \"";
619 var99 = 15;
620 var100 = string__NativeString__to_s_with_length(var98, var99);
621 var97 = var100;
622 varonce96 = var97;
623 }
624 if (varonce101) {
625 var102 = varonce101;
626 } else {
627 var103 = "\" accepts only calls to `exec` with the command as arguments.";
628 var104 = 61;
629 var105 = string__NativeString__to_s_with_length(var103, var104);
630 var102 = var105;
631 varonce101 = var102;
632 }
633 var106 = NEW_array__Array(&type_array__Arraykernel__Object);
634 { /* var106 = array_instance Array[Object] */
635 var107 = 3;
636 var108 = NEW_array__NativeArray(var107, &type_array__NativeArraykernel__Object);
637 ((struct instance_array__NativeArray*)var108)->values[0] = (val*) var97;
638 ((struct instance_array__NativeArray*)var108)->values[1] = (val*) var_annotation_name;
639 ((struct instance_array__NativeArray*)var108)->values[2] = (val*) var102;
640 ((void (*)(val*, val*, long))(var106->class->vft[COLOR_array__Array__with_native]))(var106, var108, var107) /* with_native on <var106:Array[Object]>*/;
641 }
642 var109 = ((val* (*)(val*))(var106->class->vft[COLOR_string__Object__to_s]))(var106) /* to_s on <var106:Array[Object]>*/;
643 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_nat, var109) /* error on <var_modelbuilder:ModelBuilder>*/;
644 goto RET_LABEL;
645 } else {
646 }
647 var110 = NEW_array__Array(&type_array__Arraystring__String);
648 ((void (*)(val*))(var110->class->vft[COLOR_array__Array__init]))(var110) /* init on <var110:Array[String]>*/;
649 var_exec_args_as_strings = var110;
650 var111 = ((val* (*)(val*))(var_exec_args->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_exec_args) /* iterator on <var_exec_args:Array[AExpr]>*/;
651 for(;;) {
652 var112 = ((short int (*)(val*))(var111->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var111) /* is_ok on <var111:Iterator[nullable Object]>*/;
653 if(!var112) break;
654 var113 = ((val* (*)(val*))(var111->class->vft[COLOR_abstract_collection__Iterator__item]))(var111) /* item on <var111:Iterator[nullable Object]>*/;
655 var_exec_arg = var113;
656 /* <var_exec_arg:AExpr> isa AStringFormExpr */
657 cltype115 = type_parser_nodes__AStringFormExpr.color;
658 idtype116 = type_parser_nodes__AStringFormExpr.id;
659 if(cltype115 >= var_exec_arg->type->table_size) {
660 var114 = 0;
661 } else {
662 var114 = var_exec_arg->type->type_table[cltype115] == idtype116;
663 }
664 var117 = !var114;
665 if (var117){
666 if (varonce118) {
667 var119 = varonce118;
668 } else {
669 var120 = "Syntax error: calls to `exec` expects the arguments to be String literals.";
670 var121 = 74;
671 var122 = string__NativeString__to_s_with_length(var120, var121);
672 var119 = var122;
673 varonce118 = var119;
674 }
675 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_nat, var119) /* error on <var_modelbuilder:ModelBuilder>*/;
676 goto RET_LABEL;
677 } else {
678 var123 = ((val* (*)(val*))(var_exec_arg->class->vft[COLOR_modelize_property__Prod__collect_text]))(var_exec_arg) /* collect_text on <var_exec_arg:AExpr(AStringFormExpr)>*/;
679 var_arg_string = var123;
680 var124 = 1;
681 var125 = ((long (*)(val*))(var_arg_string->class->vft[COLOR_abstract_collection__Collection__length]))(var_arg_string) /* length on <var_arg_string:String>*/;
682 var126 = 2;
683 { /* Inline kernel#Int#- (var125,var126) */
684 var129 = var125 - var126;
685 var127 = var129;
686 goto RET_LABEL128;
687 RET_LABEL128:(void)0;
688 }
689 var130 = ((val* (*)(val*, long, long))(var_arg_string->class->vft[COLOR_string__AbstractString__substring]))(var_arg_string, var124, var127) /* substring on <var_arg_string:String>*/;
690 var_arg_string = var130;
691 ((void (*)(val*, val*))(var_exec_args_as_strings->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_exec_args_as_strings, var_arg_string) /* add on <var_exec_args_as_strings:Array[String]>*/;
692 }
693 CONTINUE_label: (void)0;
694 ((void (*)(val*))(var111->class->vft[COLOR_abstract_collection__Iterator__next]))(var111) /* next on <var111:Iterator[nullable Object]>*/;
695 }
696 BREAK_label: (void)0;
697 var131 = NEW_c_compiler_options__ExecCCompilerOption(&type_c_compiler_options__ExecCCompilerOption);
698 ((void (*)(val*, val*, val*))(var131->class->vft[COLOR_c_compiler_options__ExecCCompilerOption__init]))(var131, var_exec_args_as_strings, var_expr) /* init on <var131:ExecCCompilerOption>*/;
699 var_opt132 = var131;
700 ((void (*)(val*, val*))(var_options->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_options, var_opt132) /* add on <var_options:Array[CCompilerOption]>*/;
701 } else {
702 if (varonce133) {
703 var134 = varonce133;
704 } else {
705 var135 = "Syntax error: \"";
706 var136 = 15;
707 var137 = string__NativeString__to_s_with_length(var135, var136);
708 var134 = var137;
709 varonce133 = var134;
710 }
711 if (varonce138) {
712 var139 = varonce138;
713 } else {
714 var140 = "\" expects its arguments to be the name of the package as String literals.";
715 var141 = 73;
716 var142 = string__NativeString__to_s_with_length(var140, var141);
717 var139 = var142;
718 varonce138 = var139;
719 }
720 var143 = NEW_array__Array(&type_array__Arraykernel__Object);
721 { /* var143 = array_instance Array[Object] */
722 var144 = 3;
723 var145 = NEW_array__NativeArray(var144, &type_array__NativeArraykernel__Object);
724 ((struct instance_array__NativeArray*)var145)->values[0] = (val*) var134;
725 ((struct instance_array__NativeArray*)var145)->values[1] = (val*) var_annotation_name;
726 ((struct instance_array__NativeArray*)var145)->values[2] = (val*) var139;
727 ((void (*)(val*, val*, long))(var143->class->vft[COLOR_array__Array__with_native]))(var143, var145, var144) /* with_native on <var143:Array[Object]>*/;
728 }
729 var146 = ((val* (*)(val*))(var143->class->vft[COLOR_string__Object__to_s]))(var143) /* to_s on <var143:Array[Object]>*/;
730 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_nat, var146) /* error on <var_modelbuilder:ModelBuilder>*/;
731 goto RET_LABEL;
732 }
733 }
734 CONTINUE_label147: (void)0;
735 ((void (*)(val*))(var46->class->vft[COLOR_abstract_collection__Iterator__next]))(var46) /* next on <var46:Iterator[nullable Object]>*/;
736 }
737 BREAK_label147: (void)0;
738 var148 = NEW_array__Array(&type_array__Arrayc_compiler_options__DirectCCompilerOption);
739 ((void (*)(val*))(var148->class->vft[COLOR_array__Array__init]))(var148) /* init on <var148:Array[DirectCCompilerOption]>*/;
740 var_simplified_options = var148;
741 var149 = ((val* (*)(val*))(var_options->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_options) /* iterator on <var_options:Array[CCompilerOption]>*/;
742 for(;;) {
743 var150 = ((short int (*)(val*))(var149->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var149) /* is_ok on <var149:Iterator[nullable Object]>*/;
744 if(!var150) break;
745 var151 = ((val* (*)(val*))(var149->class->vft[COLOR_abstract_collection__Iterator__item]))(var149) /* item on <var149:Iterator[nullable Object]>*/;
746 var_opt152 = var151;
747 /* <var_opt152:CCompilerOption> isa ExecCCompilerOption */
748 cltype154 = type_c_compiler_options__ExecCCompilerOption.color;
749 idtype155 = type_c_compiler_options__ExecCCompilerOption.id;
750 if(cltype154 >= var_opt152->type->table_size) {
751 var153 = 0;
752 } else {
753 var153 = var_opt152->type->type_table[cltype154] == idtype155;
754 }
755 if (var153){
756 var156 = ((val* (*)(val*))(var_opt152->class->vft[COLOR_c_compiler_options__ExecCCompilerOption__command]))(var_opt152) /* command on <var_opt152:CCompilerOption(ExecCCompilerOption)>*/;
757 var_cmd_args = var156;
758 var157 = ((long (*)(val*))(var_cmd_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_cmd_args) /* length on <var_cmd_args:Array[String]>*/;
759 var158 = 1;
760 { /* Inline kernel#Int#== (var157,var158) */
761 var161 = var157 == var158;
762 var159 = var161;
763 goto RET_LABEL160;
764 RET_LABEL160:(void)0;
765 }
766 if (var159){
767 var162 = NEW_exec__IProcess(&type_exec__IProcess);
768 var163 = 0;
769 var164 = ((val* (*)(val*, long))(var_cmd_args->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_cmd_args, var163) /* [] on <var_cmd_args:Array[String]>*/;
770 var165 = NEW_array__Array(&type_array__Arraystring__String);
771 ((void (*)(val*))(var165->class->vft[COLOR_array__Array__init]))(var165) /* init on <var165:Array[String]>*/;
772 ((void (*)(val*, val*, val*))(var162->class->vft[COLOR_exec__IProcess__from_a]))(var162, var164, var165) /* from_a on <var162:IProcess>*/;
773 var_proc = var162;
774 } else {
775 var166 = ((long (*)(val*))(var_cmd_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_cmd_args) /* length on <var_cmd_args:Array[String]>*/;
776 var167 = 1;
777 { /* Inline kernel#Int#> (var166,var167) */
778 /* Covariant cast for argument 0 (i) <var167:Int> isa OTHER */
779 /* <var167:Int> isa OTHER */
780 var170 = 1; /* easy <var167:Int> isa OTHER*/
781 if (!var170) {
782 var_class_name = type_kernel__Int.name;
783 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
784 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
785 show_backtrace(1);
786 }
787 var173 = var166 > var167;
788 var168 = var173;
789 goto RET_LABEL169;
790 RET_LABEL169:(void)0;
791 }
792 if (var168){
793 var174 = 1;
794 var175 = ((long (*)(val*))(var_cmd_args->class->vft[COLOR_abstract_collection__Collection__length]))(var_cmd_args) /* length on <var_cmd_args:Array[String]>*/;
795 var176 = 1;
796 { /* Inline kernel#Int#- (var175,var176) */
797 var179 = var175 - var176;
798 var177 = var179;
799 goto RET_LABEL178;
800 RET_LABEL178:(void)0;
801 }
802 var180 = ((val* (*)(val*, long, long))(var_cmd_args->class->vft[COLOR_collection__Sequence__subarray]))(var_cmd_args, var174, var177) /* subarray on <var_cmd_args:Array[String]>*/;
803 var_rest_args = var180;
804 var181 = NEW_exec__IProcess(&type_exec__IProcess);
805 var182 = 0;
806 var183 = ((val* (*)(val*, long))(var_cmd_args->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_cmd_args, var182) /* [] on <var_cmd_args:Array[String]>*/;
807 ((void (*)(val*, val*, val*))(var181->class->vft[COLOR_exec__IProcess__from_a]))(var181, var183, var_rest_args) /* from_a on <var181:IProcess>*/;
808 var_proc = var181;
809 } else {
810 fprintf(stderr, "Runtime error: %s", "Aborted");
811 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/c_compiler_options.nit", 111);
812 show_backtrace(1);
813 }
814 }
815 ((void (*)(val*))(var_proc->class->vft[COLOR_exec__Process__wait]))(var_proc) /* wait on <var_proc:nullable Object(IProcess)>*/;
816 var184 = ((long (*)(val*))(var_proc->class->vft[COLOR_exec__Process__status]))(var_proc) /* status on <var_proc:nullable Object(IProcess)>*/;
817 var_status = var184;
818 var185 = 0;
819 { /* Inline kernel#Int#!= (var_status,var185) */
820 var188 = var_status == var185;
821 var189 = !var188;
822 var186 = var189;
823 goto RET_LABEL187;
824 RET_LABEL187:(void)0;
825 }
826 if (var186){
827 var190 = ((val* (*)(val*))(var_opt152->class->vft[COLOR_c_compiler_options__ExecCCompilerOption__exec_node]))(var_opt152) /* exec_node on <var_opt152:CCompilerOption(ExecCCompilerOption)>*/;
828 if (varonce191) {
829 var192 = varonce191;
830 } else {
831 var193 = "Annotation error: Something went wrong executing the argument of annotation \"";
832 var194 = 77;
833 var195 = string__NativeString__to_s_with_length(var193, var194);
834 var192 = var195;
835 varonce191 = var192;
836 }
837 if (varonce196) {
838 var197 = varonce196;
839 } else {
840 var198 = "\", make sure the command is valid.";
841 var199 = 34;
842 var200 = string__NativeString__to_s_with_length(var198, var199);
843 var197 = var200;
844 varonce196 = var197;
845 }
846 var201 = NEW_array__Array(&type_array__Arraykernel__Object);
847 { /* var201 = array_instance Array[Object] */
848 var202 = 3;
849 var203 = NEW_array__NativeArray(var202, &type_array__NativeArraykernel__Object);
850 ((struct instance_array__NativeArray*)var203)->values[0] = (val*) var192;
851 ((struct instance_array__NativeArray*)var203)->values[1] = (val*) var_annotation_name;
852 ((struct instance_array__NativeArray*)var203)->values[2] = (val*) var197;
853 ((void (*)(val*, val*, long))(var201->class->vft[COLOR_array__Array__with_native]))(var201, var203, var202) /* with_native on <var201:Array[Object]>*/;
854 }
855 var204 = ((val* (*)(val*))(var201->class->vft[COLOR_string__Object__to_s]))(var201) /* to_s on <var201:Array[Object]>*/;
856 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var190, var204) /* error on <var_modelbuilder:ModelBuilder>*/;
857 goto RET_LABEL;
858 } else {
859 }
860 var205 = ((val* (*)(val*))(var_proc->class->vft[COLOR_stream__IStream__read_all]))(var_proc) /* read_all on <var_proc:nullable Object(IProcess)>*/;
861 if (varonce206) {
862 var207 = varonce206;
863 } else {
864 var208 = "\n";
865 var209 = 1;
866 var210 = string__NativeString__to_s_with_length(var208, var209);
867 var207 = var210;
868 varonce206 = var207;
869 }
870 if (varonce211) {
871 var212 = varonce211;
872 } else {
873 var213 = " ";
874 var214 = 1;
875 var215 = string__NativeString__to_s_with_length(var213, var214);
876 var212 = var215;
877 varonce211 = var212;
878 }
879 var216 = ((val* (*)(val*, val*, val*))(var205->class->vft[COLOR_string_search__String__replace]))(var205, var207, var212) /* replace on <var205:String>*/;
880 var_result = var216;
881 var217 = ((short int (*)(val*))(var_result->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_result) /* is_empty on <var_result:String>*/;
882 if (var217){
883 var218 = ((val* (*)(val*))(var_opt152->class->vft[COLOR_c_compiler_options__ExecCCompilerOption__exec_node]))(var_opt152) /* exec_node on <var_opt152:CCompilerOption(ExecCCompilerOption)>*/;
884 if (varonce219) {
885 var220 = varonce219;
886 } else {
887 var221 = "Annotation error: Got no result from the command, make sure it is valid.";
888 var222 = 72;
889 var223 = string__NativeString__to_s_with_length(var221, var222);
890 var220 = var223;
891 varonce219 = var220;
892 }
893 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var218, var220) /* error on <var_modelbuilder:ModelBuilder>*/;
894 goto RET_LABEL;
895 } else {
896 }
897 var224 = NEW_c_compiler_options__DirectCCompilerOption(&type_c_compiler_options__DirectCCompilerOption);
898 ((void (*)(val*, val*))(var224->class->vft[COLOR_c_compiler_options__DirectCCompilerOption__init]))(var224, var_result) /* init on <var224:DirectCCompilerOption>*/;
899 ((void (*)(val*, val*))(var_simplified_options->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_simplified_options, var224) /* add on <var_simplified_options:Array[DirectCCompilerOption]>*/;
900 } else {
901 /* <var_opt152:CCompilerOption> isa DirectCCompilerOption */
902 cltype226 = type_c_compiler_options__DirectCCompilerOption.color;
903 idtype227 = type_c_compiler_options__DirectCCompilerOption.id;
904 if(cltype226 >= var_opt152->type->table_size) {
905 var225 = 0;
906 } else {
907 var225 = var_opt152->type->type_table[cltype226] == idtype227;
908 }
909 if (!var225) {
910 fprintf(stderr, "Runtime error: %s", "Assert failed");
911 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/c_compiler_options.nit", 131);
912 show_backtrace(1);
913 }
914 ((void (*)(val*, val*))(var_simplified_options->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_simplified_options, var_opt152) /* add on <var_simplified_options:Array[DirectCCompilerOption]>*/;
915 }
916 CONTINUE_label228: (void)0;
917 ((void (*)(val*))(var149->class->vft[COLOR_abstract_collection__Iterator__next]))(var149) /* next on <var149:Iterator[nullable Object]>*/;
918 }
919 BREAK_label228: (void)0;
920 var229 = ((val* (*)(val*))(var_nmoduledecl->class->vft[COLOR_parser_nodes__ANode__parent]))(var_nmoduledecl) /* parent on <var_nmoduledecl:ANode(AModuledecl)>*/;
921 /* <var229:nullable ANode> isa AModule */
922 cltype231 = type_parser_nodes__AModule.color;
923 idtype232 = type_parser_nodes__AModule.id;
924 if(var229 == NULL) {
925 var230 = 0;
926 } else {
927 if(cltype231 >= var229->type->table_size) {
928 var230 = 0;
929 } else {
930 var230 = var229->type->type_table[cltype231] == idtype232;
931 }
932 }
933 if (!var230) {
934 var_class_name233 = var229 == NULL ? "null" : var229->type->name;
935 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AModule", var_class_name233);
936 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/c_compiler_options.nit", 137);
937 show_backtrace(1);
938 }
939 var_nmodule = var229;
940 var234 = ((val* (*)(val*))(var_simplified_options->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_simplified_options) /* iterator on <var_simplified_options:Array[DirectCCompilerOption]>*/;
941 for(;;) {
942 var235 = ((short int (*)(val*))(var234->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var234) /* is_ok on <var234:Iterator[nullable Object]>*/;
943 if(!var235) break;
944 var236 = ((val* (*)(val*))(var234->class->vft[COLOR_abstract_collection__Iterator__item]))(var234) /* item on <var234:Iterator[nullable Object]>*/;
945 var_opt237 = var236;
946 var238 = ((val* (*)(val*))(var_opt237->class->vft[COLOR_c_compiler_options__DirectCCompilerOption__option]))(var_opt237) /* option on <var_opt237:DirectCCompilerOption>*/;
947 var_cmd = var238;
948 var239 = ((val* (*)(val*))(self->class->vft[COLOR_c_compiler_options__CCompilerOptionsPhase__compiler_annotation_name]))(self) /* compiler_annotation_name on <self:CCompilerOptionsPhase>*/;
949 var240 = ((short int (*)(val*, val*))(var_annotation_name->class->vft[COLOR_kernel__Object___61d_61d]))(var_annotation_name, var239) /* == on <var_annotation_name:String>*/;
950 if (var240){
951 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_c_compiler_options__CCompilerOptionsPhase__process_c_compiler_annotation]))(self, var_nmodule, var_cmd) /* process_c_compiler_annotation on <self:CCompilerOptionsPhase>*/;
952 } else {
953 var241 = ((val* (*)(val*))(self->class->vft[COLOR_c_compiler_options__CCompilerOptionsPhase__linker_annotation_name]))(self) /* linker_annotation_name on <self:CCompilerOptionsPhase>*/;
954 var242 = ((short int (*)(val*, val*))(var_annotation_name->class->vft[COLOR_kernel__Object___61d_61d]))(var_annotation_name, var241) /* == on <var_annotation_name:String>*/;
955 if (var242){
956 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_c_compiler_options__CCompilerOptionsPhase__process_c_linker_annotation]))(self, var_nmodule, var_cmd) /* process_c_linker_annotation on <self:CCompilerOptionsPhase>*/;
957 } else {
958 var243 = ((val* (*)(val*))(self->class->vft[COLOR_c_compiler_options__CCompilerOptionsPhase__cpp_compiler_annotation_name]))(self) /* cpp_compiler_annotation_name on <self:CCompilerOptionsPhase>*/;
959 var244 = ((short int (*)(val*, val*))(var_annotation_name->class->vft[COLOR_kernel__Object___61d_61d]))(var_annotation_name, var243) /* == on <var_annotation_name:String>*/;
960 if (var244){
961 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_c_compiler_options__CCompilerOptionsPhase__process_cpp_compiler_annotation]))(self, var_nmodule, var_cmd) /* process_cpp_compiler_annotation on <self:CCompilerOptionsPhase>*/;
962 } else {
963 fprintf(stderr, "Runtime error: %s", "Aborted");
964 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/c_compiler_options.nit", 147);
965 show_backtrace(1);
966 }
967 }
968 }
969 CONTINUE_label245: (void)0;
970 ((void (*)(val*))(var234->class->vft[COLOR_abstract_collection__Iterator__next]))(var234) /* next on <var234:Iterator[nullable Object]>*/;
971 }
972 BREAK_label245: (void)0;
973 RET_LABEL:;
974 }
975 /* method c_compiler_options#CCompilerOptionsPhase#process_annotated_node for (self: Object, ANode, AAnnotation) */
976 void VIRTUAL_c_compiler_options__CCompilerOptionsPhase__process_annotated_node(val* self, val* p0, val* p1) {
977 c_compiler_options__CCompilerOptionsPhase__process_annotated_node(self, p0, p1);
978 RET_LABEL:;
979 }
980 /* method c_compiler_options#CCompilerOptionsPhase#process_c_compiler_annotation for (self: CCompilerOptionsPhase, AModule, String) */
981 void c_compiler_options__CCompilerOptionsPhase__process_c_compiler_annotation(val* self, val* p0, val* p1) {
982 val* var_nmodule /* var nmodule: AModule */;
983 val* var_opt /* var opt: String */;
984 val* var /* : String */;
985 static val* varonce;
986 val* var1 /* : String */;
987 char* var2 /* : NativeString */;
988 long var3 /* : Int */;
989 val* var4 /* : String */;
990 val* var5 /* : Array[Object] */;
991 long var6 /* : Int */;
992 val* var7 /* : NativeArray[Object] */;
993 val* var8 /* : String */;
994 var_nmodule = p0;
995 var_opt = p1;
996 var = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_c__AModule__c_compiler_options]))(var_nmodule) /* c_compiler_options on <var_nmodule:AModule>*/;
997 if (varonce) {
998 var1 = varonce;
999 } else {
1000 var2 = " ";
1001 var3 = 1;
1002 var4 = string__NativeString__to_s_with_length(var2, var3);
1003 var1 = var4;
1004 varonce = var1;
1005 }
1006 var5 = NEW_array__Array(&type_array__Arraykernel__Object);
1007 { /* var5 = array_instance Array[Object] */
1008 var6 = 3;
1009 var7 = NEW_array__NativeArray(var6, &type_array__NativeArraykernel__Object);
1010 ((struct instance_array__NativeArray*)var7)->values[0] = (val*) var;
1011 ((struct instance_array__NativeArray*)var7)->values[1] = (val*) var1;
1012 ((struct instance_array__NativeArray*)var7)->values[2] = (val*) var_opt;
1013 ((void (*)(val*, val*, long))(var5->class->vft[COLOR_array__Array__with_native]))(var5, var7, var6) /* with_native on <var5:Array[Object]>*/;
1014 }
1015 var8 = ((val* (*)(val*))(var5->class->vft[COLOR_string__Object__to_s]))(var5) /* to_s on <var5:Array[Object]>*/;
1016 ((void (*)(val*, val*))(var_nmodule->class->vft[COLOR_c__AModule__c_compiler_options_61d]))(var_nmodule, var8) /* c_compiler_options= on <var_nmodule:AModule>*/;
1017 RET_LABEL:;
1018 }
1019 /* method c_compiler_options#CCompilerOptionsPhase#process_c_compiler_annotation for (self: Object, AModule, String) */
1020 void VIRTUAL_c_compiler_options__CCompilerOptionsPhase__process_c_compiler_annotation(val* self, val* p0, val* p1) {
1021 c_compiler_options__CCompilerOptionsPhase__process_c_compiler_annotation(self, p0, p1);
1022 RET_LABEL:;
1023 }
1024 /* method c_compiler_options#CCompilerOptionsPhase#process_c_linker_annotation for (self: CCompilerOptionsPhase, AModule, String) */
1025 void c_compiler_options__CCompilerOptionsPhase__process_c_linker_annotation(val* self, val* p0, val* p1) {
1026 val* var_nmodule /* var nmodule: AModule */;
1027 val* var_opt /* var opt: String */;
1028 val* var /* : String */;
1029 static val* varonce;
1030 val* var1 /* : String */;
1031 char* var2 /* : NativeString */;
1032 long var3 /* : Int */;
1033 val* var4 /* : String */;
1034 val* var5 /* : Array[Object] */;
1035 long var6 /* : Int */;
1036 val* var7 /* : NativeArray[Object] */;
1037 val* var8 /* : String */;
1038 var_nmodule = p0;
1039 var_opt = p1;
1040 var = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_c__AModule__c_linker_options]))(var_nmodule) /* c_linker_options on <var_nmodule:AModule>*/;
1041 if (varonce) {
1042 var1 = varonce;
1043 } else {
1044 var2 = " ";
1045 var3 = 1;
1046 var4 = string__NativeString__to_s_with_length(var2, var3);
1047 var1 = var4;
1048 varonce = var1;
1049 }
1050 var5 = NEW_array__Array(&type_array__Arraykernel__Object);
1051 { /* var5 = array_instance Array[Object] */
1052 var6 = 3;
1053 var7 = NEW_array__NativeArray(var6, &type_array__NativeArraykernel__Object);
1054 ((struct instance_array__NativeArray*)var7)->values[0] = (val*) var;
1055 ((struct instance_array__NativeArray*)var7)->values[1] = (val*) var1;
1056 ((struct instance_array__NativeArray*)var7)->values[2] = (val*) var_opt;
1057 ((void (*)(val*, val*, long))(var5->class->vft[COLOR_array__Array__with_native]))(var5, var7, var6) /* with_native on <var5:Array[Object]>*/;
1058 }
1059 var8 = ((val* (*)(val*))(var5->class->vft[COLOR_string__Object__to_s]))(var5) /* to_s on <var5:Array[Object]>*/;
1060 ((void (*)(val*, val*))(var_nmodule->class->vft[COLOR_c__AModule__c_linker_options_61d]))(var_nmodule, var8) /* c_linker_options= on <var_nmodule:AModule>*/;
1061 RET_LABEL:;
1062 }
1063 /* method c_compiler_options#CCompilerOptionsPhase#process_c_linker_annotation for (self: Object, AModule, String) */
1064 void VIRTUAL_c_compiler_options__CCompilerOptionsPhase__process_c_linker_annotation(val* self, val* p0, val* p1) {
1065 c_compiler_options__CCompilerOptionsPhase__process_c_linker_annotation(self, p0, p1);
1066 RET_LABEL:;
1067 }
1068 /* method c_compiler_options#CCompilerOptionsPhase#process_cpp_compiler_annotation for (self: CCompilerOptionsPhase, AModule, String) */
1069 void c_compiler_options__CCompilerOptionsPhase__process_cpp_compiler_annotation(val* self, val* p0, val* p1) {
1070 val* var_nmodule /* var nmodule: AModule */;
1071 val* var_opt /* var opt: String */;
1072 val* var /* : String */;
1073 static val* varonce;
1074 val* var1 /* : String */;
1075 char* var2 /* : NativeString */;
1076 long var3 /* : Int */;
1077 val* var4 /* : String */;
1078 val* var5 /* : Array[Object] */;
1079 long var6 /* : Int */;
1080 val* var7 /* : NativeArray[Object] */;
1081 val* var8 /* : String */;
1082 var_nmodule = p0;
1083 var_opt = p1;
1084 var = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_cpp__AModule__cpp_compiler_options]))(var_nmodule) /* cpp_compiler_options on <var_nmodule:AModule>*/;
1085 if (varonce) {
1086 var1 = varonce;
1087 } else {
1088 var2 = " ";
1089 var3 = 1;
1090 var4 = string__NativeString__to_s_with_length(var2, var3);
1091 var1 = var4;
1092 varonce = var1;
1093 }
1094 var5 = NEW_array__Array(&type_array__Arraykernel__Object);
1095 { /* var5 = array_instance Array[Object] */
1096 var6 = 3;
1097 var7 = NEW_array__NativeArray(var6, &type_array__NativeArraykernel__Object);
1098 ((struct instance_array__NativeArray*)var7)->values[0] = (val*) var;
1099 ((struct instance_array__NativeArray*)var7)->values[1] = (val*) var1;
1100 ((struct instance_array__NativeArray*)var7)->values[2] = (val*) var_opt;
1101 ((void (*)(val*, val*, long))(var5->class->vft[COLOR_array__Array__with_native]))(var5, var7, var6) /* with_native on <var5:Array[Object]>*/;
1102 }
1103 var8 = ((val* (*)(val*))(var5->class->vft[COLOR_string__Object__to_s]))(var5) /* to_s on <var5:Array[Object]>*/;
1104 ((void (*)(val*, val*))(var_nmodule->class->vft[COLOR_cpp__AModule__cpp_compiler_options_61d]))(var_nmodule, var8) /* cpp_compiler_options= on <var_nmodule:AModule>*/;
1105 RET_LABEL:;
1106 }
1107 /* method c_compiler_options#CCompilerOptionsPhase#process_cpp_compiler_annotation for (self: Object, AModule, String) */
1108 void VIRTUAL_c_compiler_options__CCompilerOptionsPhase__process_cpp_compiler_annotation(val* self, val* p0, val* p1) {
1109 c_compiler_options__CCompilerOptionsPhase__process_cpp_compiler_annotation(self, p0, p1);
1110 RET_LABEL:;
1111 }
1112 /* method c_compiler_options#CCompilerOption#init for (self: CCompilerOption) */
1113 void c_compiler_options__CCompilerOption__init(val* self) {
1114 RET_LABEL:;
1115 }
1116 /* method c_compiler_options#CCompilerOption#init for (self: Object) */
1117 void VIRTUAL_c_compiler_options__CCompilerOption__init(val* self) {
1118 c_compiler_options__CCompilerOption__init(self);
1119 RET_LABEL:;
1120 }
1121 /* method c_compiler_options#DirectCCompilerOption#option for (self: DirectCCompilerOption): String */
1122 val* c_compiler_options__DirectCCompilerOption__option(val* self) {
1123 val* var /* : String */;
1124 val* var1 /* : String */;
1125 var1 = self->attrs[COLOR_c_compiler_options__DirectCCompilerOption___64doption].val; /* @option on <self:DirectCCompilerOption> */
1126 if (var1 == NULL) {
1127 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @option");
1128 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/c_compiler_options.nit", 173);
1129 show_backtrace(1);
1130 }
1131 var = var1;
1132 RET_LABEL:;
1133 return var;
1134 }
1135 /* method c_compiler_options#DirectCCompilerOption#option for (self: Object): String */
1136 val* VIRTUAL_c_compiler_options__DirectCCompilerOption__option(val* self) {
1137 val* var /* : String */;
1138 val* var1 /* : String */;
1139 var1 = c_compiler_options__DirectCCompilerOption__option(self);
1140 var = var1;
1141 RET_LABEL:;
1142 return var;
1143 }
1144 /* method c_compiler_options#DirectCCompilerOption#option= for (self: DirectCCompilerOption, String) */
1145 void c_compiler_options__DirectCCompilerOption__option_61d(val* self, val* p0) {
1146 self->attrs[COLOR_c_compiler_options__DirectCCompilerOption___64doption].val = p0; /* @option on <self:DirectCCompilerOption> */
1147 RET_LABEL:;
1148 }
1149 /* method c_compiler_options#DirectCCompilerOption#option= for (self: Object, String) */
1150 void VIRTUAL_c_compiler_options__DirectCCompilerOption__option_61d(val* self, val* p0) {
1151 c_compiler_options__DirectCCompilerOption__option_61d(self, p0);
1152 RET_LABEL:;
1153 }
1154 /* method c_compiler_options#DirectCCompilerOption#init for (self: DirectCCompilerOption, String) */
1155 void c_compiler_options__DirectCCompilerOption__init(val* self, val* p0) {
1156 val* var_opt /* var opt: String */;
1157 var_opt = p0;
1158 ((void (*)(val*))(self->class->vft[COLOR_c_compiler_options__CCompilerOption__init]))(self) /* init on <self:DirectCCompilerOption>*/;
1159 ((void (*)(val*, val*))(self->class->vft[COLOR_c_compiler_options__DirectCCompilerOption__option_61d]))(self, var_opt) /* option= on <self:DirectCCompilerOption>*/;
1160 RET_LABEL:;
1161 }
1162 /* method c_compiler_options#DirectCCompilerOption#init for (self: Object, String) */
1163 void VIRTUAL_c_compiler_options__DirectCCompilerOption__init(val* self, val* p0) {
1164 c_compiler_options__DirectCCompilerOption__init(self, p0);
1165 RET_LABEL:;
1166 }
1167 /* method c_compiler_options#ExecCCompilerOption#command for (self: ExecCCompilerOption): Array[String] */
1168 val* c_compiler_options__ExecCCompilerOption__command(val* self) {
1169 val* var /* : Array[String] */;
1170 val* var1 /* : Array[String] */;
1171 var1 = self->attrs[COLOR_c_compiler_options__ExecCCompilerOption___64dcommand].val; /* @command on <self:ExecCCompilerOption> */
1172 if (var1 == NULL) {
1173 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @command");
1174 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/c_compiler_options.nit", 180);
1175 show_backtrace(1);
1176 }
1177 var = var1;
1178 RET_LABEL:;
1179 return var;
1180 }
1181 /* method c_compiler_options#ExecCCompilerOption#command for (self: Object): Array[String] */
1182 val* VIRTUAL_c_compiler_options__ExecCCompilerOption__command(val* self) {
1183 val* var /* : Array[String] */;
1184 val* var1 /* : Array[String] */;
1185 var1 = c_compiler_options__ExecCCompilerOption__command(self);
1186 var = var1;
1187 RET_LABEL:;
1188 return var;
1189 }
1190 /* method c_compiler_options#ExecCCompilerOption#command= for (self: ExecCCompilerOption, Array[String]) */
1191 void c_compiler_options__ExecCCompilerOption__command_61d(val* self, val* p0) {
1192 self->attrs[COLOR_c_compiler_options__ExecCCompilerOption___64dcommand].val = p0; /* @command on <self:ExecCCompilerOption> */
1193 RET_LABEL:;
1194 }
1195 /* method c_compiler_options#ExecCCompilerOption#command= for (self: Object, Array[String]) */
1196 void VIRTUAL_c_compiler_options__ExecCCompilerOption__command_61d(val* self, val* p0) {
1197 c_compiler_options__ExecCCompilerOption__command_61d(self, p0);
1198 RET_LABEL:;
1199 }
1200 /* method c_compiler_options#ExecCCompilerOption#exec_node for (self: ExecCCompilerOption): ACallExpr */
1201 val* c_compiler_options__ExecCCompilerOption__exec_node(val* self) {
1202 val* var /* : ACallExpr */;
1203 val* var1 /* : ACallExpr */;
1204 var1 = self->attrs[COLOR_c_compiler_options__ExecCCompilerOption___64dexec_node].val; /* @exec_node on <self:ExecCCompilerOption> */
1205 if (var1 == NULL) {
1206 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @exec_node");
1207 fprintf(stderr, " (%s:%d)\n", "src/common_ffi/c_compiler_options.nit", 181);
1208 show_backtrace(1);
1209 }
1210 var = var1;
1211 RET_LABEL:;
1212 return var;
1213 }
1214 /* method c_compiler_options#ExecCCompilerOption#exec_node for (self: Object): ACallExpr */
1215 val* VIRTUAL_c_compiler_options__ExecCCompilerOption__exec_node(val* self) {
1216 val* var /* : ACallExpr */;
1217 val* var1 /* : ACallExpr */;
1218 var1 = c_compiler_options__ExecCCompilerOption__exec_node(self);
1219 var = var1;
1220 RET_LABEL:;
1221 return var;
1222 }
1223 /* method c_compiler_options#ExecCCompilerOption#exec_node= for (self: ExecCCompilerOption, ACallExpr) */
1224 void c_compiler_options__ExecCCompilerOption__exec_node_61d(val* self, val* p0) {
1225 self->attrs[COLOR_c_compiler_options__ExecCCompilerOption___64dexec_node].val = p0; /* @exec_node on <self:ExecCCompilerOption> */
1226 RET_LABEL:;
1227 }
1228 /* method c_compiler_options#ExecCCompilerOption#exec_node= for (self: Object, ACallExpr) */
1229 void VIRTUAL_c_compiler_options__ExecCCompilerOption__exec_node_61d(val* self, val* p0) {
1230 c_compiler_options__ExecCCompilerOption__exec_node_61d(self, p0);
1231 RET_LABEL:;
1232 }
1233 /* method c_compiler_options#ExecCCompilerOption#init for (self: ExecCCompilerOption, Array[String], ACallExpr) */
1234 void c_compiler_options__ExecCCompilerOption__init(val* self, val* p0, val* p1) {
1235 val* var_command /* var command: Array[String] */;
1236 val* var_exec_node /* var exec_node: ACallExpr */;
1237 var_command = p0;
1238 var_exec_node = p1;
1239 ((void (*)(val*))(self->class->vft[COLOR_c_compiler_options__CCompilerOption__init]))(self) /* init on <self:ExecCCompilerOption>*/;
1240 ((void (*)(val*, val*))(self->class->vft[COLOR_c_compiler_options__ExecCCompilerOption__command_61d]))(self, var_command) /* command= on <self:ExecCCompilerOption>*/;
1241 ((void (*)(val*, val*))(self->class->vft[COLOR_c_compiler_options__ExecCCompilerOption__exec_node_61d]))(self, var_exec_node) /* exec_node= on <self:ExecCCompilerOption>*/;
1242 RET_LABEL:;
1243 }
1244 /* method c_compiler_options#ExecCCompilerOption#init for (self: Object, Array[String], ACallExpr) */
1245 void VIRTUAL_c_compiler_options__ExecCCompilerOption__init(val* self, val* p0, val* p1) {
1246 c_compiler_options__ExecCCompilerOption__init(self, p0, p1);
1247 RET_LABEL:;
1248 }