mirror of https://github.com/folke/lazy.nvim.git
fix(util): Util.merge now skips nil args
This commit is contained in:
parent
3769461194
commit
70f764bf73
|
@ -396,22 +396,19 @@ end
|
||||||
---@param ... T
|
---@param ... T
|
||||||
---@return T
|
---@return T
|
||||||
function M.merge(...)
|
function M.merge(...)
|
||||||
local values = { ... }
|
local ret = select(1, ...)
|
||||||
local ret = values[1]
|
|
||||||
|
|
||||||
if ret == vim.NIL then
|
if ret == vim.NIL then
|
||||||
ret = nil
|
ret = nil
|
||||||
end
|
end
|
||||||
|
for i = 2, select("#", ...) do
|
||||||
for i = 2, #values, 1 do
|
local value = select(i, ...)
|
||||||
local value = values[i]
|
|
||||||
if can_merge(ret) and can_merge(value) then
|
if can_merge(ret) and can_merge(value) then
|
||||||
for k, v in pairs(value) do
|
for k, v in pairs(value) do
|
||||||
ret[k] = M.merge(ret[k], v)
|
ret[k] = M.merge(ret[k], v)
|
||||||
end
|
end
|
||||||
elseif value == vim.NIL then
|
elseif value == vim.NIL then
|
||||||
ret = nil
|
ret = nil
|
||||||
else
|
elseif value ~= nil then
|
||||||
ret = value
|
ret = value
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -101,6 +101,22 @@ describe("util", function()
|
||||||
input = { { a = 1 }, { b = 2 } },
|
input = { { a = 1 }, { b = 2 } },
|
||||||
output = { a = 1, b = 2 },
|
output = { a = 1, b = 2 },
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
input = { nil, { a = 1 }, { b = 2 } },
|
||||||
|
output = { a = 1, b = 2 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
input = { { a = 1 }, { b = 2 }, nil },
|
||||||
|
output = { a = 1, b = 2 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
input = { { a = 1 }, nil, { b = 2 } },
|
||||||
|
output = { a = 1, b = 2 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
input = { nil, { a = 1 }, nil, { b = 2 }, nil },
|
||||||
|
output = { a = 1, b = 2 },
|
||||||
|
},
|
||||||
{
|
{
|
||||||
input = { { a = 1 }, { a = 2 } },
|
input = { { a = 1 }, { a = 2 } },
|
||||||
output = { a = 2 },
|
output = { a = 2 },
|
||||||
|
@ -120,7 +136,11 @@ describe("util", function()
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test in ipairs(tests) do
|
for _, test in ipairs(tests) do
|
||||||
assert.same(test.output, Util.merge(unpack(test.input)))
|
local n = 0
|
||||||
|
for i in pairs(test.input) do
|
||||||
|
n = math.max(n, i)
|
||||||
|
end
|
||||||
|
assert.same(test.output, Util.merge(unpack(test.input, 1, n)))
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
Loading…
Reference in New Issue