object Test {
def confirmSame(x: Any) = assert(x.## == x.hashCode, "%s.## != %s.hashCode".format(x, x))
def confirmDifferent(x: Any) = assert(x.## != x.hashCode, "%s.## == %s.hashCode (but should not)".format(x, x))
def main(args: Array[String]): Unit = {
/** 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)))
}
}