It probably doesn't belong in -Wall, as it is a fairly common idiom to use fail intentionally this way, but it could pretty easily be added to the 'do' and list/monad comprehension desugaring to issue a separate warning that we don't turn on by default.
Making it possible to see where you use 'fail' explicitly might be a nice step on the road towards splitting out MonadFail though. Herbert has been working up a plan we can put forth to the community for how to proceed on that front. It may make sense to roll any such warnings into that effort. -Edward On Fri, May 22, 2015 at 8:06 PM, Nikita Karetnikov <nik...@karetnikov.org> wrote: > Can -Wall be extended to report pattern match failures in do > expressions, like it does for case expressions? > > Prelude> :set -Wall > Prelude> let f = do Just x <- return Nothing; return x > Prelude> let g = case Nothing of Just x -> x > > <interactive>:9:9: Warning: > Pattern match(es) are non-exhaustive > In a case alternative: Patterns not matched: Nothing > > One can argue that it's similar to undefined, error, and various > unsafeSomething functions, which I think should be reported as well, if > possible. But these things can be found already with a simple grep > while a pattern match cannot. > > I bet it has been discussed already, but "fail" is a terrible search > term, so I cannot find anything relevant in the archives nor in the bug > tracker. > _______________________________________________ > Glasgow-haskell-users mailing list > Glasgow-haskell-users@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users >
_______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users