module Data.API.TH.Compat where
import Language.Haskell.TH
mkDataD :: Cxt -> Name -> [TyVarBndr] -> [Con] -> [Name] -> Dec
mkDataD cxt1 name tyVarBndrs cons drvs =
#if MIN_VERSION_template_haskell(2,11,0)
DataD cxt1 name tyVarBndrs Nothing cons (map ConT drvs)
#else
DataD cxt1 name tyVarBndrs cons drvs
#endif
mkInstanceD :: Cxt -> Type -> [Dec] -> Dec
mkInstanceD =
#if MIN_VERSION_template_haskell(2,11,0)
InstanceD Nothing
#else
InstanceD
#endif
mkNewtypeD :: Cxt -> Name -> [TyVarBndr] -> Con -> [Name] -> Dec
mkNewtypeD cxt1 name tyVarBndrs cons drvs =
#if MIN_VERSION_template_haskell(2,11,0)
NewtypeD cxt1 name tyVarBndrs Nothing cons (map ConT drvs)
#else
NewtypeD cxt1 name tyVarBndrs cons drvs
#endif
type Strictness =
#if MIN_VERSION_template_haskell(2,11,0)
Bang
#else
Strict
#endif
annIsStrict :: Strictness
annIsStrict =
#if MIN_VERSION_template_haskell(2,11,0)
Bang NoSourceUnpackedness SourceStrict
#else
IsStrict
#endif
annNotStrict :: Strictness
annNotStrict =
#if MIN_VERSION_template_haskell(2,11,0)
Bang NoSourceUnpackedness NoSourceStrictness
#else
NotStrict
#endif