refactor: polymorphic checkNotAlreadyDeclared
This commit is contained in:
parent
497d8592cf
commit
de2df5955f
1 changed files with 15 additions and 14 deletions
|
|
@ -8,6 +8,21 @@ import Lean.Elab.Attributes
|
|||
|
||||
namespace Lean
|
||||
namespace Elab
|
||||
|
||||
def checkNotAlreadyDeclared {m} [Monad m] [MonadEnv m] [MonadError m] (declName : Name) : m Unit := do
|
||||
env ← getEnv;
|
||||
when (env.contains declName) $
|
||||
match privateToUserName? declName with
|
||||
| none => throwError ("'" ++ declName ++ "' has already been declared")
|
||||
| some declName => throwError ("private declaration '" ++ declName ++ "' has already been declared");
|
||||
when (env.contains (mkPrivateName env declName)) $
|
||||
throwError ("a private declaration '" ++ declName ++ "' has already been declared");
|
||||
match privateToUserName? declName with
|
||||
| none => pure ()
|
||||
| some declName =>
|
||||
when (env.contains declName) $
|
||||
throwError ("a non-private declaration '" ++ declName ++ "' has already been declared")
|
||||
|
||||
namespace Command
|
||||
|
||||
inductive Visibility
|
||||
|
|
@ -87,20 +102,6 @@ pure {
|
|||
attrs := attrs
|
||||
}
|
||||
|
||||
def checkNotAlreadyDeclared (declName : Name) : CommandElabM Unit := do
|
||||
env ← getEnv;
|
||||
when (env.contains declName) $
|
||||
match privateToUserName? declName with
|
||||
| none => throwError ("'" ++ declName ++ "' has already been declared")
|
||||
| some declName => throwError ("private declaration '" ++ declName ++ "' has already been declared");
|
||||
when (env.contains (mkPrivateName env declName)) $
|
||||
throwError ("a private declaration '" ++ declName ++ "' has already been declared");
|
||||
match privateToUserName? declName with
|
||||
| none => pure ()
|
||||
| some declName =>
|
||||
when (env.contains declName) $
|
||||
throwError ("a non-private declaration '" ++ declName ++ "' has already been declared")
|
||||
|
||||
def applyVisibility (visibility : Visibility) (declName : Name) : CommandElabM Name :=
|
||||
match visibility with
|
||||
| Visibility.private => do
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue