diff options
| author | ruki <[email protected]> | 2016-02-14 21:27:34 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2016-02-15 19:10:27 +0800 |
| commit | 52c273079851f2b83b9c632aec8e37b7482f6a83 (patch) | |
| tree | 039d06330552a10a5b456969dc88c43aac7bd833 /xmake/core/base/interpreter.lua | |
| parent | e056e25f57d12010ad5c5db4d6abd64e3450643f (diff) | |
warning only once and deprecate set/add_ api
Diffstat (limited to 'xmake/core/base/interpreter.lua')
| -rw-r--r-- | xmake/core/base/interpreter.lua | 44 |
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) |
