
#14773: MultiWayIf makes it easy to write partial programs that are not catched by -Wall -------------------------------------+------------------------------------- Reporter: SimonHengel | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.2.2 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: -------------------------------------+------------------------------------- The following partial function will pass {{{-Wall}}} {{{#!haskell -- program 1 {-# LANGUAGE MultiWayIf #-} foo :: Bool -> Int foo b = if | b -> 23 }}} While the following two alternatives will not: {{{#!haskell -- program 2 foo :: Bool -> Int foo b | b = 23 }}} {{{#!haskell -- program 3 foo :: Bool -> Int foo b = case () of () | b -> 23 }}} Note that the GHC User's Guide states that "program 1" and "program 3" are equivalent. 1. Is this a bug or by design? 2. I guess at the very least we would want to update the User's Guide -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14773 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler