aboutsummaryrefslogtreecommitdiff
path: root/src/lombok/javac/apt
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/apt
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/apt')
-rw-r--r--src/lombok/javac/apt/Processor.java25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/lombok/javac/apt/Processor.java b/src/lombok/javac/apt/Processor.java
index 6027daa6..8558a0ba 100644
--- a/src/lombok/javac/apt/Processor.java
+++ b/src/lombok/javac/apt/Processor.java
@@ -66,32 +66,37 @@ public class Processor extends AbstractProcessor {
private class AnnotationVisitor extends JavacASTAdapter {
@Override public void visitAnnotationOnType(JCClassDecl type, Node annotationNode, JCAnnotation annotation) {
if ( annotationNode.isHandled() ) return;
- handlers.handleAnnotation((JCCompilationUnit) annotationNode.top().get(), annotationNode, annotation);
- annotationNode.setHandled();
+ JCCompilationUnit top = (JCCompilationUnit) annotationNode.top().get();
+ boolean handled = handlers.handleAnnotation(top, annotationNode, annotation);
+ if ( handled ) annotationNode.setHandled();
}
@Override public void visitAnnotationOnField(JCVariableDecl field, Node annotationNode, JCAnnotation annotation) {
if ( annotationNode.isHandled() ) return;
- handlers.handleAnnotation((JCCompilationUnit) annotationNode.top().get(), annotationNode, annotation);
- annotationNode.setHandled();
+ JCCompilationUnit top = (JCCompilationUnit) annotationNode.top().get();
+ boolean handled = handlers.handleAnnotation(top, annotationNode, annotation);
+ if ( handled ) annotationNode.setHandled();
}
@Override public void visitAnnotationOnMethod(JCMethodDecl method, Node annotationNode, JCAnnotation annotation) {
if ( annotationNode.isHandled() ) return;
- handlers.handleAnnotation((JCCompilationUnit) annotationNode.top().get(), annotationNode, annotation);
- annotationNode.setHandled();
+ JCCompilationUnit top = (JCCompilationUnit) annotationNode.top().get();
+ boolean handled = handlers.handleAnnotation(top, annotationNode, annotation);
+ if ( handled ) annotationNode.setHandled();
}
@Override public void visitAnnotationOnMethodArgument(JCVariableDecl argument, JCMethodDecl method, Node annotationNode, JCAnnotation annotation) {
if ( annotationNode.isHandled() ) return;
- handlers.handleAnnotation((JCCompilationUnit) annotationNode.top().get(), annotationNode, annotation);
- annotationNode.setHandled();
+ JCCompilationUnit top = (JCCompilationUnit) annotationNode.top().get();
+ boolean handled = handlers.handleAnnotation(top, annotationNode, annotation);
+ if ( handled ) annotationNode.setHandled();
}
@Override public void visitAnnotationOnLocal(JCVariableDecl local, Node annotationNode, JCAnnotation annotation) {
if ( annotationNode.isHandled() ) return;
- handlers.handleAnnotation((JCCompilationUnit) annotationNode.top().get(), annotationNode, annotation);
- annotationNode.setHandled();
+ JCCompilationUnit top = (JCCompilationUnit) annotationNode.top().get();
+ boolean handled = handlers.handleAnnotation(top, annotationNode, annotation);
+ if ( handled ) annotationNode.setHandled();
}
}