[GHC] #13150: unknown warning is not reported by GHC
GHC
ghc-devs at haskell.org
Wed Jan 18 20:42:25 UTC 2017
#13150: unknown warning is not reported by GHC
-------------------------------------+-------------------------------------
Reporter: jonaprieto | Owner:
Type: bug | Status: new
Priority: high | Milestone:
Component: Compiler | Version: 8.0.1
Keywords: | Operating System: MacOS X
Architecture: | Type of failure: Incorrect
Unknown/Multiple | error/warning at compile-time
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Rev(s): | Wiki Page:
-------------------------------------+-------------------------------------
The documented and official flag for the warning when a module, function
or type with a WARNING or DEPRECATED pragma is used is `-fwarn-warnings-
deprecations`. (See for instance
https://downloads.haskell.org/~ghc/7.8.2/docs/html/users_guide/options-
sanity.html). If the goal is turn off the warning I use `-fno-warn-
warnings-deprecations` flag. By default `-fwarn-warnings-deprecations` on.
In the next example shows a warning by using the flag mention above.
{{{
$ cat Foo.hs
{-# OPTIONS_GHC -fwarn-warnings-deprecations #-}
import Data.Version (Version(Version, versionBranch, versionTags))
main :: IO ()
main = do
let v = Version {
versionBranch = [1,0,0]
, versionTags = ["beta"]
}
return ()
}}}
and GHC outputs:
{{{
$ ghc Foo.hs
[1 of 1] Compiling Main ( Foo.hs, Foo.o )
Foo.hs:9:11: warning: [-Wdeprecations]
In the use of ‘versionTags’ (imported from Data.Version):
Deprecated: "See GHC ticket #2496"
Linking Foo ...
}}}
The first unexcepted behavior is the warning message showed above.
Following the convention the warning message should be:
{{{
Foo.hs:9:11: warning: [-Wwarnings-deprecations]
}}}
The second unexcepted behavior happened when I used a pragma to silenced
the warning `warnings-deprecations`, I committed the mistake to misspelled
it, but surprisingly GHC didn't complaint about the unknown pragma, it
seems treated again like a synonymous of `-fno-warn-warnings-
deprecations` in this case.
{{{
{-# OPTIONS_GHC -fno-warn-deprecations #-}
import Data.Version (Version(Version, versionBranch, versionTags))
main :: IO ()
main = do
let v = Version {
versionBranch = [1,0,0]
, versionTags = ["beta"]
}
return ()
}}}
Searching a little, I found it is not documented the flag -Wdeprecations
in recent versions of GHC ( I tested with 7.8.2 too) but it does for
instance available in GHC 6.3.0 (See https://manned.org/ghc-cvs/42a4c961)
but it actually continues appearing in the source code of the recent GHC.
See https://github.com/mlen/ghc/search?utf8=%E2%9C%93&q=deprecations.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13150>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list