-> Module -> GlobalRdrEnv -> TypeEnv
-> TypecheckedHsExpr
-> IO CoreExpr
-deSugarExpr hsc_env pcs mod_name rdr_env type_env tc_expr
+deSugarExpr hsc_env pcs this_mod rdr_env type_env tc_expr
= do { showPass dflags "Desugar"
; us <- mkSplitUniqSupply 'd'
-- Do desugaring
- ; let (core_expr, ds_warns) = initDs dflags us lookup mod_name (dsExpr tc_expr)
+ ; let (core_expr, ds_warns) = initDs dflags us lookup this_mod (dsExpr tc_expr)
warn_doc = pprBagOfWarnings (mapBag mk_warn ds_warns)
-- Display any warnings
dflags = hsc_dflags hsc_env
hpt = hsc_HPT hsc_env
pte = eps_PTE (pcs_EPS pcs)
- lookup n = lookupNameEnv type_env n `orElse` -- Look in the type env of the
+ lookup n = pprTrace "lookup" (ppr type_env) (
+ lookupNameEnv type_env n `orElse` -- Look in the type env of the
-- current module first
lookupType hpt pte n `orElse` -- Then other modules
pprPanic "Desugar: lookup:" (ppr n)
+ )
mk_warn :: (SrcLoc,SDoc) -> (SrcLoc, Pretty.Doc)
mk_warn (loc,sdoc) = addShortWarnLocLine loc print_unqual sdoc
-> TcM t -- Of type t
runMeta expr
= getTopEnv `thenM` \ top_env ->
+ getGblEnv `thenM` \ tcg_env ->
getEps `thenM` \ eps ->
getNameCache `thenM` \ name_cache ->
getModule `thenM` \ this_mod ->
- getGlobalRdrEnv `thenM` \ rdr_env ->
let
ghci_mode = top_mode top_env
pcs = PCS { pcs_nc = name_cache, pcs_EPS = eps }
- print_unqual = unQualInScope rdr_env
+ type_env = tcg_type_env tcg_env
+ rdr_env = tcg_rdr_env tcg_env
in
- ioToTcRn (HscMain.compileExpr hsc_env pcs this_mod
- print_unqual expr) `thenM` \ hval ->
+ ioToTcRn (HscMain.compileExpr
+ hsc_env pcs this_mod
+ rdr_env type_env expr) `thenM` \ hval ->
tryM (tcRunQ (unsafeCoerce# hval)) `thenM` \ either_tval ->