You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
False-positive type error: vim.cmd callable table flagged as "table cannot match fun(...)" #3272
lua-language-server should recognize callable tables (with a __call metamethod) as valid function values. Passing Neovim’s vim.cmd to pcall should not raise a type error.
Actual Behaviour
lua-language-server reports a false-positive type error when vim.cmd (a callable table in Neovim) is passed to pcall:
Cannot assign table to parameter fun(...):...unknown
Type table cannot match fun(...):...unknown
Reproduction steps
In Neovim, open a Lua buffer (e.g., :new | set ft=lua).
Insert the following code:
-- Works at runtime, but LuaLS flags the next line:
pcall(vim.cmd, "redrawtabline")
-- Diagnostic shown by LuaLS:
-- Cannot assign `table` to parameter `fun(...):...unknown`
Observe the diagnostic from lua-language-server.
Execute the code in Neovim (e.g., :luafile %) to confirm it runs without runtime errors.
Additional Notes
vim.cmd is a callable table provided by Neovim (implemented via __call metamethod). Direct calls like vim.cmd("redrawtabline") work at runtime. The false-positive only appears when passing vim.cmd as a function value (e.g., to pcall).
Workarounds:
-- Wrap in a function
pcall(function() vim.cmd("redrawtabline") end)
-- or use the typed API
pcall(vim.api.nvim_cmd, { cmd = "redrawtabline" }, {})
Please treat callable tables as functions for the purpose of type checking / inference.
Activity