Interface AnnotationProvider

    • Method Summary

      All Methods Instance Methods Abstract 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 or an alias of it, 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.
    • Method Detail

      • getDeclAnnotation

        @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 or an alias of it, used to annotate the element. Returns null if no annotation equivalent to anno exists on elt.
        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

        @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.
        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

        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.

        Parameters:
        methodElement - a method
        Returns:
        true if a call to the method does not undo flow-sensitive type refinement