[Haskell-cafe] Significant changes in -Wall for GHC 7.10
Edward Z. Yang
ezyang at mit.edu
Tue May 5 16:41:23 UTC 2015
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-sanity.html
>
> 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 <ezyang at mit.edu> 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 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