From 0fe7e05448422918933c2163544f90dfefc09cad Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 27 Jan 2025 18:00:14 -0800 Subject: [PATCH 1/5] Fix an undefined access. --- Extension/src/LanguageServer/client.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 7a840a795..ff09e45ea 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -1842,7 +1842,8 @@ export class DefaultClient implements Client { public onDidChangeTextDocument(textDocumentChangeEvent: vscode.TextDocumentChangeEvent): void { if (util.isCpp(textDocumentChangeEvent.document)) { // If any file has changed, we need to abort the current rename operation - if (workspaceReferences.renamePending) { + if (workspaceReferences !== undefined // Occurs when a document changes before cpptools starts. + && workspaceReferences.renamePending) { workspaceReferences.cancelCurrentReferenceRequest(refs.CancellationSender.User); } From 31139ab4d1d4cddf6619288b5df30771b6eb01dd Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 27 Jan 2025 18:50:40 -0800 Subject: [PATCH 2/5] Switch to await this.ready; --- Extension/src/LanguageServer/client.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index ff09e45ea..8c040fdc6 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -1839,11 +1839,11 @@ export class DefaultClient implements Client { await this.languageClient.sendNotification(DidChangeTextEditorVisibleRangesNotification, params); } - public onDidChangeTextDocument(textDocumentChangeEvent: vscode.TextDocumentChangeEvent): void { + public async onDidChangeTextDocument(textDocumentChangeEvent: vscode.TextDocumentChangeEvent): Promise { + await this.ready; if (util.isCpp(textDocumentChangeEvent.document)) { // If any file has changed, we need to abort the current rename operation - if (workspaceReferences !== undefined // Occurs when a document changes before cpptools starts. - && workspaceReferences.renamePending) { + if (workspaceReferences.renamePending) { workspaceReferences.cancelCurrentReferenceRequest(refs.CancellationSender.User); } From eb1d4aef42239ca727dcc35ad417dfa5b8c1eec0 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 27 Jan 2025 19:30:28 -0800 Subject: [PATCH 3/5] Update. --- Extension/src/LanguageServer/client.ts | 6 +++--- Extension/src/LanguageServer/extension.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 8c040fdc6..ff09e45ea 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -1839,11 +1839,11 @@ export class DefaultClient implements Client { await this.languageClient.sendNotification(DidChangeTextEditorVisibleRangesNotification, params); } - public async onDidChangeTextDocument(textDocumentChangeEvent: vscode.TextDocumentChangeEvent): Promise { - await this.ready; + public onDidChangeTextDocument(textDocumentChangeEvent: vscode.TextDocumentChangeEvent): void { if (util.isCpp(textDocumentChangeEvent.document)) { // If any file has changed, we need to abort the current rename operation - if (workspaceReferences.renamePending) { + if (workspaceReferences !== undefined // Occurs when a document changes before cpptools starts. + && workspaceReferences.renamePending) { workspaceReferences.cancelCurrentReferenceRequest(refs.CancellationSender.User); } diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index a7fbecb07..6cc1232d5 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -298,7 +298,7 @@ async function onDidChangeSettings(event: vscode.ConfigurationChangeEvent): Prom } } -async function onDidChangeTextDocument(event: vscode.TextDocumentChangeEvent): Promise { +function onDidChangeTextDocument(event: vscode.TextDocumentChangeEvent): void { const me: Client = clients.getClientFor(event.document.uri); me.onDidChangeTextDocument(event); } From d3bf977f574d3673ece4067bc3afe0dafeceda37 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 27 Jan 2025 19:40:55 -0800 Subject: [PATCH 4/5] Change onDidOpenTextDocument. --- Extension/src/LanguageServer/client.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index ff09e45ea..dbdb47c9c 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -1858,7 +1858,11 @@ export class DefaultClient implements Client { public onDidOpenTextDocument(document: vscode.TextDocument): void { if (document.uri.scheme === "file") { const uri: string = document.uri.toString(); - openFileVersions.set(uri, document.version); + const oldVersion: number | undefined = openFileVersions.get(uri); + const newVersion: number = document.version; + if (oldVersion === undefined || newVersion > oldVersion) { + openFileVersions.set(uri, document.version); + } void SessionState.buildAndDebugIsSourceFile.set(util.isCppOrCFile(document.uri)); void SessionState.buildAndDebugIsFolderOpen.set(util.isFolderOpen(document.uri)); } else { From 2230254943541fae1fef08d31a5f404c5940cc4f Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 27 Jan 2025 19:51:14 -0800 Subject: [PATCH 5/5] Undo onDidOpen change. --- Extension/src/LanguageServer/client.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index dbdb47c9c..ff09e45ea 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -1858,11 +1858,7 @@ export class DefaultClient implements Client { public onDidOpenTextDocument(document: vscode.TextDocument): void { if (document.uri.scheme === "file") { const uri: string = document.uri.toString(); - const oldVersion: number | undefined = openFileVersions.get(uri); - const newVersion: number = document.version; - if (oldVersion === undefined || newVersion > oldVersion) { - openFileVersions.set(uri, document.version); - } + openFileVersions.set(uri, document.version); void SessionState.buildAndDebugIsSourceFile.set(util.isCppOrCFile(document.uri)); void SessionState.buildAndDebugIsFolderOpen.set(util.isFolderOpen(document.uri)); } else {