LSP_METHODS_MAP: Correct server -> client types #201
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi,
I was playing with communication between the server (editor) and another server (lsp) in the context of tests. Both instances are based on pygls. I think the deserialization types are swapped. Consider the following:
workspace/configuration
request docs. Params should beConfigurationParams
and the resultany[]
according to spec. From the code I think theLSP_METHODS_MAP
is in format(options, params, return)
. The original configuration is(None, List[Any], ConfigurationParams, )
.What I think is happening
When the client receives this request, it tries to deserialize params:
__name__
is not present ontyping.List
https://github.com/openlawlibrary/pygls/blob/master/pygls/protocol.py#L131Code @ https://github.com/openlawlibrary/pygls/blob/master/pygls/protocol.py#L127
Are there any other instances of this issue?
This is also true for the
WORKSPACE_FOLDERS
request.Traceback
Impact
Since the problem only occurs when pygls is used as a client (editor), this should not be any problem for the users. However, it can be encountered during testing.
Evaluation
params
has attr__name__
? So we can handle such cases better?Hope I am not missing something :)
Code review checklist (for code reviewer to complete)