projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
give the statements under evaluation in the ":show context" output
[ghc-hetmet.git]
/
compiler
/
ghci
/
Debugger.hs
diff --git
a/compiler/ghci/Debugger.hs
b/compiler/ghci/Debugger.hs
index
bcc9b4e
..
7459589
100644
(file)
--- a/
compiler/ghci/Debugger.hs
+++ b/
compiler/ghci/Debugger.hs
@@
-59,8
+59,7
@@
pprintClosureCommand session bindThings force str = do
return ()
where
return ()
where
- -- Do the obtainTerm--bindSuspensions-refineIdType dance
- -- Warning! This function got a good deal of side-effects
+ -- Do the obtainTerm--bindSuspensions-computeSubstitution dance
go :: Session -> Id -> IO (Maybe TvSubst)
go cms id = do
mb_term <- obtainTerm cms force id
go :: Session -> Id -> IO (Maybe TvSubst)
go cms id = do
mb_term <- obtainTerm cms force id
@@
-76,10
+75,15
@@
pprintClosureCommand session bindThings force str = do
-- Then, we extract a substitution,
-- mapping the old tyvars to the reconstructed types.
let Just reconstructed_type = termType term
-- Then, we extract a substitution,
-- mapping the old tyvars to the reconstructed types.
let Just reconstructed_type = termType term
+
-- tcUnifyTys doesn't look through forall's, so we drop them from
-- the original type, instead of sigma-typing the reconstructed type
-- tcUnifyTys doesn't look through forall's, so we drop them from
-- the original type, instead of sigma-typing the reconstructed type
- mb_subst = tcUnifyTys (const BindMe) [dropForAlls$ idType id]
- [reconstructed_type]
+ -- In addition, we strip newtypes too, since the reconstructed type might
+ -- not have recovered them all
+ mb_subst = tcUnifyTys (const BindMe)
+ [repType' $ dropForAlls$ idType id]
+ [repType' $ reconstructed_type]
+
ASSERT2 (isJust mb_subst, ppr reconstructed_type $$ (ppr$ idType id))
return mb_subst
ASSERT2 (isJust mb_subst, ppr reconstructed_type $$ (ppr$ idType id))
return mb_subst
@@
-194,4
+198,4
@@
mk_skol_ty ty | tyvars <- varSetElems (tyVarsOfType ty)
, tyvars' <- map (mkTyVarTy . mk_skol_tv) tyvars
= substTyWith tyvars tyvars' ty
mk_skol_tv tv = mkTcTyVar (tyVarName tv) (tyVarKind tv)
, tyvars' <- map (mkTyVarTy . mk_skol_tv) tyvars
= substTyWith tyvars tyvars' ty
mk_skol_tv tv = mkTcTyVar (tyVarName tv) (tyVarKind tv)
- (SkolemTv UnkSkol)
+ (SkolemTv RuntimeUnkSkol)