Clarify documentation of -Wdeprecations vs -Wwarnings-deprecations
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.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.0.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | high |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | asr |
| Operating system | |
| Architecture |