update NOTICE
[nit.git] / c_src / annotation.sep.1.c
1 #include "annotation.sep.0.h"
2 /* method annotation#Prod#get_single_annotation for (self: Prod, String, ModelBuilder): nullable AAnnotation */
3 val* annotation__Prod__get_single_annotation(val* self, val* p0, val* p1) {
4 val* var /* : nullable AAnnotation */;
5 val* var_name /* var name: String */;
6 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
7 val* var1 /* : Array[AAnnotation] */;
8 val* var_res /* var res: Array[AAnnotation] */;
9 short int var2 /* : Bool */;
10 val* var3 /* : null */;
11 long var4 /* : Int */;
12 long var6 /* : Int */;
13 long var7 /* : Int */;
14 short int var8 /* : Bool */;
15 short int var10 /* : Bool */;
16 int cltype;
17 int idtype;
18 const char* var_class_name;
19 short int var11 /* : Bool */;
20 long var12 /* : Int */;
21 val* var13 /* : nullable Object */;
22 static val* varonce;
23 val* var14 /* : String */;
24 char* var15 /* : NativeString */;
25 long var16 /* : Int */;
26 val* var17 /* : FlatString */;
27 static val* varonce18;
28 val* var19 /* : String */;
29 char* var20 /* : NativeString */;
30 long var21 /* : Int */;
31 val* var22 /* : FlatString */;
32 long var23 /* : Int */;
33 val* var24 /* : nullable Object */;
34 val* var25 /* : Location */;
35 val* var27 /* : Location */;
36 long var28 /* : Int */;
37 long var30 /* : Int */;
38 val* var31 /* : Array[Object] */;
39 long var32 /* : Int */;
40 val* var33 /* : NativeArray[Object] */;
41 val* var34 /* : Object */;
42 val* var35 /* : String */;
43 val* var36 /* : nullable Object */;
44 var_name = p0;
45 var_modelbuilder = p1;
46 {
47 var1 = annotation__Prod__get_annotations(self, var_name);
48 }
49 var_res = var1;
50 {
51 var2 = array__AbstractArrayRead__is_empty(var_res);
52 }
53 if (var2){
54 var3 = NULL;
55 var = var3;
56 goto RET_LABEL;
57 } else {
58 }
59 {
60 { /* Inline array#AbstractArrayRead#length (var_res) on <var_res:Array[AAnnotation]> */
61 var6 = var_res->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_res:Array[AAnnotation]> */
62 var4 = var6;
63 RET_LABEL5:(void)0;
64 }
65 }
66 var7 = 1;
67 {
68 { /* Inline kernel#Int#> (var4,var7) on <var4:Int> */
69 /* Covariant cast for argument 0 (i) <var7:Int> isa OTHER */
70 /* <var7:Int> isa OTHER */
71 var10 = 1; /* easy <var7:Int> isa OTHER*/
72 if (unlikely(!var10)) {
73 var_class_name = type_kernel__Int.name;
74 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
75 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
76 show_backtrace(1);
77 }
78 var11 = var4 > var7;
79 var8 = var11;
80 goto RET_LABEL9;
81 RET_LABEL9:(void)0;
82 }
83 }
84 if (var8){
85 var12 = 1;
86 {
87 var13 = array__Array___91d_93d(var_res, var12);
88 }
89 if (varonce) {
90 var14 = varonce;
91 } else {
92 var15 = "Error: multiple annotation `";
93 var16 = 28;
94 var17 = string__NativeString__to_s_with_length(var15, var16);
95 var14 = var17;
96 varonce = var14;
97 }
98 if (varonce18) {
99 var19 = varonce18;
100 } else {
101 var20 = "`. A previous one is defined line ";
102 var21 = 34;
103 var22 = string__NativeString__to_s_with_length(var20, var21);
104 var19 = var22;
105 varonce18 = var19;
106 }
107 var23 = 0;
108 {
109 var24 = array__Array___91d_93d(var_res, var23);
110 }
111 {
112 { /* Inline parser_nodes#ANode#location (var24) on <var24:nullable Object(AAnnotation)> */
113 var27 = var24->attrs[COLOR_parser_nodes__ANode___location].val; /* _location on <var24:nullable Object(AAnnotation)> */
114 if (unlikely(var27 == NULL)) {
115 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
116 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 23);
117 show_backtrace(1);
118 }
119 var25 = var27;
120 RET_LABEL26:(void)0;
121 }
122 }
123 {
124 { /* Inline location#Location#line_start (var25) on <var25:Location> */
125 var30 = var25->attrs[COLOR_location__Location___line_start].l; /* _line_start on <var25:Location> */
126 var28 = var30;
127 RET_LABEL29:(void)0;
128 }
129 }
130 var31 = NEW_array__Array(&type_array__Arraykernel__Object);
131 { /* var31 = array_instance Array[Object] */
132 var32 = 4;
133 var33 = NEW_array__NativeArray(var32, &type_array__NativeArraykernel__Object);
134 ((struct instance_array__NativeArray*)var33)->values[0] = (val*) var14;
135 ((struct instance_array__NativeArray*)var33)->values[1] = (val*) var_name;
136 ((struct instance_array__NativeArray*)var33)->values[2] = (val*) var19;
137 var34 = BOX_kernel__Int(var28); /* autobox from Int to Object */
138 ((struct instance_array__NativeArray*)var33)->values[3] = (val*) var34;
139 {
140 ((void (*)(val*, val*, long))(var31->class->vft[COLOR_array__Array__with_native]))(var31, var33, var32) /* with_native on <var31:Array[Object]>*/;
141 }
142 }
143 {
144 var35 = ((val* (*)(val*))(var31->class->vft[COLOR_string__Object__to_s]))(var31) /* to_s on <var31:Array[Object]>*/;
145 }
146 {
147 modelbuilder__ModelBuilder__error(var_modelbuilder, var13, var35); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
148 }
149 } else {
150 }
151 {
152 var36 = abstract_collection__SequenceRead__first(var_res);
153 }
154 var = var36;
155 goto RET_LABEL;
156 RET_LABEL:;
157 return var;
158 }
159 /* method annotation#Prod#get_single_annotation for (self: Object, String, ModelBuilder): nullable AAnnotation */
160 val* VIRTUAL_annotation__Prod__get_single_annotation(val* self, val* p0, val* p1) {
161 val* var /* : nullable AAnnotation */;
162 val* var1 /* : nullable AAnnotation */;
163 var1 = annotation__Prod__get_single_annotation(self, p0, p1);
164 var = var1;
165 RET_LABEL:;
166 return var;
167 }
168 /* method annotation#Prod#get_annotations for (self: Prod, String): Array[AAnnotation] */
169 val* annotation__Prod__get_annotations(val* self, val* p0) {
170 val* var /* : Array[AAnnotation] */;
171 val* var_name /* var name: String */;
172 val* var1 /* : Array[AAnnotation] */;
173 val* var_res /* var res: Array[AAnnotation] */;
174 val* var2 /* : nullable AAnnotations */;
175 val* var4 /* : nullable AAnnotations */;
176 val* var_nas /* var nas: nullable AAnnotations */;
177 val* var5 /* : null */;
178 short int var6 /* : Bool */;
179 short int var7 /* : Bool */;
180 val* var_other /* var other: nullable Object */;
181 short int var9 /* : Bool */;
182 short int var11 /* : Bool */;
183 val* var12 /* : ANodes[AAnnotation] */;
184 val* var14 /* : ANodes[AAnnotation] */;
185 val* var_ /* var : ANodes[AAnnotation] */;
186 val* var15 /* : Iterator[ANode] */;
187 val* var_16 /* var : Iterator[AAnnotation] */;
188 short int var17 /* : Bool */;
189 val* var18 /* : nullable Object */;
190 val* var_na /* var na: AAnnotation */;
191 val* var19 /* : String */;
192 short int var20 /* : Bool */;
193 short int var21 /* : Bool */;
194 val* var_other23 /* var other: nullable Object */;
195 short int var24 /* : Bool */;
196 short int var25 /* : Bool */;
197 short int var26 /* : Bool */;
198 var_name = p0;
199 var1 = NEW_array__Array(&type_array__Arrayparser_nodes__AAnnotation);
200 {
201 ((void (*)(val*))(var1->class->vft[COLOR_kernel__Object__init]))(var1) /* init on <var1:Array[AAnnotation]>*/;
202 }
203 var_res = var1;
204 {
205 { /* Inline parser_nodes#Prod#n_annotations (self) on <self:Prod> */
206 var4 = self->attrs[COLOR_parser_nodes__Prod___n_annotations].val; /* _n_annotations on <self:Prod> */
207 var2 = var4;
208 RET_LABEL3:(void)0;
209 }
210 }
211 var_nas = var2;
212 var5 = NULL;
213 if (var_nas == NULL) {
214 var6 = 1; /* is null */
215 } else {
216 var6 = 0; /* arg is null but recv is not */
217 }
218 if (0) {
219 { /* Inline kernel#Object#== (var_nas,var5) on <var_nas:nullable AAnnotations> */
220 var_other = var5;
221 {
222 { /* Inline kernel#Object#is_same_instance (var_nas,var_other) on <var_nas:nullable AAnnotations(AAnnotations)> */
223 var11 = var_nas == var_other;
224 var9 = var11;
225 goto RET_LABEL10;
226 RET_LABEL10:(void)0;
227 }
228 }
229 var7 = var9;
230 goto RET_LABEL8;
231 RET_LABEL8:(void)0;
232 }
233 var6 = var7;
234 }
235 if (var6){
236 var = var_res;
237 goto RET_LABEL;
238 } else {
239 }
240 {
241 { /* Inline parser_nodes#AAnnotations#n_items (var_nas) on <var_nas:nullable AAnnotations(AAnnotations)> */
242 var14 = var_nas->attrs[COLOR_parser_nodes__AAnnotations___n_items].val; /* _n_items on <var_nas:nullable AAnnotations(AAnnotations)> */
243 if (unlikely(var14 == NULL)) {
244 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_items");
245 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 2027);
246 show_backtrace(1);
247 }
248 var12 = var14;
249 RET_LABEL13:(void)0;
250 }
251 }
252 var_ = var12;
253 {
254 var15 = parser_nodes__ANodes__iterator(var_);
255 }
256 var_16 = var15;
257 for(;;) {
258 {
259 var17 = ((short int (*)(val*))(var_16->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_16) /* is_ok on <var_16:Iterator[AAnnotation]>*/;
260 }
261 if (var17){
262 {
263 var18 = ((val* (*)(val*))(var_16->class->vft[COLOR_abstract_collection__Iterator__item]))(var_16) /* item on <var_16:Iterator[AAnnotation]>*/;
264 }
265 var_na = var18;
266 {
267 var19 = annotation__AAnnotation__name(var_na);
268 }
269 {
270 { /* Inline kernel#Object#!= (var19,var_name) on <var19:String> */
271 var_other23 = var_name;
272 {
273 var25 = ((short int (*)(val*, val*))(var19->class->vft[COLOR_kernel__Object___61d_61d]))(var19, var_other23) /* == on <var19:String>*/;
274 var24 = var25;
275 }
276 var26 = !var24;
277 var21 = var26;
278 goto RET_LABEL22;
279 RET_LABEL22:(void)0;
280 }
281 var20 = var21;
282 }
283 if (var20){
284 goto BREAK_label;
285 } else {
286 }
287 {
288 array__Array__add(var_res, var_na); /* Direct call array#Array#add on <var_res:Array[AAnnotation]>*/
289 }
290 BREAK_label: (void)0;
291 {
292 ((void (*)(val*))(var_16->class->vft[COLOR_abstract_collection__Iterator__next]))(var_16) /* next on <var_16:Iterator[AAnnotation]>*/;
293 }
294 } else {
295 goto BREAK_label27;
296 }
297 }
298 BREAK_label27: (void)0;
299 {
300 { /* Inline abstract_collection#Iterator#finish (var_16) on <var_16:Iterator[AAnnotation]> */
301 RET_LABEL28:(void)0;
302 }
303 }
304 var = var_res;
305 goto RET_LABEL;
306 RET_LABEL:;
307 return var;
308 }
309 /* method annotation#Prod#get_annotations for (self: Object, String): Array[AAnnotation] */
310 val* VIRTUAL_annotation__Prod__get_annotations(val* self, val* p0) {
311 val* var /* : Array[AAnnotation] */;
312 val* var1 /* : Array[AAnnotation] */;
313 var1 = annotation__Prod__get_annotations(self, p0);
314 var = var1;
315 RET_LABEL:;
316 return var;
317 }
318 /* method annotation#AAnnotation#name for (self: AAnnotation): String */
319 val* annotation__AAnnotation__name(val* self) {
320 val* var /* : String */;
321 val* var1 /* : AAtid */;
322 val* var3 /* : AAtid */;
323 val* var4 /* : Token */;
324 val* var6 /* : Token */;
325 val* var7 /* : String */;
326 {
327 { /* Inline parser_nodes#AAnnotation#n_atid (self) on <self:AAnnotation> */
328 var3 = self->attrs[COLOR_parser_nodes__AAnnotation___n_atid].val; /* _n_atid on <self:AAnnotation> */
329 if (unlikely(var3 == NULL)) {
330 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_atid");
331 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 2037);
332 show_backtrace(1);
333 }
334 var1 = var3;
335 RET_LABEL2:(void)0;
336 }
337 }
338 {
339 { /* Inline parser_nodes#AAtid#n_id (var1) on <var1:AAtid> */
340 var6 = var1->attrs[COLOR_parser_nodes__AAtid___n_id].val; /* _n_id on <var1:AAtid> */
341 if (unlikely(var6 == NULL)) {
342 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
343 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 2046);
344 show_backtrace(1);
345 }
346 var4 = var6;
347 RET_LABEL5:(void)0;
348 }
349 }
350 {
351 var7 = lexer_work__Token__text(var4);
352 }
353 var = var7;
354 goto RET_LABEL;
355 RET_LABEL:;
356 return var;
357 }
358 /* method annotation#AAnnotation#name for (self: Object): String */
359 val* VIRTUAL_annotation__AAnnotation__name(val* self) {
360 val* var /* : String */;
361 val* var1 /* : String */;
362 var1 = annotation__AAnnotation__name(self);
363 var = var1;
364 RET_LABEL:;
365 return var;
366 }
367 /* method annotation#AAnnotation#arg_as_string for (self: AAnnotation, ModelBuilder): nullable String */
368 val* annotation__AAnnotation__arg_as_string(val* self, val* p0) {
369 val* var /* : nullable String */;
370 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
371 val* var1 /* : ANodes[AExpr] */;
372 val* var3 /* : ANodes[AExpr] */;
373 val* var_args /* var args: ANodes[AExpr] */;
374 long var4 /* : Int */;
375 long var5 /* : Int */;
376 short int var6 /* : Bool */;
377 short int var7 /* : Bool */;
378 short int var9 /* : Bool */;
379 val* var10 /* : nullable Object */;
380 val* var11 /* : nullable String */;
381 val* var_arg /* var arg: nullable String */;
382 val* var12 /* : null */;
383 short int var13 /* : Bool */;
384 short int var14 /* : Bool */;
385 val* var_other /* var other: nullable Object */;
386 short int var16 /* : Bool */;
387 short int var17 /* : Bool */;
388 short int var18 /* : Bool */;
389 static val* varonce;
390 val* var19 /* : String */;
391 char* var20 /* : NativeString */;
392 long var21 /* : Int */;
393 val* var22 /* : FlatString */;
394 val* var23 /* : String */;
395 static val* varonce24;
396 val* var25 /* : String */;
397 char* var26 /* : NativeString */;
398 long var27 /* : Int */;
399 val* var28 /* : FlatString */;
400 val* var29 /* : Array[Object] */;
401 long var30 /* : Int */;
402 val* var31 /* : NativeArray[Object] */;
403 val* var32 /* : String */;
404 val* var33 /* : null */;
405 var_modelbuilder = p0;
406 {
407 { /* Inline parser_nodes#AAnnotation#n_args (self) on <self:AAnnotation> */
408 var3 = self->attrs[COLOR_parser_nodes__AAnnotation___n_args].val; /* _n_args on <self:AAnnotation> */
409 if (unlikely(var3 == NULL)) {
410 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
411 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 2039);
412 show_backtrace(1);
413 }
414 var1 = var3;
415 RET_LABEL2:(void)0;
416 }
417 }
418 var_args = var1;
419 {
420 var4 = parser_nodes__ANodes__length(var_args);
421 }
422 var5 = 1;
423 {
424 { /* Inline kernel#Int#== (var4,var5) on <var4:Int> */
425 var9 = var4 == var5;
426 var7 = var9;
427 goto RET_LABEL8;
428 RET_LABEL8:(void)0;
429 }
430 var6 = var7;
431 }
432 if (var6){
433 {
434 var10 = abstract_collection__SequenceRead__first(var_args);
435 }
436 {
437 var11 = annotation__AExpr__as_string(var10);
438 }
439 var_arg = var11;
440 var12 = NULL;
441 if (var_arg == NULL) {
442 var13 = 0; /* is null */
443 } else {
444 var13 = 1; /* arg is null and recv is not */
445 }
446 if (0) {
447 { /* Inline kernel#Object#!= (var_arg,var12) on <var_arg:nullable String> */
448 var_other = var12;
449 {
450 var17 = ((short int (*)(val*, val*))(var_arg->class->vft[COLOR_kernel__Object___61d_61d]))(var_arg, var_other) /* == on <var_arg:nullable String(String)>*/;
451 var16 = var17;
452 }
453 var18 = !var16;
454 var14 = var18;
455 goto RET_LABEL15;
456 RET_LABEL15:(void)0;
457 }
458 var13 = var14;
459 }
460 if (var13){
461 var = var_arg;
462 goto RET_LABEL;
463 } else {
464 }
465 } else {
466 }
467 if (varonce) {
468 var19 = varonce;
469 } else {
470 var20 = "Annotation error: \"";
471 var21 = 19;
472 var22 = string__NativeString__to_s_with_length(var20, var21);
473 var19 = var22;
474 varonce = var19;
475 }
476 {
477 var23 = annotation__AAnnotation__name(self);
478 }
479 if (varonce24) {
480 var25 = varonce24;
481 } else {
482 var26 = "\" expects a single String as argument.";
483 var27 = 38;
484 var28 = string__NativeString__to_s_with_length(var26, var27);
485 var25 = var28;
486 varonce24 = var25;
487 }
488 var29 = NEW_array__Array(&type_array__Arraykernel__Object);
489 { /* var29 = array_instance Array[Object] */
490 var30 = 3;
491 var31 = NEW_array__NativeArray(var30, &type_array__NativeArraykernel__Object);
492 ((struct instance_array__NativeArray*)var31)->values[0] = (val*) var19;
493 ((struct instance_array__NativeArray*)var31)->values[1] = (val*) var23;
494 ((struct instance_array__NativeArray*)var31)->values[2] = (val*) var25;
495 {
496 ((void (*)(val*, val*, long))(var29->class->vft[COLOR_array__Array__with_native]))(var29, var31, var30) /* with_native on <var29:Array[Object]>*/;
497 }
498 }
499 {
500 var32 = ((val* (*)(val*))(var29->class->vft[COLOR_string__Object__to_s]))(var29) /* to_s on <var29:Array[Object]>*/;
501 }
502 {
503 modelbuilder__ModelBuilder__error(var_modelbuilder, self, var32); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
504 }
505 var33 = NULL;
506 var = var33;
507 goto RET_LABEL;
508 RET_LABEL:;
509 return var;
510 }
511 /* method annotation#AAnnotation#arg_as_string for (self: Object, ModelBuilder): nullable String */
512 val* VIRTUAL_annotation__AAnnotation__arg_as_string(val* self, val* p0) {
513 val* var /* : nullable String */;
514 val* var1 /* : nullable String */;
515 var1 = annotation__AAnnotation__arg_as_string(self, p0);
516 var = var1;
517 RET_LABEL:;
518 return var;
519 }
520 /* method annotation#AAnnotation#arg_as_id for (self: AAnnotation, ModelBuilder): nullable String */
521 val* annotation__AAnnotation__arg_as_id(val* self, val* p0) {
522 val* var /* : nullable String */;
523 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
524 val* var1 /* : ANodes[AExpr] */;
525 val* var3 /* : ANodes[AExpr] */;
526 val* var_args /* var args: ANodes[AExpr] */;
527 long var4 /* : Int */;
528 long var5 /* : Int */;
529 short int var6 /* : Bool */;
530 short int var7 /* : Bool */;
531 short int var9 /* : Bool */;
532 val* var10 /* : nullable Object */;
533 val* var11 /* : nullable String */;
534 val* var_arg /* var arg: nullable String */;
535 val* var12 /* : null */;
536 short int var13 /* : Bool */;
537 short int var14 /* : Bool */;
538 val* var_other /* var other: nullable Object */;
539 short int var16 /* : Bool */;
540 short int var17 /* : Bool */;
541 short int var18 /* : Bool */;
542 static val* varonce;
543 val* var19 /* : String */;
544 char* var20 /* : NativeString */;
545 long var21 /* : Int */;
546 val* var22 /* : FlatString */;
547 val* var23 /* : String */;
548 static val* varonce24;
549 val* var25 /* : String */;
550 char* var26 /* : NativeString */;
551 long var27 /* : Int */;
552 val* var28 /* : FlatString */;
553 val* var29 /* : Array[Object] */;
554 long var30 /* : Int */;
555 val* var31 /* : NativeArray[Object] */;
556 val* var32 /* : String */;
557 val* var33 /* : null */;
558 var_modelbuilder = p0;
559 {
560 { /* Inline parser_nodes#AAnnotation#n_args (self) on <self:AAnnotation> */
561 var3 = self->attrs[COLOR_parser_nodes__AAnnotation___n_args].val; /* _n_args on <self:AAnnotation> */
562 if (unlikely(var3 == NULL)) {
563 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
564 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 2039);
565 show_backtrace(1);
566 }
567 var1 = var3;
568 RET_LABEL2:(void)0;
569 }
570 }
571 var_args = var1;
572 {
573 var4 = parser_nodes__ANodes__length(var_args);
574 }
575 var5 = 1;
576 {
577 { /* Inline kernel#Int#== (var4,var5) on <var4:Int> */
578 var9 = var4 == var5;
579 var7 = var9;
580 goto RET_LABEL8;
581 RET_LABEL8:(void)0;
582 }
583 var6 = var7;
584 }
585 if (var6){
586 {
587 var10 = abstract_collection__SequenceRead__first(var_args);
588 }
589 {
590 var11 = annotation__AExpr__as_id(var10);
591 }
592 var_arg = var11;
593 var12 = NULL;
594 if (var_arg == NULL) {
595 var13 = 0; /* is null */
596 } else {
597 var13 = 1; /* arg is null and recv is not */
598 }
599 if (0) {
600 { /* Inline kernel#Object#!= (var_arg,var12) on <var_arg:nullable String> */
601 var_other = var12;
602 {
603 var17 = ((short int (*)(val*, val*))(var_arg->class->vft[COLOR_kernel__Object___61d_61d]))(var_arg, var_other) /* == on <var_arg:nullable String(String)>*/;
604 var16 = var17;
605 }
606 var18 = !var16;
607 var14 = var18;
608 goto RET_LABEL15;
609 RET_LABEL15:(void)0;
610 }
611 var13 = var14;
612 }
613 if (var13){
614 var = var_arg;
615 goto RET_LABEL;
616 } else {
617 }
618 } else {
619 }
620 if (varonce) {
621 var19 = varonce;
622 } else {
623 var20 = "Annotation error: \"";
624 var21 = 19;
625 var22 = string__NativeString__to_s_with_length(var20, var21);
626 var19 = var22;
627 varonce = var19;
628 }
629 {
630 var23 = annotation__AAnnotation__name(self);
631 }
632 if (varonce24) {
633 var25 = varonce24;
634 } else {
635 var26 = "\" expects a single identifier as argument.";
636 var27 = 42;
637 var28 = string__NativeString__to_s_with_length(var26, var27);
638 var25 = var28;
639 varonce24 = var25;
640 }
641 var29 = NEW_array__Array(&type_array__Arraykernel__Object);
642 { /* var29 = array_instance Array[Object] */
643 var30 = 3;
644 var31 = NEW_array__NativeArray(var30, &type_array__NativeArraykernel__Object);
645 ((struct instance_array__NativeArray*)var31)->values[0] = (val*) var19;
646 ((struct instance_array__NativeArray*)var31)->values[1] = (val*) var23;
647 ((struct instance_array__NativeArray*)var31)->values[2] = (val*) var25;
648 {
649 ((void (*)(val*, val*, long))(var29->class->vft[COLOR_array__Array__with_native]))(var29, var31, var30) /* with_native on <var29:Array[Object]>*/;
650 }
651 }
652 {
653 var32 = ((val* (*)(val*))(var29->class->vft[COLOR_string__Object__to_s]))(var29) /* to_s on <var29:Array[Object]>*/;
654 }
655 {
656 modelbuilder__ModelBuilder__error(var_modelbuilder, self, var32); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
657 }
658 var33 = NULL;
659 var = var33;
660 goto RET_LABEL;
661 RET_LABEL:;
662 return var;
663 }
664 /* method annotation#AAnnotation#arg_as_id for (self: Object, ModelBuilder): nullable String */
665 val* VIRTUAL_annotation__AAnnotation__arg_as_id(val* self, val* p0) {
666 val* var /* : nullable String */;
667 val* var1 /* : nullable String */;
668 var1 = annotation__AAnnotation__arg_as_id(self, p0);
669 var = var1;
670 RET_LABEL:;
671 return var;
672 }
673 /* method annotation#AExpr#as_string for (self: AExpr): nullable String */
674 val* annotation__AExpr__as_string(val* self) {
675 val* var /* : nullable String */;
676 short int var1 /* : Bool */;
677 int cltype;
678 int idtype;
679 short int var2 /* : Bool */;
680 val* var3 /* : null */;
681 val* var4 /* : nullable String */;
682 val* var6 /* : nullable String */;
683 /* <self:AExpr> isa AStringFormExpr */
684 cltype = type_parser_nodes__AStringFormExpr.color;
685 idtype = type_parser_nodes__AStringFormExpr.id;
686 if(cltype >= self->type->table_size) {
687 var1 = 0;
688 } else {
689 var1 = self->type->type_table[cltype] == idtype;
690 }
691 var2 = !var1;
692 if (var2){
693 var3 = NULL;
694 var = var3;
695 goto RET_LABEL;
696 } else {
697 }
698 {
699 { /* Inline literal#AStringFormExpr#value (self) on <self:AExpr(AStringFormExpr)> */
700 var6 = self->attrs[COLOR_literal__AStringFormExpr___value].val; /* _value on <self:AExpr(AStringFormExpr)> */
701 var4 = var6;
702 RET_LABEL5:(void)0;
703 }
704 }
705 if (unlikely(var4 == NULL)) {
706 PRINT_ERROR("Runtime error: %s", "Cast failed");
707 PRINT_ERROR(" (%s:%d)\n", "annotation.nit", 109);
708 show_backtrace(1);
709 }
710 var = var4;
711 goto RET_LABEL;
712 RET_LABEL:;
713 return var;
714 }
715 /* method annotation#AExpr#as_string for (self: Object): nullable String */
716 val* VIRTUAL_annotation__AExpr__as_string(val* self) {
717 val* var /* : nullable String */;
718 val* var1 /* : nullable String */;
719 var1 = annotation__AExpr__as_string(self);
720 var = var1;
721 RET_LABEL:;
722 return var;
723 }
724 /* method annotation#AExpr#as_id for (self: AExpr): nullable String */
725 val* annotation__AExpr__as_id(val* self) {
726 val* var /* : nullable String */;
727 short int var1 /* : Bool */;
728 int cltype;
729 int idtype;
730 val* var2 /* : String */;
731 short int var3 /* : Bool */;
732 int cltype4;
733 int idtype5;
734 short int var6 /* : Bool */;
735 val* var7 /* : null */;
736 val* var8 /* : AExpr */;
737 val* var10 /* : AExpr */;
738 short int var11 /* : Bool */;
739 int cltype12;
740 int idtype13;
741 short int var14 /* : Bool */;
742 val* var15 /* : null */;
743 val* var16 /* : AExprs */;
744 val* var18 /* : AExprs */;
745 val* var19 /* : ANodes[AExpr] */;
746 val* var21 /* : ANodes[AExpr] */;
747 short int var22 /* : Bool */;
748 short int var23 /* : Bool */;
749 val* var24 /* : null */;
750 val* var25 /* : TId */;
751 val* var27 /* : TId */;
752 val* var28 /* : String */;
753 /* <self:AExpr> isa AMethidExpr */
754 cltype = type_parser_nodes__AMethidExpr.color;
755 idtype = type_parser_nodes__AMethidExpr.id;
756 if(cltype >= self->type->table_size) {
757 var1 = 0;
758 } else {
759 var1 = self->type->type_table[cltype] == idtype;
760 }
761 if (var1){
762 {
763 var2 = parser_work__Prod__collect_text(self);
764 }
765 var = var2;
766 goto RET_LABEL;
767 } else {
768 }
769 /* <self:AExpr> isa ACallExpr */
770 cltype4 = type_parser_nodes__ACallExpr.color;
771 idtype5 = type_parser_nodes__ACallExpr.id;
772 if(cltype4 >= self->type->table_size) {
773 var3 = 0;
774 } else {
775 var3 = self->type->type_table[cltype4] == idtype5;
776 }
777 var6 = !var3;
778 if (var6){
779 var7 = NULL;
780 var = var7;
781 goto RET_LABEL;
782 } else {
783 }
784 {
785 { /* Inline parser_nodes#ASendExpr#n_expr (self) on <self:AExpr(ACallExpr)> */
786 var10 = self->attrs[COLOR_parser_nodes__ASendExpr___n_expr].val; /* _n_expr on <self:AExpr(ACallExpr)> */
787 if (unlikely(var10 == NULL)) {
788 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
789 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1466);
790 show_backtrace(1);
791 }
792 var8 = var10;
793 RET_LABEL9:(void)0;
794 }
795 }
796 /* <var8:AExpr> isa AImplicitSelfExpr */
797 cltype12 = type_parser_nodes__AImplicitSelfExpr.color;
798 idtype13 = type_parser_nodes__AImplicitSelfExpr.id;
799 if(cltype12 >= var8->type->table_size) {
800 var11 = 0;
801 } else {
802 var11 = var8->type->type_table[cltype12] == idtype13;
803 }
804 var14 = !var11;
805 if (var14){
806 var15 = NULL;
807 var = var15;
808 goto RET_LABEL;
809 } else {
810 }
811 {
812 { /* Inline parser_nodes#ACallFormExpr#n_args (self) on <self:AExpr(ACallExpr)> */
813 var18 = self->attrs[COLOR_parser_nodes__ACallFormExpr___n_args].val; /* _n_args on <self:AExpr(ACallExpr)> */
814 if (unlikely(var18 == NULL)) {
815 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
816 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1647);
817 show_backtrace(1);
818 }
819 var16 = var18;
820 RET_LABEL17:(void)0;
821 }
822 }
823 {
824 { /* Inline parser_nodes#AExprs#n_exprs (var16) on <var16:AExprs> */
825 var21 = var16->attrs[COLOR_parser_nodes__AExprs___n_exprs].val; /* _n_exprs on <var16:AExprs> */
826 if (unlikely(var21 == NULL)) {
827 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
828 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1946);
829 show_backtrace(1);
830 }
831 var19 = var21;
832 RET_LABEL20:(void)0;
833 }
834 }
835 {
836 var22 = parser_nodes__ANodes__is_empty(var19);
837 }
838 var23 = !var22;
839 if (var23){
840 var24 = NULL;
841 var = var24;
842 goto RET_LABEL;
843 } else {
844 }
845 {
846 { /* Inline parser_nodes#ACallFormExpr#n_id (self) on <self:AExpr(ACallExpr)> */
847 var27 = self->attrs[COLOR_parser_nodes__ACallFormExpr___n_id].val; /* _n_id on <self:AExpr(ACallExpr)> */
848 if (unlikely(var27 == NULL)) {
849 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
850 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1644);
851 show_backtrace(1);
852 }
853 var25 = var27;
854 RET_LABEL26:(void)0;
855 }
856 }
857 {
858 var28 = lexer_work__Token__text(var25);
859 }
860 var = var28;
861 goto RET_LABEL;
862 RET_LABEL:;
863 return var;
864 }
865 /* method annotation#AExpr#as_id for (self: Object): nullable String */
866 val* VIRTUAL_annotation__AExpr__as_id(val* self) {
867 val* var /* : nullable String */;
868 val* var1 /* : nullable String */;
869 var1 = annotation__AExpr__as_id(self);
870 var = var1;
871 RET_LABEL:;
872 return var;
873 }