diff options
| author | Simon Peyton Jones <simonpj@microsoft.com> | 2014-12-16 17:46:06 +0000 |
|---|---|---|
| committer | Simon Peyton Jones <simonpj@microsoft.com> | 2014-12-17 14:45:45 +0000 |
| commit | 67a0cab6b501e2d6280b51655af66ad448b3deef (patch) | |
| tree | ba4dad04d275df9d26ea8ff24a821c9863669e29 /compiler/ghci/Debugger.hs | |
| parent | c43653722ed89f30dae29e7a2117afbc2f269b76 (diff) | |
| download | haskell-67a0cab6b501e2d6280b51655af66ad448b3deef.tar.gz | |
Fix GHCi/GHC-API tidying and modules (Trac #9424, #9426)
There were two related bugs here
Trac #9426
We must increment the ic_mod_index field of the InteractiveContext
if we have new instances, because we maek DFunIds that should be
distinct from previous ones. Previously we were only incrementing
when defining new user-visible Ids.
The main change is in HscTypes.extendInteractiveContext, which now
alwyas bumps the ic_mod_index. I also added a specialised
extendInteractiveContextWithIds for the case where we are *only*
adding new user-visible Ids.
Trac #9424
In HscMain.hscDeclsWithLocations we were failing to use the
*tidied* ClsInsts; but the un-tidied ones are LocalIds which
causes a later ASSERT error.
On the way I realised that, to behave consistently, the tcg_insts
and tcg_fam_insts field of TcGblEnv should really only contain
instances from the current GHCi command, not all the ones to date.
That in turn meant I had to move the code for deleting replacement
instances from addLocalInst, addLocalFamInst to
HscTypes.extendInteractiveContext
Diffstat (limited to 'compiler/ghci/Debugger.hs')
| -rw-r--r-- | compiler/ghci/Debugger.hs | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/compiler/ghci/Debugger.hs b/compiler/ghci/Debugger.hs index 26aad6f975..e5d021d30d 100644 --- a/compiler/ghci/Debugger.hs +++ b/compiler/ghci/Debugger.hs @@ -116,7 +116,7 @@ bindSuspensions t = do let (names, tys, hvals) = unzip3 stuff let ids = [ mkVanillaGlobal name ty | (name,ty) <- zip names tys] - new_ic = extendInteractiveContext ictxt (map AnId ids) + new_ic = extendInteractiveContextWithIds ictxt ids liftIO $ extendLinkEnv (zip names hvals) modifySession $ \_ -> hsc_env {hsc_IC = new_ic } return t' @@ -193,8 +193,8 @@ showTerm term = do bindToFreshName hsc_env ty userName = do name <- newGrimName userName - let id = AnId $ mkVanillaGlobal name ty - new_ic = extendInteractiveContext (hsc_IC hsc_env) [id] + let id = mkVanillaGlobal name ty + new_ic = extendInteractiveContextWithIds (hsc_IC hsc_env) [id] return (hsc_env {hsc_IC = new_ic }, name) -- Create new uniques and give them sequentially numbered names |
