mirror of
https://github.com/neovim/neovim.git
synced 2025-10-21 17:21:49 +00:00
feat(lua)!: add stricter vim.tbl_islist() and rename old one to vim.tbl_isarray() (#16440)
feat(lua)!: add stricter vim.tbl_islist(), rename vim.tbl_isarray() Problem: `vim.tbl_islist` allows gaps in tables with integer keys ("arrays"). Solution: Rename `vim.tbl_islist` to `vim.tbl_isarray`, add new `vim.tbl.islist` that checks for consecutive integer keys that start from 1.
This commit is contained in:
@@ -521,6 +521,19 @@ describe('lua stdlib', function()
|
||||
]]))
|
||||
end)
|
||||
|
||||
it('vim.tbl_isarray', function()
|
||||
eq(true, exec_lua("return vim.tbl_isarray({})"))
|
||||
eq(false, exec_lua("return vim.tbl_isarray(vim.empty_dict())"))
|
||||
eq(true, exec_lua("return vim.tbl_isarray({'a', 'b', 'c'})"))
|
||||
eq(false, exec_lua("return vim.tbl_isarray({'a', '32', a='hello', b='baz'})"))
|
||||
eq(false, exec_lua("return vim.tbl_isarray({1, a='hello', b='baz'})"))
|
||||
eq(false, exec_lua("return vim.tbl_isarray({a='hello', b='baz', 1})"))
|
||||
eq(false, exec_lua("return vim.tbl_isarray({1, 2, nil, a='hello'})"))
|
||||
eq(true, exec_lua("return vim.tbl_isarray({1, 2, nil, 4})"))
|
||||
eq(true, exec_lua("return vim.tbl_isarray({nil, 2, 3, 4})"))
|
||||
eq(false, exec_lua("return vim.tbl_isarray({1, [1.5]=2, [3]=3})"))
|
||||
end)
|
||||
|
||||
it('vim.tbl_islist', function()
|
||||
eq(true, exec_lua("return vim.tbl_islist({})"))
|
||||
eq(false, exec_lua("return vim.tbl_islist(vim.empty_dict())"))
|
||||
@@ -529,6 +542,9 @@ describe('lua stdlib', function()
|
||||
eq(false, exec_lua("return vim.tbl_islist({1, a='hello', b='baz'})"))
|
||||
eq(false, exec_lua("return vim.tbl_islist({a='hello', b='baz', 1})"))
|
||||
eq(false, exec_lua("return vim.tbl_islist({1, 2, nil, a='hello'})"))
|
||||
eq(false, exec_lua("return vim.tbl_islist({1, 2, nil, 4})"))
|
||||
eq(false, exec_lua("return vim.tbl_islist({nil, 2, 3, 4})"))
|
||||
eq(false, exec_lua("return vim.tbl_islist({1, [1.5]=2, [3]=3})"))
|
||||
end)
|
||||
|
||||
it('vim.tbl_isempty', function()
|
||||
|
Reference in New Issue
Block a user