haskell-src-exts-qq 0.2.3 → 0.3.0
raw patch · 2 files changed
+33/−21 lines, 2 filesdep ~haskell-src-extsPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: haskell-src-exts
API changes (from Hackage documentation)
- Language.Haskell.Exts.Translate: instance (ToExp a) => ToExp [a]
- Language.Haskell.Exts.Translate: instance (ToPat a) => ToPat [a]
+ Language.Haskell.Exts.QQ: decWithMode :: ParseMode -> QuasiQuoter
+ Language.Haskell.Exts.QQ: hsWithMode :: ParseMode -> QuasiQuoter
+ Language.Haskell.Exts.Translate: instance ToExp a => ToExp [a]
+ Language.Haskell.Exts.Translate: instance ToPat a => ToPat [a]
- Language.Haskell.Exts.Translate: errorMsg :: (Typeable a) => String -> a -> String
+ Language.Haskell.Exts.Translate: errorMsg :: Typeable a => String -> a -> String
- Language.Haskell.Exts.Translate: toDec :: (ToDec a) => a -> Dec
+ Language.Haskell.Exts.Translate: toDec :: ToDec a => a -> Dec
- Language.Haskell.Exts.Translate: toExp :: (ToExp a) => a -> Exp
+ Language.Haskell.Exts.Translate: toExp :: ToExp a => a -> Exp
- Language.Haskell.Exts.Translate: toKind :: (ToKind a) => a -> Kind
+ Language.Haskell.Exts.Translate: toKind :: ToKind a => a -> Kind
- Language.Haskell.Exts.Translate: toLit :: (ToLit a) => a -> Lit
+ Language.Haskell.Exts.Translate: toLit :: ToLit a => a -> Lit
- Language.Haskell.Exts.Translate: toLoc :: (ToLoc a) => a -> Loc
+ Language.Haskell.Exts.Translate: toLoc :: ToLoc a => a -> Loc
- Language.Haskell.Exts.Translate: toName :: (ToName a) => a -> Name
+ Language.Haskell.Exts.Translate: toName :: ToName a => a -> Name
- Language.Haskell.Exts.Translate: toPat :: (ToPat a) => a -> Pat
+ Language.Haskell.Exts.Translate: toPat :: ToPat a => a -> Pat
- Language.Haskell.Exts.Translate: toPred :: (ToPred a) => a -> Pred
+ Language.Haskell.Exts.Translate: toPred :: ToPred a => a -> Pred
- Language.Haskell.Exts.Translate: toStmt :: (ToStmt a) => a -> Stmt
+ Language.Haskell.Exts.Translate: toStmt :: ToStmt a => a -> Stmt
- Language.Haskell.Exts.Translate: toTyVarBndr :: (ToTyVarBndr a) => a -> TyVarBndr
+ Language.Haskell.Exts.Translate: toTyVarBndr :: ToTyVarBndr a => a -> TyVarBndr
- Language.Haskell.Exts.Translate: toType :: (ToType a) => a -> Type
+ Language.Haskell.Exts.Translate: toType :: ToType a => a -> Type
Files
- Language/Haskell/Exts/QQ.hs +29/−17
- haskell-src-exts-qq.cabal +4/−4
Language/Haskell/Exts/QQ.hs view
@@ -13,7 +13,7 @@ -- -- In a pattern context, antiquotations use the same syntax. -module Language.Haskell.Exts.QQ (hs, dec) where+module Language.Haskell.Exts.QQ (hs, dec, hsWithMode, decWithMode) where import qualified Language.Haskell.Exts as Hs import qualified Language.Haskell.Exts.Translate as Hs@@ -24,27 +24,39 @@ import Data.List (intercalate) --- | A quasiquoter for expressions.-hs = QuasiQuoter { quoteExp = Hs.parseExpWithMode- Hs.defaultParseMode{Hs.extensions = Hs.knownExtensions}- `project` antiquoteExp- , quotePat = Hs.parsePat `project` antiquotePat+-- | A quasiquoter for expressions. All Haskell extensions known by+-- haskell-src-exts are activated by default.+hs :: QuasiQuoter+hs = hsWithMode Hs.defaultParseMode{Hs.extensions = Hs.knownExtensions}++-- | A quasiquoter for top-level declarations.+dec :: QuasiQuoter+dec = decWithMode Hs.defaultParseMode{Hs.extensions = Hs.knownExtensions}++-- | Rather than importing the above quasiquoters, one can create custom+-- quasiquoters with a customized 'ParseMode' using this function.+--+-- > hs = hsWithMode mode+-- > dec = decWithMode mode+hsWithMode :: Hs.ParseMode -> QuasiQuoter+hsWithMode mode =+ QuasiQuoter { quoteExp = Hs.parseExpWithMode mode `project` antiquoteExp+ , quotePat = Hs.parsePat `project` antiquotePat #if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 613- , quoteType = error "Unimplemented."- , quoteDec = error "Unimplemented."+ , quoteType = error "Unimplemented."+ , quoteDec = error "Unimplemented." #endif- }+ } --- | A quasiquoter for top-level declarations.-dec = QuasiQuoter { quoteExp = Hs.parseDeclWithMode- Hs.defaultParseMode{Hs.extensions = Hs.knownExtensions}- `project` antiquoteExp- , quotePat = Hs.parsePat `project` antiquotePat+decWithMode :: Hs.ParseMode -> QuasiQuoter+decWithMode mode =+ QuasiQuoter { quoteExp = Hs.parseDeclWithMode mode `project` antiquoteExp+ , quotePat = Hs.parsePat `project` antiquotePat #if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 613- , quoteType = error "Unimplemented."- , quoteDec = error "Unimplemented."+ , quoteType = error "Unimplemented."+ , quoteDec = error "Unimplemented." #endif- }+ } project f k s = case f s of Hs.ParseOk x -> k x
haskell-src-exts-qq.cabal view
@@ -1,5 +1,5 @@ Name: haskell-src-exts-qq-Version: 0.2.3+Version: 0.3.0 Author: Mathieu Boespflug Maintainer: Mathieu Boespflug <mboes@tweag.net> Synopsis: A quasiquoter for haskell-src-exts.@@ -10,7 +10,7 @@ * Antiquotations, denoted by stealing the splice syntax of Template Haskell, for example @[$hs| $x ++ $(Hs.strE "bar") |]@. Splices may not nested.-+ . * Antiquoting names in patterns. Names that are antiquoted appear surrounded by double parentheses. For instance: .@@ -29,8 +29,8 @@ library Build-Depends: base >= 4 && < 5, syb, template-haskell, -- xxx awaiting cabal fix.- haskell-src-exts == 1.8.2+ haskell-src-exts == 1.9.0 Extensions: PatternGuards, TypeSynonymInstances, TemplateHaskell, CPP Exposed-Modules: Language.Haskell.Exts.QQ Language.Haskell.Exts.Translate- cpp-options: -DVERSION_haskell_src_exts="1.8.2"+ cpp-options: -DVERSION_haskell_src_exts="1.9.0"