
#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