From 00227c6a8e53628fdd5aee9b666e08495997a74e Mon Sep 17 00:00:00 2001 From: simonpj Date: Thu, 20 Feb 2003 13:23:49 +0000 Subject: [PATCH] [project @ 2003-02-20 13:23:47 by simonpj] ------------------------------------- Complete an earlier TH commit ------------------------------------- In this earlier commit: 3. Ensure that a declaration quotation [d| ... |] does not have a permanent effect on the instance environment. (A TH fix.) I had forgotten to do a stage2 compile. This commit just completes the earlier work. I moved some code from TcExpr (long) to TcSplice (shorter) which had the happy effect of bringing related code together. --- ghc/compiler/typecheck/TcExpr.lhs | 3 +-- ghc/compiler/typecheck/TcSplice.hi-boot-6 | 6 ++++-- ghc/compiler/typecheck/TcSplice.lhs | 11 ++++++----- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/ghc/compiler/typecheck/TcExpr.lhs b/ghc/compiler/typecheck/TcExpr.lhs index 0f69371..3c0376d 100644 --- a/ghc/compiler/typecheck/TcExpr.lhs +++ b/ghc/compiler/typecheck/TcExpr.lhs @@ -13,7 +13,6 @@ import {-# SOURCE #-} TcSplice( tcSpliceExpr, tcBracket ) import HsSyn ( HsReify(..), ReifyFlavour(..) ) import TcType ( isTauTy ) import TcEnv ( bracketOK, tcMetaTy, checkWellStaged, metaLevel ) -import TcSimplify ( tcSimplifyBracket ) import Name ( isExternalName ) import qualified DsMeta #endif @@ -616,7 +615,7 @@ tcMonoExpr (PArrSeqIn _) _ -- Rename excludes these cases otherwise tcMonoExpr (HsSplice n expr loc) res_ty = addSrcLoc loc (tcSpliceExpr n expr res_ty) -tcMonoExpr (HsBracket brack loc) res_ty = addSrcLoc loc (tcBracket brack) +tcMonoExpr (HsBracket brack loc) res_ty = addSrcLoc loc (tcBracket brack res_ty) tcMonoExpr (HsReify (Reify flavour name)) res_ty = addErrCtxt (ptext SLIT("At the reification of") <+> ppr name) $ diff --git a/ghc/compiler/typecheck/TcSplice.hi-boot-6 b/ghc/compiler/typecheck/TcSplice.hi-boot-6 index 07ec268..ae8183c 100644 --- a/ghc/compiler/typecheck/TcSplice.hi-boot-6 +++ b/ghc/compiler/typecheck/TcSplice.hi-boot-6 @@ -5,8 +5,10 @@ tcSpliceExpr :: Name.Name -> TcType.TcType -> TcRnTypes.TcM TcHsSyn.TcExpr +tcBracket :: HsExpr.HsBracket Name.Name + -> TcType.TcType + -> TcRnTypes.TcM TcHsSyn.TcExpr + tcSpliceDecls :: RnHsSyn.RenamedHsExpr -> TcRnTypes.TcM [RdrHsSyn.RdrNameHsDecl] -tcBracket :: HsExpr.HsBracket Name.Name - -> TcRnTypes.TcM TcType.TcType \ No newline at end of file diff --git a/ghc/compiler/typecheck/TcSplice.lhs b/ghc/compiler/typecheck/TcSplice.lhs index d191fcd..3278fd9 100644 --- a/ghc/compiler/typecheck/TcSplice.lhs +++ b/ghc/compiler/typecheck/TcSplice.lhs @@ -16,16 +16,17 @@ import TcRnDriver ( importSupportingDecls, tcTopSrcDecls ) import qualified Language.Haskell.THSyntax as Meta import HscTypes ( HscEnv(..), GhciMode(..), PersistentCompilerState(..), unQualInScope ) -import HsSyn ( HsBracket(..) ) +import HsSyn ( HsBracket(..), HsExpr(..) ) import Convert ( convertToHsExpr, convertToHsDecls ) import RnExpr ( rnExpr ) import RdrHsSyn ( RdrNameHsExpr, RdrNameHsDecl ) import RnHsSyn ( RenamedHsExpr ) import TcExpr ( tcMonoExpr ) import TcHsSyn ( TcExpr, TypecheckedHsExpr, mkHsLet, zonkTopExpr ) -import TcSimplify ( tcSimplifyTop ) +import TcSimplify ( tcSimplifyTop, tcSimplifyBracket ) +import TcUnify ( unifyTauTy ) import TcType ( TcType, openTypeKind, mkAppTy ) -import TcEnv ( spliceOK, tcMetaTy, tcWithTempInstEnv ) +import TcEnv ( spliceOK, tcMetaTy, tcWithTempInstEnv, bracketOK ) import TcRnTypes ( TopEnv(..) ) import TcMType ( newTyVarTy, zapToType ) import Name ( Name ) @@ -68,8 +69,8 @@ tcSpliceDecls e = pprPanic "Cant do tcSpliceDecls without GHCi" (ppr e) %************************************************************************ \begin{code} -tcBracket :: HsBracket Name -> TcM TcType -tcBracket brack +tcBracket :: HsBracket Name -> TcType -> TcM TcExpr +tcBracket brack res_ty = getStage `thenM` \ level -> case bracketOK level of { Nothing -> failWithTc (illegalBracket level) ; -- 1.7.10.4