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 2015/08/30 12:29:07 UTC
incubator-groovy git commit: GROOVY-7518: hashCode() throws NPE when
using @CompileStatic with @EqualsAndHashCode (closes #70)
Repository: incubator-groovy
Updated Branches:
refs/heads/master 6eb4466c2 -> bedd8b4f9
GROOVY-7518: hashCode() throws NPE when using @CompileStatic with @EqualsAndHashCode (closes #70)
Project: http://git-wip-us.apache.org/repos/asf/incubator-groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-groovy/commit/bedd8b4f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-groovy/tree/bedd8b4f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-groovy/diff/bedd8b4f
Branch: refs/heads/master
Commit: bedd8b4f9f94e01d146f9126788f2e87fded164a
Parents: 6eb4466
Author: paulk <pa...@asert.com.au>
Authored: Thu Jul 23 18:41:15 2015 +1000
Committer: paulk <pa...@asert.com.au>
Committed: Sun Aug 30 20:27:54 2015 +1000
----------------------------------------------------------------------
.../codehaus/groovy/util/HashCodeHelper.java | 20 ++++++++++++++++++++
.../CanonicalComponentsTransformTest.groovy | 18 ++++++++++++++++++
2 files changed, 38 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/bedd8b4f/src/main/org/codehaus/groovy/util/HashCodeHelper.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/util/HashCodeHelper.java b/src/main/org/codehaus/groovy/util/HashCodeHelper.java
index 2c92665..9e7afc9 100644
--- a/src/main/org/codehaus/groovy/util/HashCodeHelper.java
+++ b/src/main/org/codehaus/groovy/util/HashCodeHelper.java
@@ -41,22 +41,42 @@ public class HashCodeHelper {
return shift(current) + (int) var;
}
+ public static int updateHash(int current, Character var) {
+ return updateHash(current, var == null ? 0 : var.charValue());
+ }
+
public static int updateHash(int current, int var) {
return shift(current) + var;
}
+ public static int updateHash(int current, Integer var) {
+ return updateHash(current, var == null ? 0 : var.intValue());
+ }
+
public static int updateHash(int current, long var) {
return shift(current) + (int) (var ^ (var >>> 32));
}
+ public static int updateHash(int current, Long var) {
+ return updateHash(current, var == null ? 0L : var.longValue());
+ }
+
public static int updateHash(int current, float var) {
return updateHash(current, Float.floatToIntBits(var));
}
+ public static int updateHash(int current, Float var) {
+ return updateHash(current, var == null ? 0f : var.floatValue());
+ }
+
public static int updateHash(int current, double var) {
return updateHash(current, Double.doubleToLongBits(var));
}
+ public static int updateHash(int current, Double var) {
+ return updateHash(current, var == null ? 0d : var.doubleValue());
+ }
+
public static int updateHash(int current, Object var) {
if (var == null) return updateHash(current, 0);
if (var.getClass().isArray())
http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/bedd8b4f/src/test/org/codehaus/groovy/transform/CanonicalComponentsTransformTest.groovy
----------------------------------------------------------------------
diff --git a/src/test/org/codehaus/groovy/transform/CanonicalComponentsTransformTest.groovy b/src/test/org/codehaus/groovy/transform/CanonicalComponentsTransformTest.groovy
index 2e644d9..5794379 100644
--- a/src/test/org/codehaus/groovy/transform/CanonicalComponentsTransformTest.groovy
+++ b/src/test/org/codehaus/groovy/transform/CanonicalComponentsTransformTest.groovy
@@ -42,6 +42,24 @@ class CanonicalComponentsTransformTest extends GroovyShellTestCase {
"""
}
+ void testHashCodeNullWrapperTypeCompileStatic_GROOVY7518() {
+ assertScript """
+ import groovy.transform.*
+
+ @EqualsAndHashCode
+ @CompileStatic
+ class Person {
+ Character someCharacter
+ Integer someInteger
+ Long someLong
+ Float someFloat
+ Double someDouble
+ }
+
+ assert new Person().hashCode()
+ """
+ }
+
void testBooleanPropertyGROOVY6407() {
assertScript """
@groovy.transform.EqualsAndHashCode