Commit 2899aa58 authored by eir@cis.upenn.edu's avatar eir@cis.upenn.edu
Browse files

Fix some substitution InScopeSets

This is relevant to #11371.
parent 4faa1a63
...@@ -847,7 +847,7 @@ tcInstBinderX :: Maybe (VarEnv Kind) ...@@ -847,7 +847,7 @@ tcInstBinderX :: Maybe (VarEnv Kind)
tcInstBinderX mb_kind_info subst binder tcInstBinderX mb_kind_info subst binder
| Just tv <- binderVar_maybe binder | Just tv <- binderVar_maybe binder
= case lookup_tv tv of = case lookup_tv tv of
Just ki -> return (extendTCvSubst subst tv ki, ki) Just ki -> return (extendTCvSubstAndInScope subst tv ki, ki)
Nothing -> do { (subst', tv') <- newMetaTyVarX subst tv Nothing -> do { (subst', tv') <- newMetaTyVarX subst tv
; return (subst', mkTyVarTy tv') } ; return (subst', mkTyVarTy tv') }
......
...@@ -693,7 +693,7 @@ newMetaTyVarX subst tyvar ...@@ -693,7 +693,7 @@ newMetaTyVarX subst tyvar
-- See Note [Name of an instantiated type variable] -- See Note [Name of an instantiated type variable]
kind = substTyUnchecked subst (tyVarKind tyvar) kind = substTyUnchecked subst (tyVarKind tyvar)
new_tv = mkTcTyVar name kind details new_tv = mkTcTyVar name kind details
; return (extendTCvSubst (extendTCvInScope subst new_tv) tyvar ; return (extendTCvSubstAndInScope subst tyvar
(mkTyVarTy new_tv) (mkTyVarTy new_tv)
, new_tv) , new_tv)
} }
......
...@@ -145,6 +145,7 @@ module TcType ( ...@@ -145,6 +145,7 @@ module TcType (
mkOpenTCvSubst, zipOpenTCvSubst, mkOpenTCvSubst, zipOpenTCvSubst,
mkTopTCvSubst, notElemTCvSubst, unionTCvSubst, mkTopTCvSubst, notElemTCvSubst, unionTCvSubst,
getTvSubstEnv, setTvSubstEnv, getTCvInScope, extendTCvInScope, getTvSubstEnv, setTvSubstEnv, getTCvInScope, extendTCvInScope,
extendTCvInScopeList, extendTCvInScopeSet, extendTCvSubstAndInScope,
Type.lookupTyVar, Type.extendTCvSubst, Type.substTyVarBndr, Type.lookupTyVar, Type.extendTCvSubst, Type.substTyVarBndr,
extendTCvSubstList, isInScope, mkTCvSubst, zipTyEnv, zipCoEnv, extendTCvSubstList, isInScope, mkTCvSubst, zipTyEnv, zipCoEnv,
Type.substTy, substTys, substTyWith, substTyWithCoVars, Type.substTy, substTys, substTyWith, substTyWithCoVars,
......
...@@ -1864,7 +1864,11 @@ substTy subst@(TCvSubst in_scope tenv cenv) ty ...@@ -1864,7 +1864,11 @@ substTy subst@(TCvSubst in_scope tenv cenv) ty
| otherwise = ASSERT2( isValidTCvSubst subst, | otherwise = ASSERT2( isValidTCvSubst subst,
text "in_scope" <+> ppr in_scope $$ text "in_scope" <+> ppr in_scope $$
text "tenv" <+> ppr tenv $$ text "tenv" <+> ppr tenv $$
text "tenvFVs"
<+> ppr (tyCoVarsOfTypes $ varEnvElts tenv) $$
text "cenv" <+> ppr cenv $$ text "cenv" <+> ppr cenv $$
text "cenvFVs"
<+> ppr (tyCoVarsOfCos $ varEnvElts cenv) $$
text "ty" <+> ppr ty ) text "ty" <+> ppr ty )
ASSERT2( typeFVsInScope, ASSERT2( typeFVsInScope,
text "in_scope" <+> ppr in_scope $$ text "in_scope" <+> ppr in_scope $$
......
...@@ -154,8 +154,8 @@ module Type ( ...@@ -154,8 +154,8 @@ module Type (
notElemTCvSubst, notElemTCvSubst,
getTvSubstEnv, setTvSubstEnv, getTvSubstEnv, setTvSubstEnv,
zapTCvSubst, getTCvInScope, zapTCvSubst, getTCvInScope,
extendTCvInScope, extendTCvInScopeList, extendTCvInScope, extendTCvInScopeList, extendTCvInScopeSet,
extendTCvSubst, extendTCvSubstList, extendTCvSubst, extendTCvSubstList, extendTCvSubstAndInScope,
isInScope, composeTCvSubstEnv, composeTCvSubst, zipTyEnv, zipCoEnv, isInScope, composeTCvSubstEnv, composeTCvSubst, zipTyEnv, zipCoEnv,
isEmptyTCvSubst, unionTCvSubst, isEmptyTCvSubst, unionTCvSubst,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment