From 526d4f6c9c4b87fda874b790771d8e69ffeef797 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson Date: Wed, 5 Apr 2023 11:44:31 -0700 Subject: [PATCH 1/5] Fix stuck provider id --- Extension/src/LanguageServer/configurations.ts | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index 52535823d..92355a682 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -21,12 +21,11 @@ import { setTimeout } from 'timers'; import * as which from 'which'; import { getOutputChannelLogger } from '../logger'; import { compilerPaths, DefaultClient } from './client'; -import { UI } from './ui'; +import { UI, getUI } from './ui'; nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })(); const localize: nls.LocalizeFunc = nls.loadMessageBundle(); const configVersion: number = 4; -let ui: UI; type Environment = { [key: string]: string | string[] }; @@ -351,7 +350,7 @@ export class CppProperties { const configuration: Configuration | undefined = this.CurrentConfiguration; if (configuration) { if (configuration.compilerPath !== undefined || configuration.compileCommands !== undefined || configuration.configurationProvider !== undefined) { - ui.showCompilerStatusIcon(false); + getUI().then((ui: UI) => ui.showCompilerStatusIcon(false)); } this.applyDefaultConfigurationValues(configuration); this.configurationIncomplete = false; @@ -833,7 +832,7 @@ export class CppProperties { const userSettings: CppSettings = new CppSettings(); const env: Environment = this.ExtendedEnvironment; for (let i: number = 0; i < this.configurationJson.configurations.length; i++) { - const configuration: Configuration = this.configurationJson.configurations[i]; + const configuration: Configuration = { ...this.configurationJson.configurations[i] }; configuration.rawCompilerPath = configuration.compilerPath; configuration.includePath = this.updateConfigurationPathsArray(configuration.includePath, settings.defaultIncludePath, env); @@ -970,10 +969,6 @@ export class CppProperties { if (this.client.lastCustomBrowseConfigurationProviderId !== undefined) { keepCachedBrowseConfig = configuration.configurationProvider === this.client.lastCustomBrowseConfigurationProviderId.Value; } - } else if (this.client.lastCustomBrowseConfigurationProviderId !== undefined - && !!this.client.lastCustomBrowseConfigurationProviderId.Value) { - // Use the last configuration provider we received a browse config from as the provider ID. - configuration.configurationProvider = this.client.lastCustomBrowseConfigurationProviderId.Value; } } else if (this.client.lastCustomBrowseConfigurationProviderId !== undefined) { keepCachedBrowseConfig = configuration.configurationProvider === this.client.lastCustomBrowseConfigurationProviderId.Value; From e02f6c8e66fe50e1a76b55529324dbcd390e9dd1 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson Date: Wed, 5 Apr 2023 12:26:19 -0700 Subject: [PATCH 2/5] bug fix: --- Extension/src/LanguageServer/configurations.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index 92355a682..7da79aaea 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -828,11 +828,12 @@ export class CppProperties { if (!this.configurationJson) { return; } + this.parsePropertiesFile(); // Clear out any modifications we may have made internally. const settings: CppSettings = new CppSettings(this.rootUri); const userSettings: CppSettings = new CppSettings(); const env: Environment = this.ExtendedEnvironment; for (let i: number = 0; i < this.configurationJson.configurations.length; i++) { - const configuration: Configuration = { ...this.configurationJson.configurations[i] }; + const configuration: Configuration = this.configurationJson.configurations[i]; configuration.rawCompilerPath = configuration.compilerPath; configuration.includePath = this.updateConfigurationPathsArray(configuration.includePath, settings.defaultIncludePath, env); From ebd311c5a01ae3c161ef3c545515aa7466e8e102 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson Date: Wed, 5 Apr 2023 12:43:29 -0700 Subject: [PATCH 3/5] Ensure parsePropertiesFile refreshes the base configuration even if no c_cpp_properties.json exists --- Extension/src/LanguageServer/configurations.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index 7da79aaea..1c52e79fc 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -1266,6 +1266,7 @@ export class CppProperties { private parsePropertiesFile(): boolean { if (!this.propertiesFile) { + this.configurationJson = getDefaultCppProperties(); return false; } let success: boolean = true; From e98d4b3f424a4092ddafb59829fd5d182a27afe6 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson Date: Wed, 5 Apr 2023 12:56:28 -0700 Subject: [PATCH 4/5] Remove new call to parsePropertiesFiles in favor of ensure it occurs correctly prior to configuration modifications --- Extension/src/LanguageServer/configurations.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index 1c52e79fc..ae6919dc7 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -828,7 +828,6 @@ export class CppProperties { if (!this.configurationJson) { return; } - this.parsePropertiesFile(); // Clear out any modifications we may have made internally. const settings: CppSettings = new CppSettings(this.rootUri); const userSettings: CppSettings = new CppSettings(); const env: Environment = this.ExtendedEnvironment; @@ -1196,10 +1195,7 @@ export class CppProperties { return; // Occurs when propertiesFile hasn't been checked yet. } this.configFileWatcherFallbackTime = new Date(); - if (this.propertiesFile) { - this.parsePropertiesFile(); - // parsePropertiesFile can fail, but it won't overwrite an existing configurationJson in the event of failure. - // this.configurationJson should only be undefined here if we have never successfully parsed the propertiesFile. + if (this.parsePropertiesFile()) { if (this.configurationJson) { if (this.CurrentConfigurationIndex < 0 || this.CurrentConfigurationIndex >= this.configurationJson.configurations.length) { From 93fba44f2df73949ce1d208d1b88a5137d7356f6 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson Date: Wed, 5 Apr 2023 13:28:34 -0700 Subject: [PATCH 5/5] Bug fix --- Extension/src/LanguageServer/configurations.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index ae6919dc7..24a86c40c 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -1262,7 +1262,7 @@ export class CppProperties { private parsePropertiesFile(): boolean { if (!this.propertiesFile) { - this.configurationJson = getDefaultCppProperties(); + this.configurationJson = undefined; return false; } let success: boolean = true;