ids = typeEnvIds type_env
ids' = map (\id -> id `setIdType` substTy subst (idType id)) ids
type_env'= extendTypeEnvWithIds type_env ids'
- ictxt' = ictxt { ic_type_env = type_env' }
+ 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 = 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