diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/files/neg/t7171.check | 7 | ||||
-rw-r--r-- | test/files/neg/t7171.flags | 1 | ||||
-rw-r--r-- | test/files/neg/t7171.scala | 11 | ||||
-rw-r--r-- | test/files/neg/t7171b.check | 10 | ||||
-rw-r--r-- | test/files/neg/t7171b.flags | 1 | ||||
-rw-r--r-- | test/files/neg/t7171b.scala | 15 | ||||
-rw-r--r-- | test/files/run/t7171.scala | 22 |
7 files changed, 67 insertions, 0 deletions
diff --git a/test/files/neg/t7171.check b/test/files/neg/t7171.check new file mode 100644 index 0000000000..8bdf08129b --- /dev/null +++ b/test/files/neg/t7171.check @@ -0,0 +1,7 @@ +t7171.scala:2: error: The outer reference in this type test cannot be checked at run time. + final case class A() + ^ +t7171.scala:9: error: The outer reference in this type test cannot be checked at run time. + case _: A => true; case _ => false + ^ +two errors found diff --git a/test/files/neg/t7171.flags b/test/files/neg/t7171.flags new file mode 100644 index 0000000000..464cc20ea6 --- /dev/null +++ b/test/files/neg/t7171.flags @@ -0,0 +1 @@ +-Xfatal-warnings -unchecked
\ No newline at end of file diff --git a/test/files/neg/t7171.scala b/test/files/neg/t7171.scala new file mode 100644 index 0000000000..534b2070a3 --- /dev/null +++ b/test/files/neg/t7171.scala @@ -0,0 +1,11 @@ +trait T { + final case class A() + + // Was: + // error: scrutinee is incompatible with pattern type; + // found : T.this.A + // required: T#A + def foo(a: T#A) = a match { + case _: A => true; case _ => false + } +} diff --git a/test/files/neg/t7171b.check b/test/files/neg/t7171b.check new file mode 100644 index 0000000000..bd6b2bcfb4 --- /dev/null +++ b/test/files/neg/t7171b.check @@ -0,0 +1,10 @@ +t7171b.scala:2: error: The outer reference in this type test cannot be checked at run time. + final case class A() + ^ +t7171b.scala:8: error: The outer reference in this type test cannot be checked at run time. + case _: A => true; case _ => false + ^ +t7171b.scala:13: error: The outer reference in this type test cannot be checked at run time. + case _: A => true; case _ => false + ^ +three errors found diff --git a/test/files/neg/t7171b.flags b/test/files/neg/t7171b.flags new file mode 100644 index 0000000000..464cc20ea6 --- /dev/null +++ b/test/files/neg/t7171b.flags @@ -0,0 +1 @@ +-Xfatal-warnings -unchecked
\ No newline at end of file diff --git a/test/files/neg/t7171b.scala b/test/files/neg/t7171b.scala new file mode 100644 index 0000000000..53c7787f8b --- /dev/null +++ b/test/files/neg/t7171b.scala @@ -0,0 +1,15 @@ +trait T { + final case class A() +} + +final class U extends T { + // this match should also not be deemed impossible + def foo(a: U#A) = a match { + case _: A => true; case _ => false + } + + // this match should also not be deemed impossible + def bar(a: T#A) = a match { + case _: A => true; case _ => false + } +} diff --git a/test/files/run/t7171.scala b/test/files/run/t7171.scala new file mode 100644 index 0000000000..97585b9860 --- /dev/null +++ b/test/files/run/t7171.scala @@ -0,0 +1,22 @@ +trait T { + final case class A() + + // Was: + // error: scrutinee is incompatible with pattern type; + // found : T.this.A + // required: T#A + def foo(a: T#A) = a match { + case _: A => true; case _ => false + } +} + +object Test extends App { + val t1 = new T {} + val t2 = new T {} + val a1 = new t1.A() + val a2 = new t1.A() + assert(t1.foo(a1)) + // as noted in the unchecked warning (tested in the corresponding neg test), + // the outer pointer isn't checked + assert(t1.foo(a2)) +} |