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:
@annotation
to declare a annotation@not_instantiable
to make a annotation (or constructor of them) not instantiable from normal code vianew
.@no_mangle
to not apply any name mangeling to a function
TODO: document this |
Placement
TODO: document this |
AnnotatedTopLevelDecl = { Annotation } TopLevelDecl ; AnnotatedStmnt = { Annotation } Statement ; AnnotatedType = { Annotation } Type ;