template-haskell: Rip out FamFlavour
authorBen Gamari <ben@smart-cactus.org>
Mon, 4 Dec 2017 18:50:36 +0000 (13:50 -0500)
committerBen Gamari <ben@smart-cactus.org>
Mon, 4 Dec 2017 21:35:01 +0000 (16:35 -0500)
This was scheduled to happen for 8.2, it looks like it will actually
happen in 8.4.

compiler/prelude/THNames.hs
docs/users_guide/8.4.1-notes.rst
libraries/ghci/GHCi/TH/Binary.hs
libraries/template-haskell/Language/Haskell/TH.hs
libraries/template-haskell/Language/Haskell/TH/Lib.hs
libraries/template-haskell/Language/Haskell/TH/Lib/Internal.hs
libraries/template-haskell/Language/Haskell/TH/Ppr.hs
libraries/template-haskell/Language/Haskell/TH/Syntax.hs
libraries/template-haskell/changelog.md

index 068f01f..f45b3b5 100644 (file)
@@ -137,8 +137,6 @@ templateHaskellNames = [
     ruleVarName, typedRuleVarName,
     -- FunDep
     funDepName,
-    -- FamFlavour
-    typeFamName, dataFamName,
     -- TySynEqn
     tySynEqnName,
     -- AnnTarget
@@ -517,11 +515,6 @@ typedRuleVarName = libFun (fsLit ("typedRuleVar")) typedRuleVarIdKey
 funDepName :: Name
 funDepName     = libFun (fsLit "funDep") funDepIdKey
 
--- data FamFlavour = ...
-typeFamName, dataFamName :: Name
-typeFamName = libFun (fsLit "typeFam") typeFamIdKey
-dataFamName = libFun (fsLit "dataFam") dataFamIdKey
-
 -- data TySynEqn = ...
 tySynEqnName :: Name
 tySynEqnName = libFun (fsLit "tySynEqn") tySynEqnIdKey
@@ -1031,11 +1024,6 @@ interruptibleIdKey = mkPreludeMiscIdUnique 432
 funDepIdKey :: Unique
 funDepIdKey = mkPreludeMiscIdUnique 440
 
--- data FamFlavour = ...
-typeFamIdKey, dataFamIdKey :: Unique
-typeFamIdKey = mkPreludeMiscIdUnique 450
-dataFamIdKey = mkPreludeMiscIdUnique 451
-
 -- data TySynEqn = ...
 tySynEqnIdKey :: Unique
 tySynEqnIdKey = mkPreludeMiscIdUnique 460
index 09c4a6d..7d6cfdd 100644 (file)
@@ -312,6 +312,10 @@ Template Haskell
   ``ForallC [PlainTV a, PlainTV b]``. Now, reifying ``MkT`` will give a type
   headed by ``ForallC [PlainTV b, PlainTV a]``, as one would expect.
 
+
+- ``Language.Haskell.TH.FamFlavour``, which was deprecated in GHC 8.2,
+  has been removed.
+
 ``ghc`` library
 ~~~~~~~~~~~~~~~
 
index ae6bc9f..58e626c 100644 (file)
@@ -44,7 +44,6 @@ instance Binary TH.Body
 instance Binary TH.Match
 instance Binary TH.Fixity
 instance Binary TH.TySynEqn
-instance Binary TH.FamFlavour
 instance Binary TH.FunDep
 instance Binary TH.AnnTarget
 instance Binary TH.RuleBndr
index fd5c06f..213c70e 100644 (file)
@@ -73,7 +73,7 @@ module Language.Haskell.TH(
         SourceUnpackedness(..), SourceStrictness(..), DecidedStrictness(..),
         Bang(..), Strict, Foreign(..), Callconv(..), Safety(..), Pragma(..),
         Inline(..), RuleMatch(..), Phases(..), RuleBndr(..), AnnTarget(..),
-        FunDep(..), FamFlavour(..), TySynEqn(..), TypeFamilyHead(..),
+        FunDep(..), TySynEqn(..), TypeFamilyHead(..),
         Fixity(..), FixityDirection(..), defaultFixity, maxPrecedence,
         PatSynDir(..), PatSynArgs(..),
     -- ** Expressions
index 9ad36f8..dbf01f1 100644 (file)
@@ -88,9 +88,8 @@ module Language.Haskell.TH.Lib (
     roleAnnotD,
     -- **** Type Family / Data Family
     dataFamilyD, openTypeFamilyD, closedTypeFamilyD, dataInstD,
-    familyNoKindD, familyKindD, closedTypeFamilyNoKindD, closedTypeFamilyKindD,
     newtypeInstD, tySynInstD,
-    typeFam, dataFam, tySynEqn, injectivityAnn, noSig, kindSig, tyVarSig,
+    tySynEqn, injectivityAnn, noSig, kindSig, tyVarSig,
 
     -- **** Fixity
     infixLD, infixRD, infixND,
index d58ce84..4496ecd 100644 (file)
@@ -12,8 +12,6 @@
 -- relegate as many changes as we can to just the Internal module, where it
 -- is safe to break things.
 
-{-# LANGUAGE CPP #-}
-
 module Language.Haskell.TH.Lib.Internal where
 
 import Language.Haskell.TH.Syntax hiding (Role, InjectivityAnn)
@@ -529,45 +527,6 @@ closedTypeFamilyD tc tvs result injectivity eqns =
      eqns1   <- sequenceA eqns
      return (ClosedTypeFamilyD (TypeFamilyHead tc tvs1 result1 injectivity) eqns1)
 
--- These were deprecated in GHC 8.0 with a plan to remove them in 8.2. If you
--- remove this check please also:
---   1. remove deprecated functions
---   2. remove CPP language extension from top of this module
---   3. remove the FamFlavour data type from Syntax module
---   4. make sure that all references to FamFlavour are gone from DsMeta,
---      Convert, TcSplice (follows from 3)
-#if __GLASGOW_HASKELL__ >= 804
-#error Remove deprecated familyNoKindD, familyKindD, closedTypeFamilyNoKindD and closedTypeFamilyKindD
-#endif
-
-{-# DEPRECATED familyNoKindD, familyKindD
-               "This function will be removed in the next stable release. Use openTypeFamilyD/dataFamilyD instead." #-}
-familyNoKindD :: FamFlavour -> Name -> [TyVarBndr] -> DecQ
-familyNoKindD flav tc tvs =
-    case flav of
-      TypeFam -> return $ OpenTypeFamilyD (TypeFamilyHead tc tvs NoSig Nothing)
-      DataFam -> return $ DataFamilyD tc tvs Nothing
-
-familyKindD :: FamFlavour -> Name -> [TyVarBndr] -> Kind -> DecQ
-familyKindD flav tc tvs k =
-    case flav of
-      TypeFam ->
-        return $ OpenTypeFamilyD (TypeFamilyHead tc tvs (KindSig k) Nothing)
-      DataFam -> return $ DataFamilyD tc tvs (Just k)
-
-{-# DEPRECATED closedTypeFamilyNoKindD, closedTypeFamilyKindD
-               "This function will be removed in the next stable release. Use closedTypeFamilyD instead." #-}
-closedTypeFamilyNoKindD :: Name -> [TyVarBndr] -> [TySynEqnQ] -> DecQ
-closedTypeFamilyNoKindD tc tvs eqns =
- do eqns1 <- sequence eqns
-    return (ClosedTypeFamilyD (TypeFamilyHead tc tvs NoSig Nothing) eqns1)
-
-closedTypeFamilyKindD :: Name -> [TyVarBndr] -> Kind -> [TySynEqnQ] -> DecQ
-closedTypeFamilyKindD tc tvs kind eqns =
- do eqns1 <- sequence eqns
-    return (ClosedTypeFamilyD (TypeFamilyHead tc tvs (KindSig kind) Nothing)
-            eqns1)
-
 roleAnnotD :: Name -> [Role] -> DecQ
 roleAnnotD name roles = return $ RoleAnnotD name roles
 
@@ -874,13 +833,6 @@ funDep :: [Name] -> [Name] -> FunDep
 funDep = FunDep
 
 -------------------------------------------------------------------------------
--- *   FamFlavour
-
-typeFam, dataFam :: FamFlavour
-typeFam = TypeFam
-dataFam = DataFam
-
--------------------------------------------------------------------------------
 -- *   RuleBndr
 ruleVar :: Name -> RuleBndrQ
 ruleVar = return . RuleVar
index bbb73b0..278b45e 100644 (file)
@@ -466,11 +466,6 @@ instance Ppr FunDep where
     ppr_list xs = bar <+> commaSep xs
 
 ------------------------------
-instance Ppr FamFlavour where
-    ppr DataFam = text "data"
-    ppr TypeFam = text "type"
-
-------------------------------
 instance Ppr FamilyResultSig where
     ppr NoSig           = empty
     ppr (KindSig k)     = dcolon <+> ppr k
index 0541a08..7589619 100644 (file)
@@ -1776,9 +1776,6 @@ data TySynEqn = TySynEqn [Type] Type
 data FunDep = FunDep [Name] [Name]
   deriving( Show, Eq, Ord, Data, Generic )
 
-data FamFlavour = TypeFam | DataFam
-  deriving( Show, Eq, Ord, Data, Generic )
-
 data Foreign = ImportF Callconv Safety String Name Type
              | ExportF Callconv        String Name Type
          deriving( Show, Eq, Ord, Data, Generic )
index e003f1b..b472832 100644 (file)
@@ -4,6 +4,9 @@
 
   * Bundled with GHC *TBA*
 
+  * `Language.Haskell.TH.FamFlavour`, which was deprecated in 2.11,
+    has been removed.
+
   * Add support for overloaded labels. Introduces `labelE :: String -> ExpQ`.
 
   * Add `KindQ`, `TyVarBndrQ`, and `FamilyResultSigQ` aliases to
@@ -19,9 +22,9 @@
 
   * Add `MonadIO Q` instance
 
-## 2.12.0.0 *TBA*
+## 2.12.0.0 *July 2017*
 
-  * Bundled with GHC *TBA*
+  * Bundled with GHC 8.2.1
 
   * Add support for pattern synonyms. This introduces one new constructor to
     `Info` (`PatSynI`), two new constructors to `Dec` (`PatSynD` and