Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Open sidebar
Tobias Decking
GHC
Commits
3432f617
Commit
3432f617
authored
Apr 25, 2007
by
mnislaih
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Drop newtypes before computing the refinement substitution after :print type reconstruction
parent
f3e5a3ad
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
8 additions
and
4 deletions
+8
-4
compiler/ghci/Debugger.hs
compiler/ghci/Debugger.hs
+8
-4
No files found.
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
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a 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