aboutsummaryrefslogtreecommitdiffhomepage
path: root/third_party/checker_framework_javacutil/java/org/checkerframework/javacutil/AnnotationProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/checker_framework_javacutil/java/org/checkerframework/javacutil/AnnotationProvider.java')
-rw-r--r--third_party/checker_framework_javacutil/java/org/checkerframework/javacutil/AnnotationProvider.java38
1 files changed, 38 insertions, 0 deletions
diff --git a/third_party/checker_framework_javacutil/java/org/checkerframework/javacutil/AnnotationProvider.java b/third_party/checker_framework_javacutil/java/org/checkerframework/javacutil/AnnotationProvider.java
new file mode 100644
index 0000000000..580be40ef4
--- /dev/null
+++ b/third_party/checker_framework_javacutil/java/org/checkerframework/javacutil/AnnotationProvider.java
@@ -0,0 +1,38 @@
+package org.checkerframework.javacutil;
+
+import java.lang.annotation.Annotation;
+
+import javax.lang.model.element.AnnotationMirror;
+import javax.lang.model.element.Element;
+
+import com.sun.source.tree.Tree;
+
+/**
+ * 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);
+}