Skip to content

Conversion of unsupported ClientCapabilities is incompatible with other LSP implementations. #35

@adityasharad

Description

@adityasharad

Client capabilities in the LSP are usually specified as an optional wrapper around a boolean value, e.g. the workspaceEdit capability in WorkspaceClientCapabilities is a wrapper around a documentChanges boolean. The possible values here are: wrapper around true, wrapper around false, or a non-existent or null value to indicate the capability is not supported/recognised.

I observe that the default behaviour of the SupportsConverter is to always provide the value false instead of null when the capability is not supported. This makes the OmniSharp protocol implementation incompatible with language server implementations that expect an object wrapper around a boolean (instead of just a boolean) in capability fields such as WorkspaceClientCapabilities.workspaceEdit.

The example where I observed this incompatibility used Eclipse LSP4J for the server, and the .NET language client (which relies on OmniSharp for the protocol implementation) as the client.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions