Skip to content

Commit f8f04e7

Browse files
authored
Merge pull request #2106 from fesily/meta-support-metable
meta:support metatable
2 parents 19bf34c + 0c3e354 commit f8f04e7

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

meta/template/basic.lua

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,9 +209,46 @@ function select(index, ...) end
209209
---@return function
210210
function setfenv(f, table) end
211211

212+
213+
---@class metatable
214+
---@field __mode 'v'|'k'|'kv'|nil
215+
---@field __metatable any|nil
216+
---@field __tostring fun(t):string|nil
217+
---@field __gc fun(t)|nil
218+
---@field __add fun(t1,t2):any|nil
219+
---@field __sub fun(t1,t2):any|nil
220+
---@field __mul fun(t1,t2):any|nil
221+
---@field __div fun(t1,t2):any|nil
222+
---@field __mod fun(t1,t2):any|nil
223+
---@field __pow fun(t1,t2):any|nil
224+
---@field __unm fun(t):any|nil
225+
---#if VERSION >= 5.3 then
226+
---@field __idiv fun(t1,t2):any|nil
227+
---@field __band fun(t1,t2):any|nil
228+
---@field __bor fun(t1,t2):any|nil
229+
---@field __bxor fun(t1,t2):any|nil
230+
---@field __bnot fun(t):any|nil
231+
---@field __shl fun(t1,t2):any|nil
232+
---@field __shr fun(t1,t2):any|nil
233+
---#end
234+
---@field __concat fun(t1,t2):any|nil
235+
---@field __len fun(t):integer|nil
236+
---@field __eq fun(t1,t2):boolean|nil
237+
---@field __lt fun(t1,t2):boolean|nil
238+
---@field __le fun(t1,t2):boolean|nil
239+
---@field __index table|fun(t,k)|nil
240+
---@field __newindex table|fun(t,k,v)|nil
241+
---@field __call fun(t,...)|nil
242+
---#if VERSION > 5.1 or VERSION == JIT then
243+
---@field __pairs fun(t):fun(t,k,v)|nil
244+
---#end
245+
---#if VERSION == JIT or VERSION == 5.2 then
246+
---@field __ipairs fun(t):fun(t,k,v)|nil
247+
---#end
248+
212249
---#DES 'setmetatable'
213250
---@param table table
214-
---@param metatable? table
251+
---@param metatable? metatable|table
215252
---@return table
216253
function setmetatable(table, metatable) end
217254

script/vm/compiler.lua

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -522,6 +522,8 @@ local function getReturnOfSetMetaTable(args)
522522
end
523523
end)
524524
end
525+
--过滤nil
526+
node:remove 'nil'
525527
return node
526528
end
527529

0 commit comments

Comments
 (0)