[GHC] #11245: Non-exhaustive pattern, "Patterns not matched" list is empty
GHC
ghc-devs at haskell.org
Thu Dec 17 19:31:28 UTC 2015
#11245: Non-exhaustive pattern, "Patterns not matched" list is empty
-------------------------------------+-------------------------------------
Reporter: osa1 | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.11
Keywords: | Operating System: Unknown/Multiple
Architecture: | Type of failure: None/Unknown
Unknown/Multiple |
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Rev(s): | Wiki Page:
-------------------------------------+-------------------------------------
Example:
{{{#!haskell
module Main where
maybeOdd :: Int -> Maybe Int
maybeOdd i = if odd i then Just i else Nothing
main :: IO ()
main = do
let x = maybeOdd 10
let a | Just i <- x
, odd i
= True
| Nothing <- x
= False
print x
print a
}}}
Warning printed by GHC HEAD:
{{{
Exhaustive.hs:10:7: warning:
Pattern match(es) are non-exhaustive
In an equation for ‘a’: Patterns not matched:
Linking Exhaustive ...
}}}
The problem with this message is; if it couldn't come up with an example
unmatched pattern, then how can it know that the pattern is non-
exhaustive? If it came up with an example, why is that example not
printed?
UPDATE: I just realized it's actually worse that I first thought. If I
change {{{a}}} in this example:
{{{#!haskell
let a | Just i <- x
= True
}}}
This message is printed:
{{{
[1 of 1] Compiling Main ( Exhaustive.hs, Exhaustive.o )
Exhaustive.hs:10:7: warning:
Pattern match(es) are non-exhaustive
In an equation for ‘a’: Patterns not matched:
Exhaustive.hs:10:16: warning: Defined but not used: ‘i’
Linking Exhaustive ...
}}}
NOTE: Tried with GHC 7.10 too. It seems like in the case where the checks
are not exhaustive, both 7.10 and HEAD are giving the same warning(with
empty list of non-checked patterns). HEAD is better in detecting
exhaustive patterns.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11245>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list