public class QualifierPolymorphism
extends java.lang.Object
annotate(MethodInvocationTree, AnnotatedTypeMirror.AnnotatedExecutableType)
to the
AnnotatedTypeFactory.annotateImplicit(Tree, AnnotatedTypeMirror)
and
AnnotatedTypeFactory.annotateImplicit(Tree, AnnotatedTypeMirror)
methods.
This implementation currently only supports polymorphism for method invocations, for which the return type depends on the unification of the parameter/receiver types.
PolymorphicQualifier
Modifier and Type | Field and Description |
---|---|
protected java.util.Map<javax.lang.model.element.AnnotationMirror,javax.lang.model.element.AnnotationMirror> |
polyQuals
The polymorphic qualifiers: mapping from the top of a qualifier
hierarchy to the polymorphic qualifier of that hierarchy.
|
protected QualifierHierarchy |
qualhierarchy
The qualifier hierarchy to use.
|
protected java.util.Set<? extends javax.lang.model.element.AnnotationMirror> |
topQuals
The qualifiers at the top of the qualifier hierarchy.
|
Constructor and Description |
---|
QualifierPolymorphism(javax.annotation.processing.ProcessingEnvironment env,
AnnotatedTypeFactory factory)
Creates a
QualifierPolymorphism instance that uses the given
checker for querying type qualifiers and the given factory for getting
annotated types. |
Modifier and Type | Method and Description |
---|---|
void |
annotate(com.sun.source.tree.MethodInvocationTree tree,
AnnotatedTypeMirror.AnnotatedExecutableType type)
Resolves polymorphism annotations for the given type.
|
void |
annotate(com.sun.source.tree.NewClassTree tree,
AnnotatedTypeMirror.AnnotatedExecutableType type) |
static javax.lang.model.element.AnnotationMirror |
getPolymorphicQualifier(javax.lang.model.element.AnnotationMirror qual) |
static java.lang.Class<? extends java.lang.annotation.Annotation> |
getPolymorphicQualifierTop(javax.lang.model.util.Elements elements,
javax.lang.model.element.AnnotationMirror qual) |
static boolean |
isPolyAll(javax.lang.model.element.AnnotationMirror qual) |
static boolean |
isPolymorphicQualified(javax.lang.model.element.AnnotationMirror qual) |
protected final java.util.Map<javax.lang.model.element.AnnotationMirror,javax.lang.model.element.AnnotationMirror> polyQuals
protected final java.util.Set<? extends javax.lang.model.element.AnnotationMirror> topQuals
protected final QualifierHierarchy qualhierarchy
public QualifierPolymorphism(javax.annotation.processing.ProcessingEnvironment env, AnnotatedTypeFactory factory)
QualifierPolymorphism
instance that uses the given
checker for querying type qualifiers and the given factory for getting
annotated types.env
- the processing environmentfactory
- the factory for the current checkerpublic static javax.lang.model.element.AnnotationMirror getPolymorphicQualifier(javax.lang.model.element.AnnotationMirror qual)
public static boolean isPolymorphicQualified(javax.lang.model.element.AnnotationMirror qual)
public static boolean isPolyAll(javax.lang.model.element.AnnotationMirror qual)
public static java.lang.Class<? extends java.lang.annotation.Annotation> getPolymorphicQualifierTop(javax.lang.model.util.Elements elements, javax.lang.model.element.AnnotationMirror qual)
public void annotate(com.sun.source.tree.MethodInvocationTree tree, AnnotatedTypeMirror.AnnotatedExecutableType type)
tree
- the tree associated with the typetype
- the type to annotatepublic void annotate(com.sun.source.tree.NewClassTree tree, AnnotatedTypeMirror.AnnotatedExecutableType type)