fix: nested addMacroScope

This commit is contained in:
Leonardo de Moura 2020-01-23 12:36:37 -08:00
parent 09a482a2b4
commit d99ef11447

View file

@ -253,22 +253,25 @@ foo.bla._@.Init.Data.List.Basic._hyg.2.5
We use two delimiters for improving `hasMacroScopes` performance.
-/
private def mkMacroScopeName (mainModule : Name) (n : Name) : Name :=
mkNameStr (mkNameStr n "_@" ++ mainModule) "_hyg"
def addMacroScope (mainModule : Name) (n : Name) (scp : MacroScope) : Name :=
mkNameNum (mkMacroScopeName mainModule n) scp
def addMacroScopes (mainModule : Name) (n : Name) (scps : List MacroScope) : Name :=
match scps with
| [] => n
| _ => scps.foldl mkNameNum (mkMacroScopeName mainModule n)
def Name.hasMacroScopes : Name → Bool
| Name.str _ str _ => str == "_hyg"
| Name.num p _ _ => Name.hasMacroScopes p
| _ => false
private def mkMacroScopeName (mainModule : Name) (n : Name) : Name :=
mkNameStr (mkNameStr n "_@" ++ mainModule) "_hyg"
def addMacroScope (mainModule : Name) (n : Name) (scp : MacroScope) : Name :=
if n.hasMacroScopes then
mkNameNum n scp -- We ignore the case where the main module stored in `n` != `mainModule`
else
mkNameNum (mkMacroScopeName mainModule n) scp
def addMacroScopes (mainModule : Name) (n : Name) (scps : List MacroScope) : Name :=
match scps with
| [] => n
| _ => scps.foldl mkNameNum (if n.hasMacroScopes then n else mkMacroScopeName mainModule n)
structure ExtractMacroScopesResult :=
(name : Name)
(mainModule : Name)