diff options
author | Martin Odersky <odersky@gmail.com> | 2006-03-31 10:36:49 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2006-03-31 10:36:49 +0000 |
commit | 3049afc7ec7ca038dd8d68d26803c0733df01ee1 (patch) | |
tree | 0a41f798b75b4aef55ab00e645cc77b6cdb0be69 /test/pending/neg/bug412.scala | |
parent | 7ff239d7a998fb0ef7443e6c2020b6dcb64dabdd (diff) | |
download | scala-3049afc7ec7ca038dd8d68d26803c0733df01ee1.tar.gz scala-3049afc7ec7ca038dd8d68d26803c0733df01ee1.tar.bz2 scala-3049afc7ec7ca038dd8d68d26803c0733df01ee1.zip |
fixed several old bugs
Diffstat (limited to 'test/pending/neg/bug412.scala')
-rw-r--r-- | test/pending/neg/bug412.scala | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/test/pending/neg/bug412.scala b/test/pending/neg/bug412.scala new file mode 100644 index 0000000000..66de4761fb --- /dev/null +++ b/test/pending/neg/bug412.scala @@ -0,0 +1,31 @@ +object Magic { + + abstract class A[T1,T2]() { + trait C { type T; } + trait C1 extends C { type T = T1; } + trait C2 extends C { type T <: T2; } + + type CX; + val c: CX with C2 = null; + + def castA(x: c.T): T2 = x; + } + + class B[T1,T2] extends A[T1,T2]() { + type CX = C1; + + def castB(x: T1): T2 = castA(x); + } + + def cast[T1,T2](v: T1): T2 = + new B[T1,T2]().castB(v) + +} + +object Test { + + def main(args: Array[String]): Unit = { + Magic.cast[String,Exception]("xyz").printStackTrace(); + } + +} |