packages feed

template-haskell 2.13.0.0 → 2.14.0.0

raw patch · 6 files changed

+133/−30 lines, 6 filesdep ~basedep ~ghc-boot-thPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: base, ghc-boot-th

API changes (from Hackage documentation)

- Language.Haskell.TH.Syntax: instance Language.Haskell.TH.Syntax.Lift a => Language.Haskell.TH.Syntax.Lift (GHC.Base.Maybe a)
- Language.Haskell.TH.Syntax: qAddForeignFile :: Quasi m => ForeignSrcLang -> String -> m ()
+ Language.Haskell.TH: BlockArguments :: Extension
+ Language.Haskell.TH: DerivingVia :: Extension
+ Language.Haskell.TH: NumericUnderscores :: Extension
+ Language.Haskell.TH: QuantifiedConstraints :: Extension
+ Language.Haskell.TH: StarIsType :: Extension
+ Language.Haskell.TH.LanguageExtensions: BlockArguments :: Extension
+ Language.Haskell.TH.LanguageExtensions: DerivingVia :: Extension
+ Language.Haskell.TH.LanguageExtensions: NumericUnderscores :: Extension
+ Language.Haskell.TH.LanguageExtensions: QuantifiedConstraints :: Extension
+ Language.Haskell.TH.LanguageExtensions: StarIsType :: Extension
+ Language.Haskell.TH.Lib: ViaStrategy :: Type -> DerivStrategy
+ Language.Haskell.TH.Lib: anyclassStrategy :: DerivStrategyQ
+ Language.Haskell.TH.Lib: newtypeStrategy :: DerivStrategyQ
+ Language.Haskell.TH.Lib: stockStrategy :: DerivStrategyQ
+ Language.Haskell.TH.Lib: type DerivStrategyQ = Q DerivStrategy
+ Language.Haskell.TH.Lib: viaStrategy :: TypeQ -> DerivStrategyQ
+ Language.Haskell.TH.Lib.Internal: anyclassStrategy :: DerivStrategyQ
+ Language.Haskell.TH.Lib.Internal: newtypeStrategy :: DerivStrategyQ
+ Language.Haskell.TH.Lib.Internal: stockStrategy :: DerivStrategyQ
+ Language.Haskell.TH.Lib.Internal: type DerivStrategyQ = Q DerivStrategy
+ Language.Haskell.TH.Lib.Internal: viaStrategy :: TypeQ -> DerivStrategyQ
+ Language.Haskell.TH.Ppr: pprMatchPat :: Pat -> Doc
+ Language.Haskell.TH.Ppr: sigPrec :: Precedence
+ Language.Haskell.TH.Syntax: RawObject :: ForeignSrcLang
+ Language.Haskell.TH.Syntax: ViaStrategy :: Type -> DerivStrategy
+ Language.Haskell.TH.Syntax: addForeignFilePath :: ForeignSrcLang -> FilePath -> Q ()
+ Language.Haskell.TH.Syntax: addForeignSource :: ForeignSrcLang -> String -> Q ()
+ Language.Haskell.TH.Syntax: addTempFile :: String -> Q FilePath
+ Language.Haskell.TH.Syntax: instance Language.Haskell.TH.Syntax.Lift a => Language.Haskell.TH.Syntax.Lift (GHC.Maybe.Maybe a)
+ Language.Haskell.TH.Syntax: qAddForeignFilePath :: Quasi m => ForeignSrcLang -> String -> m ()
+ Language.Haskell.TH.Syntax: qAddTempFile :: Quasi m => String -> m FilePath
- Language.Haskell.TH: CompleteP :: [Name] -> (Maybe Name) -> Pragma
+ Language.Haskell.TH: CompleteP :: [Name] -> Maybe Name -> Pragma
- Language.Haskell.TH: DataD :: Cxt -> Name -> [TyVarBndr] -> (Maybe Kind) -> [Con] -> [DerivClause] -> Dec
+ Language.Haskell.TH: DataD :: Cxt -> Name -> [TyVarBndr] -> Maybe Kind -> [Con] -> [DerivClause] -> Dec
- Language.Haskell.TH: DataFamilyD :: Name -> [TyVarBndr] -> (Maybe Kind) -> Dec
+ Language.Haskell.TH: DataFamilyD :: Name -> [TyVarBndr] -> Maybe Kind -> Dec
- Language.Haskell.TH: DataInstD :: Cxt -> Name -> [Type] -> (Maybe Kind) -> [Con] -> [DerivClause] -> Dec
+ Language.Haskell.TH: DataInstD :: Cxt -> Name -> [Type] -> Maybe Kind -> [Con] -> [DerivClause] -> Dec
- Language.Haskell.TH: InfixE :: (Maybe Exp) -> Exp -> (Maybe Exp) -> Exp
+ Language.Haskell.TH: InfixE :: Maybe Exp -> Exp -> Maybe Exp -> Exp
- Language.Haskell.TH: InstanceD :: (Maybe Overlap) -> Cxt -> Type -> [Dec] -> Dec
+ Language.Haskell.TH: InstanceD :: Maybe Overlap -> Cxt -> Type -> [Dec] -> Dec
- Language.Haskell.TH: NewtypeD :: Cxt -> Name -> [TyVarBndr] -> (Maybe Kind) -> Con -> [DerivClause] -> Dec
+ Language.Haskell.TH: NewtypeD :: Cxt -> Name -> [TyVarBndr] -> Maybe Kind -> Con -> [DerivClause] -> Dec
- Language.Haskell.TH: NewtypeInstD :: Cxt -> Name -> [Type] -> (Maybe Kind) -> Con -> [DerivClause] -> Dec
+ Language.Haskell.TH: NewtypeInstD :: Cxt -> Name -> [Type] -> Maybe Kind -> Con -> [DerivClause] -> Dec
- Language.Haskell.TH: SpecialiseP :: Name -> Type -> (Maybe Inline) -> Phases -> Pragma
+ Language.Haskell.TH: SpecialiseP :: Name -> Type -> Maybe Inline -> Phases -> Pragma
- Language.Haskell.TH: StandaloneDerivD :: (Maybe DerivStrategy) -> Cxt -> Type -> Dec
+ Language.Haskell.TH: StandaloneDerivD :: Maybe DerivStrategy -> Cxt -> Type -> Dec
- Language.Haskell.TH: TypeFamilyHead :: Name -> [TyVarBndr] -> FamilyResultSig -> (Maybe InjectivityAnn) -> TypeFamilyHead
+ Language.Haskell.TH: TypeFamilyHead :: Name -> [TyVarBndr] -> FamilyResultSig -> Maybe InjectivityAnn -> TypeFamilyHead
- Language.Haskell.TH: VarI :: Name -> Type -> (Maybe Dec) -> Info
+ Language.Haskell.TH: VarI :: Name -> Type -> Maybe Dec -> Info
- Language.Haskell.TH: type Cxt = [Pred] @(Eq a, Ord b)@
+ Language.Haskell.TH: type Cxt = [Pred] " @(Eq a, Ord b)@"
- Language.Haskell.TH.Lib: DerivClause :: (Maybe DerivStrategy) -> Cxt -> DerivClause
+ Language.Haskell.TH.Lib: DerivClause :: Maybe DerivStrategy -> Cxt -> DerivClause
- Language.Haskell.TH.Lib.Internal: derivClause :: Maybe DerivStrategy -> [PredQ] -> DerivClauseQ
+ Language.Haskell.TH.Lib.Internal: derivClause :: Maybe DerivStrategyQ -> [PredQ] -> DerivClauseQ
- Language.Haskell.TH.Lib.Internal: standaloneDerivWithStrategyD :: Maybe DerivStrategy -> CxtQ -> TypeQ -> DecQ
+ Language.Haskell.TH.Lib.Internal: standaloneDerivWithStrategyD :: Maybe DerivStrategyQ -> CxtQ -> TypeQ -> DecQ
- Language.Haskell.TH.Quote: QuasiQuoter :: String -> Q Exp -> String -> Q Pat -> String -> Q Type -> String -> Q [Dec] -> QuasiQuoter
+ Language.Haskell.TH.Quote: QuasiQuoter :: (String -> Q Exp) -> (String -> Q Pat) -> (String -> Q Type) -> (String -> Q [Dec]) -> QuasiQuoter
- Language.Haskell.TH.Syntax: CompleteP :: [Name] -> (Maybe Name) -> Pragma
+ Language.Haskell.TH.Syntax: CompleteP :: [Name] -> Maybe Name -> Pragma
- Language.Haskell.TH.Syntax: DataD :: Cxt -> Name -> [TyVarBndr] -> (Maybe Kind) -> [Con] -> [DerivClause] -> Dec
+ Language.Haskell.TH.Syntax: DataD :: Cxt -> Name -> [TyVarBndr] -> Maybe Kind -> [Con] -> [DerivClause] -> Dec
- Language.Haskell.TH.Syntax: DataFamilyD :: Name -> [TyVarBndr] -> (Maybe Kind) -> Dec
+ Language.Haskell.TH.Syntax: DataFamilyD :: Name -> [TyVarBndr] -> Maybe Kind -> Dec
- Language.Haskell.TH.Syntax: DataInstD :: Cxt -> Name -> [Type] -> (Maybe Kind) -> [Con] -> [DerivClause] -> Dec
+ Language.Haskell.TH.Syntax: DataInstD :: Cxt -> Name -> [Type] -> Maybe Kind -> [Con] -> [DerivClause] -> Dec
- Language.Haskell.TH.Syntax: DerivClause :: (Maybe DerivStrategy) -> Cxt -> DerivClause
+ Language.Haskell.TH.Syntax: DerivClause :: Maybe DerivStrategy -> Cxt -> DerivClause
- Language.Haskell.TH.Syntax: InfixE :: (Maybe Exp) -> Exp -> (Maybe Exp) -> Exp
+ Language.Haskell.TH.Syntax: InfixE :: Maybe Exp -> Exp -> Maybe Exp -> Exp
- Language.Haskell.TH.Syntax: InstanceD :: (Maybe Overlap) -> Cxt -> Type -> [Dec] -> Dec
+ Language.Haskell.TH.Syntax: InstanceD :: Maybe Overlap -> Cxt -> Type -> [Dec] -> Dec
- Language.Haskell.TH.Syntax: NewtypeD :: Cxt -> Name -> [TyVarBndr] -> (Maybe Kind) -> Con -> [DerivClause] -> Dec
+ Language.Haskell.TH.Syntax: NewtypeD :: Cxt -> Name -> [TyVarBndr] -> Maybe Kind -> Con -> [DerivClause] -> Dec
- Language.Haskell.TH.Syntax: NewtypeInstD :: Cxt -> Name -> [Type] -> (Maybe Kind) -> Con -> [DerivClause] -> Dec
+ Language.Haskell.TH.Syntax: NewtypeInstD :: Cxt -> Name -> [Type] -> Maybe Kind -> Con -> [DerivClause] -> Dec
- Language.Haskell.TH.Syntax: Q :: forall m. Quasi m => m a -> Q a
+ Language.Haskell.TH.Syntax: Q :: (forall m. Quasi m => m a) -> Q a
- Language.Haskell.TH.Syntax: SpecialiseP :: Name -> Type -> (Maybe Inline) -> Phases -> Pragma
+ Language.Haskell.TH.Syntax: SpecialiseP :: Name -> Type -> Maybe Inline -> Phases -> Pragma
- Language.Haskell.TH.Syntax: StandaloneDerivD :: (Maybe DerivStrategy) -> Cxt -> Type -> Dec
+ Language.Haskell.TH.Syntax: StandaloneDerivD :: Maybe DerivStrategy -> Cxt -> Type -> Dec
- Language.Haskell.TH.Syntax: TypeFamilyHead :: Name -> [TyVarBndr] -> FamilyResultSig -> (Maybe InjectivityAnn) -> TypeFamilyHead
+ Language.Haskell.TH.Syntax: TypeFamilyHead :: Name -> [TyVarBndr] -> FamilyResultSig -> Maybe InjectivityAnn -> TypeFamilyHead
- Language.Haskell.TH.Syntax: VarI :: Name -> Type -> (Maybe Dec) -> Info
+ Language.Haskell.TH.Syntax: VarI :: Name -> Type -> Maybe Dec -> Info
- Language.Haskell.TH.Syntax: type CharPos = (Int, Int) Line and character position
+ Language.Haskell.TH.Syntax: type CharPos = (Int, Int) " Line and character position"
- Language.Haskell.TH.Syntax: type Cxt = [Pred] @(Eq a, Ord b)@
+ Language.Haskell.TH.Syntax: type Cxt = [Pred] " @(Eq a, Ord b)@"

