feat: add ScopedEnvExtension.addLocalEntry
This commit is contained in:
parent
2463371a25
commit
4d428c8660
2 changed files with 10 additions and 2 deletions
|
|
@ -495,8 +495,8 @@ private def ParserAttribute.add (attrName : Name) (catName : Name) (declName : N
|
|||
match addParser categories catName declName leading parser prio, kind with
|
||||
| Except.error ex, _ => throwError ex
|
||||
| Except.ok _, AttributeKind.global => modifyEnv fun env => parserExtension.addEntry env entry
|
||||
| Except.ok _, AttributeKind.scoped => modifyEnv fun env => parserExtension.addScopedEntry env (← getCurrNamespace) entry
|
||||
| Except.ok _, AttributeKind.local => throwError! "local parsers have not been implemented yet"
|
||||
| Except.ok _, AttributeKind.scoped => modifyEnv fun env => parserExtension.addScopedEntry env (← getCurrNamespace) entry
|
||||
| Except.ok _, AttributeKind.local => modifyEnv fun env => parserExtension.addLocalEntry env entry
|
||||
runParserAttributeHooks catName declName (builtin := false)
|
||||
|
||||
def mkParserAttributeImpl (attrName : Name) (catName : Name) : AttributeImpl where
|
||||
|
|
|
|||
|
|
@ -142,6 +142,14 @@ def ScopedEnvExtension.addEntry (ext : ScopedEnvExtension α β σ) (env : Envir
|
|||
def ScopedEnvExtension.addScopedEntry (ext : ScopedEnvExtension α β σ) (env : Environment) (namespaceName : Name) (b : β) : Environment :=
|
||||
ext.ext.addEntry env (Entry.«scoped» namespaceName b)
|
||||
|
||||
def ScopedEnvExtension.addLocalEntry (ext : ScopedEnvExtension α β σ) (env : Environment) (b : β) : Environment :=
|
||||
let s := ext.ext.getState env
|
||||
match s.stateStack with
|
||||
| [] => env
|
||||
| top :: states =>
|
||||
let top := { top with state := ext.descr.addEntry top.state b }
|
||||
ext.ext.setState env { s with stateStack := top :: states }
|
||||
|
||||
def ScopedEnvExtension.getState [Inhabited σ] (ext : ScopedEnvExtension α β σ) (env : Environment) : σ :=
|
||||
match ext.ext.getState env |>.stateStack with
|
||||
| top :: _ => top.state
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue