From 8869e9759478403d362f919fde6b79075e7950d6 Mon Sep 17 00:00:00 2001 From: Reinier Zwitserloot Date: Sun, 18 Jul 2010 00:24:56 +0200 Subject: All field accesses done by generated lombok methods are now qualified with 'this.' Addresses issue #48 --- .../eclipse/handlers/HandleEqualsAndHashCode.java | 23 +++++++--------------- src/core/lombok/eclipse/handlers/HandleGetter.java | 13 +++++++----- .../lombok/eclipse/handlers/HandleToString.java | 10 ++++++---- 3 files changed, 21 insertions(+), 25 deletions(-) (limited to 'src/core/lombok/eclipse') diff --git a/src/core/lombok/eclipse/handlers/HandleEqualsAndHashCode.java b/src/core/lombok/eclipse/handlers/HandleEqualsAndHashCode.java index 2c636916..ef0bc9be 100644 --- a/src/core/lombok/eclipse/handlers/HandleEqualsAndHashCode.java +++ b/src/core/lombok/eclipse/handlers/HandleEqualsAndHashCode.java @@ -561,15 +561,14 @@ public class HandleEqualsAndHashCode implements EclipseAnnotationHandler { method.thrownExceptions = null; method.typeParameters = null; method.bits |= ECLIPSE_DO_NOT_TOUCH_FLAG; - Expression fieldExpression = new SingleNameReference(field.name, ((long)field.declarationSourceStart << 32) | field.declarationSourceEnd); - Eclipse.setGeneratedBy(fieldExpression, source); - Statement returnStatement = new ReturnStatement(fieldExpression, field.sourceStart, field.sourceEnd); + long p = ((long)field.declarationSourceStart << 32) | field.declarationSourceEnd; + FieldReference thisX = new FieldReference(field.name, p); + Eclipse.setGeneratedBy(thisX, source); + thisX.receiver = new ThisReference(source.sourceStart, source.sourceEnd); + Eclipse.setGeneratedBy(thisX.receiver, source); + Statement returnStatement = new ReturnStatement(thisX, field.sourceStart, field.sourceEnd); Eclipse.setGeneratedBy(returnStatement, source); method.bodyStart = method.declarationSourceStart = method.sourceStart = source.sourceStart; method.bodyEnd = method.declarationSourceEnd = method.sourceEnd = source.sourceEnd; diff --git a/src/core/lombok/eclipse/handlers/HandleToString.java b/src/core/lombok/eclipse/handlers/HandleToString.java index d5a4c398..5b87e32b 100644 --- a/src/core/lombok/eclipse/handlers/HandleToString.java +++ b/src/core/lombok/eclipse/handlers/HandleToString.java @@ -220,12 +220,17 @@ public class HandleToString implements EclipseAnnotationHandler { FieldDeclaration f = (FieldDeclaration)field.get(); if (f.name == null || f.type == null) continue; + FieldReference thisX = new FieldReference(f.name, p); + Eclipse.setGeneratedBy(thisX, source); + thisX.receiver = new ThisReference(source.sourceStart, source.sourceEnd); + Eclipse.setGeneratedBy(thisX.receiver, source); + Expression ex; if (f.type.dimensions() > 0) { MessageSend arrayToString = new MessageSend(); arrayToString.sourceStart = pS; arrayToString.sourceEnd = pE; arrayToString.receiver = generateQualifiedNameRef(source, TypeConstants.JAVA, TypeConstants.UTIL, "Arrays".toCharArray()); - arrayToString.arguments = new Expression[] { new SingleNameReference(f.name, p) }; + arrayToString.arguments = new Expression[] { thisX }; Eclipse.setGeneratedBy(arrayToString.arguments[0], source); if (f.type.dimensions() > 1 || !BUILT_IN_TYPES.contains(new String(f.type.getLastToken()))) { arrayToString.selector = "deepToString".toCharArray(); @@ -234,9 +239,6 @@ public class HandleToString implements EclipseAnnotationHandler { } ex = arrayToString; } else { - FieldReference thisX = new FieldReference(f.name, p); - thisX.receiver = new ThisReference(source.sourceStart, source.sourceEnd); - Eclipse.setGeneratedBy(thisX.receiver, source); ex = thisX; } Eclipse.setGeneratedBy(ex, source); -- cgit