From 8d85ede7c1b35533e761bacf5b50b8b5ac015fc5 Mon Sep 17 00:00:00 2001 From: Cristiano Calcagno Date: Fri, 22 Apr 2022 19:22:20 +0200 Subject: [PATCH] Fix issue with crash on rename. Fixes https://github.com/rescript-lang/rescript-vscode/issues/392 --- server/src/server.ts | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/server/src/server.ts b/server/src/server.ts index 229dee593..a69a7c2ca 100644 --- a/server/src/server.ts +++ b/server/src/server.ts @@ -379,8 +379,16 @@ function documentSymbol(msg: p.RequestMessage) { // https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_documentSymbol let params = msg.params as p.DocumentSymbolParams; let filePath = fileURLToPath(params.textDocument.uri); - let code = getOpenedFileContent(params.textDocument.uri); let extension = path.extname(params.textDocument.uri); + if (extension !== c.resExt && extension !== c.resiExt) { + // Can be called on renamed extension after rename + return { + jsonrpc: c.jsonrpcVersion, + id: msg.id, + result: null, + }; + } + let code = getOpenedFileContent(params.textDocument.uri); let tmpname = utils.createFileInTempDir(extension); fs.writeFileSync(tmpname, code, { encoding: "utf-8" }); let response = utils.runAnalysisCommand( @@ -397,8 +405,16 @@ function semanticTokens(msg: p.RequestMessage) { // https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_semanticTokens let params = msg.params as p.SemanticTokensParams; let filePath = fileURLToPath(params.textDocument.uri); - let code = getOpenedFileContent(params.textDocument.uri); let extension = path.extname(params.textDocument.uri); + if (extension !== c.resExt && extension !== c.resiExt) { + // Can be called on renamed extension after rename + return { + jsonrpc: c.jsonrpcVersion, + id: msg.id, + result: null, + }; + } + let code = getOpenedFileContent(params.textDocument.uri); let tmpname = utils.createFileInTempDir(extension); fs.writeFileSync(tmpname, code, { encoding: "utf-8" }); let response = utils.runAnalysisCommand(