aboutsummaryrefslogtreecommitdiff
path: root/src/lombok/javac/handlers
diff options
context:
space:
mode:
authorReinier Zwitserloot <reinier@tipit.to>2009-06-17 21:57:54 +0200
committerReinier Zwitserloot <reinier@tipit.to>2009-06-17 21:57:54 +0200
commiteca3cd7ccc6e8c5736f5a70c3b1c095bd949689d (patch)
tree872695cfa92999e0ad1bd8843d08f9760aaebad6 /src/lombok/javac/handlers
parent8fa50054449d88380ce45ba91881df6655737f20 (diff)
downloadlombok-eca3cd7ccc6e8c5736f5a70c3b1c095bd949689d.tar.gz
lombok-eca3cd7ccc6e8c5736f5a70c3b1c095bd949689d.tar.bz2
lombok-eca3cd7ccc6e8c5736f5a70c3b1c095bd949689d.zip
AnnotationHandlers can now return a boolean to set if they actually handled the annotation or not (previously, the presumption was they always handled the annotation).
This is very useful for PrintAST on eclipse, because before this change, you'd never see method contents (as the initial dietParse would come first). Now Eclipse PrintASTHandler will skip any non-full runs, and only print non-diet. It then returns true only if it printed.
Diffstat (limited to 'src/lombok/javac/handlers')
-rw-r--r--src/lombok/javac/handlers/HandleGetter.java7
-rw-r--r--src/lombok/javac/handlers/HandlePrintAST.java3
-rw-r--r--src/lombok/javac/handlers/HandleSetter.java7
3 files changed, 10 insertions, 7 deletions
diff --git a/src/lombok/javac/handlers/HandleGetter.java b/src/lombok/javac/handlers/HandleGetter.java
index da1b7107..5cc2c108 100644
--- a/src/lombok/javac/handlers/HandleGetter.java
+++ b/src/lombok/javac/handlers/HandleGetter.java
@@ -24,10 +24,10 @@ import com.sun.tools.javac.util.Name;
@ProviderFor(JavacAnnotationHandler.class)
public class HandleGetter implements JavacAnnotationHandler<Getter> {
- @Override public void handle(AnnotationValues<Getter> annotation, JCAnnotation ast, JavacAST.Node annotationNode) {
+ @Override public boolean handle(AnnotationValues<Getter> annotation, JCAnnotation ast, JavacAST.Node annotationNode) {
if ( annotationNode.up().getKind() != Kind.FIELD ) {
annotationNode.addError("@Getter is only supported on a field.");
- return;
+ return false;
}
String methodName = toGetterName((JCVariableDecl) annotationNode.up().get());
@@ -35,7 +35,7 @@ public class HandleGetter implements JavacAnnotationHandler<Getter> {
if ( methodExists(methodName, annotationNode.up()) ) {
annotationNode.addWarning(
String.format("Not generating %s(): A method with that name already exists", methodName));
- return;
+ return false;
}
Getter getter = annotation.getInstance();
@@ -46,6 +46,7 @@ public class HandleGetter implements JavacAnnotationHandler<Getter> {
JCMethodDecl getterMethod = createGetter(access, annotationNode.up(), annotationNode.getTreeMaker());
javacClassTree.defs = javacClassTree.defs.append(getterMethod);
+ return true;
}
private JCMethodDecl createGetter(int access, JavacAST.Node field, TreeMaker treeMaker) {
diff --git a/src/lombok/javac/handlers/HandlePrintAST.java b/src/lombok/javac/handlers/HandlePrintAST.java
index 23f4c6d6..3a738b4f 100644
--- a/src/lombok/javac/handlers/HandlePrintAST.java
+++ b/src/lombok/javac/handlers/HandlePrintAST.java
@@ -12,7 +12,8 @@ import lombok.javac.JavacAST.Node;
@ProviderFor(JavacAnnotationHandler.class)
public class HandlePrintAST implements JavacAnnotationHandler<PrintAST> {
- @Override public void handle(AnnotationValues<PrintAST> annotation, JCAnnotation ast, Node annotationNode) {
+ @Override public boolean handle(AnnotationValues<PrintAST> annotation, JCAnnotation ast, Node annotationNode) {
annotationNode.up().traverse(new JavacASTVisitor.JavacASTPrinter());
+ return true;
}
}
diff --git a/src/lombok/javac/handlers/HandleSetter.java b/src/lombok/javac/handlers/HandleSetter.java
index 0fbfe8ae..da4e9ff0 100644
--- a/src/lombok/javac/handlers/HandleSetter.java
+++ b/src/lombok/javac/handlers/HandleSetter.java
@@ -26,10 +26,10 @@ import com.sun.tools.javac.util.Name;
@ProviderFor(JavacAnnotationHandler.class)
public class HandleSetter implements JavacAnnotationHandler<Setter> {
- @Override public void handle(AnnotationValues<Setter> annotation, JCAnnotation ast, Node annotationNode) {
+ @Override public boolean handle(AnnotationValues<Setter> annotation, JCAnnotation ast, Node annotationNode) {
if ( annotationNode.up().getKind() != Kind.FIELD ) {
annotationNode.addError("@Setter is only supported on a field.");
- return;
+ return false;
}
JCVariableDecl fieldNode = (JCVariableDecl) annotationNode.up().get();
@@ -39,7 +39,7 @@ public class HandleSetter implements JavacAnnotationHandler<Setter> {
annotationNode.addWarning(
String.format("Not generating %s(%s %s): A method with that name already exists",
methodName, fieldNode.vartype, fieldNode.name));
- return;
+ return false;
}
Setter setter = annotation.getInstance();
@@ -50,6 +50,7 @@ public class HandleSetter implements JavacAnnotationHandler<Setter> {
JCMethodDecl setterMethod = createSetter(access, annotationNode.up(), annotationNode.getTreeMaker());
javacClassTree.defs = javacClassTree.defs.append(setterMethod);
+ return true;
}
private JCMethodDecl createSetter(int access, JavacAST.Node field, TreeMaker treeMaker) {