mirror of
https://github.com/neovim/neovim.git
synced 2026-06-18 17:51:18 +00:00
fix(lua): avoid __index when deciding if a table is a list #39556
Problem:
When a table has `__index`, `vim.islist` is unreliable.
Solution:
Index using `rawget`.
(cherry picked from commit 264fbc0ace)
This commit is contained in:
committed by
github-actions[bot]
parent
c9cb49358b
commit
e67f9c5853
@@ -969,6 +969,17 @@ describe('lua stdlib', function()
|
||||
eq(false, exec_lua('return vim.islist({1, 2, nil, 4})'))
|
||||
eq(false, exec_lua('return vim.islist({nil, 2, 3, 4})'))
|
||||
eq(false, exec_lua('return vim.islist({1, [1.5]=2, [3]=3})'))
|
||||
eq(
|
||||
false,
|
||||
exec_lua([[
|
||||
local t = setmetatable({ 1, [3] = 3 }, {
|
||||
__index = function()
|
||||
return 2
|
||||
end,
|
||||
})
|
||||
return vim.islist(t)
|
||||
]])
|
||||
)
|
||||
end)
|
||||
|
||||
it('vim.tbl_isempty', function()
|
||||
|
||||
Reference in New Issue
Block a user