
Sounds like a documentation bug. Someone please file a new bug if they do find a warning that is no longer firing with -Wall. Edward Excerpts from Omari Norman's message of 2015-05-05 09:35:43 -0700:
I was basing this solely off the documentation:
https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/options-sani...
so this may just be a documentation bug. Someone emailed me off-list and said he reported it:
https://ghc.haskell.org/trac/ghc/ticket/10386
Thanks. --Omari
On Tue, May 5, 2015 at 12:25 PM, Edward Z. Yang
wrote: 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@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@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@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.