X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fmain%2FHscTypes.lhs;h=04f2b7c0e2fcae67f5b134096b279976e08ad3ea;hb=568e6b65ac52a2bcdb0450cc265f52080f78ab08;hp=1101e8627b4388178b2e7654591aa9a4ee95eb9c;hpb=38e7ac3ffa32d75c1922e7247a910e06d9957116;p=ghc-hetmet.git diff --git a/compiler/main/HscTypes.lhs b/compiler/main/HscTypes.lhs index 1101e86..04f2b7c 100644 --- a/compiler/main/HscTypes.lhs +++ b/compiler/main/HscTypes.lhs @@ -85,6 +85,7 @@ import InstEnv ( InstEnv, Instance ) import FamInstEnv ( FamInstEnv, FamInst ) import Rules ( RuleBase ) import CoreSyn ( CoreBind ) +import VarSet import Id ( Id, isImplicitId ) import Type ( TyThing(..) ) @@ -614,18 +615,27 @@ data InteractiveContext ic_rn_gbl_env :: GlobalRdrEnv, -- The cached GlobalRdrEnv, built from -- ic_toplev_scope and ic_exports - ic_rn_local_env :: LocalRdrEnv, -- Lexical context for variables bound - -- during interaction - - ic_type_env :: TypeEnv -- Ditto for types + ic_type_env :: TypeEnv, -- Type env for names bound during + -- interaction. NB. the names from + -- these Ids are used to populate + -- the LocalRdrEnv used during + -- typechecking of a statement, so + -- there should be no duplicate + -- names in here. + + ic_tyvars :: TyVarSet -- skolem type variables free in + -- ic_type_env. These arise at + -- breakpoints in a polymorphic + -- context, where we have only partial + -- type information. } emptyInteractiveContext = InteractiveContext { ic_toplev_scope = [], ic_exports = [], ic_rn_gbl_env = emptyGlobalRdrEnv, - ic_rn_local_env = emptyLocalRdrEnv, - ic_type_env = emptyTypeEnv } + ic_type_env = emptyTypeEnv, + ic_tyvars = emptyVarSet } icPrintUnqual :: InteractiveContext -> PrintUnqualified icPrintUnqual ictxt = mkPrintUnqualified (ic_rn_gbl_env ictxt) @@ -1253,6 +1263,8 @@ data ModBreaks -- indicating which breakpoints are enabled. , modBreaks_locs :: !(Array BreakIndex SrcSpan) -- An array giving the source span of each breakpoint. + , modBreaks_vars :: !(Array BreakIndex [OccName]) + -- An array giving the names of the free variables at each breakpoint. } emptyModBreaks :: ModBreaks @@ -1260,5 +1272,6 @@ emptyModBreaks = ModBreaks { modBreaks_flags = error "ModBreaks.modBreaks_array not initialised" -- Todo: can we avoid this? , modBreaks_locs = array (0,-1) [] + , modBreaks_vars = array (0,-1) [] } \end{code}