[Haskell-cafe] Significant changes in -Wall for GHC 7.10
Edward Z. Yang
ezyang at mit.edu
Tue May 5 16:25:17 UTC 2015
Hello Omari,
Just to double check, could you send us a program which fails
to produce warnings on 7.10, which does produce warnings on 7.8,
and the command line arguments to run it?
I tried the following test:
[ezyang at hs01 ghc-bisect]$ cat A.hs
module A where
-- f :: Bool -> Bool
-- f x = x && (\x -> x) x
g :: IO ()
g = do (readLn :: IO Int)
return ()
[ezyang at hs01 ghc-bisect]$ ghc -c A.hs -Wall -fforce-recomp
A.hs:5:9: Warning:
A do-notation statement discarded a result of type ‘Int’
Suppress this warning by saying ‘_ <- (readLn :: IO Int)’
or by using the flag -fno-warn-unused-do-bind
[ezyang at hs01 ghc-bisect]$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.10.1
This is 7.10 that is distributed by Arch Linux. I haven't
tried any other distributions, including the pre-built binaries.
Cheers,
Edward
Excerpts from Omari Norman's message of 2015-05-05 07:54:59 -0700:
> I noticed some significant changes to the flags included with -Wall in GHC
> 7.10. Many flags that were previously included in -Wall are now not
> included. These include:
>
> -fwarn-type-defaults
> -fwarn-name-shadowing
> -fwarn-missing-signatures
> -fwarn-hi-shadowing
> -fwarn-orphans
> -fwarn-unused-do-bind
> -fwarn-trustworthy-safe
>
> I can't find any mention in the release notes of this change in behavior.
>
> I was wondering what the rationale is for these changes? Any link to
> relevant discussion would be appreciated if it exists.
>
> Also, what opinion do people have? I previously kept my code -Wall clean,
> but sometimes that would be a pain. For instance I would munge local names
> so they wouldn't trigger -fwarn-name-shadowing, and I would add signatures
> to integers so they wouldn't trigger -fwarn-type-defaults. In fact, I only
> noticed this change in behavior in 7.10 because I was considering dumping
> -Wall, and when I looked at the 7.10 manual I saw that it does not enable
> -fwarn-name-shadowing. (I still use 7.8 but Google pulled the 7.10
> manual.) Does this change indicate that people were finding -Wall too
> onerous and, thus, not using it?
>
> I do remember reading complaints about -fwarn-unused-do-bind being added to
> -Wall, but I previously felt dirty about name shadowing though I wondered
> if munging names to avoid shadowing was actually worse.
More information about the Haskell-Cafe
mailing list