From 409e6f9d7e690a398c4318a8eab7fd56a2eceda3 Mon Sep 17 00:00:00 2001 From: Josh Rahm Date: Thu, 19 Jan 2023 19:37:12 +0000 Subject: fix(semantic_tokens.lua): Fix nil tokens/data in semantic_tokens.lua Some (poorly-implemented) LSPs can return an empty JSON object in LSP responses, which could cause tokens to be nil, which would eventually cause an error and a bad UI experience. This fix makes sure that the tokens variable is always set to a non-nil value. --- test/functional/plugin/lsp/semantic_tokens_spec.lua | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'test/functional/plugin') diff --git a/test/functional/plugin/lsp/semantic_tokens_spec.lua b/test/functional/plugin/lsp/semantic_tokens_spec.lua index 9c1ba86fe1..50b91edeb3 100644 --- a/test/functional/plugin/lsp/semantic_tokens_spec.lua +++ b/test/functional/plugin/lsp/semantic_tokens_spec.lua @@ -852,6 +852,20 @@ b = "as"]], }, }, }, + { + it = 'nil_data', + text = [[some text]], + response = [[{}]], -- Data is nil + legend = [[{ + "tokenTypes": [ + "namespace", "type", "class", "enum", "interface", "struct", "typeParameter", "parameter", "variable", "property", "enumMember", "event", "function", "method", "macro", "keyword", "modifier", "comment", "string", "number", "regexp", "operator" + ], + "tokenModifiers": [ + "declaration", "definition", "readonly", "static", "deprecated", "abstract", "async", "modification", "documentation", "defaultLibrary" + ] + }]], + expected = {}, + }, }) do it(test.it, function() exec_lua(create_server_definition) -- cgit