fix(lua): always return nil values in vim.tbl_get when no results

While `return` and `return nil` are for most intents and purposes
identical, there are situations where they're not. For example,
calculating the amount of values via the `select()` function will yield
varying results:

```lua
local function nothing() return     end
local function null()    return nil end

select('#', nothing()) -- 0
select('#', null())    -- 1
```

`vim.tbl_get` currently returns both nil and no results, which makes it
unreliable to use in certain situations without manually accounting for
these discrepancies.
This commit is contained in:
William Boman
2022-12-15 02:27:23 +01:00
parent 0887ad1cbb
commit 26c918d03f
2 changed files with 6 additions and 5 deletions

View File

@@ -395,15 +395,14 @@ end
function vim.tbl_get(o, ...)
local keys = { ... }
if #keys == 0 then
return
return nil
end
for i, k in ipairs(keys) do
if type(o[k]) ~= 'table' and next(keys, i) then
return nil
end
o = o[k]
if o == nil then
return
return nil
elseif type(o) ~= 'table' and next(keys, i) then
return nil
end
end
return o