diff options
author | Reinier Zwitserloot <reinier@zwitserloot.com> | 2010-07-18 00:24:56 +0200 |
---|---|---|
committer | Reinier Zwitserloot <reinier@zwitserloot.com> | 2010-07-18 00:34:22 +0200 |
commit | 8869e9759478403d362f919fde6b79075e7950d6 (patch) | |
tree | acb6d06a9f46f5a0dc054137ba63f13240fb2727 /src/core/lombok/javac | |
parent | 51b031c732a86cb28b35c9b6c9b31916d3846c88 (diff) | |
download | lombok-8869e9759478403d362f919fde6b79075e7950d6.tar.gz lombok-8869e9759478403d362f919fde6b79075e7950d6.tar.bz2 lombok-8869e9759478403d362f919fde6b79075e7950d6.zip |
All field accesses done by generated lombok methods are now qualified with 'this.'
Addresses issue #48
Diffstat (limited to 'src/core/lombok/javac')
-rw-r--r-- | src/core/lombok/javac/handlers/HandleGetter.java | 4 | ||||
-rw-r--r-- | src/core/lombok/javac/handlers/HandleSynchronized.java | 7 | ||||
-rw-r--r-- | src/core/lombok/javac/handlers/HandleToString.java | 7 |
3 files changed, 14 insertions, 4 deletions
diff --git a/src/core/lombok/javac/handlers/HandleGetter.java b/src/core/lombok/javac/handlers/HandleGetter.java index 5af05c7c..16185e9c 100644 --- a/src/core/lombok/javac/handlers/HandleGetter.java +++ b/src/core/lombok/javac/handlers/HandleGetter.java @@ -39,6 +39,7 @@ import com.sun.tools.javac.tree.JCTree.JCAnnotation; import com.sun.tools.javac.tree.JCTree.JCBlock; import com.sun.tools.javac.tree.JCTree.JCClassDecl; import com.sun.tools.javac.tree.JCTree.JCExpression; +import com.sun.tools.javac.tree.JCTree.JCFieldAccess; import com.sun.tools.javac.tree.JCTree.JCMethodDecl; import com.sun.tools.javac.tree.JCTree.JCStatement; import com.sun.tools.javac.tree.JCTree.JCTypeParameter; @@ -159,7 +160,8 @@ public class HandleGetter implements JavacAnnotationHandler<Getter> { private JCMethodDecl createGetter(long access, JavacNode field, TreeMaker treeMaker) { JCVariableDecl fieldNode = (JCVariableDecl) field.get(); - JCStatement returnStatement = treeMaker.Return(treeMaker.Ident(fieldNode.getName())); + JCFieldAccess thisX = treeMaker.Select(treeMaker.Ident(field.toName("this")), fieldNode.name); + JCStatement returnStatement = treeMaker.Return(thisX); JCBlock methodBody = treeMaker.Block(0, List.of(returnStatement)); Name methodName = field.toName(toGetterName(fieldNode)); diff --git a/src/core/lombok/javac/handlers/HandleSynchronized.java b/src/core/lombok/javac/handlers/HandleSynchronized.java index 3602e74b..2f900eb8 100644 --- a/src/core/lombok/javac/handlers/HandleSynchronized.java +++ b/src/core/lombok/javac/handlers/HandleSynchronized.java @@ -94,7 +94,12 @@ public class HandleSynchronized implements JavacAnnotationHandler<Synchronized> if (method.body == null) return false; - JCExpression lockNode = maker.Ident(methodNode.toName(lockName)); + JCExpression lockNode; + if (isStatic) { + lockNode = chainDots(maker, methodNode, methodNode.up().getName(), lockName); + } else { + lockNode = maker.Select(maker.Ident(methodNode.toName("this")), methodNode.toName(lockName)); + } method.body = maker.Block(0, List.<JCStatement>of(maker.Synchronized(lockNode, method.body))); diff --git a/src/core/lombok/javac/handlers/HandleToString.java b/src/core/lombok/javac/handlers/HandleToString.java index dd3df620..cdba7558 100644 --- a/src/core/lombok/javac/handlers/HandleToString.java +++ b/src/core/lombok/javac/handlers/HandleToString.java @@ -40,6 +40,7 @@ import com.sun.tools.javac.tree.JCTree.JCArrayTypeTree; import com.sun.tools.javac.tree.JCTree.JCBlock; import com.sun.tools.javac.tree.JCTree.JCClassDecl; import com.sun.tools.javac.tree.JCTree.JCExpression; +import com.sun.tools.javac.tree.JCTree.JCFieldAccess; import com.sun.tools.javac.tree.JCTree.JCMethodDecl; import com.sun.tools.javac.tree.JCTree.JCMethodInvocation; import com.sun.tools.javac.tree.JCTree.JCModifiers; @@ -202,14 +203,16 @@ public class HandleToString implements JavacAnnotationHandler<ToString> { JCVariableDecl field = (JCVariableDecl) fieldNode.get(); JCExpression expr; + JCFieldAccess thisX = maker.Select(maker.Ident(fieldNode.toName("this")), field.name); + if (field.vartype instanceof JCArrayTypeTree) { boolean multiDim = ((JCArrayTypeTree)field.vartype).elemtype instanceof JCArrayTypeTree; boolean primitiveArray = ((JCArrayTypeTree)field.vartype).elemtype instanceof JCPrimitiveTypeTree; boolean useDeepTS = multiDim || !primitiveArray; JCExpression hcMethod = chainDots(maker, typeNode, "java", "util", "Arrays", useDeepTS ? "deepToString" : "toString"); - expr = maker.Apply(List.<JCExpression>nil(), hcMethod, List.<JCExpression>of(maker.Ident(field.name))); - } else expr = maker.Ident(field.name); + expr = maker.Apply(List.<JCExpression>nil(), hcMethod, List.<JCExpression>of(thisX)); + } else expr = thisX; if (first) { current = maker.Binary(JCTree.PLUS, current, expr); |