diff options
author | Paul Phillips <paulp@improving.org> | 2012-05-10 07:47:52 -0700 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-05-10 07:47:52 -0700 |
commit | 391524d99c5caaced0e1aacbb867ff15fca7e756 (patch) | |
tree | 21f594af7aa10518664d3d8025c9166992eaa8b4 | |
parent | 1fdc6cc6addf5f4277a14bdde4f5c82bb669c1ed (diff) | |
parent | ebfc16f6709f928a8ba1aa9d40f6bfddec69848b (diff) | |
download | scala-391524d99c5caaced0e1aacbb867ff15fca7e756.tar.gz scala-391524d99c5caaced0e1aacbb867ff15fca7e756.tar.bz2 scala-391524d99c5caaced0e1aacbb867ff15fca7e756.zip |
Merge commit 'refs/pull/521/head' into develop
-rw-r--r-- | src/library/scala/runtime/BoxesRunTime.java | 5 | ||||
-rw-r--r-- | test/files/run/hashhash.scala | 13 |
2 files changed, 17 insertions, 1 deletions
diff --git a/src/library/scala/runtime/BoxesRunTime.java b/src/library/scala/runtime/BoxesRunTime.java index 258a176671..8fe9a017d0 100644 --- a/src/library/scala/runtime/BoxesRunTime.java +++ b/src/library/scala/runtime/BoxesRunTime.java @@ -228,7 +228,7 @@ public final class BoxesRunTime * as yet have not. * * Note: Among primitives, Float.NaN != Float.NaN, but the boxed - * verisons are equal. This still needs reconciliation. + * versions are equal. This still needs reconciliation. */ public static int hashFromLong(java.lang.Long n) { int iv = n.intValue(); @@ -242,6 +242,9 @@ public final class BoxesRunTime long lv = n.longValue(); if (lv == dv) return java.lang.Long.valueOf(lv).hashCode(); + + float fv = n.floatValue(); + if (fv == dv) return java.lang.Float.valueOf(fv).hashCode(); else return n.hashCode(); } public static int hashFromFloat(java.lang.Float n) { diff --git a/test/files/run/hashhash.scala b/test/files/run/hashhash.scala index b9cec99a12..f9fc067398 100644 --- a/test/files/run/hashhash.scala +++ b/test/files/run/hashhash.scala @@ -6,5 +6,18 @@ object Test { /** Just a little sanity check, not to be confused with a unit test. */ List(5, 5.5f, "abc", new AnyRef, ()) foreach confirmSame List(5.0f, 1.0d, -(5.0f), (-1.0d)) foreach confirmDifferent + + val x = (BigInt(1) << 64).toDouble + val y: Any = x + val f: Float = x.toFloat + val jn: java.lang.Number = x + val jf: java.lang.Float = x.toFloat + val jd: java.lang.Double = x + + assert(x.## == y.##, ((x, y))) + assert(x.## == f.##, ((x, f))) + assert(x.## == jn.##, ((x, jn))) + assert(x.## == jf.##, ((x, jf))) + assert(x.## == jd.##, ((x, jd))) } } |