Add new skolem tyvars to the InteractiveContext after type reconstruction
authorPepe Iborra <mnislaih@gmail.com>
Tue, 1 May 2007 10:11:05 +0000 (10:11 +0000)
committerPepe Iborra <mnislaih@gmail.com>
Tue, 1 May 2007 10:11:05 +0000 (10:11 +0000)
This was being done already for each binding added by :print,
but :sprint does not add any new binding, so we take care of it
separately

compiler/ghci/Debugger.hs

index 4e61068..f4941d2 100644 (file)
@@ -100,12 +100,17 @@ pprintClosureCommand session bindThings force str = do
           ids'     = map (\id -> id `setIdType` substTy subst (idType id)) ids
           type_env'= extendTypeEnvWithIds type_env ids'
           subst_dom= varEnvKeys$ getTvSubstEnv subst
+          subst_ran= varEnvElts$ getTvSubstEnv subst
+          new_tvs  = [ tv | t <- subst_ran, let Just tv = getTyVar_maybe t]  
+          ic_tyvars'= (`delVarSetListByKey` subst_dom) 
+                    . (`extendVarSetList`   new_tvs)
+                        $ ic_tyvars ictxt
           ictxt'   = ictxt { ic_type_env = type_env'
-                           , ic_tyvars   = foldl' delVarSetByKey
-                                                  (ic_tyvars ictxt) 
-                                                  subst_dom }
+                           , ic_tyvars   = ic_tyvars' }
       writeIORef ref (hsc_env {hsc_IC = ictxt'})
 
+          where delVarSetListByKey = foldl' delVarSetByKey
+
    tidyTermTyVars :: Session -> Term -> IO Term
    tidyTermTyVars (Session ref) t = do
      hsc_env <- readIORef ref