summaryrefslogtreecommitdiff
path: root/test/files/neg/t4691_exhaust_extractor.scala
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@epfl.ch>2012-07-04 17:50:30 +0200
committerAdriaan Moors <adriaan.moors@epfl.ch>2012-07-05 16:26:15 +0200
commit8234ba3905b588ea40e9a6bc0b1f83c464ddf191 (patch)
tree3292c7a6069bf9445e9cff664554fd06603217d7 /test/files/neg/t4691_exhaust_extractor.scala
parent54b26064d97d989047a21b4701fdaf2cbea60f36 (diff)
downloadscala-8234ba3905b588ea40e9a6bc0b1f83c464ddf191.tar.gz
scala-8234ba3905b588ea40e9a6bc0b1f83c464ddf191.tar.bz2
scala-8234ba3905b588ea40e9a6bc0b1f83c464ddf191.zip
SI-4691 exhaustivity: `unapply: Some` = irrefutable
overhauls treeMakersToConds in the process -- was getting a bit unwieldy
Diffstat (limited to 'test/files/neg/t4691_exhaust_extractor.scala')
-rw-r--r--test/files/neg/t4691_exhaust_extractor.scala33
1 files changed, 33 insertions, 0 deletions
diff --git a/test/files/neg/t4691_exhaust_extractor.scala b/test/files/neg/t4691_exhaust_extractor.scala
new file mode 100644
index 0000000000..c68c33d654
--- /dev/null
+++ b/test/files/neg/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