From f0ec96ba1003654ee277a0ca78ceaedec687b5df Mon Sep 17 00:00:00 2001 From: simonpj Date: Tue, 4 Nov 2003 13:15:21 +0000 Subject: [PATCH] [project @ 2003-11-04 13:15:20 by simonpj] Beginnings of VarBr --- ghc/compiler/deSugar/DsMeta.hs | 1 + ghc/compiler/hsSyn/HsExpr.lhs | 15 ++++++++++----- ghc/compiler/typecheck/TcSplice.lhs | 5 +++++ 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/ghc/compiler/deSugar/DsMeta.hs b/ghc/compiler/deSugar/DsMeta.hs index 9ab3bf7..a0d7cbf 100644 --- a/ghc/compiler/deSugar/DsMeta.hs +++ b/ghc/compiler/deSugar/DsMeta.hs @@ -88,6 +88,7 @@ dsBracket brack splices where new_bit = mkNameEnv [(n, Splice e) | (n,e) <- splices] + do_brack (VarBr n) = do { MkC e1 <- lookupOcc n ; return e1 } do_brack (ExpBr e) = do { MkC e1 <- repE e ; return e1 } do_brack (PatBr p) = do { MkC p1 <- repP p ; return p1 } do_brack (TypBr t) = do { MkC t1 <- repTy t ; return t1 } diff --git a/ghc/compiler/hsSyn/HsExpr.lhs b/ghc/compiler/hsSyn/HsExpr.lhs index 879b3ec..2d33d02 100644 --- a/ghc/compiler/hsSyn/HsExpr.lhs +++ b/ghc/compiler/hsSyn/HsExpr.lhs @@ -811,10 +811,11 @@ pprComp brack stmts = brack $ %************************************************************************ \begin{code} -data HsBracket id = ExpBr (HsExpr id) - | PatBr (Pat id) - | DecBr (HsGroup id) - | TypBr (HsType id) +data HsBracket id = ExpBr (HsExpr id) -- [| expr |] + | PatBr (Pat id) -- [p| pat |] + | DecBr (HsGroup id) -- [d| decls |] + | TypBr (HsType id) -- [t| type |] + | VarBr id -- 'x, ''T instance OutputableBndr id => Outputable (HsBracket id) where ppr = pprHsBracket @@ -824,7 +825,11 @@ pprHsBracket (ExpBr e) = thBrackets empty (ppr e) pprHsBracket (PatBr p) = thBrackets (char 'p') (ppr p) pprHsBracket (DecBr d) = thBrackets (char 'd') (ppr d) pprHsBracket (TypBr t) = thBrackets (char 't') (ppr t) - +pprHsBracket (VarBr n) = char '\'' <> ppr n + -- Infelicity: can't show ' vs '', because + -- we can't ask n what its OccName is, because the + -- pretty-printer for HsExpr doesn't ask for NamedThings + -- But the pretty-printer for names will show the OccName class thBrackets pp_kind pp_body = char '[' <> pp_kind <> char '|' <+> pp_body <+> ptext SLIT("|]") diff --git a/ghc/compiler/typecheck/TcSplice.lhs b/ghc/compiler/typecheck/TcSplice.lhs index 45d071c..7dda60c 100644 --- a/ghc/compiler/typecheck/TcSplice.lhs +++ b/ghc/compiler/typecheck/TcSplice.lhs @@ -96,6 +96,11 @@ tcBracket brack res_ty } tc_bracket :: HsBracket Name -> TcM TcType +tc_bracket (ExpBr v) + = panic "tc_bracket" +-- tcMetaTy varTyConName + -- Result type is Var (not Q-monadic) + tc_bracket (ExpBr expr) = newTyVarTy openTypeKind `thenM` \ any_ty -> tcCheckRho expr any_ty `thenM_` -- 1.7.10.4