import HsSyn ( HsReify(..), ReifyFlavour(..) )
import TcType ( isTauTy )
import TcEnv ( bracketOK, tcMetaTy, checkWellStaged, metaLevel )
-import TcSimplify ( tcSimplifyBracket )
import Name ( isExternalName )
import qualified DsMeta
#endif
-- 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) $
-> 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
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 )
%************************************************************************
\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) ;