aboutsummaryrefslogtreecommitdiff
path: root/tests/patmat/t4691_exhaust_extractor.scala
diff options
context:
space:
mode:
Diffstat (limited to 'tests/patmat/t4691_exhaust_extractor.scala')
-rw-r--r--tests/patmat/t4691_exhaust_extractor.scala33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/patmat/t4691_exhaust_extractor.scala b/tests/patmat/t4691_exhaust_extractor.scala
new file mode 100644
index 000000000..c68c33d65
--- /dev/null
+++ b/tests/patmat/t4691_exhaust_extractor.scala
@@ -0,0 +1,33 @@
+sealed trait Foo
+class Bar1 extends Foo
+class Bar2 extends Foo
+class Bar3 extends Foo
+
+// these extractors are known to always succeed as they return a Some
+object Baz1 {
+ def unapply(x: Bar1): Some[Int] = Some(1)
+}
+object Baz2 {
+ def unapply(x: Bar2): Some[Int] = Some(2)
+}
+
+
+object Test {
+ // warning: missing Bar3
+ def f1(x: Foo) = x match {
+ case _: Bar1 => 1
+ case _: Bar2 => 2
+ }
+
+ // warning: missing Bar3
+ def f2(x: Foo) = x match {
+ case _: Bar1 => 1
+ case Baz2(x) => x
+ }
+
+ // warning: missing Bar3
+ def f3(x: Foo) = x match {
+ case Baz1(x) => x
+ case Baz2(x) => x
+ }
+} \ No newline at end of file