diff options
author | Paul Phillips <paulp@improving.org> | 2011-04-30 20:01:25 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-04-30 20:01:25 +0000 |
commit | b4749d3b1afb1df236ec48fd3a773aab24a6f74d (patch) | |
tree | 81792bd4de8dfb8c2beb6ad1418880947fb6e371 /test | |
parent | 793796eee0769926a3162d69dd23c282ca2d8ba4 (diff) | |
download | scala-b4749d3b1afb1df236ec48fd3a773aab24a6f74d.tar.gz scala-b4749d3b1afb1df236ec48fd3a773aab24a6f74d.tar.bz2 scala-b4749d3b1afb1df236ec48fd3a773aab24a6f74d.zip |
Completely to my surprise, found that fixing al...
Completely to my surprise, found that fixing all those sequence issues
revealed that the pattern matcher can catch a lot more inexhaustive
cases than it has been catching. Fixed most of the inexhaustive matches
in the compiler, which had become a bit warnier. No review.
Diffstat (limited to 'test')
-rw-r--r-- | test/files/neg/exhausting.check | 6 | ||||
-rw-r--r-- | test/files/neg/patmatexhaust.check | 25 | ||||
-rw-r--r-- | test/files/neg/patmatexhaust.flags | 1 | ||||
-rw-r--r-- | test/files/neg/patmatexhaust.scala | 6 |
4 files changed, 17 insertions, 21 deletions
diff --git a/test/files/neg/exhausting.check b/test/files/neg/exhausting.check index d3f2251f79..0bef21e077 100644 --- a/test/files/neg/exhausting.check +++ b/test/files/neg/exhausting.check @@ -2,7 +2,7 @@ exhausting.scala:20: error: match is not exhaustive! missing combination * Nil def fail1[T](xs: List[T]) = xs match { - ^ + ^ exhausting.scala:24: error: match is not exhaustive! missing combination Nil @@ -17,7 +17,7 @@ exhausting.scala:31: error: match is not exhaustive! missing combination Bar2 Bar2 def fail4[T <: AnyRef](xx: (Foo[T], Foo[T])) = xx match { - ^ + ^ exhausting.scala:36: error: match is not exhaustive! missing combination Bar1 Bar2 missing combination Bar1 Bar3 @@ -25,5 +25,5 @@ missing combination Bar2 Bar1 missing combination Bar2 Bar2 def fail5[T](xx: (Foo[T], Foo[T])) = xx match { - ^ + ^ 5 errors found diff --git a/test/files/neg/patmatexhaust.check b/test/files/neg/patmatexhaust.check index 83c4279b0a..8aa9238d2e 100644 --- a/test/files/neg/patmatexhaust.check +++ b/test/files/neg/patmatexhaust.check @@ -1,37 +1,38 @@ -patmatexhaust.scala:7: warning: match is not exhaustive! +patmatexhaust.scala:7: error: match is not exhaustive! missing combination Baz def ma1(x:Foo) = x match { ^ -patmatexhaust.scala:11: warning: match is not exhaustive! +patmatexhaust.scala:11: error: match is not exhaustive! missing combination Bar def ma2(x:Foo) = x match { ^ -patmatexhaust.scala:23: warning: match is not exhaustive! +patmatexhaust.scala:23: error: match is not exhaustive! missing combination Kult Kult missing combination Qult Qult def ma3(x:Mult) = (x,x) match { // not exhaustive - ^ -patmatexhaust.scala:49: warning: match is not exhaustive! + ^ +patmatexhaust.scala:49: error: match is not exhaustive! missing combination Gp missing combination Gu def ma4(x:Deep) = x match { // missing cases: Gu, Gp ^ -patmatexhaust.scala:53: warning: match is not exhaustive! +patmatexhaust.scala:53: error: match is not exhaustive! missing combination Gp def ma5(x:Deep) = x match { // Gp ^ -patmatexhaust.scala:75: warning: match is not exhaustive! +patmatexhaust.scala:59: error: match is not exhaustive! +missing combination Nil + + def ma6() = List(1,2) match { // give up + ^ +patmatexhaust.scala:75: error: match is not exhaustive! missing combination B def ma9(x: B) = x match { ^ -patmatexhaust.scala:92: error: unreachable code - case 1 => - ^ -6 warnings found -one error found +7 errors found diff --git a/test/files/neg/patmatexhaust.flags b/test/files/neg/patmatexhaust.flags new file mode 100644 index 0000000000..e8fb65d50c --- /dev/null +++ b/test/files/neg/patmatexhaust.flags @@ -0,0 +1 @@ +-Xfatal-warnings
\ No newline at end of file diff --git a/test/files/neg/patmatexhaust.scala b/test/files/neg/patmatexhaust.scala index 4a66649a18..d49c4b207b 100644 --- a/test/files/neg/patmatexhaust.scala +++ b/test/files/neg/patmatexhaust.scala @@ -86,10 +86,4 @@ class TestSealedExhaustive { // compile only case C4() => true case C2 | C6 => true } - - def redundant() = 1 match { // include this otherwise script won't test this in files/neg - case 1 => - case 1 => - } - } |