diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/neg/i1050.scala | 4 | ||||
-rw-r--r-- | tests/neg/i1050a.scala | 29 |
2 files changed, 31 insertions, 2 deletions
diff --git a/tests/neg/i1050.scala b/tests/neg/i1050.scala index bc906f4f4..99d81c317 100644 --- a/tests/neg/i1050.scala +++ b/tests/neg/i1050.scala @@ -39,7 +39,7 @@ object Tiark1 { trait A { type L <: Nothing } trait B { type L >: Any} trait U { - val p: B + lazy val p: B def brand(x: Any): p.L = x // error: not final } trait V extends U { @@ -53,7 +53,7 @@ object Tiark2 { trait B { type L >: Any} trait U { type X <: B - val p: X + lazy val p: X def brand(x: Any): p.L = x // error: not final } trait V extends U { diff --git a/tests/neg/i1050a.scala b/tests/neg/i1050a.scala new file mode 100644 index 000000000..47e2f0c59 --- /dev/null +++ b/tests/neg/i1050a.scala @@ -0,0 +1,29 @@ +object Tiark1 { + trait A { type L <: Nothing } + trait B { type L >: Any} + trait U { + val p: B + def brand(x: Any): p.L = x // error: not final + } + trait V extends U { + lazy val p: A & B = ??? + } + val v = new V {} + v.brand("boom!") +} +object Tiark2 { + trait A { type L <: Nothing } + trait B { type L >: Any} + trait U { + type X <: B + val p: X + def brand(x: Any): p.L = x // error: not final + } + trait V extends U { + type X = B & A + lazy val p: X = ??? + } + val v = new V {} + v.brand("boom!"): Nothing +} + |