[commit: ghc] wip/th-new: Clean up smart constructors for splices. (812e435)
git at git.haskell.org
git at git.haskell.org
Mon Sep 16 07:07:13 CEST 2013
Repository : ssh://git@git.haskell.org/ghc
On branch : wip/th-new
Link : http://ghc.haskell.org/trac/ghc/changeset/812e43583cb1702bcbbdd0f0774e1e4fa714dd5c/ghc
>---------------------------------------------------------------
commit 812e43583cb1702bcbbdd0f0774e1e4fa714dd5c
Author: Geoffrey Mainland <mainland at apeiron.net>
Date: Thu May 16 16:47:06 2013 +0100
Clean up smart constructors for splices.
>---------------------------------------------------------------
812e43583cb1702bcbbdd0f0774e1e4fa714dd5c
compiler/hsSyn/HsUtils.lhs | 15 +++++++++------
compiler/parser/Parser.y.pp | 12 ++++++------
compiler/parser/RdrHsSyn.lhs | 2 +-
3 files changed, 16 insertions(+), 13 deletions(-)
diff --git a/compiler/hsSyn/HsUtils.lhs b/compiler/hsSyn/HsUtils.lhs
index 0f3f95b..59157e2 100644
--- a/compiler/hsSyn/HsUtils.lhs
+++ b/compiler/hsSyn/HsUtils.lhs
@@ -54,7 +54,7 @@ module HsUtils(
emptyRecStmt, mkRecStmt,
-- Template Haskell
- unqualSplice, mkHsSpliceTy, mkHsSplice, mkHsTExpSplice, mkHsQuasiQuote, unqualQuasiQuote,
+ unqualSplice, mkHsSpliceTy, mkHsSpliceE, mkHsSpliceTE, mkHsQuasiQuote, unqualQuasiQuote,
-- Flags
noRebindableInfo,
@@ -246,14 +246,17 @@ mkRecStmt stmts = emptyRecStmt { recS_stmts = stmts }
mkHsOpApp :: LHsExpr id -> id -> LHsExpr id -> HsExpr id
mkHsOpApp e1 op e2 = OpApp e1 (noLoc (HsVar op)) (error "mkOpApp:fixity") e2
-mkHsSplice :: LHsExpr RdrName -> HsSplice RdrName
-mkHsSplice e = HsSplice False unqualSplice e
+mkHsSplice :: Bool -> LHsExpr RdrName -> HsSplice RdrName
+mkHsSplice isTyped e = HsSplice isTyped unqualSplice e
-mkHsTExpSplice :: LHsExpr RdrName -> HsSplice RdrName
-mkHsTExpSplice e = HsSplice True unqualSplice e
+mkHsSpliceE :: LHsExpr RdrName -> HsExpr RdrName
+mkHsSpliceE e = HsSpliceE (mkHsSplice False e)
+
+mkHsSpliceTE :: LHsExpr RdrName -> HsExpr RdrName
+mkHsSpliceTE e = HsSpliceE (mkHsSplice True e)
mkHsSpliceTy :: LHsExpr RdrName -> HsType RdrName
-mkHsSpliceTy e = HsSpliceTy (mkHsSplice e) emptyFVs placeHolderKind
+mkHsSpliceTy e = HsSpliceTy (mkHsSplice False e) emptyFVs placeHolderKind
unqualSplice :: RdrName
unqualSplice = mkRdrUnqual (mkVarOccFS (fsLit "splice"))
diff --git a/compiler/parser/Parser.y.pp b/compiler/parser/Parser.y.pp
index 4159314..fd94fd1 100644
--- a/compiler/parser/Parser.y.pp
+++ b/compiler/parser/Parser.y.pp
@@ -1534,14 +1534,14 @@ aexp2 :: { LHsExpr RdrName }
| '_' { L1 EWildPat }
-- Template Haskell Extension
- | TH_ID_SPLICE { L1 $ HsSpliceE (mkHsSplice
+ | TH_ID_SPLICE { L1 $ mkHsSpliceE
(L1 $ HsVar (mkUnqual varName
- (getTH_ID_SPLICE $1)))) }
- | '$(' exp ')' { LL $ HsSpliceE (mkHsSplice $2) }
- | TH_ID_TY_SPLICE { L1 $ HsSpliceE (mkHsTExpSplice
+ (getTH_ID_SPLICE $1))) }
+ | '$(' exp ')' { LL $ mkHsSpliceE $2 }
+ | TH_ID_TY_SPLICE { L1 $ mkHsSpliceTE
(L1 $ HsVar (mkUnqual varName
- (getTH_ID_TY_SPLICE $1)))) }
- | '$$(' exp ')' { LL $ HsSpliceE (mkHsTExpSplice $2) }
+ (getTH_ID_TY_SPLICE $1))) }
+ | '$$(' exp ')' { LL $ mkHsSpliceTE $2 }
| SIMPLEQUOTE qvar { LL $ HsBracket (VarBr True (unLoc $2)) }
diff --git a/compiler/parser/RdrHsSyn.lhs b/compiler/parser/RdrHsSyn.lhs
index 268ca43..27889b0 100644
--- a/compiler/parser/RdrHsSyn.lhs
+++ b/compiler/parser/RdrHsSyn.lhs
@@ -7,7 +7,7 @@ Functions over HsSyn specialised to RdrName.
module RdrHsSyn (
mkHsOpApp,
mkHsIntegral, mkHsFractional, mkHsIsString,
- mkHsDo, mkHsSplice, mkTopSpliceDecl,
+ mkHsDo, mkHsSpliceE, mkTopSpliceDecl,
mkClassDecl,
mkTyData, mkFamInstData,
mkTySynonym, mkTyFamInstEqn,
More information about the ghc-commits
mailing list