Class BasicAnnotationProvider

  • All Implemented Interfaces:
    AnnotationProvider

    public class BasicAnnotationProvider
    extends java.lang.Object
    implements AnnotationProvider
    An AnnotationProvider that is independent of any type hierarchy.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      @Nullable javax.lang.model.element.AnnotationMirror getAnnotationMirror​(com.sun.source.tree.Tree tree, java.lang.Class<? extends java.lang.annotation.Annotation> target)
      Return the annotation on tree that is in the hierarchy that contains the qualifier target.
      @Nullable javax.lang.model.element.AnnotationMirror getDeclAnnotation​(javax.lang.model.element.Element elt, java.lang.Class<? extends java.lang.annotation.Annotation> anno)
      Returns the AnnotationMirror, of the given class, used to annotate the element.
      boolean isSideEffectFree​(javax.lang.model.element.ExecutableElement methodElement)
      Returns true if the given method is side-effect-free according to this AnnotationProvider — that is, if a call to the given method does not undo flow-sensitive type refinement.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • BasicAnnotationProvider

        public BasicAnnotationProvider()
    • Method Detail

      • getDeclAnnotation

        public @Nullable javax.lang.model.element.AnnotationMirror getDeclAnnotation​(javax.lang.model.element.Element elt,
                                                                                     java.lang.Class<? extends java.lang.annotation.Annotation> anno)
        Returns the AnnotationMirror, of the given class, used to annotate the element. Returns null if no such annotation exists.
        Specified by:
        getDeclAnnotation in interface AnnotationProvider
        Parameters:
        elt - the element
        anno - annotation class
        Returns:
        an annotation mirror of class anno on elt, or an equivalent one, or null if none exists on anno
      • getAnnotationMirror

        public @Nullable javax.lang.model.element.AnnotationMirror getAnnotationMirror​(com.sun.source.tree.Tree tree,
                                                                                       java.lang.Class<? extends java.lang.annotation.Annotation> target)
        Return the annotation on tree that is in the hierarchy that contains the qualifier target. Returns null if none exists.

        This implementation always returns null, because it has no access to any type hierarchy.

        Specified by:
        getAnnotationMirror in interface AnnotationProvider
        Parameters:
        tree - the tree of which the annotation is returned
        target - the class of the annotation
        Returns:
        the annotation on tree that has the class target, or null
      • isSideEffectFree

        public boolean isSideEffectFree​(javax.lang.model.element.ExecutableElement methodElement)
        Returns true if the given method is side-effect-free according to this AnnotationProvider — that is, if a call to the given method does not undo flow-sensitive type refinement.

        Note that this method takes account of this AnnotationProvider's semantics, whereas org.checkerframework.dataflow.util.PurityUtils#isSideEffectFree does not.

        This implementation returns true if the @SideEffectFree annotation is present on the given method.

        Specified by:
        isSideEffectFree in interface AnnotationProvider
        Parameters:
        methodElement - a method
        Returns:
        true if a call to the method does not undo flow-sensitive type refinement