summaryrefslogtreecommitdiff
path: root/xmake/core/base/interpreter.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2016-02-14 21:27:34 +0800
committerruki <[email protected]>2016-02-15 19:10:27 +0800
commit52c273079851f2b83b9c632aec8e37b7482f6a83 (patch)
tree039d06330552a10a5b456969dc88c43aac7bd833 /xmake/core/base/interpreter.lua
parente056e25f57d12010ad5c5db4d6abd64e3450643f (diff)
warning only once and deprecate set/add_ api
Diffstat (limited to 'xmake/core/base/interpreter.lua')
-rw-r--r--xmake/core/base/interpreter.lua44
1 files changed, 42 insertions, 2 deletions
diff --git a/xmake/core/base/interpreter.lua b/xmake/core/base/interpreter.lua
index 61f2f0270..1da93d5a0 100644
--- a/xmake/core/base/interpreter.lua
+++ b/xmake/core/base/interpreter.lua
@@ -523,9 +523,9 @@ function interpreter.api_register_builtin(self, name, func)
self._PUBLIC[name] = func
end
--- register api for set_scope()
+-- register api for def_scope()
--
--- interp:api_register_set_scope("scope_kind1", "scope_kind2")
+-- interp:api_register_def_scope("scope_kind1", "scope_kind2")
--
-- api:
-- set_$(scope_kind1)("scope_name1")
@@ -563,6 +563,35 @@ end
-- }
-- }
--
+function interpreter.api_register_def_scope(self, ...)
+
+ -- check
+ assert(self)
+
+ -- define implementation
+ local implementation = function (self, scopes, scope_kind, scope_name)
+
+ -- init scope for kind
+ local scope_for_kind = scopes[scope_kind] or {}
+ scopes[scope_kind] = scope_for_kind
+
+ -- init scope for name
+ scope_for_kind[scope_name] = scope_for_kind[scope_name] or {}
+
+ -- save the current scope
+ scopes._CURRENT = scope_for_kind[scope_name]
+
+ -- update the current scope kind
+ scopes._CURRENT_KIND = scope_kind
+
+ end
+
+ -- register implementation
+ self:_api_register_xxx_scope("def", implementation, ...)
+end
+
+-- TODO: we will remove the deprecated api in the future
+-- register api for set_scope()
function interpreter.api_register_set_scope(self, ...)
-- check
@@ -575,6 +604,11 @@ function interpreter.api_register_set_scope(self, ...)
local scope_for_kind = scopes[scope_kind] or {}
scopes[scope_kind] = scope_for_kind
+ -- warning
+ if not scope_name:startswith("__") then
+ utils.warning("please uses def_%s(\"%s\"), \"set_%s\" has been deprecated!", scope_kind, scope_name, scope_kind)
+ end
+
-- check
if not scope_for_kind[scope_name] then
utils.error("set_%s(\"%s\") failed, %s not found!", scope_kind, scope_name, scope_name)
@@ -597,6 +631,7 @@ function interpreter.api_register_set_scope(self, ...)
self:_api_register_xxx_scope("set", implementation, ...)
end
+-- TODO: we will remove the deprecated api in the future
-- register api for add_scope()
function interpreter.api_register_add_scope(self, ...)
@@ -610,6 +645,11 @@ function interpreter.api_register_add_scope(self, ...)
local scope_for_kind = scopes[scope_kind] or {}
scopes[scope_kind] = scope_for_kind
+ -- warning
+ if not scope_name:startswith("__") then
+ utils.warning("please uses def_%s(\"%s\"), \"add_%s\" has been deprecated!", scope_kind, scope_name, scope_kind)
+ end
+
-- check
if scope_for_kind[scope_name] then
utils.error("add_%s(\"%s\") failed, %s have been defined!", scope_kind, scope_name, scope_name)