An annotation constrained to appear only on certain program elements, and only with certain values.
This interface should never be satisfied directly by any
annotation type. Instead, either OptionalAnnotation
or
SequencedAnnotation
should be satisfied by the
annotation type.
The type parameters encode information about the annotation type and its constraints:
Value
represents the type of the annotation itself,ProgramElement
represents a constraint on theClassDeclaration
or Module
, where
Annotated
means there is no constraint, andType
is a constraint on the metamodel type of the
annotated program element, for example,
Function<Float,[Float,Float]>
(ceylon.language.meta.model::Function
),
where Anything
means there is no constraint, and that
the program element need not have a metamodel type.Annotation
, OptionalAnnotation
, SequencedAnnotation
no type hierarchy