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 var5
/* : Int */;
13 short int var6
/* : Bool */;
14 short int var8
/* : Bool */;
17 const char* var_class_name
;
18 short int var9
/* : Bool */;
19 long var10
/* : Int */;
20 val
* var11
/* : nullable Object */;
22 val
* var12
/* : String */;
23 char* var13
/* : NativeString */;
24 long var14
/* : Int */;
25 val
* var15
/* : FlatString */;
26 static val
* varonce16
;
27 val
* var17
/* : String */;
28 char* var18
/* : NativeString */;
29 long var19
/* : Int */;
30 val
* var20
/* : FlatString */;
31 long var21
/* : Int */;
32 val
* var22
/* : nullable Object */;
33 val
* var23
/* : Location */;
34 long var24
/* : Int */;
35 long var26
/* : Int */;
36 val
* var27
/* : Array[Object] */;
37 long var28
/* : Int */;
38 val
* var29
/* : NativeArray[Object] */;
39 val
* var30
/* : Object */;
40 val
* var31
/* : String */;
41 val
* var32
/* : nullable Object */;
43 var_modelbuilder
= p1
;
45 var1
= annotation__Prod__get_annotations(self
, var_name
);
49 var2
= array__AbstractArrayRead__is_empty(var_res
);
58 var4
= array__AbstractArrayRead__length(var_res
);
62 { /* Inline kernel#Int#> (var4,var5) on <var4:Int> */
63 /* Covariant cast for argument 0 (i) <var5:Int> isa OTHER */
64 /* <var5:Int> isa OTHER */
65 var8
= 1; /* easy <var5:Int> isa OTHER*/
66 if (unlikely(!var8
)) {
67 var_class_name
= type_kernel__Int
.name
;
68 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name
);
69 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 327);
81 var11
= array__Array___91d_93d(var_res
, var10
);
86 var13
= "Error: multiple annotation `";
88 var15
= string__NativeString__to_s_with_length(var13
, var14
);
95 var18
= "`. A previous one is defined line ";
97 var20
= string__NativeString__to_s_with_length(var18
, var19
);
103 var22
= array__Array___91d_93d(var_res
, var21
);
106 var23
= parser_nodes__ANode__location(var22
);
109 { /* Inline location#Location#line_start (var23) on <var23:Location> */
110 var26
= var23
->attrs
[COLOR_location__Location___line_start
].l
; /* _line_start on <var23:Location> */
115 var27
= NEW_array__Array(&type_array__Arraykernel__Object
);
116 { /* var27 = array_instance Array[Object] */
118 var29
= NEW_array__NativeArray(var28
, &type_array__NativeArraykernel__Object
);
119 ((struct instance_array__NativeArray
*)var29
)->values
[0] = (val
*) var12
;
120 ((struct instance_array__NativeArray
*)var29
)->values
[1] = (val
*) var_name
;
121 ((struct instance_array__NativeArray
*)var29
)->values
[2] = (val
*) var17
;
122 var30
= BOX_kernel__Int(var24
); /* autobox from Int to Object */
123 ((struct instance_array__NativeArray
*)var29
)->values
[3] = (val
*) var30
;
125 ((void (*)(val
*, val
*, long))(var27
->class->vft
[COLOR_array__Array__with_native
]))(var27
, var29
, var28
) /* with_native on <var27:Array[Object]>*/;
129 var31
= ((val
* (*)(val
*))(var27
->class->vft
[COLOR_string__Object__to_s
]))(var27
) /* to_s on <var27:Array[Object]>*/;
132 modelbuilder__ModelBuilder__error(var_modelbuilder
, var11
, var31
); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
137 var32
= abstract_collection__SequenceRead__first(var_res
);
144 /* method annotation#Prod#get_single_annotation for (self: Object, String, ModelBuilder): nullable AAnnotation */
145 val
* VIRTUAL_annotation__Prod__get_single_annotation(val
* self
, val
* p0
, val
* p1
) {
146 val
* var
/* : nullable AAnnotation */;
147 val
* var1
/* : nullable AAnnotation */;
148 var1
= annotation__Prod__get_single_annotation(self
, p0
, p1
);
153 /* method annotation#Prod#get_annotations for (self: Prod, String): Array[AAnnotation] */
154 val
* annotation__Prod__get_annotations(val
* self
, val
* p0
) {
155 val
* var
/* : Array[AAnnotation] */;
156 val
* var_name
/* var name: String */;
157 val
* var1
/* : Array[AAnnotation] */;
158 val
* var_res
/* var res: Array[AAnnotation] */;
159 val
* var2
/* : nullable AAnnotations */;
160 val
* var_nas
/* var nas: nullable AAnnotations */;
161 val
* var3
/* : null */;
162 short int var4
/* : Bool */;
163 short int var5
/* : Bool */;
164 val
* var_other
/* var other: nullable Object */;
165 short int var7
/* : Bool */;
166 short int var9
/* : Bool */;
167 val
* var10
/* : ANodes[AAnnotation] */;
168 val
* var12
/* : ANodes[AAnnotation] */;
169 val
* var13
/* : Iterator[ANode] */;
170 short int var14
/* : Bool */;
171 val
* var15
/* : nullable Object */;
172 val
* var_na
/* var na: AAnnotation */;
173 val
* var16
/* : String */;
174 short int var17
/* : Bool */;
175 short int var18
/* : Bool */;
176 val
* var_other20
/* var other: nullable Object */;
177 short int var21
/* : Bool */;
178 short int var22
/* : Bool */;
179 short int var23
/* : Bool */;
181 var1
= NEW_array__Array(&type_array__Arrayparser_nodes__AAnnotation
);
183 array__Array__init(var1
); /* Direct call array#Array#init on <var1:Array[AAnnotation]>*/
187 var2
= parser_nodes__Prod__n_annotations(self
);
191 if (var_nas
== NULL
) {
192 var4
= 1; /* is null */
194 var4
= 0; /* arg is null but recv is not */
197 { /* Inline kernel#Object#== (var_nas,var3) on <var_nas:nullable AAnnotations> */
200 { /* Inline kernel#Object#is_same_instance (var_nas,var_other) on <var_nas:nullable AAnnotations(AAnnotations)> */
201 var9
= var_nas
== var_other
;
219 { /* Inline parser_nodes#AAnnotations#n_items (var_nas) on <var_nas:nullable AAnnotations(AAnnotations)> */
220 var12
= var_nas
->attrs
[COLOR_parser_nodes__AAnnotations___n_items
].val
; /* _n_items on <var_nas:nullable AAnnotations(AAnnotations)> */
221 if (unlikely(var12
== NULL
)) {
222 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_items");
223 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 2403);
231 var13
= parser_nodes__ANodes__iterator(var10
);
235 var14
= ((short int (*)(val
*))(var13
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var13
) /* is_ok on <var13:Iterator[ANode]>*/;
239 var15
= ((val
* (*)(val
*))(var13
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var13
) /* item on <var13:Iterator[ANode]>*/;
243 var16
= annotation__AAnnotation__name(var_na
);
246 { /* Inline kernel#Object#!= (var16,var_name) on <var16:String> */
247 var_other20
= var_name
;
249 var22
= ((short int (*)(val
*, val
*))(var16
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var16
, var_other20
) /* == on <var16:String>*/;
264 array__Array__add(var_res
, var_na
); /* Direct call array#Array#add on <var_res:Array[AAnnotation]>*/
266 CONTINUE_label
: (void)0;
268 ((void (*)(val
*))(var13
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var13
) /* next on <var13:Iterator[ANode]>*/;
271 BREAK_label
: (void)0;
277 /* method annotation#Prod#get_annotations for (self: Object, String): Array[AAnnotation] */
278 val
* VIRTUAL_annotation__Prod__get_annotations(val
* self
, val
* p0
) {
279 val
* var
/* : Array[AAnnotation] */;
280 val
* var1
/* : Array[AAnnotation] */;
281 var1
= annotation__Prod__get_annotations(self
, p0
);
286 /* method annotation#AAnnotation#name for (self: AAnnotation): String */
287 val
* annotation__AAnnotation__name(val
* self
) {
288 val
* var
/* : String */;
289 val
* var1
/* : AAtid */;
290 val
* var2
/* : Token */;
291 val
* var3
/* : String */;
293 var1
= parser_nodes__AAnnotation__n_atid(self
);
296 var2
= parser_nodes__AAtid__n_id(var1
);
299 var3
= lexer_work__Token__text(var2
);
306 /* method annotation#AAnnotation#name for (self: Object): String */
307 val
* VIRTUAL_annotation__AAnnotation__name(val
* self
) {
308 val
* var
/* : String */;
309 val
* var1
/* : String */;
310 var1
= annotation__AAnnotation__name(self
);
315 /* method annotation#AAnnotation#arg_as_id for (self: AAnnotation, ModelBuilder): nullable String */
316 val
* annotation__AAnnotation__arg_as_id(val
* self
, val
* p0
) {
317 val
* var
/* : nullable String */;
318 val
* var_modelbuilder
/* var modelbuilder: ModelBuilder */;
319 val
* var1
/* : ANodes[AAtArg] */;
320 val
* var3
/* : ANodes[AAtArg] */;
321 val
* var_args
/* var args: ANodes[AAtArg] */;
322 long var4
/* : Int */;
323 long var5
/* : Int */;
324 short int var6
/* : Bool */;
325 short int var7
/* : Bool */;
326 short int var9
/* : Bool */;
327 val
* var10
/* : nullable Object */;
328 val
* var11
/* : nullable String */;
329 val
* var_arg
/* var arg: nullable String */;
330 val
* var12
/* : null */;
331 short int var13
/* : Bool */;
332 short int var14
/* : Bool */;
333 val
* var_other
/* var other: nullable Object */;
334 short int var16
/* : Bool */;
335 short int var17
/* : Bool */;
336 short int var18
/* : Bool */;
338 val
* var19
/* : String */;
339 char* var20
/* : NativeString */;
340 long var21
/* : Int */;
341 val
* var22
/* : FlatString */;
342 val
* var23
/* : String */;
343 static val
* varonce24
;
344 val
* var25
/* : String */;
345 char* var26
/* : NativeString */;
346 long var27
/* : Int */;
347 val
* var28
/* : FlatString */;
348 val
* var29
/* : Array[Object] */;
349 long var30
/* : Int */;
350 val
* var31
/* : NativeArray[Object] */;
351 val
* var32
/* : String */;
352 val
* var33
/* : null */;
353 var_modelbuilder
= p0
;
355 { /* Inline parser_nodes#AAnnotation#n_args (self) on <self:AAnnotation> */
356 var3
= self
->attrs
[COLOR_parser_nodes__AAnnotation___n_args
].val
; /* _n_args on <self:AAnnotation> */
357 if (unlikely(var3
== NULL
)) {
358 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
359 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 2426);
368 var4
= parser_nodes__ANodes__length(var_args
);
372 { /* Inline kernel#Int#== (var4,var5) on <var4:Int> */
382 var10
= abstract_collection__SequenceRead__first(var_args
);
385 var11
= annotation__AAtArg__as_id(var10
);
389 if (var_arg
== NULL
) {
390 var13
= 0; /* is null */
392 var13
= 1; /* arg is null and recv is not */
395 { /* Inline kernel#Object#!= (var_arg,var12) on <var_arg:nullable String> */
398 var17
= ((short int (*)(val
*, val
*))(var_arg
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_arg
, var_other
) /* == on <var_arg:nullable String(String)>*/;
418 var20
= "Annotation error: \"";
420 var22
= string__NativeString__to_s_with_length(var20
, var21
);
425 var23
= annotation__AAnnotation__name(self
);
430 var26
= "\" expects a single identifier as argument.";
432 var28
= string__NativeString__to_s_with_length(var26
, var27
);
436 var29
= NEW_array__Array(&type_array__Arraykernel__Object
);
437 { /* var29 = array_instance Array[Object] */
439 var31
= NEW_array__NativeArray(var30
, &type_array__NativeArraykernel__Object
);
440 ((struct instance_array__NativeArray
*)var31
)->values
[0] = (val
*) var19
;
441 ((struct instance_array__NativeArray
*)var31
)->values
[1] = (val
*) var23
;
442 ((struct instance_array__NativeArray
*)var31
)->values
[2] = (val
*) var25
;
444 ((void (*)(val
*, val
*, long))(var29
->class->vft
[COLOR_array__Array__with_native
]))(var29
, var31
, var30
) /* with_native on <var29:Array[Object]>*/;
448 var32
= ((val
* (*)(val
*))(var29
->class->vft
[COLOR_string__Object__to_s
]))(var29
) /* to_s on <var29:Array[Object]>*/;
451 modelbuilder__ModelBuilder__error(var_modelbuilder
, self
, var32
); /* Direct call modelbuilder#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
459 /* method annotation#AAnnotation#arg_as_id for (self: Object, ModelBuilder): nullable String */
460 val
* VIRTUAL_annotation__AAnnotation__arg_as_id(val
* self
, val
* p0
) {
461 val
* var
/* : nullable String */;
462 val
* var1
/* : nullable String */;
463 var1
= annotation__AAnnotation__arg_as_id(self
, p0
);
468 /* method annotation#AAtArg#as_string for (self: AAtArg): nullable String */
469 val
* annotation__AAtArg__as_string(val
* self
) {
470 val
* var
/* : nullable String */;
471 short int var1
/* : Bool */;
474 short int var2
/* : Bool */;
475 val
* var3
/* : null */;
476 val
* var4
/* : AExpr */;
477 val
* var_nexpr
/* var nexpr: AExpr */;
478 short int var5
/* : Bool */;
481 short int var8
/* : Bool */;
482 val
* var9
/* : null */;
483 val
* var10
/* : nullable String */;
484 val
* var12
/* : nullable String */;
485 /* <self:AAtArg> isa AExprAtArg */
486 cltype
= type_parser_nodes__AExprAtArg
.color
;
487 idtype
= type_parser_nodes__AExprAtArg
.id
;
488 if(cltype
>= self
->type
->table_size
) {
491 var1
= self
->type
->type_table
[cltype
] == idtype
;
501 var4
= parser_nodes__AExprAtArg__n_expr(self
);
504 /* <var_nexpr:AExpr> isa AStringFormExpr */
505 cltype6
= type_parser_nodes__AStringFormExpr
.color
;
506 idtype7
= type_parser_nodes__AStringFormExpr
.id
;
507 if(cltype6
>= var_nexpr
->type
->table_size
) {
510 var5
= var_nexpr
->type
->type_table
[cltype6
] == idtype7
;
520 { /* Inline literal#AStringFormExpr#value (var_nexpr) on <var_nexpr:AExpr(AStringFormExpr)> */
521 var12
= var_nexpr
->attrs
[COLOR_literal__AStringFormExpr___value
].val
; /* _value on <var_nexpr:AExpr(AStringFormExpr)> */
526 if (unlikely(var10
== NULL
)) {
527 PRINT_ERROR("Runtime error: %s", "Cast failed");
528 PRINT_ERROR(" (%s:%d)\n", "src/annotation.nit", 111);
536 /* method annotation#AAtArg#as_string for (self: Object): nullable String */
537 val
* VIRTUAL_annotation__AAtArg__as_string(val
* self
) {
538 val
* var
/* : nullable String */;
539 val
* var1
/* : nullable String */;
540 var1
= annotation__AAtArg__as_string(self
);
545 /* method annotation#AAtArg#as_id for (self: AAtArg): nullable String */
546 val
* annotation__AAtArg__as_id(val
* self
) {
547 val
* var
/* : nullable String */;
548 short int var1
/* : Bool */;
551 short int var2
/* : Bool */;
552 val
* var3
/* : null */;
553 val
* var4
/* : AExpr */;
554 val
* var_nexpr
/* var nexpr: AExpr */;
555 short int var5
/* : Bool */;
558 short int var8
/* : Bool */;
559 val
* var9
/* : null */;
560 val
* var10
/* : AExpr */;
561 short int var11
/* : Bool */;
564 short int var14
/* : Bool */;
565 val
* var15
/* : null */;
566 val
* var16
/* : AExprs */;
567 val
* var17
/* : ANodes[AExpr] */;
568 val
* var19
/* : ANodes[AExpr] */;
569 short int var20
/* : Bool */;
570 short int var21
/* : Bool */;
571 val
* var22
/* : null */;
572 val
* var23
/* : TId */;
573 val
* var24
/* : String */;
574 /* <self:AAtArg> isa AExprAtArg */
575 cltype
= type_parser_nodes__AExprAtArg
.color
;
576 idtype
= type_parser_nodes__AExprAtArg
.id
;
577 if(cltype
>= self
->type
->table_size
) {
580 var1
= self
->type
->type_table
[cltype
] == idtype
;
590 var4
= parser_nodes__AExprAtArg__n_expr(self
);
593 /* <var_nexpr:AExpr> isa ACallExpr */
594 cltype6
= type_parser_nodes__ACallExpr
.color
;
595 idtype7
= type_parser_nodes__ACallExpr
.id
;
596 if(cltype6
>= var_nexpr
->type
->table_size
) {
599 var5
= var_nexpr
->type
->type_table
[cltype6
] == idtype7
;
609 var10
= parser_nodes__ASendExpr__n_expr(var_nexpr
);
611 /* <var10:AExpr> isa AImplicitSelfExpr */
612 cltype12
= type_parser_nodes__AImplicitSelfExpr
.color
;
613 idtype13
= type_parser_nodes__AImplicitSelfExpr
.id
;
614 if(cltype12
>= var10
->type
->table_size
) {
617 var11
= var10
->type
->type_table
[cltype12
] == idtype13
;
627 var16
= parser_nodes__ACallFormExpr__n_args(var_nexpr
);
630 { /* Inline parser_nodes#AExprs#n_exprs (var16) on <var16:AExprs> */
631 var19
= var16
->attrs
[COLOR_parser_nodes__AExprs___n_exprs
].val
; /* _n_exprs on <var16:AExprs> */
632 if (unlikely(var19
== NULL
)) {
633 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_exprs");
634 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_nodes.nit", 2274);
642 var20
= parser_nodes__ANodes__is_empty(var17
);
652 var23
= parser_nodes__ACallFormExpr__n_id(var_nexpr
);
655 var24
= lexer_work__Token__text(var23
);
662 /* method annotation#AAtArg#as_id for (self: Object): nullable String */
663 val
* VIRTUAL_annotation__AAtArg__as_id(val
* self
) {
664 val
* var
/* : nullable String */;
665 val
* var1
/* : nullable String */;
666 var1
= annotation__AAtArg__as_id(self
);