mirror of
https://github.com/neovim/neovim.git
synced 2026-07-29 20:08:03 +00:00
refactor(lsp): remove implicit rpc error tostring #38707
Problem: LSP error responses implicitly rely on a custom `__tostring` function (`vim.lsp.rpc.format_rpc_error`) for formatting. This causes errors that are not created via `vim.lsp.rpc.error` to behave inconsistently with those that are. Furthermore, we usually use `log.error` to print these errors, which uses `vim.inspect` under the hood, so the custom `__tostring` provides little benefit. This increases the difficulty of refactoring the code, as it tightly couples RPC error handling with the LSP. Solution: Convert every potential `__tostring` call to an explicit one. Since we don't describe this behavior in the documentation, this should not be a breaking change.
This commit is contained in:
@@ -137,13 +137,11 @@ function M.rpc_response_error(code, message, data)
|
||||
-- TODO should this error or just pick a sane error (like InternalError)?
|
||||
---@type string
|
||||
local code_name = assert(protocol.ErrorCodes[code], 'Invalid RPC error code')
|
||||
return setmetatable({
|
||||
return {
|
||||
code = code,
|
||||
message = message or code_name,
|
||||
data = data,
|
||||
}, {
|
||||
__tostring = M.format_rpc_error,
|
||||
})
|
||||
}
|
||||
end
|
||||
|
||||
--- Dispatchers for LSP message types.
|
||||
@@ -540,9 +538,6 @@ function Client:handle_body(body)
|
||||
if callback then
|
||||
self.message_callbacks[result_id] = nil
|
||||
validate('callback', callback, 'function')
|
||||
if decoded.error then
|
||||
setmetatable(decoded.error, { __tostring = M.format_rpc_error })
|
||||
end
|
||||
self:try_call(
|
||||
M.client_errors.SERVER_RESULT_CALLBACK_ERROR,
|
||||
callback,
|
||||
|
||||
Reference in New Issue
Block a user