summaryrefslogtreecommitdiff
path: root/libraries/template-haskell/Language/Haskell/TH/Lib.hs
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/template-haskell/Language/Haskell/TH/Lib.hs')
-rw-r--r--libraries/template-haskell/Language/Haskell/TH/Lib.hs23
1 files changed, 21 insertions, 2 deletions
diff --git a/libraries/template-haskell/Language/Haskell/TH/Lib.hs b/libraries/template-haskell/Language/Haskell/TH/Lib.hs
index dbf01f11df..b7966cefac 100644
--- a/libraries/template-haskell/Language/Haskell/TH/Lib.hs
+++ b/libraries/template-haskell/Language/Haskell/TH/Lib.hs
@@ -21,7 +21,7 @@ module Language.Haskell.TH.Lib (
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 @@ module Language.Haskell.TH.Lib (
-- *** 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 @@ import Language.Haskell.TH.Lib.Internal hiding
, kindSig
, tyVarSig
+ , derivClause
+ , standaloneDerivWithStrategyD
+
, Role
, InjectivityAnn
)
@@ -262,3 +267,17 @@ kindSig = KindSig
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'