aboutsummaryrefslogtreecommitdiff
path: root/src/lombok/eclipse/handlers/HandleData.java
diff options
context:
space:
mode:
authorReinier Zwitserloot <reinier@tipit.to>2009-07-11 11:39:45 +0200
committerReinier Zwitserloot <reinier@tipit.to>2009-07-11 11:39:45 +0200
commit12d44e59c57e4654a7c61f83baf606a39fbb8448 (patch)
tree03b8666b54830420020fa1697c9a52b22038b0d0 /src/lombok/eclipse/handlers/HandleData.java
parent98382c6640798846efcc11113116cb46fb820595 (diff)
downloadlombok-12d44e59c57e4654a7c61f83baf606a39fbb8448.tar.gz
lombok-12d44e59c57e4654a7c61f83baf606a39fbb8448.tar.bz2
lombok-12d44e59c57e4654a7c61f83baf606a39fbb8448.zip
'fixed' data up a bit by including only the final fields for the constructor.
Also fixed a bug in javac's toString() generation for the @Data constructor. It did not include the transient fields.
Diffstat (limited to 'src/lombok/eclipse/handlers/HandleData.java')
-rw-r--r--src/lombok/eclipse/handlers/HandleData.java16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/lombok/eclipse/handlers/HandleData.java b/src/lombok/eclipse/handlers/HandleData.java
index c7f053e6..066361d2 100644
--- a/src/lombok/eclipse/handlers/HandleData.java
+++ b/src/lombok/eclipse/handlers/HandleData.java
@@ -109,34 +109,36 @@ public class HandleData implements EclipseAnnotationHandler<Data> {
}
List<Node> nodesForEquality = new ArrayList<Node>();
- List<Node> nodesForConstructorAndToString = new ArrayList<Node>();
+ List<Node> nodesForConstructor = new ArrayList<Node>();
+ List<Node> nodesForToString = new ArrayList<Node>();
for ( Node child : typeNode.down() ) {
if ( child.getKind() != Kind.FIELD ) continue;
FieldDeclaration fieldDecl = (FieldDeclaration) child.get();
//Skip static fields.
if ( (fieldDecl.modifiers & ClassFileConstants.AccStatic) != 0 ) continue;
if ( (fieldDecl.modifiers & ClassFileConstants.AccTransient) == 0 ) nodesForEquality.add(child);
- nodesForConstructorAndToString.add(child);
+ boolean isFinal = (fieldDecl.modifiers & ClassFileConstants.AccFinal) != 0;
+ nodesForToString.add(child);
+ if ( isFinal ) nodesForConstructor.add(child);
new HandleGetter().generateGetterForField(child, annotationNode.get());
- if ( (fieldDecl.modifiers & ClassFileConstants.AccFinal) == 0 )
- new HandleSetter().generateSetterForField(child, annotationNode.get());
+ if ( !isFinal ) new HandleSetter().generateSetterForField(child, annotationNode.get());
}
if ( methodExists("toString", typeNode) == MemberExistsResult.NOT_EXISTS ) {
- MethodDeclaration toString = createToString(typeNode, nodesForConstructorAndToString, ast);
+ MethodDeclaration toString = createToString(typeNode, nodesForToString, ast);
injectMethod(typeNode, toString);
}
if ( constructorExists(typeNode) == MemberExistsResult.NOT_EXISTS ) {
ConstructorDeclaration constructor = createConstructor(
- ann.staticConstructor().length() == 0, typeNode, nodesForConstructorAndToString, ast);
+ ann.staticConstructor().length() == 0, typeNode, nodesForConstructor, ast);
injectMethod(typeNode, constructor);
}
if ( ann.staticConstructor().length() > 0 ) {
if ( methodExists("of", typeNode) == MemberExistsResult.NOT_EXISTS ) {
MethodDeclaration staticConstructor = createStaticConstructor(
- ann.staticConstructor(), typeNode, nodesForConstructorAndToString, ast);
+ ann.staticConstructor(), typeNode, nodesForConstructor, ast);
injectMethod(typeNode, staticConstructor);
}
}