aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReinier Zwitserloot <reinier@tipit.to>2009-07-11 11:11:32 +0200
committerReinier Zwitserloot <reinier@tipit.to>2009-07-11 11:11:32 +0200
commitbc44e76b7d45da2301a1bb7d28d4e7e8fec4b94b (patch)
tree8e6eed1ddcb4234ec83d5a1561e47dae2054940a
parent21aa78996ad11ebd945273405d752622ffbd9df0 (diff)
downloadlombok-bc44e76b7d45da2301a1bb7d28d4e7e8fec4b94b.tar.gz
lombok-bc44e76b7d45da2301a1bb7d28d4e7e8fec4b94b.tar.bz2
lombok-bc44e76b7d45da2301a1bb7d28d4e7e8fec4b94b.zip
Made 'printContent=true' work for types as well as method bodies/initializers.
-rw-r--r--src/lombok/core/PrintAST.java7
-rw-r--r--src/lombok/eclipse/EclipseASTVisitor.java9
-rw-r--r--src/lombok/javac/JavacASTVisitor.java9
3 files changed, 18 insertions, 7 deletions
diff --git a/src/lombok/core/PrintAST.java b/src/lombok/core/PrintAST.java
index 943bf298..df1b652c 100644
--- a/src/lombok/core/PrintAST.java
+++ b/src/lombok/core/PrintAST.java
@@ -42,9 +42,10 @@ public @interface PrintAST {
String outfile() default "";
/**
- * Normally, the printer will print each node focusing on the node (E.g. classname, and such).
- * By setting printContent to true, methods, initializers, and other statement-containing elements
- * actually print their java code instead of a tree view of internal AST nodes.
+ * Sets whether to print node structure (false) or generated java code (true).
+ *
+ * By setting printContent to true, the annotated element's java code representation is printed. If false,
+ * its node structure (e.g. node classname) is printed, and this process is repeated for all children.
*/
boolean printContent() default false;
}
diff --git a/src/lombok/eclipse/EclipseASTVisitor.java b/src/lombok/eclipse/EclipseASTVisitor.java
index 84a27e48..6cc4130f 100644
--- a/src/lombok/eclipse/EclipseASTVisitor.java
+++ b/src/lombok/eclipse/EclipseASTVisitor.java
@@ -114,7 +114,7 @@ public interface EclipseASTVisitor {
private int indent = 0;
/**
- * @param printContent if true, method and initializer bodies are printed directly, as java code,
+ * @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) {
@@ -122,7 +122,7 @@ public interface EclipseASTVisitor {
}
/**
- * @param printContent if true, method and initializer bodies are printed directly, as java code,
+ * @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.
*
@@ -177,6 +177,10 @@ public interface EclipseASTVisitor {
public void visitType(Node node, TypeDeclaration type) {
print("<TYPE %s>", str(type.name));
indent++;
+ if ( printContent ) {
+ print("%s", type);
+ disablePrinting++;
+ }
}
public void visitAnnotationOnType(TypeDeclaration type, Node node, Annotation annotation) {
@@ -184,6 +188,7 @@ public interface EclipseASTVisitor {
}
public void endVisitType(Node node, TypeDeclaration type) {
+ if ( printContent ) disablePrinting--;
indent--;
print("</TYPE %s>", str(type.name));
}
diff --git a/src/lombok/javac/JavacASTVisitor.java b/src/lombok/javac/JavacASTVisitor.java
index 0d751c52..d0902006 100644
--- a/src/lombok/javac/JavacASTVisitor.java
+++ b/src/lombok/javac/JavacASTVisitor.java
@@ -104,7 +104,7 @@ public interface JavacASTVisitor {
private int indent = 0;
/**
- * @param printContent if true, method and initializer bodies are printed directly, as java code,
+ * @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) {
@@ -112,7 +112,7 @@ public interface JavacASTVisitor {
}
/**
- * @param printContent if true, method and initializer bodies are printed directly, as java code,
+ * @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.
*
@@ -149,6 +149,10 @@ public interface JavacASTVisitor {
@Override public void visitType(Node node, JCClassDecl type) {
print("<TYPE %s>", type.name);
indent++;
+ if ( printContent ) {
+ print("%s", type);
+ disablePrinting++;
+ }
}
@Override public void visitAnnotationOnType(JCClassDecl type, Node node, JCAnnotation annotation) {
@@ -156,6 +160,7 @@ public interface JavacASTVisitor {
}
@Override public void endVisitType(Node node, JCClassDecl type) {
+ if ( printContent ) disablePrinting--;
indent--;
print("</TYPE %s>", type.name);
}