import SrcLoc
import Outputable
import Unique
+import DynFlags
import PackageConfig
import BasicTypes
import Panic
%* *
%************************************************************************
+Note [Handling brackets]
+~~~~~~~~~~~~~~~~~~~~~~~~
+Source: f = [| Just $(g 3) |]
+ The [| |] part is a HsBracket
+
+Typechecked: f = [| Just ${s7}(g 3) |]{s7 = g Int 3}
+ The [| |] part is a HsBracketOut, containing *renamed* (not typechecked) expression
+ The "s7" is the "splice point"; the (g Int 3) part is a typechecked expression
+
+Desugared: f = do { s7 <- g Int 3
+ ; return (ConE "Data.Maybe.Just" s7) }
+
\begin{code}
tcBracket :: HsBracket Name -> BoxyRhoType -> TcM (LHsExpr TcId)
tcBracket brack res_ty
-> TcM hs_syn -- Of type t
runMeta convert expr
= do { -- Desugar
+#if defined(GHCI) && defined(DEBUGGER)
+ ds_expr <- unsetOptM Opt_Debugging $ initDsTc (dsLExpr expr)
+#else
ds_expr <- initDsTc (dsLExpr expr)
-
+#endif
-- Compile and link it; might fail if linking fails
; hsc_env <- getTopEnv
; src_span <- getSrcSpanM