diff options
author | Adriaan Moors <adriaan.moors@epfl.ch> | 2012-07-04 17:50:30 +0200 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@epfl.ch> | 2012-07-05 16:26:15 +0200 |
commit | 8234ba3905b588ea40e9a6bc0b1f83c464ddf191 (patch) | |
tree | 3292c7a6069bf9445e9cff664554fd06603217d7 /test/files | |
parent | 54b26064d97d989047a21b4701fdaf2cbea60f36 (diff) | |
download | scala-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')
-rw-r--r-- | test/files/neg/t4691_exhaust_extractor.check | 13 | ||||
-rw-r--r-- | test/files/neg/t4691_exhaust_extractor.flags | 1 | ||||
-rw-r--r-- | test/files/neg/t4691_exhaust_extractor.scala | 33 |
3 files changed, 47 insertions, 0 deletions
diff --git a/test/files/neg/t4691_exhaust_extractor.check b/test/files/neg/t4691_exhaust_extractor.check new file mode 100644 index 0000000000..cd12e56f86 --- /dev/null +++ b/test/files/neg/t4691_exhaust_extractor.check @@ -0,0 +1,13 @@ +t4691_exhaust_extractor.scala:17: error: match may not be exhaustive. +It would fail on the following input: Bar3() + def f1(x: Foo) = x match { + ^ +t4691_exhaust_extractor.scala:23: error: match may not be exhaustive. +It would fail on the following input: Bar3() + def f2(x: Foo) = x match { + ^ +t4691_exhaust_extractor.scala:29: error: match may not be exhaustive. +It would fail on the following input: Bar3() + def f3(x: Foo) = x match { + ^ +three errors found diff --git a/test/files/neg/t4691_exhaust_extractor.flags b/test/files/neg/t4691_exhaust_extractor.flags new file mode 100644 index 0000000000..e8fb65d50c --- /dev/null +++ b/test/files/neg/t4691_exhaust_extractor.flags @@ -0,0 +1 @@ +-Xfatal-warnings
\ No newline at end of file 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 |