packages feed

haskell-src-meta 0.8.7 → 0.8.7.1

raw patch · 8 files changed

+113/−229 lines, 8 filesdep −faildep −safedep ~basedep ~haskell-src-extsdep ~template-haskellnew-uploaderPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies removed: fail, safe

Dependency ranges changed: base, haskell-src-exts, template-haskell

API changes (from Hackage documentation)

- Language.Haskell.Meta.Syntax.Translate: instance Language.Haskell.Meta.Syntax.Translate.ToName (Language.Haskell.Meta.Syntax.Translate.TyVarBndr_ flag)
+ Language.Haskell.Meta.Syntax.Translate: instance Language.Haskell.Meta.Syntax.Translate.ToName (Language.Haskell.Meta.THCompat.TyVarBndr_ flag)

Files

ChangeLog view
@@ -1,3 +1,7 @@+0.8.7.1+- Build on GHC 9.2+- Drop support for GHC < 8.2+ 0.8.7: - Compatibility with template-haskell shipped with GHC 9.0 
haskell-src-meta.cabal view
@@ -1,5 +1,5 @@ name:               haskell-src-meta-version:            0.8.7+version:            0.8.7.1 cabal-version:      >= 1.10 build-type:         Simple license:            BSD3@@ -8,8 +8,8 @@ author:             Matt Morrow copyright:          (c) Matt Morrow maintainer:         danburton.email@gmail.com-bug-reports:        https://github.com/DanBurton/haskell-src-meta/issues-tested-with:        GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.1+bug-reports:        https://github.com/haskell-party/haskell-src-meta/issues+tested-with:        GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.7, GHC == 9.0.2, GHC == 9.2.1 synopsis:           Parse source to template-haskell abstract syntax. description:        The translation from haskell-src-exts abstract syntax                     to template-haskell abstract syntax isn't 100% complete yet.@@ -18,21 +18,19 @@  library   default-language: Haskell2010-  build-depends:   base >= 4.8 && < 5,+  build-depends:   base >= 4.10 && < 5,                    haskell-src-exts >= 1.18 && < 1.24,                    pretty >= 1.0 && < 1.2,                    syb >= 0.1 && < 0.8,-                   template-haskell >= 2.10 && < 2.18,+                   template-haskell >= 2.12 && < 2.19,                    th-orphans >= 0.12 && < 0.14 -  if impl(ghc < 7.8)-    build-depends: safe <= 0.3.9-   hs-source-dirs:  src   exposed-modules: Language.Haskell.Meta                    Language.Haskell.Meta.Parse                    Language.Haskell.Meta.Syntax.Translate                    Language.Haskell.Meta.Utils+  other-modules:   Language.Haskell.Meta.THCompat  test-suite unit   default-language: Haskell2010@@ -42,20 +40,15 @@    build-depends:     HUnit                >= 1.2,-    base                 >= 4.5,+    base                 >= 4.10,     haskell-src-exts     >= 1.17,     haskell-src-meta,     pretty               >= 1.0,-    template-haskell     >= 2.10,+    template-haskell     >= 2.12,     tasty,     tasty-hunit -  -- this is needed to access Control.Monad.Fail on GHCs before 8.0-  if !impl(ghc >= 8.0)-    Build-Depends:-      fail == 4.9.* - test-suite splices   default-language: Haskell2010   type:             exitcode-stdio-1.0@@ -82,12 +75,7 @@     syb,     template-haskell -  -- this is needed to access Control.Monad.Fail on GHCs before 8.0-  if !impl(ghc >= 8.0)-    Build-Depends:-      fail == 4.9.* -   other-modules:     BF,     Hs,@@ -96,4 +84,4 @@  source-repository head   type:     git-  location: git://github.com/danburton/haskell-src-meta.git+  location: git://github.com/haskell-party/haskell-src-meta.git
src/Language/Haskell/Meta/Parse.hs view
@@ -29,11 +29,6 @@   emptyHsModule  ) where -#if MIN_VERSION_template_haskell(2,11,0)-import Language.Haskell.TH.Syntax hiding (Extension (..))-#else-import Language.Haskell.TH.Syntax-#endif import           Language.Haskell.Exts.Extension import           Language.Haskell.Exts.Parser           hiding   (parseExp, parsePat, parseType)@@ -41,6 +36,7 @@ import qualified Language.Haskell.Exts.SrcLoc           as Hs import qualified Language.Haskell.Exts.Syntax           as Hs import           Language.Haskell.Meta.Syntax.Translate+import           Language.Haskell.TH.Syntax             hiding (Extension (..))  ----------------------------------------------------------------------------- 
src/Language/Haskell/Meta/Syntax/Translate.hs view
@@ -14,23 +14,20 @@  module Language.Haskell.Meta.Syntax.Translate (     module Language.Haskell.Meta.Syntax.Translate+  , TyVarBndr_ ) where -import qualified Data.Char                    as Char-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+import qualified Data.Char                      as Char+import qualified Data.List                      as List+import qualified Language.Haskell.Exts.SrcLoc   as Exts.SrcLoc+import qualified Language.Haskell.Exts.Syntax   as Exts+import           Language.Haskell.Meta.THCompat (TyVarBndr_)+import qualified Language.Haskell.Meta.THCompat as Compat+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] class ToLit  a where toLit  :: a -> TH.Lit@@ -45,17 +42,9 @@ class ToPred a where toPred :: a -> TH.Pred 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-#endif -#if MIN_VERSION_template_haskell(2,12,0) type DerivClause = TH.DerivClause-#elif MIN_VERSION_template_haskell(2,11,0)-type DerivClause = TH.Pred-#else-type DerivClause = TH.Name-#endif  class ToDerivClauses a where toDerivClauses :: a -> [DerivClause] @@ -208,7 +197,6 @@  -- * ToPat HsPat - instance ToPat (Exts.Pat l) where   toPat (Exts.PVar _ n)     = TH.VarP (toName n)@@ -222,7 +210,7 @@     TH.DoublePrimL r'' -> TH.DoublePrimL (negate r'')     _                  -> nonsense "toPat" "negating wrong kind of literal" l   toPat (Exts.PInfixApp _ p n q) = TH.UInfixP (toPat p) (toName n) (toPat q)-  toPat (Exts.PApp _ n ps) = TH.ConP (toName n) (fmap toPat ps)+  toPat (Exts.PApp _ n ps) = Compat.conP (toName n) (fmap toPat ps)   toPat (Exts.PTuple _ Exts.Boxed ps) = TH.TupP (fmap toPat ps)   toPat (Exts.PTuple _ Exts.Unboxed ps) = TH.UnboxedTupP (fmap toPat ps)   toPat (Exts.PList _ ps) = TH.ListP (fmap toPat ps)@@ -273,11 +261,7 @@   toExp (Exts.Con _ n)                 = TH.ConE (toName n)   toExp (Exts.Lit _ l)                 = TH.LitE (toLit l)   toExp (Exts.InfixApp _ e o f)        = TH.UInfixE (toExp e) (toExp o) (toExp f)-#if MIN_VERSION_template_haskell(2,12,0)   toExp (Exts.App _ e (Exts.TypeApp _ t)) = TH.AppTypeE (toExp e) (toType t)-#else-  toExp (Exts.App _ _ e@Exts.TypeApp{}) = noTHyet "toExp" "2.12.0" e-#endif   toExp (Exts.App _ e f)               = TH.AppE (toExp e) (toExp f)   toExp (Exts.NegApp _ e)              = TH.AppE (TH.VarE 'negate) (toExp e)   toExp (Exts.Lambda _ ps e)           = TH.LamE (fmap toPat ps) (toExp e)@@ -357,13 +341,13 @@ instance ToName TH.Name where   toName = id -instance ToName (TyVarBndr_ flag) where+instance ToName (Compat.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+  toName (TH.PlainTV n)      = n+  toName (TH.KindedTV n _)   = n #endif  #if !MIN_VERSION_haskell_src_exts(1,21,0)@@ -402,7 +386,7 @@ #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+toTyVarSpec (TH.PlainTV n ())    = TH.PlainTV n TH.SpecifiedSpec #else toTyVarSpec :: TyVarBndr_ flag -> TyVarBndr_ flag toTyVarSpec = id@@ -451,7 +435,6 @@   -- toType (Exts.TyInfix _ _ (Exts.PromotedName _ _) _)  toStrictType :: Exts.Type l -> TH.StrictType-#if MIN_VERSION_template_haskell(2,11,0) toStrictType (Exts.TyBang _ s u t) = (TH.Bang (toUnpack u) (toStrict s), toType t)     where       toStrict (Exts.LazyTy _)        = TH.SourceLazy@@ -461,19 +444,6 @@       toUnpack (Exts.NoUnpack _)       = TH.SourceNoUnpack       toUnpack (Exts.NoUnpackPragma _) = TH.NoSourceUnpackedness toStrictType x = (TH.Bang TH.NoSourceUnpackedness TH.NoSourceStrictness, toType x)-#else--- TODO: what is this comment? Outdated?--- TyBang l (BangType l) (Unpackedness l) (Type l)--- data BangType l = BangedTy l        | LazyTy l | NoStrictAnnot l--- data Unpackedness l = Unpack l | NoUnpack l | NoUnpackPragma l-toStrictType (Exts.TyBang _ b u t) = (toStrict b u, toType t)-    where-      toStrict :: Exts.BangType l -> Exts.Unpackedness l -> TH.Strict-      toStrict (Exts.BangedTy _) _ = TH.IsStrict-      toStrict _ (Exts.Unpack _)   = TH.Unpacked-      toStrict _ _                 = TH.NotStrict-toStrictType x = (TH.NotStrict, toType x)-#endif  (.->.) :: TH.Type -> TH.Type -> TH.Type a .->. b = TH.AppT (TH.AppT TH.ArrowT a) b@@ -496,26 +466,11 @@     -- toPred p = todo "toPred" p  instance ToDerivClauses (Exts.Deriving l) where-#if MIN_VERSION_template_haskell(2,12,0) #if MIN_VERSION_haskell_src_exts(1,20,0)   toDerivClauses (Exts.Deriving _ strat irules) = [TH.DerivClause (fmap toDerivStrategy strat) (map toType irules)] #else   toDerivClauses (Exts.Deriving _ irules) = [TH.DerivClause Nothing (map toType irules)] #endif-#elif MIN_VERSION_template_haskell(2,11,0)-#if MIN_VERSION_haskell_src_exts(1,20,0)-  toDerivClauses (Exts.Deriving _ _ irules) = map toType irules-#else-  toDerivClauses (Exts.Deriving _ irules) = map toType irules-#endif-#else--- template-haskell < 2.11-#if MIN_VERSION_haskell_src_exts(1,20,0)-  toDerivClauses (Exts.Deriving _ _ irules) = concatMap toNames irules-#else-  toDerivClauses (Exts.Deriving _ irules) = concatMap toNames irules-#endif-#endif  instance ToDerivClauses a => ToDerivClauses (Maybe a) where   toDerivClauses Nothing  = []@@ -525,22 +480,17 @@   toDerivClauses = concatMap toDerivClauses  -#if MIN_VERSION_template_haskell(2,12,0) && MIN_VERSION_haskell_src_exts(1,20,0) toDerivStrategy :: (Exts.DerivStrategy l) -> TH.DerivStrategy toDerivStrategy (Exts.DerivStock _)    = TH.StockStrategy toDerivStrategy (Exts.DerivAnyclass _) = TH.AnyclassStrategy toDerivStrategy (Exts.DerivNewtype _)  = TH.NewtypeStrategy-#if MIN_VERSION_haskell_src_exts(1,21,0)-#if MIN_VERSION_template_haskell(2,14,0)+#if MIN_VERSION_haskell_src_exts(1,21,0) && MIN_VERSION_template_haskell(2,14,0) toDerivStrategy (Exts.DerivVia _ t)    = TH.ViaStrategy (toType t) #else toDerivStrategy d@Exts.DerivVia{}      = noTHyet "toDerivStrategy" "2.14" d #endif-#endif -#endif - -- TODO LumiGuide -- instance ToCxt (Hs.Deriving l) where -- #if MIN_VERSION_haskell_src_exts(1,20,1)@@ -584,9 +534,7 @@         Exts.DataType _ -> TH.DataD (toCxt cxt)                              (toName h)                              (toTyVars h)-#if MIN_VERSION_template_haskell(2,11,0)                              Nothing-#endif                              (fmap qualConDeclToCon qcds)                              (toDerivClauses qns)         Exts.NewType _  -> let qcd = case qcds of@@ -596,9 +544,7 @@                         in TH.NewtypeD (toCxt cxt)                                     (toName h)                                     (toTyVars h)-#if MIN_VERSION_template_haskell(2,11,0)                                     Nothing-#endif                                     (qualConDeclToCon qcd)                                     (toDerivClauses qns) @@ -616,7 +562,6 @@    where     inline | b = TH.Inline | otherwise = TH.NoInline -#if MIN_VERSION_template_haskell(2,11,0)   toDec (Exts.TypeFamDecl _ h sig inj)     = TH.OpenTypeFamilyD $ TH.TypeFamilyHead (toName h)                                        (toTyVars h)@@ -624,12 +569,6 @@                                        (fmap toInjectivityAnn inj)   toDec (Exts.DataFamDecl _ _ h sig)     = TH.DataFamilyD (toName h) (toTyVars h) (toMaybeKind sig)-#else-  toDec (Exts.TypeFamDecl _ h sig inj)-    = TH.FamilyD TH.TypeFam (toName h) (toTyVars h) (toMaybeKind sig)-  toDec (Exts.DataFamDecl _ _ h sig)-    = TH.FamilyD TH.DataFam (toName h) (toTyVars h) (toMaybeKind sig)-#endif    toDec _a@(Exts.FunBind _ mtchs)                           = hsMatchesToFunD mtchs   toDec (Exts.PatBind _ p rhs bnds)                      = TH.ValD (toPat p)@@ -642,18 +581,11 @@   -- the 'vars' bit seems to be for: instance forall a. C (T a) where ...   -- TH's own parser seems to flat-out ignore them, and honestly I can't see   -- that it's obviously wrong to do so.-#if MIN_VERSION_template_haskell(2,11,0)   toDec (Exts.InstDecl _ Nothing irule ids) = TH.InstanceD     Nothing     (toCxt irule)     (toType irule)     (toDecs ids)-#else-  toDec (Exts.InstDecl _ Nothing irule ids) = TH.InstanceD-    (toCxt irule)-    (toType irule)-    (toDecs ids)-#endif    toDec (Exts.ClassDecl _ cxt h fds decls) = TH.ClassD     (toCxt cxt)@@ -674,10 +606,8 @@     toMaybeKind Nothing  = Nothing     toMaybeKind (Just a) = toMaybeKind a -#if MIN_VERSION_template_haskell(2,11,0) instance ToInjectivityAnn (Exts.InjectivityInfo l) where   toInjectivityAnn (Exts.InjectivityInfo _ n ns) = TH.InjectivityAnn (toName n) (fmap toName ns)-#endif  transAct :: Maybe (Exts.Activation l) -> TH.Phases transAct Nothing                       = TH.AllPhases
+ src/Language/Haskell/Meta/THCompat.hs view
@@ -0,0 +1,30 @@+{-# LANGUAGE CPP #-}+module Language.Haskell.Meta.THCompat (+    module Language.Haskell.Meta.THCompat+) where++import Language.Haskell.TH.Syntax+++conP :: Name -> [Pat] -> Pat+#if MIN_VERSION_template_haskell(2,18,0)+conP name = ConP name []+#else+conP = ConP+#endif+++#if MIN_VERSION_template_haskell(2,17,0)+plainTV :: Name -> TyVarBndr Specificity+plainTV n = PlainTV n SpecifiedSpec+#else+plainTV :: Name -> TyVarBndr+plainTV = PlainTV+#endif+++#if MIN_VERSION_template_haskell(2,17,0)+type TyVarBndr_ flag = TyVarBndr flag+#else+type TyVarBndr_ flag = TyVarBndr+#endif
src/Language/Haskell/Meta/Utils.hs view
@@ -12,22 +12,59 @@ -- | This module is a staging ground -- for to-be-organized-and-merged-nicely code. -module Language.Haskell.Meta.Utils where+module Language.Haskell.Meta.Utils (+    module Language.Haskell.Meta.Utils+) where -import Control.Monad-import Data.Generics                hiding (Fixity)-import Data.List                    (findIndex)-import Language.Haskell.Exts.Pretty (prettyPrint)-import Language.Haskell.Meta-import Language.Haskell.TH.Lib      hiding (cxt)-import Language.Haskell.TH.Ppr-import Language.Haskell.TH.Syntax-import System.IO.Unsafe             (unsafePerformIO)-import Text.PrettyPrint+import           Control.Monad+import           Data.Generics                  hiding (Fixity)+import           Data.List                      (findIndex)+import           Language.Haskell.Exts.Pretty   (prettyPrint)+import           Language.Haskell.Meta+import qualified Language.Haskell.Meta.THCompat as Compat (conP, plainTV)+import           Language.Haskell.TH.Lib        hiding (cxt)+import           Language.Haskell.TH.Ppr+import           Language.Haskell.TH.Syntax+import           System.IO.Unsafe               (unsafePerformIO)+import           Text.PrettyPrint  ----------------------------------------------------------------------------- +dataDCons :: Dec -> [Con]+dataDCons (DataD _ _ _ _ cons _) = cons+dataDCons _                      = [] ++decCons :: Dec -> [Con]+decCons (DataD _ _ _ _ cons _)   = cons+decCons (NewtypeD _ _ _ _ con _) = [con]+decCons _                        = []+++decTyVars :: Dec -> [TyVarBndr_ ()]+decTyVars (DataD _ _ ns _ _ _)    = ns+decTyVars (NewtypeD _ _ ns _ _ _) = ns+decTyVars (TySynD _ ns _)         = ns+decTyVars (ClassD _ _ ns _ _)     = ns+decTyVars _                       = []+++decName :: Dec -> Maybe Name+decName (FunD n _)             = Just n+decName (DataD _ n _ _ _ _)    = Just n+decName (NewtypeD _ n _ _ _ _) = Just n+decName (TySynD n _ _)         = Just n+decName (ClassD _ n _ _ _)     = Just n+decName (SigD n _)             = Just n+decName (ForeignD fgn)         = Just (foreignName fgn)+decName _                      = Nothing+++foreignName :: Foreign -> Name+foreignName (ImportF _ _ _ n _) = n+foreignName (ExportF _ _ n _)   = n++ cleanNames :: (Data a) => a -> a cleanNames = everywhere (mkT cleanName)   where cleanName :: Name -> Name@@ -161,11 +198,7 @@         (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 (VarT n) = Compat.plainTV n     unVarT ty       = error $ "renameT: unVarT: TODO for" ++ show ty     renamePreds = renameThings renamePred     renamePred = renameT@@ -223,51 +256,7 @@   -decCons :: Dec -> [Con]-#if MIN_VERSION_template_haskell(2,11,0)-decCons (DataD _ _ _ _ cons _)   = cons-decCons (NewtypeD _ _ _ _ con _) = [con]-#else-decCons (DataD _ _ _ cons _)     = cons-decCons (NewtypeD _ _ _ con _)   = [con]-#endif-decCons _                        = [] --decTyVars :: Dec -> [TyVarBndr_ ()]-#if MIN_VERSION_template_haskell(2,11,0)-decTyVars (DataD _ _ ns _ _ _)    = ns-decTyVars (NewtypeD _ _ ns _ _ _) = ns-#else-decTyVars (DataD _ _ ns _ _)      = ns-decTyVars (NewtypeD _ _ ns _ _)   = ns-#endif-decTyVars (TySynD _ ns _)         = ns-decTyVars (ClassD _ _ ns _ _)     = ns-decTyVars _                       = []---decName :: Dec -> Maybe Name-decName (FunD n _)             = Just n-#if MIN_VERSION_template_haskell(2,11,0)-decName (DataD _ n _ _ _ _)    = Just n-decName (NewtypeD _ n _ _ _ _) = Just n-#else-decName (DataD _ n _ _ _)      = Just n-decName (NewtypeD _ n _ _ _)   = Just n-#endif-decName (TySynD n _ _)         = Just n-decName (ClassD _ n _ _ _)     = Just n-decName (SigD n _)             = Just n-decName (ForeignD fgn)         = Just (foreignName fgn)-decName _                      = Nothing---foreignName :: Foreign -> Name-foreignName (ImportF _ _ _ n _) = n-foreignName (ExportF _ _ n _)   = n-- unwindT :: Type -> [Type] unwindT = go   where go :: Type -> [Type]@@ -319,36 +308,18 @@ recCName (RecC n _) = Just n recCName _          = Nothing -dataDCons :: Dec -> [Con]-#if MIN_VERSION_template_haskell(2,11,0)-dataDCons (DataD _ _ _ _ cons _) = cons-#else-dataDCons (DataD _ _ _ cons _)   = cons-#endif-dataDCons _                      = []- fromDataConI :: Info -> Q (Maybe Exp)-#if MIN_VERSION_template_haskell(2,11,0) fromDataConI (DataConI dConN ty _tyConN) =   let n = arityT ty   in replicateM n (newName "a")       >>= \ns -> return (Just (LamE-                    [ConP dConN (fmap VarP ns)]+                    [Compat.conP dConN (fmap VarP ns)] #if MIN_VERSION_template_haskell(2,16,0)                     (TupE $ fmap (Just . VarE) ns) #else                     (TupE $ fmap VarE ns) #endif                     ))-#else-fromDataConI (DataConI dConN ty _tyConN _fxty) =-  let n = arityT ty-  in replicateM n (newName "a")-      >>= \ns -> return (Just (LamE-                    [ConP dConN (fmap VarP ns)]-                    (TupE $ fmap VarE ns)))--#endif fromDataConI _ = return Nothing  fromTyConI :: Info -> Maybe Dec
tests/Main.hs view
@@ -1,5 +1,3 @@-{-# LANGUAGE CPP #-}- module Main where  import qualified Control.Monad.Fail              as Fail@@ -8,11 +6,10 @@ import qualified Language.Haskell.Exts.Parser    as Parser import           Language.Haskell.Meta.Parse import qualified Language.Haskell.TH             as TH--- import           Test.Framework--- import           Test.Framework.Providers.HUnit-import Test.HUnit       (Assertion, (@?=))-import Test.Tasty       (TestTree, defaultMain, testGroup)-import Test.Tasty.HUnit (testCase)+import           Test.HUnit                      (Assertion, (@?=))+import           Test.Tasty+  (TestTree, defaultMain, testGroup)+import           Test.Tasty.HUnit                (testCase)  type Test = TestTree @@ -21,9 +18,7 @@  tests :: [Test] tests = [ derivingClausesTest-#if MIN_VERSION_template_haskell(2,12,0)         , typeAppTest-#endif         ]  derivingClausesTest :: Test
tests/Splices.hs view
@@ -2,10 +2,7 @@ {-# LANGUAGE CPP                   #-} {-# LANGUAGE GADTs                 #-} {-# LANGUAGE TemplateHaskell       #-}--#if MIN_VERSION_template_haskell(2,12,0) {-# LANGUAGE TypeApplications      #-}-#endif  #if MIN_VERSION_template_haskell(2,14,0) {-# LANGUAGE ExplicitForAll        #-}@@ -24,45 +21,22 @@       "unit :: IO ()\nunit = return ()")  -- Testing that the [] constructor works in types,-#if MIN_VERSION_base(4,9,0) $(either error return $ Meta.parseDecs       "nilp :: [a] -> ([] a)\nnilp [] = []")-#else--- CPP Note: Apparently ghc < 7 doesn't parse this correctly w/o the forall.--- https://github.com/DanBurton/haskell-src-meta/issues/2-$(either error return $ Meta.parseDecs-      "nilp :: forall a. [a] -> ([] a)\nnilp [] = []")-#endif  $(either error return $ Meta.parseDecs       "pair :: (,) Int Int\npair = (,) 1 2")   ----- Testing classes and instances ------#if MIN_VERSION_base(4,9,0) $(either error return $ Meta.parseDecs $ unlines    ["class MyClass a where mymethod :: a -> b -> (a,b)"    ,"instance MyClass Bool where mymethod a b = (a,b)"    ])-#else--- CPP Note: Apparently ghc < 7 doesn't parse this correctly w/o the forall.--- https://github.com/DanBurton/haskell-src-meta/issues/2-$(either error return $ Meta.parseDecs $ unlines-   ["class MyClass a where mymethod :: forall b. a -> b -> (a,b)"-   ,"instance MyClass Bool where mymethod a b = (a,b)"-   ])-#endif -#if MIN_VERSION_template_haskell(2,12,0) $(either error return $ Meta.parseDecsWithMode (Parser.defaultParseMode { Parser.extensions = [Extension.EnableExtension Extension.TypeApplications] }) $ unlines    ["tenStr :: String"    ,"tenStr = show @Int 10"])-#else--- Type Application not supported by template-haskell < 2.12-$(either error return $ Meta.parseDecs $ unlines-   ["tenStr :: String"-   ,"tenStr = show (10 :: Int)"])-#endif  #if MIN_VERSION_template_haskell(2,14,0) $(either error return $ Meta.parseDecsWithMode@@ -84,11 +58,7 @@   $ unlines    [ -- Not sure why but ghc 7.10 complains that "type var a is not in scope"-#if MIN_VERSION_template_haskell(2,11,0)    "intConstraint :: (a ~ Int) => a"-#else-   "intConstraint :: Int"-#endif    ,"intConstraint = 3"])  -- Just to check that it works as intended