You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2016/08/06 00:08:09 UTC
[1/3] groovy git commit: GROOVY-6245: @EqualsAndHashCode assumes get
style getters for boolean properties (closes #379)
Repository: groovy
Updated Branches:
refs/heads/master d96e370f4 -> 457c82fa0
GROOVY-6245: @EqualsAndHashCode assumes get style getters for boolean properties (closes #379)
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/1fa296ac
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/1fa296ac
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/1fa296ac
Branch: refs/heads/master
Commit: 1fa296acbf581fdb70dcabfe337db359219169c7
Parents: d96e370
Author: paulk <pa...@asert.com.au>
Authored: Fri Aug 5 19:22:31 2016 +1000
Committer: paulk <pa...@asert.com.au>
Committed: Fri Aug 5 19:33:56 2016 +1000
----------------------------------------------------------------------
.../org/codehaus/groovy/ast/tools/GeneralUtils.java | 9 ++-------
.../transform/EqualsAndHashCodeTransformTest.groovy | 16 ++++++++++++++++
2 files changed, 18 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/1fa296ac/src/main/org/codehaus/groovy/ast/tools/GeneralUtils.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/ast/tools/GeneralUtils.java b/src/main/org/codehaus/groovy/ast/tools/GeneralUtils.java
index 2d59447..ba9bb0e 100644
--- a/src/main/org/codehaus/groovy/ast/tools/GeneralUtils.java
+++ b/src/main/org/codehaus/groovy/ast/tools/GeneralUtils.java
@@ -72,11 +72,6 @@ import java.util.Set;
/**
* Handy methods when working with the Groovy AST
- *
- * @author Guillaume Laforge
- * @author Paul King
- * @author Andre Steingress
- * @author Graeme Rocher
*/
public class GeneralUtils {
public static final Token ASSIGN = Token.newSymbol(Types.ASSIGN, -1, -1);
@@ -506,8 +501,8 @@ public class GeneralUtils {
}
public static BooleanExpression hasSamePropertyX(PropertyNode pNode, Expression other) {
- String getterName = getGetterName(pNode);
- return sameX(callThisX(getterName), callX(other, getterName));
+ ClassNode cNode = pNode.getDeclaringClass();
+ return sameX(getterThisX(cNode, pNode), getterX(cNode, other, pNode));
}
public static Statement ifElseS(Expression cond, Statement thenStmt, Statement elseStmt) {
http://git-wip-us.apache.org/repos/asf/groovy/blob/1fa296ac/src/test/org/codehaus/groovy/transform/EqualsAndHashCodeTransformTest.groovy
----------------------------------------------------------------------
diff --git a/src/test/org/codehaus/groovy/transform/EqualsAndHashCodeTransformTest.groovy b/src/test/org/codehaus/groovy/transform/EqualsAndHashCodeTransformTest.groovy
index 4f189b0..1e9e3c9 100644
--- a/src/test/org/codehaus/groovy/transform/EqualsAndHashCodeTransformTest.groovy
+++ b/src/test/org/codehaus/groovy/transform/EqualsAndHashCodeTransformTest.groovy
@@ -103,4 +103,20 @@ class EqualsAndHashCodeTransformTest extends GroovyShellTestCase {
'''
}
+ void testPrimitiveBooleanPropertiesWithIsGetter_GROOVY6245() {
+ assertScript '''
+ @groovy.transform.EqualsAndHashCode
+ class A {
+ boolean a
+ boolean isA() { a }
+ }
+
+ def a1 = new A(a: true)
+ def a2 = new A(a: true)
+ def a3 = new A(a: false)
+ assert a1 == a2
+ assert a1 != a3
+ '''
+ }
+
}
\ No newline at end of file
[3/3] groovy git commit: Merge branch 'groovy5752'
Posted by pa...@apache.org.
Merge branch 'groovy5752'
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/457c82fa
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/457c82fa
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/457c82fa
Branch: refs/heads/master
Commit: 457c82fa067834cc65fbce7b85fcf173ea5f80ac
Parents: 1fa296a 8ed7f55
Author: paulk <pa...@asert.com.au>
Authored: Sat Aug 6 10:07:44 2016 +1000
Committer: paulk <pa...@asert.com.au>
Committed: Sat Aug 6 10:07:44 2016 +1000
----------------------------------------------------------------------
.../transform/DelegateASTTransformation.java | 34 ++++++++++++++------
.../transform/DelegateTransformTest.groovy | 34 +++++++++++++++++---
2 files changed, 55 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
[2/3] groovy git commit: GROOVY-5752:
DelegateASTTransformation#addGetterIfNeeded doesn't take boolean isX
accessors into account (closes #380)
Posted by pa...@apache.org.
GROOVY-5752: DelegateASTTransformation#addGetterIfNeeded doesn't take boolean isX accessors into account (closes #380)
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/8ed7f551
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/8ed7f551
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/8ed7f551
Branch: refs/heads/master
Commit: 8ed7f551125cf1aa6b927898f0811a86fe783af2
Parents: d96e370
Author: paulk <pa...@asert.com.au>
Authored: Fri Aug 5 21:17:22 2016 +1000
Committer: paulk <pa...@asert.com.au>
Committed: Fri Aug 5 21:28:59 2016 +1000
----------------------------------------------------------------------
.../transform/DelegateASTTransformation.java | 34 ++++++++++++++------
.../transform/DelegateTransformTest.groovy | 34 +++++++++++++++++---
2 files changed, 55 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/8ed7f551/src/main/org/codehaus/groovy/transform/DelegateASTTransformation.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/transform/DelegateASTTransformation.java b/src/main/org/codehaus/groovy/transform/DelegateASTTransformation.java
index 03cbd57..949a260 100644
--- a/src/main/org/codehaus/groovy/transform/DelegateASTTransformation.java
+++ b/src/main/org/codehaus/groovy/transform/DelegateASTTransformation.java
@@ -200,15 +200,31 @@ public class DelegateASTTransformation extends AbstractASTTransformation {
}
private static void addGetterIfNeeded(DelegateDescription delegate, PropertyNode prop, String name, boolean allNames) {
- String getterName = "get" + Verifier.capitalize(name);
- if (delegate.owner.getGetterMethod(getterName) == null
- && !shouldSkipPropertyMethod(name, getterName, delegate.excludes, delegate.includes, allNames)) {
- delegate.owner.addMethod(getterName,
- ACC_PUBLIC,
- GenericsUtils.nonGeneric(prop.getType()),
- Parameter.EMPTY_ARRAY,
- null,
- returnS(propX(delegate.getOp, name)));
+ boolean isPrimBool = prop.getOriginType().equals(ClassHelper.boolean_TYPE);
+ // do a little bit of pre-work since Groovy compiler hasn't added property accessors yet
+ boolean willHaveGetAccessor = true;
+ boolean willHaveIsAccessor = isPrimBool;
+ String suffix = Verifier.capitalize(name);
+ if (isPrimBool) {
+ ClassNode cNode = prop.getDeclaringClass();
+ if (cNode.getGetterMethod("is" + suffix) != null && cNode.getGetterMethod("get" + suffix) == null)
+ willHaveGetAccessor = false;
+ if (cNode.getGetterMethod("get" + suffix) != null && cNode.getGetterMethod("is" + suffix) == null)
+ willHaveIsAccessor = false;
+ }
+ for (String prefix : new String[]{"get", "is"}) {
+ String getterName = prefix + suffix;
+ if (delegate.owner.getGetterMethod(getterName) == null
+ && !shouldSkipPropertyMethod(name, getterName, delegate.excludes, delegate.includes, allNames)) {
+ if (prefix.equals("get") && willHaveGetAccessor || prefix.equals("is") && willHaveIsAccessor) {
+ delegate.owner.addMethod(getterName,
+ ACC_PUBLIC,
+ GenericsUtils.nonGeneric(prop.getType()),
+ Parameter.EMPTY_ARRAY,
+ null,
+ returnS(propX(delegate.getOp, name)));
+ }
+ }
}
}
http://git-wip-us.apache.org/repos/asf/groovy/blob/8ed7f551/src/test/org/codehaus/groovy/transform/DelegateTransformTest.groovy
----------------------------------------------------------------------
diff --git a/src/test/org/codehaus/groovy/transform/DelegateTransformTest.groovy b/src/test/org/codehaus/groovy/transform/DelegateTransformTest.groovy
index 45218ed..646223a 100644
--- a/src/test/org/codehaus/groovy/transform/DelegateTransformTest.groovy
+++ b/src/test/org/codehaus/groovy/transform/DelegateTransformTest.groovy
@@ -21,10 +21,7 @@ package org.codehaus.groovy.transform
import gls.CompilableTestSupport
/**
- * @author Alex Tkachman
- * @author Guillaume Laforge
- * @author Paul King
- * @author Andre Steingress
+ * Tests for the @{code @Delegate} AST transform.
*/
class DelegateTransformTest extends CompilableTestSupport {
@@ -754,6 +751,35 @@ assert foo.dm.x == '123'
// then:
assert foo.foo() == delegate().foo()
}
+
+ // GROOVY-5752
+ void testDelegationShouldAccountForPrimitiveBooleanProperties() {
+ assertScript """
+ class A {
+ boolean a
+ boolean b
+ boolean isB() { b }
+ boolean c
+ boolean getC() { c }
+ }
+
+ class B {
+ @Delegate A a = new A(a: true, b: true, c: true)
+ }
+
+ def a = new A(a: true, b: true, c: true)
+ assert a.getA()
+ assert a.isA()
+ assert a.isB()
+ assert a.getC()
+
+ def b = new B()
+ assert b.getA()
+ assert b.isA()
+ assert b.isB()
+ assert b.getC()
+ """
+ }
}
interface DelegateFoo {