diff options
| author | ruki <[email protected]> | 2025-01-06 23:02:51 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2025-01-06 18:12:52 +0800 |
| commit | d630e9c0ef7819be09caf4b70ec6fbe1f974fbb7 (patch) | |
| tree | a323f9538f4332a03daf7103d03a871c6bc64fd6 | |
| parent | 7d3cfcac2a3ca3e6860d7ba6c9e03850d04dacaa (diff) | |
fix namespace scope
| -rw-r--r-- | xmake/core/base/interpreter.lua | 24 |
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() |
