aboutsummaryrefslogtreecommitdiff
path: root/src/lombok/javac/handlers/HandleSetter.java
diff options
context:
space:
mode:
authorReinier Zwitserloot <reinier@tipit.to>2009-06-17 21:35:51 +0200
committerReinier Zwitserloot <reinier@tipit.to>2009-06-17 21:35:51 +0200
commit8fa50054449d88380ce45ba91881df6655737f20 (patch)
tree08117208cfa6d2ed870e76489c031ee6f74c5aea /src/lombok/javac/handlers/HandleSetter.java
parent1929a28c9def0dd276dcf3fdb70ada8b84b1c64a (diff)
downloadlombok-8fa50054449d88380ce45ba91881df6655737f20.tar.gz
lombok-8fa50054449d88380ce45ba91881df6655737f20.tar.bz2
lombok-8fa50054449d88380ce45ba91881df6655737f20.zip
Added 'does setX/getX already exist' check to javac's HandleGetter/Setter. If they exist (with any returntype/paramlist), no getter/setter is generated, and instead a warning is added on the annotation.
Diffstat (limited to 'src/lombok/javac/handlers/HandleSetter.java')
-rw-r--r--src/lombok/javac/handlers/HandleSetter.java19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/lombok/javac/handlers/HandleSetter.java b/src/lombok/javac/handlers/HandleSetter.java
index 30702701..0fbfe8ae 100644
--- a/src/lombok/javac/handlers/HandleSetter.java
+++ b/src/lombok/javac/handlers/HandleSetter.java
@@ -1,10 +1,6 @@
package lombok.javac.handlers;
-import static lombok.javac.handlers.PKG.toJavacModifier;
-import static lombok.javac.handlers.PKG.toSetterName;
-
-import org.mangosdk.spi.ProviderFor;
-
+import static lombok.javac.handlers.PKG.*;
import lombok.Setter;
import lombok.core.AnnotationValues;
import lombok.core.AST.Kind;
@@ -12,6 +8,8 @@ import lombok.javac.JavacAST;
import lombok.javac.JavacAnnotationHandler;
import lombok.javac.JavacAST.Node;
+import org.mangosdk.spi.ProviderFor;
+
import com.sun.tools.javac.tree.TreeMaker;
import com.sun.tools.javac.tree.JCTree.JCAnnotation;
import com.sun.tools.javac.tree.JCTree.JCAssign;
@@ -29,12 +27,21 @@ 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) {
- //TODO Check for existence of the setter and skip it (+ warn) if it's already there.
if ( annotationNode.up().getKind() != Kind.FIELD ) {
annotationNode.addError("@Setter is only supported on a field.");
return;
}
+ JCVariableDecl fieldNode = (JCVariableDecl) annotationNode.up().get();
+ String methodName = toSetterName(fieldNode);
+
+ if ( methodExists(methodName, annotationNode.up()) ) {
+ annotationNode.addWarning(
+ String.format("Not generating %s(%s %s): A method with that name already exists",
+ methodName, fieldNode.vartype, fieldNode.name));
+ return;
+ }
+
Setter setter = annotation.getInstance();
JCClassDecl javacClassTree = (JCClassDecl) annotationNode.up().up().get();