mirror of
https://github.com/neovim/neovim.git
synced 2025-09-07 11:58:17 +00:00
refactor(iter): use metatable as packed table tag (#23254)
This is a more robust method for tagging a packed table as it completely eliminates the possibility of mistaking an actual table key as the packed table tag.
This commit is contained in:
@@ -3416,6 +3416,41 @@ describe('lua stdlib', function()
|
||||
{ item_3 = 'test' },
|
||||
}, output)
|
||||
end)
|
||||
|
||||
it('handles nil values', function()
|
||||
local t = {1, 2, 3, 4, 5}
|
||||
do
|
||||
local it = vim.iter(t):enumerate():map(function(i, v)
|
||||
if i % 2 == 0 then
|
||||
return nil, v*v
|
||||
end
|
||||
return v, nil
|
||||
end)
|
||||
eq({
|
||||
{ [1] = 1 },
|
||||
{ [2] = 4 },
|
||||
{ [1] = 3 },
|
||||
{ [2] = 16 },
|
||||
{ [1] = 5 },
|
||||
}, it:totable())
|
||||
end
|
||||
|
||||
do
|
||||
local it = vim.iter(ipairs(t)):map(function(i, v)
|
||||
if i % 2 == 0 then
|
||||
return nil, v*v
|
||||
end
|
||||
return v, nil
|
||||
end)
|
||||
eq({
|
||||
{ [1] = 1 },
|
||||
{ [2] = 4 },
|
||||
{ [1] = 3 },
|
||||
{ [2] = 16 },
|
||||
{ [1] = 5 },
|
||||
}, it:totable())
|
||||
end
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
|
||||
|
Reference in New Issue
Block a user