From f0bef8dca60baf998304d009e2a124af4a363fac Mon Sep 17 00:00:00 2001 From: Bob Brown Date: Tue, 21 Mar 2023 18:35:46 -0700 Subject: [PATCH 1/3] Refactor experiment variable (#10717) * Refactor experiment variable * address feedback. * fix lint --- Extension/src/LanguageServer/ui.ts | 12 ++---------- Extension/src/telemetry.ts | 10 ++++++++++ 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Extension/src/LanguageServer/ui.ts b/Extension/src/LanguageServer/ui.ts index 147fc09ccc..4706a04eca 100644 --- a/Extension/src/LanguageServer/ui.ts +++ b/Extension/src/LanguageServer/ui.ts @@ -11,8 +11,6 @@ import { NewUI } from './ui_new'; import { ReferencesCommandMode, referencesCommandModeToString } from './references'; import { getCustomConfigProviders, CustomConfigurationProviderCollection, isSameProviderExtensionId } from './customProviders'; import * as telemetry from '../telemetry'; -import { IExperimentationService } from 'tas-client'; -import { CppSettings } from './settings'; nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })(); const localize: nls.LocalizeFunc = nls.loadMessageBundle(); @@ -489,14 +487,8 @@ export async function getUI(): Promise { async function _getUI(): Promise { if (!ui) { - const experimentationService: IExperimentationService | undefined = await telemetry.getExperimentationService(); - if (experimentationService !== undefined) { - const settings: CppSettings = new CppSettings(); - const useNewUI: boolean | undefined = experimentationService.getTreatmentVariable("vscode", "ShowLangStatBar"); - ui = useNewUI || settings.experimentalFeatures ? new NewUI() : new OldUI(); - } else { - ui = new NewUI(); - } + const useNewUI: boolean = await telemetry.showLanguageStatusExperiment(); + ui = useNewUI ? new NewUI() : new OldUI(); } return ui; } diff --git a/Extension/src/telemetry.ts b/Extension/src/telemetry.ts index f2010bc587..08863bea1e 100644 --- a/Extension/src/telemetry.ts +++ b/Extension/src/telemetry.ts @@ -6,6 +6,7 @@ import TelemetryReporter from '@vscode/extension-telemetry'; import { getExperimentationServiceAsync, IExperimentationService, IExperimentationTelemetry, TargetPopulation } from 'vscode-tas-client'; +import { CppSettings } from './LanguageServer/settings'; import * as util from './common'; interface IPackageInfo { @@ -76,6 +77,15 @@ export function getExperimentationService(): Promise | return initializationPromise; } +export async function showLanguageStatusExperiment(): Promise { + if (new CppSettings().experimentalFeatures) { + return true; + } + const experimentationService: IExperimentationService | undefined = await getExperimentationService(); + const useNewUI: boolean | undefined = experimentationService?.getTreatmentVariable("vscode", "ShowLangStatBar"); + return useNewUI ?? false; +} + export async function deactivate(): Promise { if (initializationPromise) { try { From 3b7755a4d2d75147126330c71d5da960eb4c73c5 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Tue, 21 Mar 2023 18:48:33 -0700 Subject: [PATCH 2/3] Updates for the multirootDeadlock test. (#10723) * Updates for the multirootDeadlock test. --- Extension/.vscode/launch.json | 2 +- .../integrationTests/IntelliSenseFeatures/inlayhints.test.ts | 2 +- .../integrationTests/IntelliSenseFeatures/quickInfo.test.ts | 2 +- .../integrationTests/IntelliSenseFeatures/reference.test.ts | 2 +- Extension/test/integrationTests/IntelliSenseFeatures/runTest.ts | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Extension/.vscode/launch.json b/Extension/.vscode/launch.json index 00d6220a7d..ac825b386a 100644 --- a/Extension/.vscode/launch.json +++ b/Extension/.vscode/launch.json @@ -108,7 +108,7 @@ "request": "launch", "runtimeExecutable": "${execPath}", "args": [ - "C:/git/Vcls-vscode-test/SingleRootProject", + "C:/git/Vcls-vscode-test/MultirootDeadlockTest/test.code-workspace", "--extensionDevelopmentPath=${workspaceFolder}", "--extensionTestsPath=${workspaceFolder}/out/test/integrationTests/IntelliSenseFeatures/index" ], diff --git a/Extension/test/integrationTests/IntelliSenseFeatures/inlayhints.test.ts b/Extension/test/integrationTests/IntelliSenseFeatures/inlayhints.test.ts index f135efe0be..e54f6bfd11 100644 --- a/Extension/test/integrationTests/IntelliSenseFeatures/inlayhints.test.ts +++ b/Extension/test/integrationTests/IntelliSenseFeatures/inlayhints.test.ts @@ -28,7 +28,7 @@ suite("[Inlay hints test]", function(): void { let referenceOperatorEnabledValue: any; let referenceOperatorShowSpaceValue: any; // Test setup - const rootUri: vscode.Uri = vscode.workspace.workspaceFolders[0].uri; + const rootUri: vscode.Uri = vscode.workspace.workspaceFolders[1].uri; const filePath: string | undefined = rootUri.fsPath + "/inlay_hints.cpp"; const fileUri: vscode.Uri = vscode.Uri.file(filePath); const disposables: vscode.Disposable[] = []; diff --git a/Extension/test/integrationTests/IntelliSenseFeatures/quickInfo.test.ts b/Extension/test/integrationTests/IntelliSenseFeatures/quickInfo.test.ts index 85195080bc..ed07aea50a 100644 --- a/Extension/test/integrationTests/IntelliSenseFeatures/quickInfo.test.ts +++ b/Extension/test/integrationTests/IntelliSenseFeatures/quickInfo.test.ts @@ -12,7 +12,7 @@ import * as testHelpers from '../testHelpers'; suite("[Quick info test]", function(): void { let cpptools: apit.CppToolsTestApi; const disposables: vscode.Disposable[] = []; - const filePath: string = vscode.workspace.workspaceFolders[0].uri.fsPath + "/quickInfo.cpp"; + const filePath: string = vscode.workspace.workspaceFolders[1].uri.fsPath + "/quickInfo.cpp"; const fileUri: vscode.Uri = vscode.Uri.file(filePath); let platform: string = ""; diff --git a/Extension/test/integrationTests/IntelliSenseFeatures/reference.test.ts b/Extension/test/integrationTests/IntelliSenseFeatures/reference.test.ts index 315db9fd6c..346c4e5cd0 100644 --- a/Extension/test/integrationTests/IntelliSenseFeatures/reference.test.ts +++ b/Extension/test/integrationTests/IntelliSenseFeatures/reference.test.ts @@ -11,7 +11,7 @@ import * as apit from 'vscode-cpptools/out/testApi'; suite(`[Reference test]`, function(): void { let cpptools: apit.CppToolsTestApi; const disposables: vscode.Disposable[] = []; - const path: string = vscode.workspace.workspaceFolders[0].uri.fsPath + "/references.cpp"; + const path: string = vscode.workspace.workspaceFolders[1].uri.fsPath + "/references.cpp"; const fileUri: vscode.Uri = vscode.Uri.file(path); let testHook: apit.CppToolsTestHook; let getIntelliSenseStatus: any; diff --git a/Extension/test/integrationTests/IntelliSenseFeatures/runTest.ts b/Extension/test/integrationTests/IntelliSenseFeatures/runTest.ts index 4e60a48b0c..3426880302 100644 --- a/Extension/test/integrationTests/IntelliSenseFeatures/runTest.ts +++ b/Extension/test/integrationTests/IntelliSenseFeatures/runTest.ts @@ -12,7 +12,7 @@ async function main() { // Passed to --extensionTestsPath const extensionTestsPath = path.resolve(__dirname, './index'); - // Note, when running tests locally, replace testWorkspace with local path to "~/Vcls-vscode-test/SingleRootProject" + // Note, when running tests locally, replace TESTS_WORKSPACE with local path to "~/Vcls-vscode-test/MultirootDeadlockTest/test.code-workspace" // in the Launch.json file. let testWorkspace: string | undefined = process.env.TESTS_WORKSPACE; if (!testWorkspace) { From 10125dfb08b369d3f656c00ac5d17f6bfa7df745 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Wed, 22 Mar 2023 08:06:48 -0700 Subject: [PATCH 3/3] Update changelog for 1.15.1, 2nd time. (#10726) --- Extension/CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index abfb16ce7e..a9fb3f14b0 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,8 +1,9 @@ # C/C++ for Visual Studio Code Changelog -## Version 1.15.1: March 21, 2023 +## Version 1.15.1: March 22, 2023 ### Bug Fixes * Fix crashes with a multiroot workspace. [#10636](https://github.com/microsoft/vscode-cpptools/issues/10636) +* Fix a deadlock with a multiroot workspace. [#10719](https://github.com/microsoft/vscode-cpptools/issues/10719) ## Version 1.15.0: March 15, 2023 ### Enhancements