summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2025-01-06 23:02:51 +0800
committerruki <[email protected]>2025-01-06 18:12:52 +0800
commitd630e9c0ef7819be09caf4b70ec6fbe1f974fbb7 (patch)
treea323f9538f4332a03daf7103d03a871c6bc64fd6
parent7d3cfcac2a3ca3e6860d7ba6c9e03850d04dacaa (diff)
fix namespace scope
-rw-r--r--xmake/core/base/interpreter.lua24
1 files changed, 11 insertions, 13 deletions
diff --git a/xmake/core/base/interpreter.lua b/xmake/core/base/interpreter.lua
index b579a3349..d976268c1 100644
--- a/xmake/core/base/interpreter.lua
+++ b/xmake/core/base/interpreter.lua
@@ -164,27 +164,15 @@ end
-- register scope end: scopename_end()
function interpreter:_api_register_scope_end(...)
assert(self and self._PUBLIC and self._PRIVATE)
-
- -- done
for _, apiname in ipairs({...}) do
- -- check
- assert(apiname)
-
-- register scope api
self:api_register(nil, apiname .. "_end", function (self, ...)
-
- -- check
assert(self and self._PRIVATE and apiname)
- -- the scopes
- local scopes = self._PRIVATE._SCOPES
- assert(scopes)
-
-- enter root scope
+ local scopes = self._PRIVATE._SCOPES
scopes._CURRENT = nil
-
- -- clear scope kind
scopes._CURRENT_KIND = nil
end)
end
@@ -1861,6 +1849,14 @@ end
-- the builtin api: namespace()
function interpreter:api_builtin_namespace(name, callback)
+
+ -- enter root scope
+ self:api_interp_save_scope()
+ local scopes = self._PRIVATE._SCOPES
+ scopes._CURRENT = nil
+ scopes._CURRENT_KIND = nil
+
+ -- enter namespace
local namespace = self._NAMESPACE
if namespace == nil then
namespace = {}
@@ -1876,6 +1872,7 @@ end
-- the builtin api: namespace_end()
function interpreter:api_builtin_namespace_end()
+ assert(self and self._PRIVATE)
local namespace = self._NAMESPACE
if namespace then
table.remove(namespace)
@@ -1885,6 +1882,7 @@ function interpreter:api_builtin_namespace_end()
else
self._NAMESPACE_STR = nil
end
+ self:api_interp_restore_scope()
end
-- the interpreter api: interp_save_scope()