Skip to content

Commit 2238e73

Browse files
authored
Prevent language service activation for macOS older than 10.12 (#9328)
1 parent feb8a64 commit 2238e73

File tree

1 file changed

+36
-18
lines changed

1 file changed

+36
-18
lines changed

Extension/src/main.ts

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -68,25 +68,43 @@ export async function activate(context: vscode.ExtensionContext): Promise<CppToo
6868
UpdateInsidersAccess();
6969

7070
const settings: CppSettings = new CppSettings((vscode.workspace.workspaceFolders && vscode.workspace.workspaceFolders.length > 0) ? vscode.workspace.workspaceFolders[0]?.uri : undefined);
71-
if (settings.intelliSenseEngine === "Disabled") {
72-
languageServiceDisabled = true;
71+
let isOldMacOs: boolean = false;
72+
if (info.platform === 'darwin') {
73+
const releaseParts: string[] = os.release().split(".");
74+
if (releaseParts.length >= 1) {
75+
isOldMacOs = parseInt(releaseParts[0]) < 16;
76+
}
7377
}
74-
let currentIntelliSenseEngineValue: string | undefined = settings.intelliSenseEngine;
75-
disposables.push(vscode.workspace.onDidChangeConfiguration(() => {
76-
const settings: CppSettings = new CppSettings((vscode.workspace.workspaceFolders && vscode.workspace.workspaceFolders.length > 0) ? vscode.workspace.workspaceFolders[0]?.uri : undefined);
77-
if (!reloadMessageShown && settings.intelliSenseEngine !== currentIntelliSenseEngineValue) {
78-
if (currentIntelliSenseEngineValue === "Disabled") {
79-
// If switching from disabled to enabled, we can continue activation.
80-
currentIntelliSenseEngineValue = settings.intelliSenseEngine;
81-
languageServiceDisabled = false;
82-
LanguageServer.activate();
83-
} else {
84-
// We can't deactivate or change engines on the fly, so prompt for window reload.
85-
reloadMessageShown = true;
86-
util.promptForReloadWindowDueToSettingsChange();
87-
}
78+
79+
// Read the setting and determine whether we should activate the language server prior to installing callbacks,
80+
// to ensure there is no potential race condition. LanguageServer.activate() is called near the end of this
81+
// function, to allow any further setup to occur here, prior to activation.
82+
const shouldActivateLanguageServer: boolean = (settings.intelliSenseEngine !== "Disabled" && !isOldMacOs);
83+
84+
if (isOldMacOs) {
85+
languageServiceDisabled = true;
86+
vscode.window.showErrorMessage(localize("macos.version.deprecated", "Versions of the C/C++ extension more recent than {0} require at least macOS version {1}.", "1.9.8", "10.12"));
87+
} else {
88+
if (settings.intelliSenseEngine === "Disabled") {
89+
languageServiceDisabled = true;
8890
}
89-
}));
91+
let currentIntelliSenseEngineValue: string | undefined = settings.intelliSenseEngine;
92+
disposables.push(vscode.workspace.onDidChangeConfiguration(() => {
93+
const settings: CppSettings = new CppSettings((vscode.workspace.workspaceFolders && vscode.workspace.workspaceFolders.length > 0) ? vscode.workspace.workspaceFolders[0]?.uri : undefined);
94+
if (!reloadMessageShown && settings.intelliSenseEngine !== currentIntelliSenseEngineValue) {
95+
if (currentIntelliSenseEngineValue === "Disabled") {
96+
// If switching from disabled to enabled, we can continue activation.
97+
currentIntelliSenseEngineValue = settings.intelliSenseEngine;
98+
languageServiceDisabled = false;
99+
LanguageServer.activate();
100+
} else {
101+
// We can't deactivate or change engines on the fly, so prompt for window reload.
102+
reloadMessageShown = true;
103+
util.promptForReloadWindowDueToSettingsChange();
104+
}
105+
}
106+
}));
107+
}
90108

91109
if (vscode.workspace.workspaceFolders && vscode.workspace.workspaceFolders.length > 0) {
92110
for (let i: number = 0; i < vscode.workspace.workspaceFolders.length; ++i) {
@@ -114,7 +132,7 @@ export async function activate(context: vscode.ExtensionContext): Promise<CppToo
114132
}
115133
});
116134

117-
if (settings.intelliSenseEngine !== "Disabled") {
135+
if (shouldActivateLanguageServer) {
118136
await LanguageServer.activate();
119137
}
120138

0 commit comments

Comments
 (0)