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/run/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/run/valueclasses-pavlov.scala')
-rw-r--r-- | test/files/run/valueclasses-pavlov.scala | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/test/files/run/valueclasses-pavlov.scala b/test/files/run/valueclasses-pavlov.scala new file mode 100644 index 0000000000..e73897f653 --- /dev/null +++ b/test/files/run/valueclasses-pavlov.scala @@ -0,0 +1,26 @@ +trait Foo extends Any { + def box1(x: Box1): String + def box2(x: Box2): String +} + +class Box1(val value: String) extends AnyVal + +class Box2(val value: String) extends AnyVal with Foo { + def box1(x: Box1) = "box1: ok" + def box2(x: Box2) = "box2: ok" +} + +class C(x: String) { + def this() = this("") +} + +object Test { + + def main(args: Array[String]) { + val b1 = new Box1("") + val b2 = new Box2("") + val f: Foo = b2 + println(f.box1(b1)) + println(f.box2(b2)) + } +} |