feat: check if "has already been declared" at the beginning
This commit is contained in:
parent
360cebf680
commit
596a3af1a0
2 changed files with 6 additions and 0 deletions
|
|
@ -116,6 +116,11 @@ match modifiers.visibility with
|
|||
pure declName
|
||||
| _ => pure declName
|
||||
|
||||
def checkNotAlreadyDeclared (ref : Syntax) (declName : Name) : CommandElabM Unit := do
|
||||
env ← getEnv;
|
||||
when (env.contains declName) $
|
||||
throwError ref ("'" ++ declName ++ "' has already been declared")
|
||||
|
||||
def applyAttributes (ref : Syntax) (declName : Name) (attrs : Array Attribute) (applicationTime : AttributeApplicationTime) : CommandElabM Unit :=
|
||||
attrs.forM $ fun attr => do
|
||||
env ← getEnv;
|
||||
|
|
|
|||
|
|
@ -145,6 +145,7 @@ def elabDefLike (view : DefView) : CommandElabM Unit :=
|
|||
let ref := view.ref;
|
||||
withDeclId view.declId $ fun name => do
|
||||
declName ← mkDeclName view.modifiers name;
|
||||
checkNotAlreadyDeclared ref declName;
|
||||
applyAttributes ref declName view.modifiers.attrs AttributeApplicationTime.beforeElaboration;
|
||||
explictLevelNames ← getLevelNames;
|
||||
decl? ← runTermElabM declName $ fun vars => Term.elabBinders view.binders.getArgs $ fun xs =>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue