aboutsummaryrefslogtreecommitdiff
path: root/src/lombok/javac/JavacASTVisitor.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/lombok/javac/JavacASTVisitor.java')
-rw-r--r--src/lombok/javac/JavacASTVisitor.java266
1 files changed, 0 insertions, 266 deletions
diff --git a/src/lombok/javac/JavacASTVisitor.java b/src/lombok/javac/JavacASTVisitor.java
deleted file mode 100644
index 3c5887a7..00000000
--- a/src/lombok/javac/JavacASTVisitor.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * Copyright © 2009 Reinier Zwitserloot and Roel Spilker.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-package lombok.javac;
-
-import java.io.PrintStream;
-
-import com.sun.tools.javac.code.Flags;
-import com.sun.tools.javac.tree.JCTree;
-import com.sun.tools.javac.tree.JCTree.JCAnnotation;
-import com.sun.tools.javac.tree.JCTree.JCBlock;
-import com.sun.tools.javac.tree.JCTree.JCClassDecl;
-import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
-import com.sun.tools.javac.tree.JCTree.JCMethodDecl;
-import com.sun.tools.javac.tree.JCTree.JCVariableDecl;
-
-/**
- * Implement so you can ask any JavacAST.LombokNode to traverse depth-first through all children,
- * calling the appropriate visit and endVisit methods.
- */
-public interface JavacASTVisitor {
- /**
- * Called at the very beginning and end.
- */
- void visitCompilationUnit(JavacNode top, JCCompilationUnit unit);
- void endVisitCompilationUnit(JavacNode top, JCCompilationUnit unit);
-
- /**
- * Called when visiting a type (a class, interface, annotation, enum, etcetera).
- */
- void visitType(JavacNode typeNode, JCClassDecl type);
- void visitAnnotationOnType(JCClassDecl type, JavacNode annotationNode, JCAnnotation annotation);
- void endVisitType(JavacNode typeNode, JCClassDecl type);
-
- /**
- * Called when visiting a field of a class.
- */
- void visitField(JavacNode fieldNode, JCVariableDecl field);
- void visitAnnotationOnField(JCVariableDecl field, JavacNode annotationNode, JCAnnotation annotation);
- void endVisitField(JavacNode fieldNode, JCVariableDecl field);
-
- /**
- * Called for static and instance initializers. You can tell the difference via the isStatic() method.
- */
- void visitInitializer(JavacNode initializerNode, JCBlock initializer);
- void endVisitInitializer(JavacNode initializerNode, JCBlock initializer);
-
- /**
- * Called for both methods and constructors.
- */
- void visitMethod(JavacNode methodNode, JCMethodDecl method);
- void visitAnnotationOnMethod(JCMethodDecl method, JavacNode annotationNode, JCAnnotation annotation);
- void endVisitMethod(JavacNode methodNode, JCMethodDecl method);
-
- /**
- * Visits a method argument.
- */
- void visitMethodArgument(JavacNode argumentNode, JCVariableDecl argument, JCMethodDecl method);
- void visitAnnotationOnMethodArgument(JCVariableDecl argument, JCMethodDecl method, JavacNode annotationNode, JCAnnotation annotation);
- void endVisitMethodArgument(JavacNode argumentNode, JCVariableDecl argument, JCMethodDecl method);
-
- /**
- * Visits a local declaration - that is, something like 'int x = 10;' on the method level. Also called
- * for method parameters.
- */
- void visitLocal(JavacNode localNode, JCVariableDecl local);
- void visitAnnotationOnLocal(JCVariableDecl local, JavacNode annotationNode, JCAnnotation annotation);
- void endVisitLocal(JavacNode localNode, JCVariableDecl local);
-
- /**
- * Visits a statement that isn't any of the other visit methods (e.g. JCClassDecl).
- * The statement object is guaranteed to be either a JCStatement or a JCExpression.
- */
- void visitStatement(JavacNode statementNode, JCTree statement);
- void endVisitStatement(JavacNode statementNode, JCTree statement);
-
- /**
- * Prints the structure of an AST.
- */
- public static class Printer implements JavacASTVisitor {
- private final PrintStream out;
- private final boolean printContent;
- private int disablePrinting = 0;
- private int indent = 0;
-
- /**
- * @param printContent if true, bodies are printed directly, as java code,
- * instead of a tree listing of every AST node inside it.
- */
- public Printer(boolean printContent) {
- this(printContent, System.out);
- }
-
- /**
- * @param printContent if true, bodies are printed directly, as java code,
- * instead of a tree listing of every AST node inside it.
- * @param out write output to this stream. You must close it yourself. flush() is called after every line.
- *
- * @see java.io.PrintStream#flush()
- */
- public Printer(boolean printContent, PrintStream out) {
- this.printContent = printContent;
- this.out = out;
- }
-
- private void forcePrint(String text, Object... params) {
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < indent; i++) sb.append(" ");
- out.printf(sb.append(text).append('\n').toString(), params);
- out.flush();
- }
-
- private void print(String text, Object... params) {
- if (disablePrinting == 0) forcePrint(text, params);
- }
-
- @Override public void visitCompilationUnit(JavacNode LombokNode, JCCompilationUnit unit) {
- out.println("---------------------------------------------------------");
-
- print("<CU %s>", LombokNode.getFileName());
- indent++;
- }
-
- @Override public void endVisitCompilationUnit(JavacNode node, JCCompilationUnit unit) {
- indent--;
- print("</CUD>");
- }
-
- @Override public void visitType(JavacNode node, JCClassDecl type) {
- print("<TYPE %s>", type.name);
- indent++;
- if (printContent) {
- print("%s", type);
- disablePrinting++;
- }
- }
-
- @Override public void visitAnnotationOnType(JCClassDecl type, JavacNode node, JCAnnotation annotation) {
- forcePrint("<ANNOTATION: %s />", annotation);
- }
-
- @Override public void endVisitType(JavacNode node, JCClassDecl type) {
- if (printContent) disablePrinting--;
- indent--;
- print("</TYPE %s>", type.name);
- }
-
- @Override public void visitInitializer(JavacNode node, JCBlock initializer) {
- print("<%s INITIALIZER>",
- initializer.isStatic() ? "static" : "instance");
- indent++;
- if (printContent) {
- print("%s", initializer);
- disablePrinting++;
- }
- }
-
- @Override public void endVisitInitializer(JavacNode node, JCBlock initializer) {
- if (printContent) disablePrinting--;
- indent--;
- print("</%s INITIALIZER>", initializer.isStatic() ? "static" : "instance");
- }
-
- @Override public void visitField(JavacNode node, JCVariableDecl field) {
- print("<FIELD %s %s>", field.vartype, field.name);
- indent++;
- if (printContent) {
- if (field.init != null) print("%s", field.init);
- disablePrinting++;
- }
- }
-
- @Override public void visitAnnotationOnField(JCVariableDecl field, JavacNode node, JCAnnotation annotation) {
- forcePrint("<ANNOTATION: %s />", annotation);
- }
-
- @Override public void endVisitField(JavacNode node, JCVariableDecl field) {
- if (printContent) disablePrinting--;
- indent--;
- print("</FIELD %s %s>", field.vartype, field.name);
- }
-
- @Override public void visitMethod(JavacNode node, JCMethodDecl method) {
- final String type;
- if (method.name.contentEquals("<init>")) {
- if ((method.mods.flags & Flags.GENERATEDCONSTR) != 0) {
- type = "DEFAULTCONSTRUCTOR";
- } else type = "CONSTRUCTOR";
- } else type = "METHOD";
- print("<%s %s> returns: %s", type, method.name, method.restype);
- indent++;
- if (printContent) {
- if (method.body == null) print("(ABSTRACT)");
- else print("%s", method.body);
- disablePrinting++;
- }
- }
-
- @Override public void visitAnnotationOnMethod(JCMethodDecl method, JavacNode node, JCAnnotation annotation) {
- forcePrint("<ANNOTATION: %s />", annotation);
- }
-
- @Override public void endVisitMethod(JavacNode node, JCMethodDecl method) {
- if (printContent) disablePrinting--;
- indent--;
- print("</%s %s>", "XMETHOD", method.name);
- }
-
- @Override public void visitMethodArgument(JavacNode node, JCVariableDecl arg, JCMethodDecl method) {
- print("<METHODARG %s %s>", arg.vartype, arg.name);
- indent++;
- }
-
- @Override public void visitAnnotationOnMethodArgument(JCVariableDecl arg, JCMethodDecl method, JavacNode nodeAnnotation, JCAnnotation annotation) {
- forcePrint("<ANNOTATION: %s />", annotation);
- }
-
- @Override public void endVisitMethodArgument(JavacNode node, JCVariableDecl arg, JCMethodDecl method) {
- indent--;
- print("</METHODARG %s %s>", arg.vartype, arg.name);
- }
-
- @Override public void visitLocal(JavacNode node, JCVariableDecl local) {
- print("<LOCAL %s %s>", local.vartype, local.name);
- indent++;
- }
-
- @Override public void visitAnnotationOnLocal(JCVariableDecl local, JavacNode node, JCAnnotation annotation) {
- print("<ANNOTATION: %s />", annotation);
- }
-
- @Override public void endVisitLocal(JavacNode node, JCVariableDecl local) {
- indent--;
- print("</LOCAL %s %s>", local.vartype, local.name);
- }
-
- @Override public void visitStatement(JavacNode node, JCTree statement) {
- print("<%s>", statement.getClass());
- indent++;
- print("%s", statement);
- }
-
- @Override public void endVisitStatement(JavacNode node, JCTree statement) {
- indent--;
- print("</%s>", statement.getClass());
- }
- }
-}