diff options
author | Antonio Cunei <antonio.cunei@epfl.ch> | 2009-11-12 22:51:49 +0000 |
---|---|---|
committer | Antonio Cunei <antonio.cunei@epfl.ch> | 2009-11-12 22:51:49 +0000 |
commit | 2970a618827e4d12d334296958bac2c0b6cc80f6 (patch) | |
tree | 7a96eb939fc2fb5cabd200128a0c890e828a6648 /test | |
parent | a02f860355f188a43a27a341d9c7edb6cecd3e13 (diff) | |
download | scala-2970a618827e4d12d334296958bac2c0b6cc80f6.tar.gz scala-2970a618827e4d12d334296958bac2c0b6cc80f6.tar.bz2 scala-2970a618827e4d12d334296958bac2c0b6cc80f6.zip |
Merged revisions 19598-19601,19604 via svnmerge...
Merged revisions 19598-19601,19604 via svnmerge from
https://lampsvn.epfl.ch/svn-repos/scala/scala/trunk
........
r19598 | moors | 2009-11-12 22:04:25 +0100 (Thu, 12 Nov 2009) | 1 line
documentation for fix of #2482
........
r19599 | moors | 2009-11-12 22:04:26 +0100 (Thu, 12 Nov 2009) | 1 line
Merge branch 'ticket/2594'
........
r19600 | extempore | 2009-11-12 22:39:12 +0100 (Thu, 12 Nov 2009) | 2 lines
Removed everything deprecated in 2.7.3 or earlier except the lower
case primitive type aliases, plus associated fixes. ........ r19601 |
extempore | 2009-11-12 22:39:26 +0100 (Thu, 12 Nov 2009) | 2 lines
Moved those bits of Predef into the scala package object which would
go without a fight. ........ r19604 | extempore | 2009-11-12 23:13:04
+0100 (Thu, 12 Nov 2009) | 4 lines
Bringing BigInt and BigDecimal into the club of things which can
be equal to one another and which will have the same hashCode. Fixed
some old and some new bugs associated with equality. Note: not fully
optimized. ........
Diffstat (limited to 'test')
-rw-r--r-- | test/files/run/equality.scala | 36 | ||||
-rw-r--r-- | test/files/run/t2594_tcpoly.check | 0 | ||||
-rw-r--r-- | test/files/run/t2594_tcpoly.scala | 18 |
3 files changed, 54 insertions, 0 deletions
diff --git a/test/files/run/equality.scala b/test/files/run/equality.scala new file mode 100644 index 0000000000..5b9ad207da --- /dev/null +++ b/test/files/run/equality.scala @@ -0,0 +1,36 @@ +// a quickly assembled test of equality. Needs work. +object Test +{ + def makeFromInt(x: Int) = List( + x.toByte, x.toShort, x.toInt, x.toLong, x.toFloat, x.toDouble, BigInt(x), BigDecimal(x) + ) ::: ( + if (x < 0) Nil else List(x.toChar) + ) + def makeFromDouble(x: Double) = List( + x.toShort, x.toInt, x.toLong, x.toFloat, x.toDouble, BigInt(x.toInt), BigDecimal(x) + ) + + def main(args: Array[String]): Unit = { + var xs = makeFromInt(5) + for (x <- xs ; y <- xs) { + assert(x == y, x + " == " + y) + assert(hash(x) == hash(y), "hash(%s) == hash(%s)".format(x, y)) + } + + xs = makeFromInt(-5) + for (x <- xs ; y <- xs) { + assert(x == y, x + " == " + y) + assert(hash(x) == hash(y), "hash(%s) == hash(%s)".format(x, y)) + } + + xs = makeFromDouble(500.0) + for (x <- xs ; y <- xs) { + assert(x == y, x + " == " + y) + assert(hash(x) == hash(y), "hash(%s) == hash(%s)".format(x, y)) + } + + // negatives + val bigLong = new java.util.concurrent.atomic.AtomicLong(Long.MaxValue) + assert(-1 != bigLong && bigLong != -1) // bigLong.intValue() == -1 + } +} diff --git a/test/files/run/t2594_tcpoly.check b/test/files/run/t2594_tcpoly.check new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/test/files/run/t2594_tcpoly.check diff --git a/test/files/run/t2594_tcpoly.scala b/test/files/run/t2594_tcpoly.scala new file mode 100644 index 0000000000..e759ca8b0f --- /dev/null +++ b/test/files/run/t2594_tcpoly.scala @@ -0,0 +1,18 @@ +trait Monad[M[_]] { + def foo[A](a: M[A]): M[A] +} + +class Bar[A, B] +class Bar1[A] { type And[B] = Bar[A, B] } + +object Test { + // the combination of partial applications and anonymous class is essential to reproduce the bug + // problem: missing bridge method + // --> abstractmethoderror `Main$$anon$1.foo(Ljava/lang/Object;)Ljava/lang/Object;` + // the anonymous class only gets `public Bar foo(Bar a)` + def BarMonad[X] = new Monad[Bar1[X]#And] { + def foo[A](a: Bar[X, A]) = a + } + + def main(as: Array[String]) { BarMonad[Int] foo (new Bar[Int, Int]) } +}
\ No newline at end of file |