[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