diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2016-02-18 11:25:38 +0000 |
---|---|---|
committer | Simon Peyton Jones <simonpj@microsoft.com> | 2016-02-18 11:35:06 +0000 |
commit | b5292557dcf2e3844b4837172230575d40a8917e (patch) | |
tree | 82533d296b35b1553898a1380a43a0ba91efb77a /compiler/specialise | |
parent | 01449eb552daa082e46ceaaf8481708ee73dc2ad (diff) | |
download | haskell-b5292557dcf2e3844b4837172230575d40a8917e.tar.gz |
(Another) minor refactoring of substitutions
No change in functionality here, but greater clarity:
* In FamInstEnv.FlattenEnv, kill off the fi_in_scope field
We are already maintaining an in-scope set in the fe_subst field,
so it's silly do to it twice.
(This isn't strictly connected to the rest of this patch, but
the nomenclature changes below affect the same code, so I put
them together.)
* TyCoRep.extendTCVSubst used to take a TyVar or a CoVar and work
out what to do, but in fact we almost always know which of the
two we are doing. So:
- define extendTvSubst, extendCvSubst
- and use them
* Similar renamings in TyCoRep:
- extendTCvSubstList --> extendTvSubstList
- extendTCvSubstBinder --> extendTvSubstBinder
- extendTCvSubstAndInScope --> extendTvSubstAndInScope
* Add Type.extendTvSubstWithClone, extendCvSubstWithClone
* Similar nomenclature changes in Subst, SimplEnv, Specialise
* Kill off TyCoRep.substTelescope (never used)
Diffstat (limited to 'compiler/specialise')
-rw-r--r-- | compiler/specialise/Specialise.hs | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/compiler/specialise/Specialise.hs b/compiler/specialise/Specialise.hs index bccf600c10..443998b5fe 100644 --- a/compiler/specialise/Specialise.hs +++ b/compiler/specialise/Specialise.hs @@ -10,8 +10,8 @@ module Specialise ( specProgram, specUnfolding ) where #include "HsVersions.h" import Id -import TcType hiding( substTy, extendTCvSubstList ) -import Type hiding( substTy, extendTCvSubstList ) +import TcType hiding( substTy ) +import Type hiding( substTy, extendTvSubstList ) import Coercion( Coercion ) import Module( Module, HasModule(..) ) import CoreMonad @@ -1241,7 +1241,7 @@ specCalls mb_mod env rules_for_me calls_for_me fn rhs -- spec_tyvars = [a,c] -- ty_args = [t1,b,t3] spec_tv_binds = [(tv,ty) | (tv, Just ty) <- rhs_tyvars `zip` call_ts] - env1 = extendTCvSubstList env spec_tv_binds + env1 = extendTvSubstList env spec_tv_binds (rhs_env, poly_tyvars) = substBndrs env1 [tv | (tv, Nothing) <- rhs_tyvars `zip` call_ts] @@ -2133,9 +2133,9 @@ mapAndCombineSM f (x:xs) = do (y, uds1) <- f x (ys, uds2) <- mapAndCombineSM f xs return (y:ys, uds1 `plusUDs` uds2) -extendTCvSubstList :: SpecEnv -> [(TyVar,Type)] -> SpecEnv -extendTCvSubstList env tv_binds - = env { se_subst = CoreSubst.extendTCvSubstList (se_subst env) tv_binds } +extendTvSubstList :: SpecEnv -> [(TyVar,Type)] -> SpecEnv +extendTvSubstList env tv_binds + = env { se_subst = CoreSubst.extendTvSubstList (se_subst env) tv_binds } substTy :: SpecEnv -> Type -> Type substTy env ty = CoreSubst.substTy (se_subst env) ty |