Commit 0b6dcf6d authored by eir@cis.upenn.edu's avatar eir@cis.upenn.edu
Browse files

Fix #11814 by throwing more stuff into InScopeSets

parent dd99f2ec
......@@ -22,6 +22,7 @@ import MkCore ( mkRuntimeErrorApp, aBSENT_ERROR_ID, mkCoreUbxTup )
import MkId ( voidArgId, voidPrimId )
import TysPrim ( voidPrimTy )
import TysWiredIn ( tupleDataCon )
import VarEnv ( mkInScopeSet )
import Type
import Coercion
import FamInstEnv
......@@ -127,7 +128,9 @@ mkWwBodies :: DynFlags
-- E
mkWwBodies dflags fam_envs fun_ty demands res_info
= do { (wrap_args, wrap_fn_args, work_fn_args, res_ty) <- mkWWargs emptyTCvSubst fun_ty demands
= do { let empty_subst = mkEmptyTCvSubst (mkInScopeSet (tyCoVarsOfType fun_ty))
; (wrap_args, wrap_fn_args, work_fn_args, res_ty) <- mkWWargs empty_subst fun_ty demands
; (useful1, work_args, wrap_fn_str, work_fn_str) <- mkWWstr dflags fam_envs wrap_args
-- Do CPR w/w. See Note [Always do CPR w/w]
......
......@@ -1084,9 +1084,9 @@ mkCastTy ty co | isReflexiveCo co = ty
mkCastTy (CastTy ty co1) co2 = mkCastTy ty (co1 `mkTransCo` co2)
-- See Note [Weird typing rule for ForAllTy]
mkCastTy (ForAllTy (Named tv vis) inner_ty) co
mkCastTy outer_ty@(ForAllTy (Named tv vis) inner_ty) co
= -- have to make sure that pushing the co in doesn't capture the bound var
let fvs = tyCoVarsOfCo co
let fvs = tyCoVarsOfCo co `unionVarSet` tyCoVarsOfType outer_ty
empty_subst = mkEmptyTCvSubst (mkInScopeSet fvs)
(subst, tv') = substTyVarBndr empty_subst tv
in
......
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