Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Shayne Fletcher
Glasgow Haskell Compiler
Commits
3432f617
Commit
3432f617
authored
Apr 25, 2007
by
mnislaih
Browse files
Drop newtypes before computing the refinement substitution after :print type reconstruction
parent
f3e5a3ad
Changes
1
Hide whitespace changes
Inline
Side-by-side
compiler/ghci/Debugger.hs
View file @
3432f617
...
...
@@ -59,8 +59,7 @@ pprintClosureCommand session bindThings force str = do
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
...
...
@@ -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
-- 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
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment