This PR fixes #13268 where `local macro` (and other local declarations) with compound names of depth ≥ 3 would silently lose their local entries. When `expandNamespacedDeclaration` rewrites e.g. `local macro (name := A.B.C) ...` into `namespace A.B.C; end_local_scope; ...; end A.B.C`, the compound `namespace A.B.C` pushes multiple scopes, but `end_local_scope` only marked the topmost scope as non-delimiting. This meant `addLocalEntry`'s stack traversal would stop at the first unmarked scope, and the local entry would be lost when the namespace scopes were popped. The fix parameterizes `end_local_scope` with a depth argument so it marks exactly the right number of scope levels as non-delimiting. `expandNamespacedDeclaration` now passes `ns.getNumParts` as the depth, and `expandInCmd` passes `1`. Closes #13268
9 lines
281 B
Text
9 lines
281 B
Text
local macro (name := hi) "test1" : term => `(42)
|
|
local macro (name := hi.there) "test2" : term => `(42)
|
|
local macro (name := hi.there.more) "test3" : term => `(42)
|
|
local macro (name := hi.there.more.yes) "test4" : term => `(42)
|
|
|
|
#check test1
|
|
#check test2
|
|
#check test3
|
|
#check test4
|