diff options
author | Sébastien Doeraene <sjrdoeraene@gmail.com> | 2016-04-20 15:12:14 +0200 |
---|---|---|
committer | Sébastien Doeraene <sjrdoeraene@gmail.com> | 2016-04-21 15:23:11 +0200 |
commit | cce701650143d13c8b292bffd590bf7c8eb532d7 (patch) | |
tree | e40e190c59564db46238737c9017ee59d5d03bef /test/files | |
parent | 8a4653637a2b693cdcc730a93e17badaac14d56e (diff) | |
download | scala-cce701650143d13c8b292bffd590bf7c8eb532d7.tar.gz scala-cce701650143d13c8b292bffd590bf7c8eb532d7.tar.bz2 scala-cce701650143d13c8b292bffd590bf7c8eb532d7.zip |
Remove the duplicate implem of hash codes for numbers.
Previously, there were two separate implementations of hash
code for boxed number classes:
* One in Statics, used by the codegen of case class methods.
* One in ScalaRunTime + BoxesRunTime, used by everything else.
This commit removes the variant implemented in ScalaRunTime +
BoxesRunTime, and always uses Statics instead. We use Statics
because the one from ScalaRunTime causes an unnecessary module
load.
The entry point ScalaRunTime.hash() is kept, as deprecated,
for bootstrapping reasons.
Diffstat (limited to 'test/files')
-rw-r--r-- | test/files/run/equality.scala | 2 | ||||
-rw-r--r-- | test/files/run/hashCodeStatics.scala (renamed from test/files/run/hashCodeBoxesRunTime.scala) | 11 |
2 files changed, 6 insertions, 7 deletions
diff --git a/test/files/run/equality.scala b/test/files/run/equality.scala index ff59898821..2af73691d8 100644 --- a/test/files/run/equality.scala +++ b/test/files/run/equality.scala @@ -1,7 +1,7 @@ // a quickly assembled test of equality. Needs work. object Test { - import scala.runtime.ScalaRunTime.hash + def hash(x: Any): Int = x.## // forces upcast to Any def makeFromInt(x: Int) = List( x.toByte, x.toShort, x.toInt, x.toLong, x.toFloat, x.toDouble, BigInt(x), BigDecimal(x) diff --git a/test/files/run/hashCodeBoxesRunTime.scala b/test/files/run/hashCodeStatics.scala index 8ad94c252a..bff62cce18 100644 --- a/test/files/run/hashCodeBoxesRunTime.scala +++ b/test/files/run/hashCodeStatics.scala @@ -1,24 +1,23 @@ -// This only tests direct access to the methods in BoxesRunTime, +// This only tests direct access to the methods in Statics, // not the whole scheme. object Test { import java.{ lang => jl } - import scala.runtime.BoxesRunTime.hashFromNumber - import scala.runtime.ScalaRunTime.{ hash => hashFromAny } + import scala.runtime.Statics.anyHash def allSame[T](xs: List[T]) = assert(xs.distinct.size == 1, "failed: " + xs) def mkNumbers(x: Int): List[Number] = List(x.toByte, x.toShort, x, x.toLong, x.toFloat, x.toDouble) - def testLDF(x: Long) = allSame(List[Number](x, x.toDouble, x.toFloat) map hashFromNumber) + def testLDF(x: Long) = allSame(List[Number](x, x.toDouble, x.toFloat) map anyHash) def main(args: Array[String]): Unit = { List(Byte.MinValue, -1, 0, 1, Byte.MaxValue) foreach { n => - val hashes = mkNumbers(n) map hashFromNumber + val hashes = mkNumbers(n) map anyHash allSame(hashes) if (n >= 0) { - val charCode = hashFromAny(n.toChar: Character) + val charCode = anyHash(n.toChar: Character) assert(charCode == hashes.head) } } |