aboutsummaryrefslogtreecommitdiffhomepage
path: root/third_party/checker_framework_javacutil/java/org/checkerframework/javacutil/AnnotationProvider.java
blob: 1245960eddd1b342302be00f73f10c28b8b41aad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package org.checkerframework.javacutil;

import com.sun.source.tree.Tree;
import java.lang.annotation.Annotation;
import javax.lang.model.element.AnnotationMirror;
import javax.lang.model.element.Element;

/** An implementation of AnnotationProvider returns annotations on Java AST elements. */
public interface AnnotationProvider {

    /**
     * Returns the actual annotation mirror used to annotate this type, whose name equals the passed
     * annotationName if one exists, null otherwise.
     *
     * @param anno annotation class
     * @return the annotation mirror for anno
     */
    public AnnotationMirror getDeclAnnotation(Element elt, Class<? extends Annotation> anno);

    /**
     * Return the annotation on {@code tree} that has the class {@code target}. If no annotation for
     * the given target class exists, the result is {@code null}
     *
     * @param tree the tree of which the annotation is returned
     * @param target the class of the annotation
     */
    public AnnotationMirror getAnnotationMirror(Tree tree, Class<? extends Annotation> target);
}