@[inline, reducible]
A general abstraction for the idea of a scope in the compiler.
Equations
Instances For
Equations
Instances For
Equations
- Lean.Compiler.LCNF.ScopeM.setScope newScope = set newScope
Instances For
def
Lean.Compiler.LCNF.ScopeM.withBackTrackingScope
{m : Type → Type u_1}
{α : Type}
[MonadLiftT Lean.Compiler.LCNF.ScopeM m]
[Monad m]
[MonadFinally m]
(x : m α)
:
m α
Execute x
but recover the previous scope after doing so.
Equations
- Lean.Compiler.LCNF.ScopeM.withBackTrackingScope x = do let scope ← liftM Lean.Compiler.LCNF.ScopeM.getScope tryFinally x (liftM (Lean.Compiler.LCNF.ScopeM.setScope scope))
Instances For
def
Lean.Compiler.LCNF.ScopeM.withNewScope
{m : Type → Type u_1}
{α : Type}
[MonadLiftT Lean.Compiler.LCNF.ScopeM m]
[Monad m]
[MonadFinally m]
(x : m α)
:
m α
Clear the current scope for the monadic action x
, afterwards continuing
with the old one.
Equations
Instances For
Check whether fvarId
is in the current scope, that is, was declared within
the current fun
declaration that is being processed.
Equations
- Lean.Compiler.LCNF.ScopeM.isInScope fvarId = do let scope ← Lean.Compiler.LCNF.ScopeM.getScope pure (Lean.RBTree.contains scope fvarId)
Instances For
Add a new FVarId
to the current scope.
Equations
- Lean.Compiler.LCNF.ScopeM.addToScope fvarId = modify fun scope => Lean.FVarIdSet.insert scope fvarId