X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Ftypecheck%2FTcRnDriver.lhs;h=156b52fbefa2271e9cb6940dc9881bd55cf40691;hb=989cfb23660ecefe7e414a1ca1f3004e820ef50b;hp=83d8321169f193a2de36fd9feeaf90ccd94b3b73;hpb=14ec68724389d204e9121361e015ab776f348c5e;p=ghc-hetmet.git diff --git a/compiler/typecheck/TcRnDriver.lhs b/compiler/typecheck/TcRnDriver.lhs index 83d8321..156b52f 100644 --- a/compiler/typecheck/TcRnDriver.lhs +++ b/compiler/typecheck/TcRnDriver.lhs @@ -12,6 +12,7 @@ module TcRnDriver ( tcRnLookupName, tcRnGetInfo, getModuleExports, + tcRnRecoverDataCon, #endif tcRnModule, tcTopSrcDecls, @@ -69,8 +70,11 @@ import TyCon import SrcLoc import HscTypes import Outputable +import Breakpoints #ifdef GHCI +import Linker +import DataCon import TcHsType import TcMType import TcMatches @@ -306,7 +310,8 @@ tcRnExtCore hsc_env (HsExtCore this_mod decls src_binds) mg_fix_env = emptyFixityEnv, mg_deprecs = NoDeprecs, mg_foreign = NoStubs, - mg_hpc_info = noHpcInfo + mg_hpc_info = noHpcInfo, + mg_dbg_sites = noDbgSites } } ; tcCoreDump mod_guts ; @@ -1036,11 +1041,11 @@ tcRnExpr hsc_env ictxt rdr_expr -- Now typecheck the expression; -- it might have a rank-2 type (e.g. :t runST) ((tc_expr, res_ty), lie) <- getLIE (tcInferRho rn_expr) ; - ((qtvs, _, dict_ids), lie_top) <- getLIE (tcSimplifyInfer smpl_doc (tyVarsOfType res_ty) lie) ; + ((qtvs, dict_insts, _), lie_top) <- getLIE (tcSimplifyInfer smpl_doc (tyVarsOfType res_ty) lie) ; tcSimplifyInteractive lie_top ; let { all_expr_ty = mkForAllTys qtvs $ - mkFunTys (map idType dict_ids) $ + mkFunTys (map (idType . instToId) dict_insts) $ res_ty } ; zonkTcType all_expr_ty } @@ -1136,6 +1141,12 @@ lookup_rdr_name rdr_name = do { return good_names } +tcRnRecoverDataCon :: HscEnv -> a -> IO (Maybe DataCon) +tcRnRecoverDataCon hsc_env a + = initTcPrintErrors hsc_env iNTERACTIVE $ + setInteractiveContext hsc_env (hsc_IC hsc_env) $ + do name <- recoverDataCon a + tcLookupDataCon name tcRnLookupName :: HscEnv -> Name -> IO (Maybe TyThing) tcRnLookupName hsc_env name @@ -1171,7 +1182,6 @@ tcRnGetInfo hsc_env name ispecs <- lookupInsts (icPrintUnqual ictxt) thing return (thing, fixity, ispecs) - lookupInsts :: PrintUnqualified -> TyThing -> TcM [Instance] -- Filter the instances by the ones whose tycons (or clases resp) -- are in scope unqualified. Otherwise we list a whole lot too many!