Files

Language/Haskell/TH/Lib.hs view
@@ -21,7 +21,7 @@         StmtQ, RangeQ, SourceStrictnessQ, SourceUnpackednessQ, BangQ,         BangTypeQ, VarBangTypeQ, StrictTypeQ, VarStrictTypeQ, FieldExpQ, PatQ,         FieldPatQ, RuleBndrQ, TySynEqnQ, PatSynDirQ, PatSynArgsQ,-        FamilyResultSigQ,+        FamilyResultSigQ, DerivStrategyQ,      -- ** Constructors lifted to 'Q'     -- *** Literals@@ -79,7 +79,9 @@     -- *** Top Level Declarations     -- **** Data     valD, funD, tySynD, dataD, newtypeD,-    derivClause, DerivClause(..), DerivStrategy(..),+    derivClause, DerivClause(..),+    stockStrategy, anyclassStrategy, newtypeStrategy,+    viaStrategy, DerivStrategy(..),     -- **** Class     classD, instanceD, instanceWithOverlapD, Overlap(..),     sigD, standaloneDerivD, standaloneDerivWithStrategyD, defaultSigD,@@ -140,6 +142,9 @@   , kindSig   , tyVarSig +  , derivClause+  , standaloneDerivWithStrategyD+   , Role   , InjectivityAnn   )@@ -262,3 +267,17 @@  tyVarSig :: TyVarBndr -> FamilyResultSig tyVarSig = TyVarSig++-------------------------------------------------------------------------------+-- * Top Level Declarations++derivClause :: Maybe DerivStrategy -> [PredQ] -> DerivClauseQ+derivClause mds p = do+  p' <- cxt p+  return $ DerivClause mds p'++standaloneDerivWithStrategyD :: Maybe DerivStrategy -> CxtQ -> TypeQ -> DecQ+standaloneDerivWithStrategyD mds ctxt ty = do+  ctxt' <- ctxt+  ty'   <- ty+  return $ StandaloneDerivD mds ctxt' ty'
Language/Haskell/TH/Lib/Internal.hs view
@@ -57,6 +57,7 @@ type PatSynDirQ          = Q PatSynDir type PatSynArgsQ         = Q PatSynArgs type FamilyResultSigQ    = Q FamilyResultSig+type DerivStrategyQ      = Q DerivStrategy  -- must be defined here for DsMeta to find it type Role                = TH.Role@@ -533,12 +534,13 @@ standaloneDerivD :: CxtQ -> TypeQ -> DecQ standaloneDerivD = standaloneDerivWithStrategyD Nothing -standaloneDerivWithStrategyD :: Maybe DerivStrategy -> CxtQ -> TypeQ -> DecQ-standaloneDerivWithStrategyD ds ctxtq tyq =+standaloneDerivWithStrategyD :: Maybe DerivStrategyQ -> CxtQ -> TypeQ -> DecQ+standaloneDerivWithStrategyD mdsq ctxtq tyq =   do+    mds  <- sequenceA mdsq     ctxt <- ctxtq     ty   <- tyq-    return $ StandaloneDerivD ds ctxt ty+    return $ StandaloneDerivD mds ctxt ty  defaultSigD :: Name -> TypeQ -> DecQ defaultSigD n tyq =@@ -570,9 +572,22 @@ cxt :: [PredQ] -> CxtQ cxt = sequence -derivClause :: Maybe DerivStrategy -> [PredQ] -> DerivClauseQ-derivClause ds p = do p' <- cxt p-                      return $ DerivClause ds p'+derivClause :: Maybe DerivStrategyQ -> [PredQ] -> DerivClauseQ+derivClause mds p = do mds' <- sequenceA mds+                       p'   <- cxt p+                       return $ DerivClause mds' p'++stockStrategy :: DerivStrategyQ+stockStrategy = pure StockStrategy++anyclassStrategy :: DerivStrategyQ+anyclassStrategy = pure AnyclassStrategy++newtypeStrategy :: DerivStrategyQ+newtypeStrategy = pure NewtypeStrategy++viaStrategy :: TypeQ -> DerivStrategyQ+viaStrategy = fmap ViaStrategy  normalC :: Name -> [BangTypeQ] -> ConQ normalC con strtys = liftM (NormalC con) $ sequence strtys
Language/Haskell/TH/Ppr.hs view
@@ -20,10 +20,11 @@ nestDepth = 4  type Precedence = Int-appPrec, unopPrec, opPrec, noPrec :: Precedence-appPrec  = 3    -- Argument of a function application-opPrec   = 2    -- Argument of an infix operator-unopPrec = 1    -- Argument of an unresolved infix operator+appPrec, opPrec, unopPrec, sigPrec, noPrec :: Precedence+appPrec  = 4    -- Argument of a function application+opPrec   = 3    -- Argument of an infix operator+unopPrec = 2    -- Argument of an unresolved infix operator+sigPrec  = 1    -- Argument of an explicit type signature noPrec   = 0    -- Others  parensIf :: Bool -> Doc -> Doc@@ -194,7 +195,8 @@         ss' = init ss pprExp _ (ArithSeqE d) = ppr d pprExp _ (ListE es) = brackets (commaSep es)-pprExp i (SigE e t) = parensIf (i > noPrec) $ ppr e <+> dcolon <+> ppr t+pprExp i (SigE e t) = parensIf (i > noPrec) $ pprExp sigPrec e+                                          <+> dcolon <+> ppr t pprExp _ (RecConE nm fs) = ppr nm <> braces (pprFields fs) pprExp _ (RecUpdE e fs) = pprExp appPrec e <> braces (pprFields fs) pprExp i (StaticE e) = parensIf (i >= appPrec) $@@ -219,9 +221,14 @@  ------------------------------ instance Ppr Match where-    ppr (Match p rhs ds) = ppr p <+> pprBody False rhs+    ppr (Match p rhs ds) = pprMatchPat p <+> pprBody False rhs                         $$ where_clause ds +pprMatchPat :: Pat -> Doc+-- Everything except pattern signatures bind more tightly than (->)+pprMatchPat p@(SigP {}) = parens (ppr p)+pprMatchPat p           = ppr p+ ------------------------------ pprGuarded :: Doc -> (Guard, Exp) -> Doc pprGuarded eqDoc (guard, expr) = case guard of@@ -381,11 +388,12 @@   = pprPatSynSig name ty  ppr_deriv_strategy :: DerivStrategy -> Doc-ppr_deriv_strategy ds = text $+ppr_deriv_strategy ds =   case ds of-    StockStrategy    -> "stock"-    AnyclassStrategy -> "anyclass"-    NewtypeStrategy  -> "newtype"+    StockStrategy    -> text "stock"+    AnyclassStrategy -> text "anyclass"+    NewtypeStrategy  -> text "newtype"+    ViaStrategy ty   -> text "via" <+> pprParendType ty  ppr_overlap :: Overlap -> Doc ppr_overlap o = text $@@ -445,8 +453,16 @@  ppr_deriv_clause :: DerivClause -> Doc ppr_deriv_clause (DerivClause ds ctxt)-  = text "deriving" <+> maybe empty ppr_deriv_strategy ds+  = text "deriving" <+> pp_strat_before                     <+> ppr_cxt_preds ctxt+                    <+> pp_strat_after+  where+    -- @via@ is unique in that in comes /after/ the class being derived,+    -- so we must special-case it.+    (pp_strat_before, pp_strat_after) =+      case ds of+        Just (via@ViaStrategy{}) -> (empty, ppr_deriv_strategy via)+        _                        -> (maybe empty ppr_deriv_strategy ds, empty)  ppr_tySyn :: Doc -> Name -> Doc -> Type -> Doc ppr_tySyn maybeInst t argsDoc rhs
Language/Haskell/TH/Syntax.hs view
@@ -84,9 +84,11 @@    qAddDependentFile :: FilePath -> m () +  qAddTempFile :: String -> m FilePath+   qAddTopDecls :: [Dec] -> m () -  qAddForeignFile :: ForeignSrcLang -> String -> m ()+  qAddForeignFilePath :: ForeignSrcLang -> String -> m ()    qAddModFinalizer :: Q () -> m () @@ -128,8 +130,9 @@   qLocation             = badIO "currentLocation"   qRecover _ _          = badIO "recover" -- Maybe we could fix this?   qAddDependentFile _   = badIO "addDependentFile"+  qAddTempFile _        = badIO "addTempFile"   qAddTopDecls _        = badIO "addTopDecls"-  qAddForeignFile _ _   = badIO "addForeignFile"+  qAddForeignFilePath _ _ = badIO "addForeignFilePath"   qAddModFinalizer _    = badIO "addModFinalizer"   qAddCorePlugin _      = badIO "addCorePlugin"   qGetQ                 = badIO "getQ"@@ -445,11 +448,23 @@ addDependentFile :: FilePath -> Q () addDependentFile fp = Q (qAddDependentFile fp) +-- | Obtain a temporary file path with the given suffix. The compiler will+-- delete this file after compilation.+addTempFile :: String -> Q FilePath+addTempFile suffix = Q (qAddTempFile suffix)+ -- | Add additional top-level declarations. The added declarations will be type -- checked along with the current declaration group. addTopDecls :: [Dec] -> Q () addTopDecls ds = Q (qAddTopDecls ds) +-- |+addForeignFile :: ForeignSrcLang -> String -> Q ()+addForeignFile = addForeignSource+{-# DEPRECATED addForeignFile+               "Use 'Language.Haskell.TH.Syntax.addForeignSource' instead"+  #-} -- deprecated in 8.6+ -- | Emit a foreign file which will be compiled and linked to the object for -- the current module. Currently only languages that can be compiled with -- the C compiler are supported, and the flags passed as part of -optc will@@ -463,13 +478,31 @@ -- -- > {-# LANGUAGE CPP #-} -- > ...--- > addForeignFile LangC $ unlines+-- > addForeignSource LangC $ unlines -- >   [ "#line " ++ show (__LINE__ + 1) ++ " " ++ show __FILE__ -- >   , ... -- >   ]-addForeignFile :: ForeignSrcLang -> String -> Q ()-addForeignFile lang str = Q (qAddForeignFile lang str)+addForeignSource :: ForeignSrcLang -> String -> Q ()+addForeignSource lang src = do+  let suffix = case lang of+                 LangC -> "c"+                 LangCxx -> "cpp"+                 LangObjc -> "m"+                 LangObjcxx -> "mm"+                 RawObject -> "a"+  path <- addTempFile suffix+  runIO $ writeFile path src+  addForeignFilePath lang path +-- | Same as 'addForeignSource', but expects to receive a path pointing to the+-- foreign file instead of a 'String' of its contents. Consider using this in+-- conjunction with 'addTempFile'.+--+-- This is a good alternative to 'addForeignSource' when you are trying to+-- directly link in an object file.+addForeignFilePath :: ForeignSrcLang -> FilePath -> Q ()+addForeignFilePath lang fp = Q (qAddForeignFilePath lang fp)+ -- | Add a finalizer that will run in the Q monad after the current module has -- been type checked. This only makes sense when run within a top-level splice. --@@ -524,8 +557,9 @@   qLookupName         = lookupName   qLocation           = location   qAddDependentFile   = addDependentFile+  qAddTempFile        = addTempFile   qAddTopDecls        = addTopDecls-  qAddForeignFile     = addForeignFile+  qAddForeignFilePath = addForeignFilePath   qAddModFinalizer    = addModFinalizer   qAddCorePlugin      = addCorePlugin   qGetQ               = getQ@@ -697,8 +731,8 @@ falseName = mkNameG DataName "ghc-prim" "GHC.Types" "False"  nothingName, justName :: Name-nothingName = mkNameG DataName "base" "GHC.Base" "Nothing"-justName    = mkNameG DataName "base" "GHC.Base" "Just"+nothingName = mkNameG DataName "base" "GHC.Maybe" "Nothing"+justName    = mkNameG DataName "base" "GHC.Maybe" "Just"  leftName, rightName :: Name leftName  = mkNameG DataName "base" "Data.Either" "Left"@@ -1709,6 +1743,7 @@ data DerivStrategy = StockStrategy    -- ^ A \"standard\" derived instance                    | AnyclassStrategy -- ^ @-XDeriveAnyClass@                    | NewtypeStrategy  -- ^ @-XGeneralizedNewtypeDeriving@+                   | ViaStrategy Type -- ^ @-XDerivingVia@   deriving( Show, Eq, Ord, Data, Generic )  -- | A Pattern synonym's type. Note that a pattern synonym's *fully*
changelog.md view
@@ -1,5 +1,23 @@ # Changelog for [`template-haskell` package](http://hackage.haskell.org/package/template-haskell) +## 2.14.0.0 *August 2018*++  * Introduce an `addForeignFilePath` function, as well as a corresponding+    `qAddForeignFile` class method to `Quasi`. Unlike `addForeignFile`, which+    takes the contents of the file as an argument, `addForeignFilePath` takes+    as an argument a path pointing to a foreign file. A new `addForeignSource`+    function has also been added which takes a file's contents as an argument.++    The old `addForeignFile` function is now deprecated in favor of+    `addForeignSource`, and the `qAddForeignFile` method of `Quasi` has been+    removed entirely.++  * Introduce an `addTempFile` function, as well as a corresponding+    `qAddTempFile` method to `Quasi`, which requests a temporary file of+    a given suffix.++  * Add a `ViaStrategy` constructor to `DerivStrategy`.+ ## 2.13.0.0 *March 2018*    * Bundled with GHC 8.4.1
template-haskell.cabal view
@@ -1,5 +1,5 @@ name:           template-haskell-version:        2.13.0.0+version:        2.14.0.0 -- NOTE: Don't forget to update ./changelog.md license:        BSD3 license-file:   LICENSE@@ -51,8 +51,8 @@         Language.Haskell.TH.Lib.Map      build-depends:-        base        >= 4.9 && < 4.12,-        ghc-boot-th == 8.4.*,+        base        >= 4.9 && < 4.13,+        ghc-boot-th == 8.6.*,         pretty      == 1.1.*      ghc-options: -Wall