diff options
author | Martin Odersky <odersky@gmail.com> | 2012-09-19 16:19:56 +0200 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-09-20 09:41:34 -0700 |
commit | e171d6d969fe7ce0dd2fd7a7679d6edb08c7579c (patch) | |
tree | f54e7991ce2dcc601f65ed0191b4260d7e6b21ee /test/files/neg/valueclasses-pavlov.scala | |
parent | b94ae90110412e8af1e65230053c0e8aa26cd2d7 (diff) | |
download | scala-e171d6d969fe7ce0dd2fd7a7679d6edb08c7579c.tar.gz scala-e171d6d969fe7ce0dd2fd7a7679d6edb08c7579c.tar.bz2 scala-e171d6d969fe7ce0dd2fd7a7679d6edb08c7579c.zip |
Value classes: eliminated half-boxing
We now apply erasure of value classes everywhere. previously,
erasure was disabled in the value class itself. This led to
irregegularities and bugs. See test run/valueclasses-pavlov.scala
for something that led to a ClassCastException before.
Diffstat (limited to 'test/files/neg/valueclasses-pavlov.scala')
-rw-r--r-- | test/files/neg/valueclasses-pavlov.scala | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/test/files/neg/valueclasses-pavlov.scala b/test/files/neg/valueclasses-pavlov.scala new file mode 100644 index 0000000000..a5858b2cf0 --- /dev/null +++ b/test/files/neg/valueclasses-pavlov.scala @@ -0,0 +1,23 @@ +trait Foo[T <: AnyVal] extends Any { + def foo(x: String): String + def foo(x: T): String +} + +class Box1(val value: String) extends AnyVal with Foo[Box2] { + def foo(x: String) = "foo(String): ok" + def foo(x: Box2) = "foo(Box2): ok" +} + +class Box2(val value: String) extends AnyVal + + +object test2a { + + def main(args: Array[String]) { + val b1 = new Box1(null) + val b2 = new Box2(null) + val f: Foo[Box2] = b1 + println(f.foo("")) + println(f.foo(b2)) + } +} |