From 8aae52a9923c041486484d30b9b35ee9b6f2a8ea Mon Sep 17 00:00:00 2001 From: Reinier Zwitserloot Date: Wed, 17 Jun 2009 20:54:54 +0200 Subject: A useful annotation that prints the AST of any annotated element via the XASTPrinters in each ASTVisitor interface. --- src/lombok/core/PrintAST.java | 10 ++++++++++ src/lombok/eclipse/handlers/HandlePrintAST.java | 17 +++++++++++++++++ src/lombok/javac/handlers/HandlePrintAST.java | 18 ++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 src/lombok/core/PrintAST.java create mode 100644 src/lombok/eclipse/handlers/HandlePrintAST.java create mode 100644 src/lombok/javac/handlers/HandlePrintAST.java (limited to 'src') diff --git a/src/lombok/core/PrintAST.java b/src/lombok/core/PrintAST.java new file mode 100644 index 00000000..3ad2bd68 --- /dev/null +++ b/src/lombok/core/PrintAST.java @@ -0,0 +1,10 @@ +package lombok.core; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target({ElementType.CONSTRUCTOR, ElementType.FIELD, ElementType.LOCAL_VARIABLE, ElementType.METHOD, ElementType.TYPE}) +@Retention(RetentionPolicy.SOURCE) +public @interface PrintAST {} diff --git a/src/lombok/eclipse/handlers/HandlePrintAST.java b/src/lombok/eclipse/handlers/HandlePrintAST.java new file mode 100644 index 00000000..2e379ce3 --- /dev/null +++ b/src/lombok/eclipse/handlers/HandlePrintAST.java @@ -0,0 +1,17 @@ +package lombok.eclipse.handlers; + +import org.eclipse.jdt.internal.compiler.ast.Annotation; +import org.mangosdk.spi.ProviderFor; + +import lombok.core.AnnotationValues; +import lombok.core.PrintAST; +import lombok.eclipse.EclipseASTVisitor; +import lombok.eclipse.EclipseAnnotationHandler; +import lombok.eclipse.EclipseAST.Node; + +@ProviderFor(EclipseAnnotationHandler.class) +public class HandlePrintAST implements EclipseAnnotationHandler { + @Override public void handle(AnnotationValues annotation, Annotation ast, Node annotationNode) { + annotationNode.up().traverse(new EclipseASTVisitor.EclipseASTPrinter()); + } +} diff --git a/src/lombok/javac/handlers/HandlePrintAST.java b/src/lombok/javac/handlers/HandlePrintAST.java new file mode 100644 index 00000000..23f4c6d6 --- /dev/null +++ b/src/lombok/javac/handlers/HandlePrintAST.java @@ -0,0 +1,18 @@ +package lombok.javac.handlers; + +import org.mangosdk.spi.ProviderFor; + +import com.sun.tools.javac.tree.JCTree.JCAnnotation; + +import lombok.core.AnnotationValues; +import lombok.core.PrintAST; +import lombok.javac.JavacASTVisitor; +import lombok.javac.JavacAnnotationHandler; +import lombok.javac.JavacAST.Node; + +@ProviderFor(JavacAnnotationHandler.class) +public class HandlePrintAST implements JavacAnnotationHandler { + @Override public void handle(AnnotationValues annotation, JCAnnotation ast, Node annotationNode) { + annotationNode.up().traverse(new JavacASTVisitor.JavacASTPrinter()); + } +} -- cgit