30 lines
961 B
Text
30 lines
961 B
Text
/-
|
|
Copyright (c) 2019 Microsoft Corporation. All rights reserved.
|
|
Released under Apache 2.0 license as described in the file LICENSE.
|
|
Authors: Leonardo de Moura
|
|
-/
|
|
prelude
|
|
import Lean.EnvExtension
|
|
import Lean.PrivateName
|
|
|
|
namespace Lean
|
|
|
|
builtin_initialize protectedExt : TagDeclarationExtension ← mkTagDeclarationExtension
|
|
|
|
def addProtected (env : Environment) (n : Name) : Environment :=
|
|
protectedExt.tag env n
|
|
|
|
def isProtected (env : Environment) (n : Name) : Bool :=
|
|
protectedExt.isTagged env n
|
|
|
|
def mkPrivateName (env : Environment) (n : Name) : Name :=
|
|
-- If name is already private, remove previous suffix first. We need to ensure the resulting name
|
|
-- is private to *this* module.
|
|
Name.mkNum (privateHeader ++ env.mainModule) 0 ++ privateToUserName n
|
|
|
|
def isPrivateNameFromImportedModule (env : Environment) (n : Name) : Bool :=
|
|
match privateToUserName? n with
|
|
| some userName => mkPrivateName env userName != n
|
|
| _ => false
|
|
|
|
end Lean
|