Skip to content

tokenModifier field is incorrectly marshalled as null in response #54

@eli-yip

Description

@eli-yip

The tokenModified field in certain JSON-RPC responses from docker-language-server is being incorrectly marshalled as null. This deviates from expected behavior (likely a boolean or omission) and causes issues for downstream clients(helix) that cannot correctly parse or handle a null value for this field.

Example client message:

{
  "jsonrpc": "2.0",
  "method": "initialize",
  "params": {
    "capabilities": {
      "general": {
        "positionEncodings": [
          "utf-8",
          "utf-32",
          "utf-16"
        ]
      },
      "textDocument": {
        "codeAction": {
          "codeActionLiteralSupport": {
            "codeActionKind": {
              "valueSet": [
                "",
                "quickfix",
                "refactor",
                "refactor.extract",
                "refactor.inline",
                "refactor.rewrite",
                "source",
                "source.organizeImports"
              ]
            }
          },
          "dataSupport": true,
          "disabledSupport": true,
          "isPreferredSupport": true,
          "resolveSupport": {
            "properties": [
              "edit",
              "command"
            ]
          }
        },
        "completion": {
          "completionItem": {
            "deprecatedSupport": true,
            "insertReplaceSupport": true,
            "resolveSupport": {
              "properties": [
                "documentation",
                "detail",
                "additionalTextEdits"
              ]
            },
            "snippetSupport": true,
            "tagSupport": {
              "valueSet": [
                1
              ]
            }
          },
          "completionItemKind": {}
        },
        "formatting": {
          "dynamicRegistration": false
        },
        "hover": {
          "contentFormat": [
            "markdown"
          ]
        },
        "inlayHint": {
          "dynamicRegistration": false
        },
        "publishDiagnostics": {
          "tagSupport": {
            "valueSet": [
              1,
              2
            ]
          },
          "versionSupport": true
        },
        "rename": {
          "dynamicRegistration": false,
          "honorsChangeAnnotations": false,
          "prepareSupport": true
        },
        "signatureHelp": {
          "signatureInformation": {
            "activeParameterSupport": true,
            "documentationFormat": [
              "markdown"
            ],
            "parameterInformation": {
              "labelOffsetSupport": true
            }
          }
        }
      },
      "window": {
        "workDoneProgress": true
      },
      "workspace": {
        "applyEdit": true,
        "configuration": true,
        "didChangeConfiguration": {
          "dynamicRegistration": false
        },
        "didChangeWatchedFiles": {
          "dynamicRegistration": true,
          "relativePatternSupport": false
        },
        "executeCommand": {
          "dynamicRegistration": false
        },
        "fileOperations": {
          "didRename": true,
          "willRename": true
        },
        "inlayHint": {
          "refreshSupport": false
        },
        "symbol": {
          "dynamicRegistration": false
        },
        "workspaceEdit": {
          "documentChanges": true,
          "failureHandling": "abort",
          "normalizesLineEndings": false,
          "resourceOperations": [
            "create",
            "rename",
            "delete"
          ]
        },
        "workspaceFolders": true
      }
    },
    "clientInfo": {
      "name": "helix",
      "version": "25.01.1 (5d16aae5)"
    },
    "processId": 29135,
    "rootPath": "/Users/xxx",
    "rootUri": "file:///Users/xxx",
    "workspaceFolders": [
      {
        "name": "xxx",
        "uri": "file:///Users/xxx"
      }
    ]
  },
  "id": 0
}

Response from lsp:

{
  "id": 0,
  "result": {
    "capabilities": {
      "textDocumentSync": {
        "openClose": true,
        "change": 1
      },
      "completionProvider": {},
      "hoverProvider": {},
      "definitionProvider": {},
      "documentHighlightProvider": {},
      "documentSymbolProvider": {},
      "codeActionProvider": {},
      "documentLinkProvider": {},
      "documentFormattingProvider": {},
      "executeCommandProvider": {
        "commands": [
          "dockerLspServer.telemetry.callback"
        ]
      },
      "semanticTokensProvider": {
        "legend": {
          "tokenTypes": [
            "type",
            "class",
            "string",
            "variable",
            "property",
            "keyword",
            "operator",
            "number",
            "comment"
          ],
          "tokenModifiers": null
        },
        "range": false,
        "full": true
      },
      "inlayHintProvider": {},
      "inlineCompletionProvider": {}
    },
    "serverInfo": {
      "name": "docker-language-server",
      "version": "0.0.0"
    }
  },
  "jsonrpc": "2.0"
}

More info: helix-editor/helix#13340

version: v0.3.4

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions