diff --git a/tests/neg/i4369.scala b/tests/neg/i4369.scala new file mode 100644 index 000000000000..02554709743c --- /dev/null +++ b/tests/neg/i4369.scala @@ -0,0 +1,4 @@ +trait X[R <: Z, Z >: X[R, R]] { + def foo(x: X[R, R]): Z = x // error: Found: X[R, R](x) Required: Z +} +class Z extends X[Z, Z] diff --git a/tests/neg/i4369b.scala b/tests/neg/i4369b.scala new file mode 100644 index 000000000000..5066bbdcde16 --- /dev/null +++ b/tests/neg/i4369b.scala @@ -0,0 +1,4 @@ +trait X[R <: Z, Z >: X[R, R] <: X[R, R]] { + implicitly[Z =:= X[R, R]] // error: Cannot prove that Z =:= X[R, R] +} +class Z extends X[Z, Z] diff --git a/tests/neg/i4369c.scala b/tests/neg/i4369c.scala new file mode 100644 index 000000000000..46a70ca385af --- /dev/null +++ b/tests/neg/i4369c.scala @@ -0,0 +1,5 @@ +trait X { self => + type R <: Z + type Z >: X { type R = self.R; type Z = self.R } +} +class Foo extends X { type R = Foo; type Z = Foo } // error