ghc-lib-0.20190523.1: The GHC API, decoupled from GHC versions

StgSubst

Synopsis

# Documentation

data Subst Source #

A renaming substitution from Ids to Ids. Like RnEnv2, but not maintaining pairs of substitutions. Like CoreSubst.Subst, but with the domain being Ids instead of entire CoreExpr.

Constructors

 Subst InScopeSet IdSubstEnv
emptySubst = mkEmptySubst emptyInScopeSet

Constructs a new Subst assuming the variables in the given InScopeSet are in scope.

substBndr :: Id -> Subst -> (Id, Subst) Source #

Substitutes an Id for another one according to the Subst given in a way that avoids shadowing the InScopeSet, returning the result and an updated Subst that should be used by subsequent substitutions.

substBndrs :: Traversable f => f Id -> Subst -> (f Id, Subst) Source #

substBndrs = runState . traverse (state . substBndr)

Substitutes an occurrence of an identifier for its counterpart recorded in the Subst.

Substitutes an occurrence of an identifier for its counterpart recorded in the Subst. Does not generate a debug warning if the identifier to to substitute wasn't in scope.

Add the Id to the in-scope set and remove any existing substitutions for it.

extendSubst :: Id -> Id -> Subst -> Subst Source #

Add a substitution for an Id to the Subst: you must ensure that the in-scope set is such that TyCORep Note [The substitution invariant] holds after extending the substitution like this.