No warnings produced, yet the pattern matching fails at runtime.
The code below should produce a warning about a non-exhaustive pattern in the failure, yet it compiles alright. `style="font-size: 80%" {{{#!haskell # OPTIONS_GHC -Wall -Werror #
action :: (Monad m)=>t->m (Maybe a) action _=return Nothing
failure :: (Monad m)=>Int->(m Int) failure x=do Just y<-action x return y
main :: IO() main=do y<-failure 1 putStrLn $ (show y) ` }}}
The same should be the case if we replace the definition of failure with
style="font-size: 80%" {{{#!haskell failure :: (Monad m)=>Int->(m Int) failure x=(action x)>>=(\(Just y)->return y)
}}}
yet once again no warnings are produced.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.0.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |