Class MethodApplier
java.lang.Object
org.checkerframework.framework.util.element.MethodApplier
Adds annotations from element to the return type, formal parameter types, type parameters, and
throws clauses of the AnnotatedExecutableType type.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final ElementAn Element that type represents.protected final AnnotatedTypeMirrorThe type to which we wish to apply annotations. -
Method Summary
Modifier and TypeMethodDescriptionstatic booleanaccepts(AnnotatedTypeMirror typeMirror, Element element) protected com.sun.tools.javac.code.TargetType[]Returns receiver, returns, and throws.static voidapply(AnnotatedTypeMirror type, Element element, AnnotatedTypeFactory typeFactory) Apply annotations fromelementtotype.voidSets the method's element, annotates its return type, parameters, type parameters, and throws annotations.protected Iterable<com.sun.tools.javac.code.Attribute.TypeCompound> Returns the annotations on the method symbol (element).protected voidhandleInvalid(List<com.sun.tools.javac.code.Attribute.TypeCompound> invalid) This implementation reports all invalid annotations as errors.protected voidhandleTargeted(List<com.sun.tools.javac.code.Attribute.TypeCompound> targeted) This method should apply all annotations that are handled by this object.protected voidhandleValid(List<com.sun.tools.javac.code.Attribute.TypeCompound> valid) The default implementation of this method does nothing.protected booleanTests element/type fields to ensure that this TargetedElementAnnotationApplier is valid for this element/type pair.protected Map<org.checkerframework.framework.util.element.TargetedElementAnnotationApplier.TargetClass, List<com.sun.tools.javac.code.Attribute.TypeCompound>> Separate the input annotations into a Map of TargetClass (TARGETED, VALID, INVALID) to the annotations that fall into each of those categories.protected com.sun.tools.javac.code.TargetType[]Returns all possible annotation positions for a method except those in annotatedTargets.
-
Field Details
-
type
The type to which we wish to apply annotations. -
element
An Element that type represents.
-
-
Method Details
-
apply
public static void apply(AnnotatedTypeMirror type, Element element, AnnotatedTypeFactory typeFactory) throws ElementAnnotationUtil.UnexpectedAnnotationLocationException Apply annotations fromelementtotype. -
accepts
-
annotatedTargets
protected com.sun.tools.javac.code.TargetType[] annotatedTargets()Returns receiver, returns, and throws. See extract and apply as we also annotate type params.- Returns:
- receiver, returns, and throws
-
validTargets
protected com.sun.tools.javac.code.TargetType[] validTargets()Returns all possible annotation positions for a method except those in annotatedTargets.- Returns:
- all possible annotation positions for a method except those in annotatedTargets
-
getRawTypeAttributes
Returns the annotations on the method symbol (element).- Returns:
- the annotations on the method symbol (element)
-
isAccepted
protected boolean isAccepted()Tests element/type fields to ensure that this TargetedElementAnnotationApplier is valid for this element/type pair.- Returns:
- true if the type/element members are handled by this class false otherwise
-
extractAndApply
Sets the method's element, annotates its return type, parameters, type parameters, and throws annotations. -
handleTargeted
protected void handleTargeted(List<com.sun.tools.javac.code.Attribute.TypeCompound> targeted) throws ElementAnnotationUtil.UnexpectedAnnotationLocationException This method should apply all annotations that are handled by this object.- Parameters:
targeted- the list of annotations that were returned by getRawTypeAttributes and had a TargetType contained by annotatedTargets- Throws:
ElementAnnotationUtil.UnexpectedAnnotationLocationException
-
handleValid
The default implementation of this method does nothing.- Parameters:
valid- the list of annotations that were returned by getRawTypeAttributes and had a TargetType contained by valid and NOT annotatedTargets
-
handleInvalid
This implementation reports all invalid annotations as errors.- Parameters:
invalid- the list of annotations that were returned by getRawTypeAttributes and were not handled by handleTargeted or handleValid
-
sift
protected Map<org.checkerframework.framework.util.element.TargetedElementAnnotationApplier.TargetClass,List<com.sun.tools.javac.code.Attribute.TypeCompound>> sift(Iterable<com.sun.tools.javac.code.Attribute.TypeCompound> typeCompounds) Separate the input annotations into a Map of TargetClass (TARGETED, VALID, INVALID) to the annotations that fall into each of those categories.- Parameters:
typeCompounds- annotations to sift through, should be those returned by getRawTypeAttributes- Returns:
- a Map<TargetClass => Annotations>.
-