Include -fwarn-star-is-type in -Wcompat
authorVladislav Zavialov <vlad.z.4096@gmail.com>
Fri, 12 Oct 2018 15:15:26 +0000 (11:15 -0400)
committerBen Gamari <ben@smart-cactus.org>
Fri, 12 Oct 2018 15:51:46 +0000 (11:51 -0400)
According to the deprecation schedule in the accepted proposal,
the first step is to include `-fwarn-star-is-type` in `-Wcompat`.

Test Plan: Validate

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: rwbarton, carter

GHC Trac Issues: #15476

Differential Revision: https://phabricator.haskell.org/D5044

compiler/main/DynFlags.hs
compiler/parser/RdrHsSyn.hs
docs/users_guide/8.8.1-notes.rst
docs/users_guide/using-warnings.rst
testsuite/tests/wcompat-warnings/Template.hs
testsuite/tests/wcompat-warnings/WCompatWarningsOn.stderr

index f9ccc25..2c8f134 100644 (file)
@@ -4614,6 +4614,7 @@ minusWcompatOpts
       , Opt_WarnSemigroup
       , Opt_WarnNonCanonicalMonoidInstances
       , Opt_WarnImplicitKindVars
+      , Opt_WarnStarIsType
       ]
 
 enableUnusedBinds :: DynP ()
index 1015319..1e89d5a 100644 (file)
@@ -2049,7 +2049,8 @@ warnStarIsType span = addWarning Opt_WarnStarIsType span msg
     msg =  text "Using" <+> quotes (text "*")
            <+> text "(or its Unicode variant) to mean"
            <+> quotes (text "Data.Kind.Type")
-        $$ text "relies on the StarIsType extension."
+        $$ text "relies on the StarIsType extension, which will become"
+        $$ text "deprecated in the future."
         $$ text "Suggested fix: use" <+> quotes (text "Type")
            <+> text "from" <+> quotes (text "Data.Kind") <+> text "instead."
 
index a27aee7..d3da37e 100644 (file)
@@ -59,6 +59,8 @@ Compiler
 
 - New :ghc-flag:`-keep-hscpp-files` to keep the output of the CPP pre-processor.
 
+- The :ghc-flag:`-Wcompat` warning group now includes :ghc-flag:`-Wstar-is-type`.
+
 Runtime system
 ~~~~~~~~~~~~~~
 
index dba30db..aeabbe9 100644 (file)
@@ -117,6 +117,7 @@ The following flags are simple ways to select standard "packages" of warnings:
         * :ghc-flag:`-Wsemigroup`
         * :ghc-flag:`-Wnoncanonical-monoid-instances`
         * :ghc-flag:`-Wimplicit-kind-vars`
+        * :ghc-flag:`-Wstar-is-type`
 
 .. ghc-flag:: -Wno-compat
     :shortdesc: Disables all warnings enabled by :ghc-flag:`-Wcompat`.
@@ -1194,6 +1195,9 @@ of ``-W(no-)*``.
      breaking change takes place. The recommended fix is to replace ``*`` with
      ``Type`` imported from ``Data.Kind``.
 
+     Being part of the :ghc-flag:`-Wcompat` option group, this warning is off by
+     default, but will be switched on in a future GHC release.
+
 .. ghc-flag:: -Wstar-binder
      :shortdesc: warn about binding the ``(*)`` type operator despite
          :ghc-flag:`-XStarIsType`
index e3423c8..03f9a49 100644 (file)
@@ -1,4 +1,4 @@
-{-# LANGUAGE NoMonadFailDesugaring #-}
+{-# LANGUAGE NoMonadFailDesugaring, KindSignatures #-}
 
 module WCompatWarningsOnOff where
 
@@ -21,3 +21,6 @@ instance Monoid S where
   S a `mappend` S b = S (a+b)
   mempty = S 0
 
+-- -fwarn-star-is-type
+b :: (Bool :: *)
+b = True
index 5c2d9c5..3c3e73d 100644 (file)
@@ -33,3 +33,9 @@ Template.hs:21:3: warning: [-Wnoncanonical-monoid-instances (in -Wcompat)]
     Noncanonical ‘mappend’ definition detected
     in the instance declaration for ‘Monoid S’.
     Define as ‘mappend = (<>)’
+
+Template.hs:25:15: warning: [-Wstar-is-type (in -Wcompat)]
+    Using ‘*’ (or its Unicode variant) to mean ‘Data.Kind.Type’
+    relies on the StarIsType extension, which will become
+    deprecated in the future.
+    Suggested fix: use ‘Type’ from ‘Data.Kind’ instead.