diff options
author | Paul Phillips <paulp@improving.org> | 2012-05-08 16:02:48 -0700 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-05-08 16:31:11 -0700 |
commit | 58bb2d1bd2000ac3aa2c64b6c5dc56c91e911860 (patch) | |
tree | 2a319566df86ebd6f7b55bc5e46142fdedea5f0f /src/library | |
parent | 067c2569257f73afee4ae584f6a589980a8e4660 (diff) | |
download | scala-58bb2d1bd2000ac3aa2c64b6c5dc56c91e911860.tar.gz scala-58bb2d1bd2000ac3aa2c64b6c5dc56c91e911860.tar.bz2 scala-58bb2d1bd2000ac3aa2c64b6c5dc56c91e911860.zip |
Fix for ## inconsistency.
Hopefully without slowing things down overmuch. Closes SI-5640.
Diffstat (limited to 'src/library')
-rw-r--r-- | src/library/scala/runtime/ScalaRunTime.scala | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/library/scala/runtime/ScalaRunTime.scala b/src/library/scala/runtime/ScalaRunTime.scala index 4c5e0e408b..a04fd23710 100644 --- a/src/library/scala/runtime/ScalaRunTime.scala +++ b/src/library/scala/runtime/ScalaRunTime.scala @@ -234,10 +234,13 @@ object ScalaRunTime { // Note that these are the implementations called by ##, so they // must not call ## themselves. - @inline def hash(x: Any): Int = - if (x == null) 0 - else if (x.isInstanceOf[java.lang.Number]) BoxesRunTime.hashFromNumber(x.asInstanceOf[java.lang.Number]) - else x.hashCode + @inline def hash(x: Any): Int = x match { + case null => 0 + case x: Double => hash(x) + case x: Float => hash(x) + case x: java.lang.Number => hash(x) + case _ => x.hashCode + } @inline def hash(dv: Double): Int = { val iv = dv.toInt |