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
When a JSON-RPC request without params (i.e. them being null in Java) is emitted, that gets written as "params": null instead of just omitting the params field from the output. The latter should be done instead.
/**
* The method's params.
*/
params?: array | object;
which exactly matches the JSON-RPC specification with the ? meaning omission, but not null (which would have to be explicitly given as a | null variant).
This clearly violates the specifications and trips up other JSON-RPC/LSP implementations that require incoming requests to follow the specification to the letter.
Background
According to git blame, this behavior was introduced in #137, the goal of which was to fix the behavior for response result that indeed may not be omitted but may be null. Looks like the same logic was erroneously applied to request/notification params as well.
The text was updated successfully, but these errors were encountered:
I suspect to change this back (i.e. revert #137) we need to get xtext involved so to not regress all the xtext generated language servers. See eclipse/xtext-core#558 for the discussion that led to #137's behaviour.
When a JSON-RPC request without
params
(i.e. them beingnull
in Java) is emitted, that gets written as"params": null
instead of just omitting theparams
field from the output. The latter should be done instead.Specifications
JSON-RPC specification says:
where "two structured types (Objects and Arrays)".
LSP specification says (in TypeScript syntax):
which exactly matches the JSON-RPC specification with the
?
meaning omission, but notnull
(which would have to be explicitly given as a| null
variant).Implementation
The writing of
params
here:https://github.com/eclipse/lsp4j/blob/22f8edce55379bd9d4ae1b96bc614e74549bc0f9/org.eclipse.lsp4j.jsonrpc/src/main/java/org/eclipse/lsp4j/jsonrpc/json/adapters/MessageTypeAdapter.java#L404-L409
uses the
writeNullValue
function here:https://github.com/eclipse/lsp4j/blob/22f8edce55379bd9d4ae1b96bc614e74549bc0f9/org.eclipse.lsp4j.jsonrpc/src/main/java/org/eclipse/lsp4j/jsonrpc/json/adapters/MessageTypeAdapter.java#L449-L457
which goes out of its way to output a
null
instead of omitting missingparams
.This clearly violates the specifications and trips up other JSON-RPC/LSP implementations that require incoming requests to follow the specification to the letter.
Background
According to git blame, this behavior was introduced in #137, the goal of which was to fix the behavior for response
result
that indeed may not be omitted but may benull
. Looks like the same logic was erroneously applied to request/notificationparams
as well.The text was updated successfully, but these errors were encountered: