diff options
author | Reinier Zwitserloot <reinier@tipit.to> | 2009-07-11 11:39:45 +0200 |
---|---|---|
committer | Reinier Zwitserloot <reinier@tipit.to> | 2009-07-11 11:39:45 +0200 |
commit | 12d44e59c57e4654a7c61f83baf606a39fbb8448 (patch) | |
tree | 03b8666b54830420020fa1697c9a52b22038b0d0 /src/lombok/eclipse/handlers/HandleData.java | |
parent | 98382c6640798846efcc11113116cb46fb820595 (diff) | |
download | lombok-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.java | 16 |
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); } } |