aboutsummaryrefslogtreecommitdiff
path: root/src/lombok/javac/JavacNode.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/lombok/javac/JavacNode.java')
-rw-r--r--src/lombok/javac/JavacNode.java63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/lombok/javac/JavacNode.java b/src/lombok/javac/JavacNode.java
new file mode 100644
index 00000000..2e65e1d1
--- /dev/null
+++ b/src/lombok/javac/JavacNode.java
@@ -0,0 +1,63 @@
+package lombok.javac;
+
+import javax.annotation.processing.Messager;
+import javax.lang.model.element.AnnotationMirror;
+import javax.lang.model.element.AnnotationValue;
+import javax.lang.model.element.Element;
+import javax.lang.model.element.TypeElement;
+import javax.tools.Diagnostic;
+
+import com.sun.source.util.Trees;
+import com.sun.tools.javac.processing.JavacProcessingEnvironment;
+import com.sun.tools.javac.tree.TreeMaker;
+import com.sun.tools.javac.tree.JCTree.JCClassDecl;
+import com.sun.tools.javac.util.Name;
+
+public class JavacNode {
+ private final Element node;
+ private final Messager messager;
+ private final JavacProcessingEnvironment env;
+ private final Trees trees;
+
+ public JavacNode(Trees trees, JavacProcessingEnvironment env, Element node) {
+ this.trees = trees;
+ this.env = env;
+ this.node = node;
+ this.messager = env.getMessager();
+ }
+
+ public Element getJavacAST() {
+ return node;
+ }
+
+ public JCClassDecl getEnclosingType() {
+ Element parent = node;
+ while ( !(parent instanceof TypeElement) ) parent = node.getEnclosingElement();
+ TypeElement classElement = (TypeElement)parent;
+ return (JCClassDecl)trees.getTree(classElement);
+ }
+
+ public Name.Table createNameTable() {
+ return Name.Table.instance(env.getContext());
+ }
+
+ public TreeMaker createTreeMaker() {
+ return TreeMaker.instance(env.getContext());
+ }
+
+ public void addError(String message) {
+ this.messager.printMessage(Diagnostic.Kind.ERROR, message, node);
+ }
+
+ public void addError(String message, AnnotationMirror mirror, AnnotationValue value) {
+ this.messager.printMessage(Diagnostic.Kind.ERROR, message, node, mirror, value);
+ }
+
+ public void addWarning(String message) {
+ this.messager.printMessage(Diagnostic.Kind.WARNING, message, node);
+ }
+
+ public void addWarning(String message, AnnotationMirror mirror, AnnotationValue value) {
+ this.messager.printMessage(Diagnostic.Kind.WARNING, message, node, mirror, value);
+ }
+}