[Haskell-cafe] GHC -WAll, -fwarn-unused-do-bind and Cabal

Albert Y. C. Lai trebla at vex.net
Wed Feb 15 20:33:59 CET 2012


On 12-02-14 03:01 PM, JP Moresmau wrote:
> I'm confused: I'm using GHC 7.0.2 and Cabal 1.10.1.0 with
> cabal-install 0.10.2. I use -Wall in my Cabal file. If I build a
> Haskell file with unused do binds, via the GHC API I get no warning,
> which is normal, since the doc states: The warnings that are not
> enabled by -Wall are ..., -fwarn-unused-do-bind .... But if I build my
> project through cabal it gives me the warning! Why is compiling with
> Cabal giving that extra warning that GHC on its own with the same
> flags doesn't give? Using --verbose on cabal build does not give any
> clue, no suspicious extra flag is passed on.

The plot thickens as I perform some experiments.

Experiment #1:

main :: IO ()
main = do { x <- getLine; putStrLn "thank you" }

ghc -Wall =>
     Warning: Defined but not used: `x'

ghc -fwarn-unused-do-bind =>
(no warning)

Apparently, warn-unused-do-bind does not mean that x is unused.

Experiment #2:

main :: IO ()
main = do { getLine; putStrLn "thank you" }

ghc -fwarn-unused-do-bind =>
     Warning: A do-notation statement discarded a result of type String.
              Suppress this warning by saying "_ <- getLine",
              or by using the flag -fno-warn-unused-do-bind

ghc -Wall =>
     Warning: A do-notation statement discarded a result of type String.
              Suppress this warning by saying "_ <- getLine",
              or by using the flag -fno-warn-unused-do-bind

ghc -Wall -fno-warn-unused-do-bind =>
(no warning)

Apparently, -Wall turns on -fwarn-unused-do-bind, despite the user guide.



More information about the Haskell-Cafe mailing list