Annotations
Annotation = @( "@" QualifiedIdent ) [ "(" AnnotationArgs ")" ] AnnotationArgs = {lexpr} { "," {lexpr} } [ "," ]
| TODO: document this |
Declaration
| TODO: document this |
Since annotations are just shapes, that are stored in the type data, you can instantiate them just like normal shapes. To disable this behaviour, you can use multiple approaches:
|
Builtin annotations
Some annotations are buildin into the compiler:
@annotationto declare a annotation@not_instantiableto make a annotation (or constructor of them) not instantiable from normal code vianew.@no_mangleto not apply any name mangeling to a function
| TODO: document this |
Placement
| TODO: document this |
AnnotatedTopLevelDecl = { Annotation } TopLevelDecl ;
AnnotatedStmnt = { Annotation } Statement ;
AnnotatedType = { Annotation } Type ;