haskell-src-meta 0.8.6 → 0.8.7
raw patch · 7 files changed
+57/−17 lines, 7 filesdep ~template-haskellPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: template-haskell
API changes (from Hackage documentation)
- Language.Haskell.Meta.Syntax.Translate: instance Language.Haskell.Meta.Syntax.Translate.ToName Language.Haskell.TH.Syntax.TyVarBndr
+ Language.Haskell.Meta.Syntax.Translate: instance Language.Haskell.Meta.Syntax.Translate.ToName (Language.Haskell.Meta.Syntax.Translate.TyVarBndr_ flag)
+ Language.Haskell.Meta.Syntax.Translate: toTyVarSpec :: TyVarBndr_ flag -> TyVarBndr_ flag
+ Language.Haskell.Meta.Syntax.Translate: type TyVarBndr_ flag = TyVarBndr
- Language.Haskell.Meta.Syntax.Translate: toTyVar :: TyVarBind l -> TyVarBndr
+ Language.Haskell.Meta.Syntax.Translate: toTyVar :: TyVarBind l -> TyVarBndr_ ()
- Language.Haskell.Meta.Syntax.Translate: toTyVars :: ToTyVars a => a -> [TyVarBndr]
+ Language.Haskell.Meta.Syntax.Translate: toTyVars :: ToTyVars a => a -> [TyVarBndr_ ()]
- Language.Haskell.Meta.Utils: decTyVars :: Dec -> [TyVarBndr]
+ Language.Haskell.Meta.Utils: decTyVars :: Dec -> [TyVarBndr_ ()]
Files
- ChangeLog +3/−0
- examples/BF.hs +3/−1
- examples/HsHere.hs +7/−7
- examples/SKI.hs +3/−1
- haskell-src-meta.cabal +2/−2
- src/Language/Haskell/Meta/Syntax/Translate.hs +34/−5
- src/Language/Haskell/Meta/Utils.hs +5/−1
ChangeLog view
@@ -1,3 +1,6 @@+0.8.7:+- Compatibility with template-haskell shipped with GHC 9.0+ 0.8.6: - Add TypeApplications to default extensions
examples/BF.hs view
@@ -67,7 +67,9 @@ lift MovR = [|MovR|] lift (While xs) = [|While $(lift xs)|] -#if MIN_VERSION_template_haskell(2,16,0)+#if MIN_VERSION_template_haskell(2,17,0)+ liftTyped = unsafeCodeCoerce . lift+#elif MIN_VERSION_template_haskell(2,16,0) liftTyped = unsafeTExpCoerce . lift -- TODO: get stylish haskell to be happy w/ the below -- liftTyped Inp = [||Inp||]
examples/HsHere.hs view
@@ -60,15 +60,15 @@ ,quotePat = herePatQ} instance Lift Here where- lift = liftHere-#if MIN_VERSION_template_haskell(2,16,0)+ lift (TextH s) = (litE . stringL) s+ lift (CodeH e) = [|show $(return e)|]+ lift (ManyH hs) = [|concat $(listE (fmap lift hs))|]++#if MIN_VERSION_template_haskell(2,17,0)+ liftTyped = unsafeCodeCoerce . lift+#elif MIN_VERSION_template_haskell(2,16,0) liftTyped = unsafeTExpCoerce . lift -- TODO: the right way? #endif--liftHere :: Here -> ExpQ-liftHere (TextH s) = (litE . stringL) s-liftHere (CodeH e) = [|show $(return e)|]-liftHere (ManyH hs) = [|concat $(listE (fmap liftHere hs))|] hereExpQ :: String -> ExpQ
examples/SKI.hs view
@@ -71,7 +71,9 @@ instance Lift SKI where lift = liftSKI-#if MIN_VERSION_template_haskell(2,16,0)+#if MIN_VERSION_template_haskell(2,17,0)+ liftTyped = unsafeCodeCoerce . lift+#elif MIN_VERSION_template_haskell(2,16,0) liftTyped = unsafeTExpCoerce . lift -- TODO: the right way? #endif
haskell-src-meta.cabal view
@@ -1,5 +1,5 @@ name: haskell-src-meta-version: 0.8.6+version: 0.8.7 cabal-version: >= 1.10 build-type: Simple license: BSD3@@ -22,7 +22,7 @@ haskell-src-exts >= 1.18 && < 1.24, pretty >= 1.0 && < 1.2, syb >= 0.1 && < 0.8,- template-haskell >= 2.10 && < 2.17,+ template-haskell >= 2.10 && < 2.18, th-orphans >= 0.12 && < 0.14 if impl(ghc < 7.8)
src/Language/Haskell/Meta/Syntax/Translate.hs view
@@ -20,10 +20,16 @@ import qualified Data.List as List import qualified Language.Haskell.Exts.SrcLoc as Exts.SrcLoc import qualified Language.Haskell.Exts.Syntax as Exts+import qualified Language.Haskell.TH.Lib as TH import qualified Language.Haskell.TH.Syntax as TH ----------------------------------------------------------------------------- +#if MIN_VERSION_template_haskell(2,17,0)+type TyVarBndr_ flag = TH.TyVarBndr flag+#else+type TyVarBndr_ flag = TH.TyVarBndr+#endif class ToName a where toName :: a -> TH.Name class ToNames a where toNames :: a -> [TH.Name]@@ -37,7 +43,7 @@ class ToLoc a where toLoc :: a -> TH.Loc class ToCxt a where toCxt :: a -> TH.Cxt class ToPred a where toPred :: a -> TH.Pred-class ToTyVars a where toTyVars :: a -> [TH.TyVarBndr]+class ToTyVars a where toTyVars :: a -> [TyVarBndr_ ()] class ToMaybeKind a where toMaybeKind :: a -> Maybe TH.Kind #if MIN_VERSION_template_haskell(2,11,0) class ToInjectivityAnn a where toInjectivityAnn :: a -> TH.InjectivityAnn@@ -279,7 +285,11 @@ toExp (Exts.If _ a b c) = TH.CondE (toExp a) (toExp b) (toExp c) toExp (Exts.MultiIf _ ifs) = TH.MultiIfE (map toGuard ifs) toExp (Exts.Case _ e alts) = TH.CaseE (toExp e) (map toMatch alts)+#if MIN_VERSION_template_haskell(2,17,0)+ toExp (Exts.Do _ ss) = TH.DoE Nothing (map toStmt ss)+#else toExp (Exts.Do _ ss) = TH.DoE (map toStmt ss)+#endif toExp e@Exts.MDo{} = noTH "toExp" e toExp (Exts.Tuple _ Exts.Boxed xs) = TH.TupE (fmap toTupEl xs) toExp (Exts.Tuple _ Exts.Unboxed xs) = TH.UnboxedTupE (fmap toTupEl xs)@@ -347,9 +357,14 @@ instance ToName TH.Name where toName = id -instance ToName TH.TyVarBndr where+instance ToName (TyVarBndr_ flag) where+#if MIN_VERSION_template_haskell(2,17,0)+ toName (TH.PlainTV n _) = n+ toName (TH.KindedTV n _ _) = n+#else toName (TH.PlainTV n) = n toName (TH.KindedTV n _) = n+#endif #if !MIN_VERSION_haskell_src_exts(1,21,0) instance ToType (Exts.Kind l) where@@ -375,12 +390,26 @@ toKind :: Exts.Kind l -> TH.Kind toKind = toType -toTyVar :: Exts.TyVarBind l -> TH.TyVarBndr+toTyVar :: Exts.TyVarBind l -> TyVarBndr_ ()+#if MIN_VERSION_template_haskell(2,17,0)+toTyVar (Exts.KindedVar _ n k) = TH.KindedTV (toName n) () (toKind k)+toTyVar (Exts.UnkindedVar _ n) = TH.PlainTV (toName n) ()+#else toTyVar (Exts.KindedVar _ n k) = TH.KindedTV (toName n) (toKind k) toTyVar (Exts.UnkindedVar _ n) = TH.PlainTV (toName n)+#endif +#if MIN_VERSION_template_haskell(2,17,0)+toTyVarSpec :: TyVarBndr_ () -> TH.TyVarBndrSpec+toTyVarSpec (TH.KindedTV n () k) = TH.KindedTV n TH.SpecifiedSpec k+toTyVarSpec (TH.PlainTV n ()) = TH.PlainTV n TH.SpecifiedSpec+#else+toTyVarSpec :: TyVarBndr_ flag -> TyVarBndr_ flag+toTyVarSpec = id+#endif+ instance ToType (Exts.Type l) where- toType (Exts.TyForall _ tvbM cxt t) = TH.ForallT (maybe [] (fmap toTyVar) tvbM) (toCxt cxt) (toType t)+ toType (Exts.TyForall _ tvbM cxt t) = TH.ForallT (maybe [] (fmap (toTyVarSpec . toTyVar)) tvbM) (toCxt cxt) (toType t) toType (Exts.TyFun _ a b) = toType a .->. toType b toType (Exts.TyList _ t) = TH.ListT `TH.AppT` toType t toType (Exts.TyTuple _ b ts) = foldAppT (tuple . length $ ts) (fmap toType ts)@@ -713,7 +742,7 @@ qualConDeclToCon :: Exts.QualConDecl l -> TH.Con qualConDeclToCon (Exts.QualConDecl _ Nothing Nothing cdecl) = conDeclToCon cdecl-qualConDeclToCon (Exts.QualConDecl _ ns cxt cdecl) = TH.ForallC (toTyVars ns)+qualConDeclToCon (Exts.QualConDecl _ ns cxt cdecl) = TH.ForallC (toTyVarSpec <$> toTyVars ns) (toCxt cxt) (conDeclToCon cdecl)
src/Language/Haskell/Meta/Utils.hs view
@@ -161,7 +161,11 @@ (t',env4,new4) = renameT env3 new3 t in (ForallT ns'' cxt' t', env4, new4) where+#if MIN_VERSION_template_haskell(2,17,0)+ unVarT (VarT n) = PlainTV n SpecifiedSpec+#else unVarT (VarT n) = PlainTV n+#endif unVarT ty = error $ "renameT: unVarT: TODO for" ++ show ty renamePreds = renameThings renamePred renamePred = renameT@@ -230,7 +234,7 @@ decCons _ = [] -decTyVars :: Dec -> [TyVarBndr]+decTyVars :: Dec -> [TyVarBndr_ ()] #if MIN_VERSION_template_haskell(2,11,0) decTyVars (DataD _ _ ns _ _ _) = ns decTyVars (NewtypeD _ _ ns _ _ _) = ns