From 71d1f4c701ac0f0c7410069a3e78f0eee7c799c7 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 4 Jan 2021 16:58:06 -0800 Subject: [PATCH 01/11] Remove references to deprecated code. (#6728) --- .../LanguageServer/Providers/workspaceSymbolProvider.ts | 7 ++----- Extension/src/LanguageServer/client.ts | 9 ++------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/Extension/src/LanguageServer/Providers/workspaceSymbolProvider.ts b/Extension/src/LanguageServer/Providers/workspaceSymbolProvider.ts index d820c2bf97..44c97981a0 100644 --- a/Extension/src/LanguageServer/Providers/workspaceSymbolProvider.ts +++ b/Extension/src/LanguageServer/Providers/workspaceSymbolProvider.ts @@ -25,17 +25,14 @@ export class WorkspaceSymbolProvider implements vscode.WorkspaceSymbolProvider { symbols.forEach((symbol) => { const suffix: string = util.getLocalizedString(symbol.suffix); let name: string = symbol.name; - const range: vscode.Range = new vscode.Range(symbol.location.range.start.line, symbol.location.range.start.character, symbol.location.range.end.line, symbol.location.range.end.character); - const uri: vscode.Uri = vscode.Uri.parse(symbol.location.uri.toString()); if (suffix.length) { name = name + ' (' + suffix + ')'; } const vscodeSymbol: vscode.SymbolInformation = new vscode.SymbolInformation( name, symbol.kind, - range, - uri, - symbol.containerName + symbol.containerName, + symbol.location ); resultSymbols.push(vscodeSymbol); }); diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 9087b726b5..1bea43c48f 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -302,15 +302,10 @@ export interface LocalizeDocumentSymbol { children: LocalizeDocumentSymbol[]; } -interface Location { - uri: string; - range: Range; -} - interface LocalizeSymbolInformation { name: string; kind: vscode.SymbolKind; - location: Location; + location: vscode.Location; containerName: string; suffix: LocalizeStringParams; } @@ -701,7 +696,7 @@ export class DefaultClient implements Client { this.rootFolder = workspaceFolder; let storagePath: string | undefined; if (util.extensionContext) { - const path: string | undefined = util.extensionContext.storagePath; + const path: string | undefined = util.extensionContext.storageUri?.fsPath; if (path) { storagePath = path; } From bf6bc96437d60b3ef9541a636060f95942654e2d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Jan 2021 14:13:51 -0800 Subject: [PATCH 02/11] Bump axios from 0.19.2 to 0.21.1 in /.github/actions (#6743) Bumps [axios](https://github.com/axios/axios) from 0.19.2 to 0.21.1. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v0.21.1/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.19.2...v0.21.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/actions/package-lock.json | 30 +++++++----------------------- .github/actions/package.json | 2 +- 2 files changed, 8 insertions(+), 24 deletions(-) diff --git a/.github/actions/package-lock.json b/.github/actions/package-lock.json index 84858c90f8..3f3639fd52 100644 --- a/.github/actions/package-lock.json +++ b/.github/actions/package-lock.json @@ -295,11 +295,11 @@ "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=" }, "axios": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", "requires": { - "follow-redirects": "1.5.10" + "follow-redirects": "^1.10.0" } }, "balanced-match": { @@ -399,14 +399,6 @@ "which": "^1.2.9" } }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -682,12 +674,9 @@ "dev": true }, "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "requires": { - "debug": "=3.1.0" - } + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", + "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==" }, "fs.realpath": { "version": "1.0.0", @@ -1006,11 +995,6 @@ "minimist": "^1.2.5" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, "mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", diff --git a/.github/actions/package.json b/.github/actions/package.json index 96548257cb..994e077072 100644 --- a/.github/actions/package.json +++ b/.github/actions/package.json @@ -12,7 +12,7 @@ "dependencies": { "@actions/core": "^1.2.6", "@actions/github": "^2.1.1", - "axios": "^0.19.2" + "axios": "^0.21.1" }, "devDependencies": { "eslint": "^6.8.0", From 6254bb6ad2802acf9d71cf01e20980f6ae1079c4 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Wed, 6 Jan 2021 14:35:13 -0800 Subject: [PATCH 03/11] Output the cppbuild command used. Fix D warnings. (#6701) * Output the cppbuild command used. Fixes #6647 . Also fixes "D" command line warnings with cl.exe. Move the build result message to the end. Handle the /nologo case and always shows the logo/header if it exists (but default to use /nologo). --- Extension/CHANGELOG.md | 2 +- .../LanguageServer/cppBuildTaskProvider.ts | 28 +++++++++++-------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index 52693953a6..489a8f2d55 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -11,7 +11,7 @@ * Fix #include completion not sorting _ last. [#3465](https://github.com/microsoft/vscode-cpptools/issues/3465) * Fix crash when certain JavaScript files are parsed as C++. [#3858](https://github.com/microsoft/vscode-cpptools/issues/3858) * Fix IntelliSense squiggle about not being able to assign to an object of its own type. [#3883](https://github.com/microsoft/vscode-cpptools/issues/3883) -* Fix hover and Find All References for template function overloads. [#4044[(https://github.com/microsoft/vscode-cpptools/issues/4044), [#4249](https://github.com/microsoft/vscode-cpptools/issues/4249) +* Fix hover and Find All References for template function overloads. [#4044](https://github.com/microsoft/vscode-cpptools/issues/4044), [#4249](https://github.com/microsoft/vscode-cpptools/issues/4249) * Fix the Outline view for nested namespaces. [#4456](https://github.com/microsoft/vscode-cpptools/issues/4456) * Fix Outline view with`"**/.*"` in `files.exclude`. [#4602](https://github.com/microsoft/vscode-cpptools/issues/4602) * Fix the Outline view for nested structs/classes. [#4781](https://github.com/microsoft/vscode-cpptools/issues/4871) diff --git a/Extension/src/LanguageServer/cppBuildTaskProvider.ts b/Extension/src/LanguageServer/cppBuildTaskProvider.ts index a48aff428d..e43d1df3e7 100644 --- a/Extension/src/LanguageServer/cppBuildTaskProvider.ts +++ b/Extension/src/LanguageServer/cppBuildTaskProvider.ts @@ -166,7 +166,7 @@ export class CppBuildTaskProvider implements TaskProvider { CppBuildTaskProvider.CppBuildSourceStr + ": " : "") + compilerPathBase + " " + localize("build_active_file", "build active file"); const filePath: string = path.join('${fileDirname}', '${fileBasenameNoExtension}'); const isWindows: boolean = os.platform() === 'win32'; - let args: string[] = isCl ? ['/Zi', '/EHsc', '/Fe:', filePath + '.exe', '${file}'] : ['-g', '${file}', '-o', filePath + (isWindows ? '.exe' : '')]; + let args: string[] = isCl ? ['/Zi', '/EHsc', '/nologo', '/Fe:', filePath + '.exe', '${file}'] : ['-g', '${file}', '-o', filePath + (isWindows ? '.exe' : '')]; if (compilerArgs && compilerArgs.length > 0) { args = args.concat(compilerArgs); } @@ -370,36 +370,40 @@ class CustomBuildTaskTerminal implements Pseudoterminal { this.writeEmitter.fire(line + this.endOfLine); } }; + this.writeEmitter.fire(activeCommand + this.endOfLine); try { const result: number = await new Promise((resolve, reject) => { cp.exec(activeCommand, this.options, (_error, stdout, _stderr) => { - const dot: string = (stdout || _stderr) ? ":" : "."; + const dot: string = "."; + const is_cl: boolean = (_stderr || _stderr === '') && stdout ? true : false; + if (is_cl) { + // cl.exe, header info may not appear if /nologo is used. + if (_stderr) { + splitWriteEmitter(_stderr); // compiler header info and command line D warnings (e.g. when /MTd and /MDd are both used) + } + splitWriteEmitter(stdout); // linker header info and potentially compiler C warnings + } if (_error) { - telemetry.logLanguageServerEvent("cppBuildTaskError"); - this.writeEmitter.fire(localize("build_finished_with_error", "Build finished with errors(s)") + dot + this.endOfLine); if (stdout) { - splitWriteEmitter(stdout); // cl.exe + // cl.exe } else if (_stderr) { splitWriteEmitter(_stderr); // gcc/clang } else { splitWriteEmitter(_error.message); // e.g. command executable not found } + telemetry.logLanguageServerEvent("cppBuildTaskError"); + this.writeEmitter.fire(localize("build_finished_with_error", "Build finished with error(s)") + dot + this.endOfLine); resolve(-1); - return; } else if (_stderr && !stdout) { // gcc/clang + splitWriteEmitter(_stderr); telemetry.logLanguageServerEvent("cppBuildTaskWarnings"); this.writeEmitter.fire(localize("build_finished_with_warnings", "Build finished with warning(s)") + dot + this.endOfLine); - splitWriteEmitter(_stderr); resolve(0); - } else if (stdout && stdout.includes("warning C")) { // cl.exe + } else if (stdout && stdout.includes("warning C")) { // cl.exe, compiler warnings telemetry.logLanguageServerEvent("cppBuildTaskWarnings"); this.writeEmitter.fire(localize("build_finished_with_warnings", "Build finished with warning(s)") + dot + this.endOfLine); - splitWriteEmitter(stdout); resolve(0); } else { - if (stdout) { - splitWriteEmitter(stdout); // cl.exe - } this.writeEmitter.fire(localize("build finished successfully", "Build finished successfully.") + this.endOfLine); resolve(0); } From 1fa4f67afd49a21cbbefefef39bd3accb01cbd57 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Wed, 6 Jan 2021 14:48:53 -0800 Subject: [PATCH 04/11] Stop falling back to a /usr/bin debugger on Windows, show an error when a non-existent miDebuggerPath is used, and stop showing "unknown error" (#6705) Fix for #6511 and #6608 * Stop falling back to a /usr/bin debugger on Windows. * Add error message. * Fix unknown error. --- .../src/Debugger/configurationProvider.ts | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/Extension/src/Debugger/configurationProvider.ts b/Extension/src/Debugger/configurationProvider.ts index 3b65ac78c4..0c0eef308a 100644 --- a/Extension/src/Debugger/configurationProvider.ts +++ b/Extension/src/Debugger/configurationProvider.ts @@ -71,17 +71,23 @@ export class QuickPickConfigurationProvider implements vscode.DebugConfiguration const selection: MenuItem | undefined = await vscode.window.showQuickPick(items, {placeHolder: localize("select.configuration", "Select a configuration")}); if (!selection) { - throw new Error(); // User canceled it. + return []; // User canceled it. } if (selection.label.startsWith("cl.exe")) { if (!process.env.DevEnvDir) { vscode.window.showErrorMessage(localize("cl.exe.not.available", "{0} build and debug is only usable when VS Code is run from the Developer Command Prompt for VS.", "cl.exe")); - throw new Error(); + return [selection.configuration]; } } if (selection.label.indexOf(buildAndDebugActiveFileStr()) !== -1 && selection.configuration.preLaunchTask) { try { await cppBuildTaskProvider.ensureBuildTaskExists(selection.configuration.preLaunchTask); + if (selection.configuration.miDebuggerPath) { + if (!fs.existsSync(selection.configuration.miDebuggerPath)) { + vscode.window.showErrorMessage(localize("miDebuggerPath.not.available", "miDebuggerPath does not exist: {0}. Has a debugger been installed?", selection.configuration.miDebuggerPath)); + throw new Error(); + } + } await vscode.debug.startDebugging(folder, selection.configuration); Telemetry.logDebuggerEvent("buildAndDebug", { "success": "true" }); } catch (e) { @@ -210,15 +216,19 @@ class CppConfigurationProvider implements vscode.DebugConfigurationProvider { const compilerDirname: string = path.dirname(compilerPath); const debuggerPath: string = path.join(compilerDirname, debuggerName); - fs.stat(debuggerPath, (err, stats: fs.Stats) => { - if (!err && stats && stats.isFile) { - newConfig.miDebuggerPath = debuggerPath; - } else { - // TODO should probably resolve a missing debugger in a more graceful fashion for win32. - newConfig.miDebuggerPath = path.join("/usr", "bin", debuggerName); - } + if (isWindows) { + newConfig.miDebuggerPath = debuggerPath; return resolve(newConfig); - }); + } else { + fs.stat(debuggerPath, (err, stats: fs.Stats) => { + if (!err && stats && stats.isFile) { + newConfig.miDebuggerPath = debuggerPath; + } else { + newConfig.miDebuggerPath = path.join("/usr", "bin", debuggerName); + } + return resolve(newConfig); + }); + } } }); })); From effb26733e1ccddd30ef47d5e2ee564025c0fc1e Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Wed, 6 Jan 2021 17:27:47 -0800 Subject: [PATCH 05/11] Update runtime licenses. (#6735) * Update licenses. * Update License.md to reference RuntimeLicenses. --- LICENSE.md | 5 +- RuntimeLicenses/cpptools-LICENSE.txt | 272 ++++++++-------- RuntimeLicenses/cpptools-srv-LICENSE.txt | 272 ++++++++-------- RuntimeLicenses/vsdbg-LICENSE.txt | 377 ++++++++++++----------- 4 files changed, 467 insertions(+), 459 deletions(-) diff --git a/LICENSE.md b/LICENSE.md index d7c54cf4bb..ef220fe895 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,4 +1,7 @@ - +Additional binary files may be downloaded at runtime after the initial +installation; these are governed by the more restrictive proprietary license +terms found at [RuntimeLicenses](RuntimeLicenses). + MIT License Copyright (c) 2020 Microsoft diff --git a/RuntimeLicenses/cpptools-LICENSE.txt b/RuntimeLicenses/cpptools-LICENSE.txt index 5e7bb4d577..1820b60f19 100644 --- a/RuntimeLicenses/cpptools-LICENSE.txt +++ b/RuntimeLicenses/cpptools-LICENSE.txt @@ -1,190 +1,192 @@ -All VS Marketplace extensions, including this C/C++ Extension for Visual Studio -Code, must also be used consistent with the VS Marketplace Terms of Use at +All VS Marketplace extensions, including this C/C++ Extension for Visual Studio +Code, must also be used consistent with the VS Marketplace Terms of Use at http://aka.ms/VSMarketplace-TOU MICROSOFT SOFTWARE LICENSE TERMS -MICROSOFT C/C++ EXTENSION FOR VISUAL STUDIO CODE +MICROSOFT C/C++ EXTENSION FOR VISUAL STUDIO CODE ________________________________________ -These license terms are an agreement between you and Microsoft Corporation (or -one of its affiliates). They apply to the software named above and any -Microsoft services or software updates (except to the extent such services or -updates are accompanied by new or additional terms, in which case those -different terms apply prospectively and do not alter your or Microsoft’s -rights relating to pre-updated software or services). IF YOU COMPLY WITH THESE -LICENSE TERMS, YOU HAVE THE RIGHTS BELOW. BY USING THE SOFTWARE, YOU ACCEPT +These license terms are an agreement between you and Microsoft Corporation (or +one of its affiliates). They apply to the software named above and any +Microsoft services or software updates (except to the extent such services or +updates are accompanied by new or additional terms, in which case those +different terms apply prospectively and do not alter your or Microsoft’s +rights relating to pre-updated software or services). IF YOU COMPLY WITH THESE +LICENSE TERMS, YOU HAVE THE RIGHTS BELOW. BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. -1. INSTALLATION AND USE RIGHTS. -a) General. You may install and use any number of copies of the software -only with Microsoft Visual Studio, Visual Studio for Mac, Visual Studio Code, -Azure DevOps, Team Foundation Server, and successor Microsoft products and -services (collectively, the “Visual Studio Products and Services”) to -develop and test your applications. -b) Third Party Components. The software may include third party components -with separate legal notices or governed by other agreements, as may be +1. INSTALLATION AND USE RIGHTS. +a) General. You may install and use any number of copies of the software +only with Microsoft Visual Studio, Visual Studio for Mac, Visual Studio Code, +Azure DevOps, Team Foundation Server, and successor Microsoft products and +services to develop and test your applications. Further, you may install, use +and/or deploy these software copies via a network management system or as part +of a desktop image within your internal corporate network to develop and test +your applications. +b) Third Party Components. The software may include third party components +with separate legal notices or governed by other agreements, as may be described in the ThirdPartyNotices file(s) accompanying the software. -2. SCOPE OF LICENSE. The software is licensed, not sold. This agreement -only gives you some rights to use the software. Microsoft reserves all other -rights. For clarification Microsoft, or its licensors, retains ownership of -all aspects of the software. Unless applicable law gives you more rights -despite this limitation, you may use the software only as expressly permitted -in this agreement. In doing so, you must comply with any technical limitations -in the software that only allow you to use it in certain ways. For example, if -Microsoft technically limits or disables extensibility for the software, you -may not extend the software by, among other things, loading or injecting into -the software any non-Microsoft add-ins, macros, or packages; modifying the -software registry settings; or adding features or functionality equivalent to +2. SCOPE OF LICENSE. The software is licensed, not sold. This agreement +only gives you some rights to use the software. Microsoft reserves all other +rights. For clarification Microsoft, or its licensors, retains ownership of +all aspects of the software. Unless applicable law gives you more rights +despite this limitation, you may use the software only as expressly permitted +in this agreement. In doing so, you must comply with any technical limitations +in the software that only allow you to use it in certain ways. For example, if +Microsoft technically limits or disables extensibility for the software, you +may not extend the software by, among other things, loading or injecting into +the software any non-Microsoft add-ins, macros, or packages; modifying the +software registry settings; or adding features or functionality equivalent to that found in Microsoft products and services. You may not: -a) work around any technical limitations in the software that only allow +a) work around any technical limitations in the software that only allow you to use it in certain ways; -b) reverse engineer, decompile or disassemble the software, or otherwise -attempt to derive the source code for the software, except and to the extent -required by third party licensing terms governing use of certain open source +b) reverse engineer, decompile or disassemble the software, or otherwise +attempt to derive the source code for the software, except and to the extent +required by third party licensing terms governing use of certain open source components that may be included in the software; -c) remove, minimize, block, or modify any notices of Microsoft or its +c) remove, minimize, block, or modify any notices of Microsoft or its suppliers in the software; -d) use the software in any way that is against the law or to create or +d) use the software in any way that is against the law or to create or propagate malware; or -e) share, publish, distribute, or lease the software (except for any -distributable code, subject to the terms above), provide the software as a -stand-alone offering for others to use, or transfer the software or this +e) share, publish, distribute, or lease the software (except for any +distributable code, subject to the terms above), provide the software as a +stand-alone offering for others to use, or transfer the software or this agreement to any third party. -3. DATA. -a) Data Collection. The software may collect information about you and -your use of the software, and send that to Microsoft. Microsoft may use this -information to provide services and improve our products and services. You may -opt-out of many of these scenarios, but not all, as described in the product -documentation. There are also some features in the software that may enable -you to collect data from users of your applications. If you use these features -to enable data collection in your applications, you must comply with applicable -law, including providing appropriate notices to users of your applications. You -can learn more about data collection and use in the help documentation and the -privacy statement at https://aka.ms/privacy. Your use of the software operates +3. DATA. +a) Data Collection. The software may collect information about you and +your use of the software, and send that to Microsoft. Microsoft may use this +information to provide services and improve our products and services. You may +opt-out of many of these scenarios, but not all, as described in the product +documentation. There are also some features in the software that may enable +you to collect data from users of your applications. If you use these features +to enable data collection in your applications, you must comply with applicable +law, including providing appropriate notices to users of your applications. You +can learn more about data collection and use in the help documentation and the +privacy statement at https://aka.ms/privacy. Your use of the software operates as your consent to these practices. -b) Processing of Personal Data. To the extent Microsoft is a processor or -subprocessor of personal data in connection with the software, Microsoft makes -the commitments in the European Union General Data Protection Regulation Terms -of the Online Services Terms to all customers effective May 25, 2018, at +b) Processing of Personal Data. To the extent Microsoft is a processor or +subprocessor of personal data in connection with the software, Microsoft makes +the commitments in the European Union General Data Protection Regulation Terms +of the Online Services Terms to all customers effective May 25, 2018, at https://docs.microsoft.com/en-us/legal/gdpr. -4. EXPORT RESTRICTIONS. You must comply with all domestic and -international export laws and regulations that apply to the software, which -include restrictions on destinations, end users, and end use. For further +4. EXPORT RESTRICTIONS. You must comply with all domestic and +international export laws and regulations that apply to the software, which +include restrictions on destinations, end users, and end use. For further information on export restrictions, visit https://aka.ms/exporting. -5. SUPPORT SERVICES. Microsoft is not obligated under this agreement to -provide any support services for the software. Any support provided is “as +5. SUPPORT SERVICES. Microsoft is not obligated under this agreement to +provide any support services for the software. Any support provided is “as is”, “with all faults”, and without warranty of any kind. -6. ENTIRE AGREEMENT. This agreement, and any other terms Microsoft may -provide for supplements, updates, or third-party applications, is the entire +6. ENTIRE AGREEMENT. This agreement, and any other terms Microsoft may +provide for supplements, updates, or third-party applications, is the entire agreement for the software. -7. APPLICABLE LAW AND PLACE TO RESOLVE DISPUTES. If you acquired the -software in the United States or Canada, the laws of the state or province -where you live (or, if a business, where your principal place of business is -located) govern the interpretation of this agreement, claims for its breach, -and all other claims (including consumer protection, unfair competition, and -tort claims), regardless of conflict of laws principles. If you acquired the -software in any other country, its laws apply. If U.S. federal jurisdiction -exists, you and Microsoft consent to exclusive jurisdiction and venue in the -federal court in King County, Washington for all disputes heard in court. If -not, you and Microsoft consent to exclusive jurisdiction and venue in the +7. APPLICABLE LAW AND PLACE TO RESOLVE DISPUTES. If you acquired the +software in the United States or Canada, the laws of the state or province +where you live (or, if a business, where your principal place of business is +located) govern the interpretation of this agreement, claims for its breach, +and all other claims (including consumer protection, unfair competition, and +tort claims), regardless of conflict of laws principles. If you acquired the +software in any other country, its laws apply. If U.S. federal jurisdiction +exists, you and Microsoft consent to exclusive jurisdiction and venue in the +federal court in King County, Washington for all disputes heard in court. If +not, you and Microsoft consent to exclusive jurisdiction and venue in the Superior Court of King County, Washington for all disputes heard in court. -8. CONSUMER RIGHTS; REGIONAL VARIATIONS. This agreement describes certain -legal rights. You may have other rights, including consumer rights, under the -laws of your state or country. Separate and apart from your relationship with -Microsoft, you may also have rights with respect to the party from which you -acquired the software. This agreement does not change those other rights if the -laws of your state or country do not permit it to do so. For example, if you -acquired the software in one of the below regions, or mandatory country law +8. CONSUMER RIGHTS; REGIONAL VARIATIONS. This agreement describes certain +legal rights. You may have other rights, including consumer rights, under the +laws of your state or country. Separate and apart from your relationship with +Microsoft, you may also have rights with respect to the party from which you +acquired the software. This agreement does not change those other rights if the +laws of your state or country do not permit it to do so. For example, if you +acquired the software in one of the below regions, or mandatory country law applies, then the following provisions apply to you: -a) Australia. You have statutory guarantees under the Australian Consumer +a) Australia. You have statutory guarantees under the Australian Consumer Law and nothing in this agreement is intended to affect those rights. -b) Canada. If you acquired this software in Canada, you may stop receiving -updates by turning off the automatic update feature, disconnecting your device -from the Internet (if and when you re-connect to the Internet, however, the -software will resume checking for and installing updates), or uninstalling the -software. The product documentation, if any, may also specify how to turn off +b) Canada. If you acquired this software in Canada, you may stop receiving +updates by turning off the automatic update feature, disconnecting your device +from the Internet (if and when you re-connect to the Internet, however, the +software will resume checking for and installing updates), or uninstalling the +software. The product documentation, if any, may also specify how to turn off updates for your specific device or software. -c) Germany and Austria. -i. Warranty. The properly licensed software will perform substantially as -described in any Microsoft materials that accompany the software. However, +c) Germany and Austria. +i. Warranty. The properly licensed software will perform substantially as +described in any Microsoft materials that accompany the software. However, Microsoft gives no contractual guarantee in relation to the licensed software. -ii. Limitation of Liability. In case of intentional conduct, gross -negligence, claims based on the Product Liability Act, as well as, in case of -death or personal or physical injury, Microsoft is liable according to the +ii. Limitation of Liability. In case of intentional conduct, gross +negligence, claims based on the Product Liability Act, as well as, in case of +death or personal or physical injury, Microsoft is liable according to the statutory law. -Subject to the foregoing clause ii., Microsoft will only be liable for slight -negligence if Microsoft is in breach of such material contractual obligations, -the fulfillment of which facilitate the due performance of this agreement, the -breach of which would endanger the purpose of this agreement and the compliance -with which a party may constantly trust in (so-called "cardinal obligations"). -In other cases of slight negligence, Microsoft will not be liable for slight +Subject to the foregoing clause ii., Microsoft will only be liable for slight +negligence if Microsoft is in breach of such material contractual obligations, +the fulfillment of which facilitate the due performance of this agreement, the +breach of which would endanger the purpose of this agreement and the compliance +with which a party may constantly trust in (so-called "cardinal obligations"). +In other cases of slight negligence, Microsoft will not be liable for slight negligence. -9. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS IS.” YOU BEAR -THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES, OR -CONDITIONS. TO THE EXTENT PERMITTED UNDER APPLICABLE LAWS, MICROSOFT EXCLUDES -ALL IMPLIED WARRANTIES, INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR +9. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS IS.” YOU BEAR +THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES, OR +CONDITIONS. TO THE EXTENT PERMITTED UNDER APPLICABLE LAWS, MICROSOFT EXCLUDES +ALL IMPLIED WARRANTIES, INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. -10. LIMITATION ON AND EXCLUSION OF DAMAGES. IF YOU HAVE ANY BASIS FOR -RECOVERING DAMAGES DESPITE THE PRECEDING DISCLAIMER OF WARRANTY, YOU CAN -RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. -YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, +10. LIMITATION ON AND EXCLUSION OF DAMAGES. IF YOU HAVE ANY BASIS FOR +RECOVERING DAMAGES DESPITE THE PRECEDING DISCLAIMER OF WARRANTY, YOU CAN +RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. +YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT, OR INCIDENTAL DAMAGES. -This limitation applies to (a) anything related to the software, services, -content (including code) on third party Internet sites, or third party -applications; and (b) claims for breach of contract, warranty, guarantee, or -condition; strict liability, negligence, or other tort; or any other claim; in +This limitation applies to (a) anything related to the software, services, +content (including code) on third party Internet sites, or third party +applications; and (b) claims for breach of contract, warranty, guarantee, or +condition; strict liability, negligence, or other tort; or any other claim; in each case to the extent permitted by applicable law. -It also applies even if Microsoft knew or should have known about the -possibility of the damages. The above limitation or exclusion may not apply to -you because your state, province, or country may not allow the exclusion or +It also applies even if Microsoft knew or should have known about the +possibility of the damages. The above limitation or exclusion may not apply to +you because your state, province, or country may not allow the exclusion or limitation of incidental, consequential, or other damages. -Please note: As this software is distributed in Canada, some of the clauses in +Please note: As this software is distributed in Canada, some of the clauses in this agreement are provided below in French. -Remarque: Ce logiciel étant distribué au Canada, certaines des clauses dans +Remarque: Ce logiciel étant distribué au Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français. -EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel -quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. -Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier -de droits additionnels en vertu du droit local sur la protection des -consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par -le droit locale, les garanties implicites de qualité marchande, -d’adéquation à un usage particulier et d’absence de contrefaçon sont +EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel +quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. +Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier +de droits additionnels en vertu du droit local sur la protection des +consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par +le droit locale, les garanties implicites de qualité marchande, +d’adéquation à un usage particulier et d’absence de contrefaçon sont exclues. -LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES -DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une -indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. -Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y -compris les dommages spéciaux, indirects ou accessoires et pertes de +LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES +DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une +indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. +Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y +compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices. Cette limitation concerne: -• tout ce qui est relié au logiciel, aux services ou au contenu (y -compris le code) figurant sur des sites Internet tiers ou dans des programmes +• tout ce qui est relié au logiciel, aux services ou au contenu (y +compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers; et -• les réclamations au titre de violation de contrat ou de garantie, ou -au titre de responsabilité stricte, de négligence ou d’une autre faute dans +• les réclamations au titre de violation de contrat ou de garantie, ou +au titre de responsabilité stricte, de négligence ou d’une autre faute dans la limite autorisée par la loi en vigueur. -Elle s’applique également, même si Microsoft connaissait ou devrait -connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas -l’exclusion ou la limitation de responsabilité pour les dommages indirects, -accessoires ou de quelque nature que ce soit, il se peut que la limitation ou +Elle s’applique également, même si Microsoft connaissait ou devrait +connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas +l’exclusion ou la limitation de responsabilité pour les dommages indirects, +accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre égard. -EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous -pourriez avoir d’autres droits prévus par les lois de votre pays. Le -présent contrat ne modifie pas les droits que vous confèrent les lois de +EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous +pourriez avoir d’autres droits prévus par les lois de votre pays. Le +présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas. diff --git a/RuntimeLicenses/cpptools-srv-LICENSE.txt b/RuntimeLicenses/cpptools-srv-LICENSE.txt index 5e7bb4d577..1820b60f19 100644 --- a/RuntimeLicenses/cpptools-srv-LICENSE.txt +++ b/RuntimeLicenses/cpptools-srv-LICENSE.txt @@ -1,190 +1,192 @@ -All VS Marketplace extensions, including this C/C++ Extension for Visual Studio -Code, must also be used consistent with the VS Marketplace Terms of Use at +All VS Marketplace extensions, including this C/C++ Extension for Visual Studio +Code, must also be used consistent with the VS Marketplace Terms of Use at http://aka.ms/VSMarketplace-TOU MICROSOFT SOFTWARE LICENSE TERMS -MICROSOFT C/C++ EXTENSION FOR VISUAL STUDIO CODE +MICROSOFT C/C++ EXTENSION FOR VISUAL STUDIO CODE ________________________________________ -These license terms are an agreement between you and Microsoft Corporation (or -one of its affiliates). They apply to the software named above and any -Microsoft services or software updates (except to the extent such services or -updates are accompanied by new or additional terms, in which case those -different terms apply prospectively and do not alter your or Microsoft’s -rights relating to pre-updated software or services). IF YOU COMPLY WITH THESE -LICENSE TERMS, YOU HAVE THE RIGHTS BELOW. BY USING THE SOFTWARE, YOU ACCEPT +These license terms are an agreement between you and Microsoft Corporation (or +one of its affiliates). They apply to the software named above and any +Microsoft services or software updates (except to the extent such services or +updates are accompanied by new or additional terms, in which case those +different terms apply prospectively and do not alter your or Microsoft’s +rights relating to pre-updated software or services). IF YOU COMPLY WITH THESE +LICENSE TERMS, YOU HAVE THE RIGHTS BELOW. BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. -1. INSTALLATION AND USE RIGHTS. -a) General. You may install and use any number of copies of the software -only with Microsoft Visual Studio, Visual Studio for Mac, Visual Studio Code, -Azure DevOps, Team Foundation Server, and successor Microsoft products and -services (collectively, the “Visual Studio Products and Services”) to -develop and test your applications. -b) Third Party Components. The software may include third party components -with separate legal notices or governed by other agreements, as may be +1. INSTALLATION AND USE RIGHTS. +a) General. You may install and use any number of copies of the software +only with Microsoft Visual Studio, Visual Studio for Mac, Visual Studio Code, +Azure DevOps, Team Foundation Server, and successor Microsoft products and +services to develop and test your applications. Further, you may install, use +and/or deploy these software copies via a network management system or as part +of a desktop image within your internal corporate network to develop and test +your applications. +b) Third Party Components. The software may include third party components +with separate legal notices or governed by other agreements, as may be described in the ThirdPartyNotices file(s) accompanying the software. -2. SCOPE OF LICENSE. The software is licensed, not sold. This agreement -only gives you some rights to use the software. Microsoft reserves all other -rights. For clarification Microsoft, or its licensors, retains ownership of -all aspects of the software. Unless applicable law gives you more rights -despite this limitation, you may use the software only as expressly permitted -in this agreement. In doing so, you must comply with any technical limitations -in the software that only allow you to use it in certain ways. For example, if -Microsoft technically limits or disables extensibility for the software, you -may not extend the software by, among other things, loading or injecting into -the software any non-Microsoft add-ins, macros, or packages; modifying the -software registry settings; or adding features or functionality equivalent to +2. SCOPE OF LICENSE. The software is licensed, not sold. This agreement +only gives you some rights to use the software. Microsoft reserves all other +rights. For clarification Microsoft, or its licensors, retains ownership of +all aspects of the software. Unless applicable law gives you more rights +despite this limitation, you may use the software only as expressly permitted +in this agreement. In doing so, you must comply with any technical limitations +in the software that only allow you to use it in certain ways. For example, if +Microsoft technically limits or disables extensibility for the software, you +may not extend the software by, among other things, loading or injecting into +the software any non-Microsoft add-ins, macros, or packages; modifying the +software registry settings; or adding features or functionality equivalent to that found in Microsoft products and services. You may not: -a) work around any technical limitations in the software that only allow +a) work around any technical limitations in the software that only allow you to use it in certain ways; -b) reverse engineer, decompile or disassemble the software, or otherwise -attempt to derive the source code for the software, except and to the extent -required by third party licensing terms governing use of certain open source +b) reverse engineer, decompile or disassemble the software, or otherwise +attempt to derive the source code for the software, except and to the extent +required by third party licensing terms governing use of certain open source components that may be included in the software; -c) remove, minimize, block, or modify any notices of Microsoft or its +c) remove, minimize, block, or modify any notices of Microsoft or its suppliers in the software; -d) use the software in any way that is against the law or to create or +d) use the software in any way that is against the law or to create or propagate malware; or -e) share, publish, distribute, or lease the software (except for any -distributable code, subject to the terms above), provide the software as a -stand-alone offering for others to use, or transfer the software or this +e) share, publish, distribute, or lease the software (except for any +distributable code, subject to the terms above), provide the software as a +stand-alone offering for others to use, or transfer the software or this agreement to any third party. -3. DATA. -a) Data Collection. The software may collect information about you and -your use of the software, and send that to Microsoft. Microsoft may use this -information to provide services and improve our products and services. You may -opt-out of many of these scenarios, but not all, as described in the product -documentation. There are also some features in the software that may enable -you to collect data from users of your applications. If you use these features -to enable data collection in your applications, you must comply with applicable -law, including providing appropriate notices to users of your applications. You -can learn more about data collection and use in the help documentation and the -privacy statement at https://aka.ms/privacy. Your use of the software operates +3. DATA. +a) Data Collection. The software may collect information about you and +your use of the software, and send that to Microsoft. Microsoft may use this +information to provide services and improve our products and services. You may +opt-out of many of these scenarios, but not all, as described in the product +documentation. There are also some features in the software that may enable +you to collect data from users of your applications. If you use these features +to enable data collection in your applications, you must comply with applicable +law, including providing appropriate notices to users of your applications. You +can learn more about data collection and use in the help documentation and the +privacy statement at https://aka.ms/privacy. Your use of the software operates as your consent to these practices. -b) Processing of Personal Data. To the extent Microsoft is a processor or -subprocessor of personal data in connection with the software, Microsoft makes -the commitments in the European Union General Data Protection Regulation Terms -of the Online Services Terms to all customers effective May 25, 2018, at +b) Processing of Personal Data. To the extent Microsoft is a processor or +subprocessor of personal data in connection with the software, Microsoft makes +the commitments in the European Union General Data Protection Regulation Terms +of the Online Services Terms to all customers effective May 25, 2018, at https://docs.microsoft.com/en-us/legal/gdpr. -4. EXPORT RESTRICTIONS. You must comply with all domestic and -international export laws and regulations that apply to the software, which -include restrictions on destinations, end users, and end use. For further +4. EXPORT RESTRICTIONS. You must comply with all domestic and +international export laws and regulations that apply to the software, which +include restrictions on destinations, end users, and end use. For further information on export restrictions, visit https://aka.ms/exporting. -5. SUPPORT SERVICES. Microsoft is not obligated under this agreement to -provide any support services for the software. Any support provided is “as +5. SUPPORT SERVICES. Microsoft is not obligated under this agreement to +provide any support services for the software. Any support provided is “as is”, “with all faults”, and without warranty of any kind. -6. ENTIRE AGREEMENT. This agreement, and any other terms Microsoft may -provide for supplements, updates, or third-party applications, is the entire +6. ENTIRE AGREEMENT. This agreement, and any other terms Microsoft may +provide for supplements, updates, or third-party applications, is the entire agreement for the software. -7. APPLICABLE LAW AND PLACE TO RESOLVE DISPUTES. If you acquired the -software in the United States or Canada, the laws of the state or province -where you live (or, if a business, where your principal place of business is -located) govern the interpretation of this agreement, claims for its breach, -and all other claims (including consumer protection, unfair competition, and -tort claims), regardless of conflict of laws principles. If you acquired the -software in any other country, its laws apply. If U.S. federal jurisdiction -exists, you and Microsoft consent to exclusive jurisdiction and venue in the -federal court in King County, Washington for all disputes heard in court. If -not, you and Microsoft consent to exclusive jurisdiction and venue in the +7. APPLICABLE LAW AND PLACE TO RESOLVE DISPUTES. If you acquired the +software in the United States or Canada, the laws of the state or province +where you live (or, if a business, where your principal place of business is +located) govern the interpretation of this agreement, claims for its breach, +and all other claims (including consumer protection, unfair competition, and +tort claims), regardless of conflict of laws principles. If you acquired the +software in any other country, its laws apply. If U.S. federal jurisdiction +exists, you and Microsoft consent to exclusive jurisdiction and venue in the +federal court in King County, Washington for all disputes heard in court. If +not, you and Microsoft consent to exclusive jurisdiction and venue in the Superior Court of King County, Washington for all disputes heard in court. -8. CONSUMER RIGHTS; REGIONAL VARIATIONS. This agreement describes certain -legal rights. You may have other rights, including consumer rights, under the -laws of your state or country. Separate and apart from your relationship with -Microsoft, you may also have rights with respect to the party from which you -acquired the software. This agreement does not change those other rights if the -laws of your state or country do not permit it to do so. For example, if you -acquired the software in one of the below regions, or mandatory country law +8. CONSUMER RIGHTS; REGIONAL VARIATIONS. This agreement describes certain +legal rights. You may have other rights, including consumer rights, under the +laws of your state or country. Separate and apart from your relationship with +Microsoft, you may also have rights with respect to the party from which you +acquired the software. This agreement does not change those other rights if the +laws of your state or country do not permit it to do so. For example, if you +acquired the software in one of the below regions, or mandatory country law applies, then the following provisions apply to you: -a) Australia. You have statutory guarantees under the Australian Consumer +a) Australia. You have statutory guarantees under the Australian Consumer Law and nothing in this agreement is intended to affect those rights. -b) Canada. If you acquired this software in Canada, you may stop receiving -updates by turning off the automatic update feature, disconnecting your device -from the Internet (if and when you re-connect to the Internet, however, the -software will resume checking for and installing updates), or uninstalling the -software. The product documentation, if any, may also specify how to turn off +b) Canada. If you acquired this software in Canada, you may stop receiving +updates by turning off the automatic update feature, disconnecting your device +from the Internet (if and when you re-connect to the Internet, however, the +software will resume checking for and installing updates), or uninstalling the +software. The product documentation, if any, may also specify how to turn off updates for your specific device or software. -c) Germany and Austria. -i. Warranty. The properly licensed software will perform substantially as -described in any Microsoft materials that accompany the software. However, +c) Germany and Austria. +i. Warranty. The properly licensed software will perform substantially as +described in any Microsoft materials that accompany the software. However, Microsoft gives no contractual guarantee in relation to the licensed software. -ii. Limitation of Liability. In case of intentional conduct, gross -negligence, claims based on the Product Liability Act, as well as, in case of -death or personal or physical injury, Microsoft is liable according to the +ii. Limitation of Liability. In case of intentional conduct, gross +negligence, claims based on the Product Liability Act, as well as, in case of +death or personal or physical injury, Microsoft is liable according to the statutory law. -Subject to the foregoing clause ii., Microsoft will only be liable for slight -negligence if Microsoft is in breach of such material contractual obligations, -the fulfillment of which facilitate the due performance of this agreement, the -breach of which would endanger the purpose of this agreement and the compliance -with which a party may constantly trust in (so-called "cardinal obligations"). -In other cases of slight negligence, Microsoft will not be liable for slight +Subject to the foregoing clause ii., Microsoft will only be liable for slight +negligence if Microsoft is in breach of such material contractual obligations, +the fulfillment of which facilitate the due performance of this agreement, the +breach of which would endanger the purpose of this agreement and the compliance +with which a party may constantly trust in (so-called "cardinal obligations"). +In other cases of slight negligence, Microsoft will not be liable for slight negligence. -9. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS IS.” YOU BEAR -THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES, OR -CONDITIONS. TO THE EXTENT PERMITTED UNDER APPLICABLE LAWS, MICROSOFT EXCLUDES -ALL IMPLIED WARRANTIES, INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR +9. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS IS.” YOU BEAR +THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES, OR +CONDITIONS. TO THE EXTENT PERMITTED UNDER APPLICABLE LAWS, MICROSOFT EXCLUDES +ALL IMPLIED WARRANTIES, INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. -10. LIMITATION ON AND EXCLUSION OF DAMAGES. IF YOU HAVE ANY BASIS FOR -RECOVERING DAMAGES DESPITE THE PRECEDING DISCLAIMER OF WARRANTY, YOU CAN -RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. -YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, +10. LIMITATION ON AND EXCLUSION OF DAMAGES. IF YOU HAVE ANY BASIS FOR +RECOVERING DAMAGES DESPITE THE PRECEDING DISCLAIMER OF WARRANTY, YOU CAN +RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. +YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT, OR INCIDENTAL DAMAGES. -This limitation applies to (a) anything related to the software, services, -content (including code) on third party Internet sites, or third party -applications; and (b) claims for breach of contract, warranty, guarantee, or -condition; strict liability, negligence, or other tort; or any other claim; in +This limitation applies to (a) anything related to the software, services, +content (including code) on third party Internet sites, or third party +applications; and (b) claims for breach of contract, warranty, guarantee, or +condition; strict liability, negligence, or other tort; or any other claim; in each case to the extent permitted by applicable law. -It also applies even if Microsoft knew or should have known about the -possibility of the damages. The above limitation or exclusion may not apply to -you because your state, province, or country may not allow the exclusion or +It also applies even if Microsoft knew or should have known about the +possibility of the damages. The above limitation or exclusion may not apply to +you because your state, province, or country may not allow the exclusion or limitation of incidental, consequential, or other damages. -Please note: As this software is distributed in Canada, some of the clauses in +Please note: As this software is distributed in Canada, some of the clauses in this agreement are provided below in French. -Remarque: Ce logiciel étant distribué au Canada, certaines des clauses dans +Remarque: Ce logiciel étant distribué au Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français. -EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel -quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. -Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier -de droits additionnels en vertu du droit local sur la protection des -consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par -le droit locale, les garanties implicites de qualité marchande, -d’adéquation à un usage particulier et d’absence de contrefaçon sont +EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel +quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. +Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier +de droits additionnels en vertu du droit local sur la protection des +consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par +le droit locale, les garanties implicites de qualité marchande, +d’adéquation à un usage particulier et d’absence de contrefaçon sont exclues. -LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES -DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une -indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. -Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y -compris les dommages spéciaux, indirects ou accessoires et pertes de +LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES +DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une +indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. +Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y +compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices. Cette limitation concerne: -• tout ce qui est relié au logiciel, aux services ou au contenu (y -compris le code) figurant sur des sites Internet tiers ou dans des programmes +• tout ce qui est relié au logiciel, aux services ou au contenu (y +compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers; et -• les réclamations au titre de violation de contrat ou de garantie, ou -au titre de responsabilité stricte, de négligence ou d’une autre faute dans +• les réclamations au titre de violation de contrat ou de garantie, ou +au titre de responsabilité stricte, de négligence ou d’une autre faute dans la limite autorisée par la loi en vigueur. -Elle s’applique également, même si Microsoft connaissait ou devrait -connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas -l’exclusion ou la limitation de responsabilité pour les dommages indirects, -accessoires ou de quelque nature que ce soit, il se peut que la limitation ou +Elle s’applique également, même si Microsoft connaissait ou devrait +connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas +l’exclusion ou la limitation de responsabilité pour les dommages indirects, +accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre égard. -EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous -pourriez avoir d’autres droits prévus par les lois de votre pays. Le -présent contrat ne modifie pas les droits que vous confèrent les lois de +EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous +pourriez avoir d’autres droits prévus par les lois de votre pays. Le +présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas. diff --git a/RuntimeLicenses/vsdbg-LICENSE.txt b/RuntimeLicenses/vsdbg-LICENSE.txt index b8869ddc32..50b7b90115 100644 --- a/RuntimeLicenses/vsdbg-LICENSE.txt +++ b/RuntimeLicenses/vsdbg-LICENSE.txt @@ -1,191 +1,192 @@ -MICROSOFT SOFTWARE LICENSE TERMS -MICROSOFT C/C++ EXTENSION FOR VISUAL STUDIO CODE +All VS Marketplace extensions, including this C/C++ Extension for Visual Studio +Code, must also be used consistent with the VS Marketplace Terms of Use at +http://aka.ms/VSMarketplace-TOU -These license terms are an agreement between Microsoft Corporation (or -based on where you live, one of its affiliates) and you. They apply to -the software named above. The terms also apply to any -Microsoft services or updates for the software, except to the extent -those have additional terms. - -IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE RIGHTS BELOW. - -1. INSTALLATION AND USE RIGHTS. You may only use the C/C++ Extension - for Visual Studio Code with Visual Studio Code, Visual Studio or - Xamarin Studio software to help you develop and test your - applications. - -2. TERMS FOR SPECIFIC COMPONENTS - a. Third Party Components. The software may include third party - components with separate legal notices or governed by other - agreements, as may be described in the ThirdPartyNotices file(s) - accompanying the software. - b. Package Managers. The software may include package managers, like - Nuget, that give you the option to download other Microsoft and third - party software packages to use with your application. Those packages - are under their own licenses, and not this agreement. Microsoft does - not distribute, license or provide any warranties for any of the third - party packages. - -3. DATA. - a. Data Collection. The software may collect information about you and - your use of the software, and send that to Microsoft. Microsoft may - use this information to provide services and improve our products and - services. You may opt-out of many of these scenarios, but not all, as - described in the product documentation. There are also some features - in the software that may enable you and Microsoft to collect data from - users of your applications. If you use these features, you must comply - with applicable law, including providing appropriate notices to users - of your applications together with a copy of Microsoft’s privacy - statement. Our privacy statement is located at - https://go.microsoft.com/fwlink/?LinkID=824704. You can learn more - about data collection and use in the help documentation and our - privacy statement. Your use of the software operates as your consent - to these practices. - b. Processing of Personal Data. To the extent Microsoft is a processor - or subprocessor of personal data in connection with the software, - Microsoft makes the commitments in the European Union General Data - Protection Regulation Terms of the Online Services Terms to all - customers effective May 25, 2018, at - http://go.microsoft.com/?linkid=9840733. - -4. SCOPE OF LICENSE. The software is licensed, not sold. This - agreement only gives you some rights to use the software. Microsoft - reserves all other rights. Unless applicable law gives you more rights - despite this limitation, you may use the software only as expressly - permitted in this agreement. In doing so, you must comply with any - technical limitations in the software that only allow you to use it in - certain ways. You may not - * work around any technical limitations in the software; - * reverse engineer, decompile or disassemble the software, or attempt - to derive the source code for the software, except and to the extent - required by third party licensing terms governing use of certain open - source components that may be included with the software; - * remove, minimize, block or modify any notices of Microsoft or its - suppliers in the software; - * use the software in any way that is against the law; or - * share, publish, rent, or lease the software, or provide the software - as a stand-alone hosted solution for others to use. - -5. EXPORT RESTRICTIONS. You must comply with all domestic and - international export laws and regulations that apply to the software, - which include restrictions on destinations, end users and end use. - For further information on export restrictions, visit - (aka.ms/exporting). - -6. SUPPORT SERVICES. Because this software is “as is,” we may not -provide support services for it. - -7. ENTIRE AGREEMENT. This agreement, and the terms for supplements, - updates, Internet-based services and support services that you use, - are the entire agreement for the software and support services. - -8. APPLICABLE LAW. If you acquired the software in the United - States, Washington law applies to interpretation of and claims for - breach of this agreement, and the laws of the state where you live - apply to all other claims. If you acquired the software in any other - country, its laws apply. - -9. CONSUMER RIGHTS; REGIONAL VARIATIONS. This agreement describes - certain legal rights. You may have other rights, including consumer - rights, under the laws of your state or country. Separate and apart - from your relationship with Microsoft, you may also have rights with - respect to the party from which you acquired the software. This - agreement does not change those other rights if the laws of your state - or country do not permit it to do so. For example, if you acquired the - software in one of the below regions, or mandatory country law - applies, then the following provisions apply to you: - - a. Australia. You have statutory guarantees under the Australian - Consumer Law and nothing in this agreement is intended to affect those - rights. - - b. Canada. If you acquired this software in Canada, you may stop - receiving updates by turning off the automatic update feature, - disconnecting your device from the Internet (if and when you re- - connect to the Internet, however, the software will resume checking - for and installing updates), or uninstalling the software. The product - documentation, if any, may also specify how to turn off updates for - your specific device or software. - - c. Germany and Austria. - (i) Warranty. The properly licensed software will perform - substantially as described in any Microsoft materials that accompany - the software. However, Microsoft gives no contractual guarantee in - relation to the licensed software. - (ii) Limitation of Liability. In case of intentional conduct, gross - negligence, claims based on the Product Liability Act, as well as, in - case of death or personal or physical injury, Microsoft is liable - according to the statutory law. - Subject to the foregoing clause (ii), Microsoft will only be liable - for slight negligence if Microsoft is in breach of such material - contractual obligations, the fulfillment of which facilitate the due - performance of this agreement, the breach of which would endanger the - purpose of this agreement and the compliance with which a party may - constantly trust in (so-called "cardinal obligations"). In other cases - of slight negligence, Microsoft will not be liable for slight - negligence. - -10. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS-IS.” YOU - BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, - GUARANTEES OR CONDITIONS. TO THE EXTENT PERMITTED UNDER YOUR LOCAL - LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - -11. LIMITATION ON AND EXCLUSION OF DAMAGES. YOU CAN RECOVER FROM - MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU - CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST - PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES. - - This limitation applies to (a) anything related to the software, - services, content (including code) on third party Internet sites, or - third party applications; and (b) claims for breach of contract, - breach of warranty, guarantee or condition, strict liability, - negligence, or other tort to the extent permitted by applicable law. - - It also applies even if Microsoft knew or should have known about the - possibility of the damages. The above limitation or exclusion may not - apply to you because your country may not allow the exclusion or - limitation of incidental, consequential or other damages. - -Please note: As this software is distributed in Quebec, Canada, some -of the clauses in this agreement are provided below in French. - -Remarque : Ce logiciel étant distribué au Québec, Canada, certaines -des clauses dans ce contrat sont fournies ci-dessous en français. - -EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert -« tel quel ». Toute utilisation de ce logiciel est à votre seule -risque et péril. Microsoft n’accorde aucune autre garantie -expresse. Vous pouvez bénéficier de droits additionnels en vertu du -droit local sur la protection des consommateurs, que ce contrat ne -peut modifier. La ou elles sont permises par le droit locale, les -garanties implicites de qualité marchande, d’adéquation à un -usage particulier et d’absence de contrefaçon sont exclues. - -LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ -POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses -fournisseurs une indemnisation en cas de dommages directs uniquement -à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune -indemnisation pour les autres dommages, y compris les dommages -spéciaux, indirects ou accessoires et pertes de bénéfices. +MICROSOFT SOFTWARE LICENSE TERMS -Cette limitation concerne: +MICROSOFT C/C++ EXTENSION FOR VISUAL STUDIO CODE +________________________________________ +These license terms are an agreement between you and Microsoft Corporation (or +one of its affiliates). They apply to the software named above and any +Microsoft services or software updates (except to the extent such services or +updates are accompanied by new or additional terms, in which case those +different terms apply prospectively and do not alter your or Microsoft’s +rights relating to pre-updated software or services). IF YOU COMPLY WITH THESE +LICENSE TERMS, YOU HAVE THE RIGHTS BELOW. BY USING THE SOFTWARE, YOU ACCEPT +THESE TERMS. + +1. INSTALLATION AND USE RIGHTS. +a) General. You may install and use any number of copies of the software +only with Microsoft Visual Studio, Visual Studio for Mac, Visual Studio Code, +Azure DevOps, Team Foundation Server, and successor Microsoft products and +services to develop and test your applications. Further, you may install, use +and/or deploy these software copies via a network management system or as part +of a desktop image within your internal corporate network to develop and test +your applications. +b) Third Party Components. The software may include third party components +with separate legal notices or governed by other agreements, as may be +described in the ThirdPartyNotices file(s) accompanying the software. + +2. SCOPE OF LICENSE. The software is licensed, not sold. This agreement +only gives you some rights to use the software. Microsoft reserves all other +rights. For clarification Microsoft, or its licensors, retains ownership of +all aspects of the software. Unless applicable law gives you more rights +despite this limitation, you may use the software only as expressly permitted +in this agreement. In doing so, you must comply with any technical limitations +in the software that only allow you to use it in certain ways. For example, if +Microsoft technically limits or disables extensibility for the software, you +may not extend the software by, among other things, loading or injecting into +the software any non-Microsoft add-ins, macros, or packages; modifying the +software registry settings; or adding features or functionality equivalent to +that found in Microsoft products and services. You may not: +a) work around any technical limitations in the software that only allow +you to use it in certain ways; +b) reverse engineer, decompile or disassemble the software, or otherwise +attempt to derive the source code for the software, except and to the extent +required by third party licensing terms governing use of certain open source +components that may be included in the software; +c) remove, minimize, block, or modify any notices of Microsoft or its +suppliers in the software; +d) use the software in any way that is against the law or to create or +propagate malware; or +e) share, publish, distribute, or lease the software (except for any +distributable code, subject to the terms above), provide the software as a +stand-alone offering for others to use, or transfer the software or this +agreement to any third party. + +3. DATA. +a) Data Collection. The software may collect information about you and +your use of the software, and send that to Microsoft. Microsoft may use this +information to provide services and improve our products and services. You may +opt-out of many of these scenarios, but not all, as described in the product +documentation. There are also some features in the software that may enable +you to collect data from users of your applications. If you use these features +to enable data collection in your applications, you must comply with applicable +law, including providing appropriate notices to users of your applications. You +can learn more about data collection and use in the help documentation and the +privacy statement at https://aka.ms/privacy. Your use of the software operates +as your consent to these practices. +b) Processing of Personal Data. To the extent Microsoft is a processor or +subprocessor of personal data in connection with the software, Microsoft makes +the commitments in the European Union General Data Protection Regulation Terms +of the Online Services Terms to all customers effective May 25, 2018, at +https://docs.microsoft.com/en-us/legal/gdpr. + +4. EXPORT RESTRICTIONS. You must comply with all domestic and +international export laws and regulations that apply to the software, which +include restrictions on destinations, end users, and end use. For further +information on export restrictions, visit https://aka.ms/exporting. + +5. SUPPORT SERVICES. Microsoft is not obligated under this agreement to +provide any support services for the software. Any support provided is “as +is”, “with all faults”, and without warranty of any kind. + +6. ENTIRE AGREEMENT. This agreement, and any other terms Microsoft may +provide for supplements, updates, or third-party applications, is the entire +agreement for the software. + +7. APPLICABLE LAW AND PLACE TO RESOLVE DISPUTES. If you acquired the +software in the United States or Canada, the laws of the state or province +where you live (or, if a business, where your principal place of business is +located) govern the interpretation of this agreement, claims for its breach, +and all other claims (including consumer protection, unfair competition, and +tort claims), regardless of conflict of laws principles. If you acquired the +software in any other country, its laws apply. If U.S. federal jurisdiction +exists, you and Microsoft consent to exclusive jurisdiction and venue in the +federal court in King County, Washington for all disputes heard in court. If +not, you and Microsoft consent to exclusive jurisdiction and venue in the +Superior Court of King County, Washington for all disputes heard in court. + +8. CONSUMER RIGHTS; REGIONAL VARIATIONS. This agreement describes certain +legal rights. You may have other rights, including consumer rights, under the +laws of your state or country. Separate and apart from your relationship with +Microsoft, you may also have rights with respect to the party from which you +acquired the software. This agreement does not change those other rights if the +laws of your state or country do not permit it to do so. For example, if you +acquired the software in one of the below regions, or mandatory country law +applies, then the following provisions apply to you: +a) Australia. You have statutory guarantees under the Australian Consumer +Law and nothing in this agreement is intended to affect those rights. +b) Canada. If you acquired this software in Canada, you may stop receiving +updates by turning off the automatic update feature, disconnecting your device +from the Internet (if and when you re-connect to the Internet, however, the +software will resume checking for and installing updates), or uninstalling the +software. The product documentation, if any, may also specify how to turn off +updates for your specific device or software. +c) Germany and Austria. +i. Warranty. The properly licensed software will perform substantially as +described in any Microsoft materials that accompany the software. However, +Microsoft gives no contractual guarantee in relation to the licensed software. +ii. Limitation of Liability. In case of intentional conduct, gross +negligence, claims based on the Product Liability Act, as well as, in case of +death or personal or physical injury, Microsoft is liable according to the +statutory law. +Subject to the foregoing clause ii., Microsoft will only be liable for slight +negligence if Microsoft is in breach of such material contractual obligations, +the fulfillment of which facilitate the due performance of this agreement, the +breach of which would endanger the purpose of this agreement and the compliance +with which a party may constantly trust in (so-called "cardinal obligations"). +In other cases of slight negligence, Microsoft will not be liable for slight +negligence. + +9. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS IS.” YOU BEAR +THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES, OR +CONDITIONS. TO THE EXTENT PERMITTED UNDER APPLICABLE LAWS, MICROSOFT EXCLUDES +ALL IMPLIED WARRANTIES, INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE, AND NON-INFRINGEMENT. + +10. LIMITATION ON AND EXCLUSION OF DAMAGES. IF YOU HAVE ANY BASIS FOR +RECOVERING DAMAGES DESPITE THE PRECEDING DISCLAIMER OF WARRANTY, YOU CAN +RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. +YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, +SPECIAL, INDIRECT, OR INCIDENTAL DAMAGES. +This limitation applies to (a) anything related to the software, services, +content (including code) on third party Internet sites, or third party +applications; and (b) claims for breach of contract, warranty, guarantee, or +condition; strict liability, negligence, or other tort; or any other claim; in +each case to the extent permitted by applicable law. +It also applies even if Microsoft knew or should have known about the +possibility of the damages. The above limitation or exclusion may not apply to +you because your state, province, or country may not allow the exclusion or +limitation of incidental, consequential, or other damages. + +Please note: As this software is distributed in Canada, some of the clauses in +this agreement are provided below in French. + +Remarque: Ce logiciel étant distribué au Canada, certaines des clauses dans +ce contrat sont fournies ci-dessous en français. + +EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel +quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. +Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier +de droits additionnels en vertu du droit local sur la protection des +consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par +le droit locale, les garanties implicites de qualité marchande, +d’adéquation à un usage particulier et d’absence de contrefaçon sont +exclues. + +LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES +DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une +indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. +Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y +compris les dommages spéciaux, indirects ou accessoires et pertes de +bénéfices. - * tout ce qui est relié au logiciel, aux services ou au contenu (y - compris le code) figurant sur des sites Internet tiers ou dans des - programmes tiers ; et - * les réclamations au titre de violation de contrat ou de garantie, - ou au titre de responsabilité stricte, de négligence ou d’une - autre faute dans la limite autorisée par la loi en vigueur. - -Elle s’applique également, même si Microsoft connaissait ou -devrait connaître l’éventualité d’un tel dommage. Si votre pays -n’autorise pas l’exclusion ou la limitation de responsabilité -pour les dommages indirects, accessoires ou de quelque nature que ce -soit, il se peut que la limitation ou l’exclusion ci-dessus ne -s’appliquera pas à votre égard. - -EFFET JURIDIQUE. Le présent contrat décrit certains droits -juridiques. Vous pourriez avoir d’autres droits prévus par les lois -de votre pays. Le présent contrat ne modifie pas les droits que vous -confèrent les lois de votre pays si celles-ci ne le permettent pas. \ No newline at end of file +Cette limitation concerne: +• tout ce qui est relié au logiciel, aux services ou au contenu (y +compris le code) figurant sur des sites Internet tiers ou dans des programmes +tiers; et +• les réclamations au titre de violation de contrat ou de garantie, ou +au titre de responsabilité stricte, de négligence ou d’une autre faute dans +la limite autorisée par la loi en vigueur. + +Elle s’applique également, même si Microsoft connaissait ou devrait +connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas +l’exclusion ou la limitation de responsabilité pour les dommages indirects, +accessoires ou de quelque nature que ce soit, il se peut que la limitation ou +l’exclusion ci-dessus ne s’appliquera pas à votre égard. + +EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous +pourriez avoir d’autres droits prévus par les lois de votre pays. Le +présent contrat ne modifie pas les droits que vous confèrent les lois de +votre pays si celles-ci ne le permettent pas. From 4ae2f001fac385245c142f4653b02da28c82fbaa Mon Sep 17 00:00:00 2001 From: Andrew Wang Date: Thu, 7 Jan 2021 14:59:07 -0800 Subject: [PATCH 06/11] Update link for Windows Debugger (#6750) * Update link for Windows Debugger This PR updated the License.txt when vsdbg is downloaded in debugAdapters. See https://github.com/microsoft/vscode-cpptools/pull/6735 * Update integreity hash for the Windows Debugger --- Extension/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Extension/package.json b/Extension/package.json index 327895d60c..78f19ef80d 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -2665,7 +2665,7 @@ }, { "description": "Visual Studio Windows Debugger", - "url": "https://go.microsoft.com/fwlink/?linkid=2082216", + "url": "https://go.microsoft.com/fwlink/?linkid=2152353", "platforms": [ "win32" ], @@ -2676,7 +2676,7 @@ "binaries": [ "./debugAdapters/vsdbg/bin/vsdbg.exe" ], - "integrity": "CF1A01AA75275F76800F6BC1D289F2066DCEBCD983376D344ABF6B03FDB8FEA0" + "integrity": "8299A112D1260C2CEA53AC74D18FA73DE8533C058AAAB254571B503FBAC37297" } ] } \ No newline at end of file From 438a7e337dfcfa5c608c352cdf4a2b1ed85b5b51 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Fri, 8 Jan 2021 17:46:13 -0800 Subject: [PATCH 07/11] Fix SwitchHeaderSource with RevealIfOpen (#6751) --- Extension/src/LanguageServer/extension.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index bcf0c17995..bc26fe0a27 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -806,14 +806,9 @@ function onSwitchHeaderSource(): void { vscode.window.showTextDocument(document, editor.viewColumn); } }); - // TODO: Handle non-visibleTextEditor...not sure how yet. + if (!foundEditor) { - if (vscode.window.activeTextEditor !== undefined) { - // TODO: Change to show it in a different column? - vscode.window.showTextDocument(document, vscode.window.activeTextEditor.viewColumn); - } else { - vscode.window.showTextDocument(document); - } + vscode.window.showTextDocument(document); } }); }); From 1bf090238d2edf357119613ae263b81570918da5 Mon Sep 17 00:00:00 2001 From: Elaheh Rashedi Date: Mon, 11 Jan 2021 10:49:13 -0800 Subject: [PATCH 08/11] edit to compile-commands take effect immediately (#6748) * draft * check CompileCommands * check CompileCommands * remove updateCompileCommandsFileWatchers * remove array of filewatchers for compile_commands * Revert "remove array of filewatchers for compile_commands" This reverts commit d557c6328cfb32adbe79a098df062c74f651d9e9. * Revert "remove updateCompileCommandsFileWatchers" This reverts commit 0e6c03a65b1dfad56b79ae39a4ddfbb9f2c35486. --- Extension/src/LanguageServer/client.ts | 1 + .../src/LanguageServer/configurations.ts | 35 +++++++++++++++---- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 1bea43c48f..ae08679e91 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -2592,6 +2592,7 @@ export class DefaultClient implements Client { if (this.innerLanguageClient !== undefined && this.configuration !== undefined) { this.languageClient.sendNotification(IntervalTimerNotification); this.configuration.checkCppProperties(); + this.configuration.checkCompileCommands(); } } diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index 28a0b6d836..a50e74abc0 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -120,7 +120,9 @@ export class CppProperties { private currentConfigurationIndex: PersistentFolderState | undefined; private configFileWatcher: vscode.FileSystemWatcher | null = null; private configFileWatcherFallbackTime: Date = new Date(); // Used when file watching fails. - private compileCommandFileWatchers: fs.FSWatcher[] = []; + private compileCommandsFile: vscode.Uri | undefined | null = undefined; + private compileCommandsFileWatchers: fs.FSWatcher[] = []; + private compileCommandsFileWatcherFallbackTime: Date = new Date(); // Used when file watching fails. private defaultCompilerPath: string | null = null; private knownCompilers?: KnownCompiler[]; private defaultCStandard: string | null = null; @@ -744,8 +746,8 @@ export class CppProperties { // paths are expected to have variables resolved already public updateCompileCommandsFileWatchers(): void { if (this.configurationJson) { - this.compileCommandFileWatchers.forEach((watcher: fs.FSWatcher) => watcher.close()); - this.compileCommandFileWatchers = []; // reset it + this.compileCommandsFileWatchers.forEach((watcher: fs.FSWatcher) => watcher.close()); + this.compileCommandsFileWatchers = []; // reset it const filePaths: Set = new Set(); this.configurationJson.configurations.forEach(c => { if (c.compileCommands) { @@ -757,7 +759,7 @@ export class CppProperties { }); try { filePaths.forEach((path: string) => { - this.compileCommandFileWatchers.push(fs.watch(path, (event: string, filename: string) => { + this.compileCommandsFileWatchers.push(fs.watch(path, (event: string, filename: string) => { // Wait 1 second after a change to allow time for the write to finish. if (this.compileCommandsFileWatcherTimer) { clearInterval(this.compileCommandsFileWatcherTimer); @@ -1669,12 +1671,33 @@ export class CppProperties { }); } + public checkCompileCommands(): void { + // Check for changes in case of file watcher failure. + const compileCommandsFile: string | undefined = this.CurrentConfiguration?.compileCommands; + if (!compileCommandsFile) { + return; + } + fs.stat(compileCommandsFile, (err, stats) => { + if (err) { + if (err.code === "ENOENT" && this.compileCommandsFile) { + this.compileCommandsFileWatchers = []; // reset file watchers + this.onCompileCommandsChanged(compileCommandsFile); + this.compileCommandsFile = null; // File deleted + } + } else if (stats.mtime > this.compileCommandsFileWatcherFallbackTime) { + this.compileCommandsFileWatcherFallbackTime = new Date(); + this.onCompileCommandsChanged(compileCommandsFile); + this.compileCommandsFile = vscode.Uri.file(compileCommandsFile); // File created. + } + }); + } + dispose(): void { this.disposables.forEach((d) => d.dispose()); this.disposables = []; - this.compileCommandFileWatchers.forEach((watcher: fs.FSWatcher) => watcher.close()); - this.compileCommandFileWatchers = []; // reset it + this.compileCommandsFileWatchers.forEach((watcher: fs.FSWatcher) => watcher.close()); + this.compileCommandsFileWatchers = []; // reset it this.diagnosticCollection.dispose(); } From 46e6b87d1384277093c30fef1a3f0488ce82be27 Mon Sep 17 00:00:00 2001 From: Michelle Matias <38734287+michelleangela@users.noreply.github.com> Date: Wed, 13 Jan 2021 15:05:30 -0800 Subject: [PATCH 09/11] Add triplet IntelliSense modes to support cross-compilation (#6745) --- Extension/bin/common.json | 33 +++++++++ Extension/bin/linux.clang.arm.json | 15 ++++ Extension/bin/linux.clang.arm64.json | 15 ++++ Extension/bin/linux.clang.x64.json | 15 ++++ Extension/bin/linux.clang.x86.json | 15 ++++ Extension/bin/linux.gcc.arm.json | 15 ++++ Extension/bin/linux.gcc.arm64.json | 15 ++++ Extension/bin/linux.gcc.x64.json | 15 ++++ Extension/bin/linux.gcc.x86.json | 15 ++++ Extension/bin/macos.clang.arm.json | 14 ++++ Extension/bin/macos.clang.arm64.json | 14 ++++ Extension/bin/macos.clang.x64.json | 14 ++++ Extension/bin/macos.clang.x86.json | 14 ++++ Extension/bin/macos.gcc.arm.json | 14 ++++ Extension/bin/macos.gcc.arm64.json | 14 ++++ Extension/bin/macos.gcc.x64.json | 14 ++++ Extension/bin/macos.gcc.x86.json | 14 ++++ Extension/bin/msvc.json | 33 --------- Extension/bin/msvc.x64.clang.json | 7 -- Extension/bin/msvc.x64.gcc.json | 7 -- Extension/bin/msvc.x86.clang.json | 7 -- Extension/bin/msvc.x86.gcc.json | 7 -- ...rm32.clang.json => windows.clang.arm.json} | 0 ...rm32.gcc.json => windows.clang.arm64.json} | 0 ...rm64.clang.json => windows.clang.x64.json} | 0 Extension/bin/windows.clang.x86.json | 7 ++ Extension/bin/windows.gcc.arm.json | 7 ++ ....arm64.gcc.json => windows.gcc.arm64.json} | 0 Extension/bin/windows.gcc.x64.json | 7 ++ Extension/bin/windows.gcc.x86.json | 7 ++ ....arm32.msvc.json => windows.msvc.arm.json} | 0 ...rm64.msvc.json => windows.msvc.arm64.json} | 0 ...vc.x64.msvc.json => windows.msvc.x64.json} | 0 ...vc.x86.msvc.json => windows.msvc.x86.json} | 0 Extension/c_cpp_properties.schema.json | 30 +++++++- Extension/package.json | 28 ++++++++ .../src/LanguageServer/configurations.ts | 9 +-- .../LanguageServer/cppBuildTaskProvider.ts | 2 +- Extension/src/common.ts | 68 ++++++++++++------- Extension/ui/settings.html | 30 +++++++- 40 files changed, 425 insertions(+), 96 deletions(-) create mode 100644 Extension/bin/common.json create mode 100644 Extension/bin/linux.clang.arm.json create mode 100644 Extension/bin/linux.clang.arm64.json create mode 100644 Extension/bin/linux.clang.x64.json create mode 100644 Extension/bin/linux.clang.x86.json create mode 100644 Extension/bin/linux.gcc.arm.json create mode 100644 Extension/bin/linux.gcc.arm64.json create mode 100644 Extension/bin/linux.gcc.x64.json create mode 100644 Extension/bin/linux.gcc.x86.json create mode 100644 Extension/bin/macos.clang.arm.json create mode 100644 Extension/bin/macos.clang.arm64.json create mode 100644 Extension/bin/macos.clang.x64.json create mode 100644 Extension/bin/macos.clang.x86.json create mode 100644 Extension/bin/macos.gcc.arm.json create mode 100644 Extension/bin/macos.gcc.arm64.json create mode 100644 Extension/bin/macos.gcc.x64.json create mode 100644 Extension/bin/macos.gcc.x86.json delete mode 100644 Extension/bin/msvc.json delete mode 100644 Extension/bin/msvc.x64.clang.json delete mode 100644 Extension/bin/msvc.x64.gcc.json delete mode 100644 Extension/bin/msvc.x86.clang.json delete mode 100644 Extension/bin/msvc.x86.gcc.json rename Extension/bin/{msvc.arm32.clang.json => windows.clang.arm.json} (100%) rename Extension/bin/{msvc.arm32.gcc.json => windows.clang.arm64.json} (100%) rename Extension/bin/{msvc.arm64.clang.json => windows.clang.x64.json} (100%) create mode 100644 Extension/bin/windows.clang.x86.json create mode 100644 Extension/bin/windows.gcc.arm.json rename Extension/bin/{msvc.arm64.gcc.json => windows.gcc.arm64.json} (100%) create mode 100644 Extension/bin/windows.gcc.x64.json create mode 100644 Extension/bin/windows.gcc.x86.json rename Extension/bin/{msvc.arm32.msvc.json => windows.msvc.arm.json} (100%) rename Extension/bin/{msvc.arm64.msvc.json => windows.msvc.arm64.json} (100%) rename Extension/bin/{msvc.x64.msvc.json => windows.msvc.x64.json} (100%) rename Extension/bin/{msvc.x86.msvc.json => windows.msvc.x86.json} (100%) diff --git a/Extension/bin/common.json b/Extension/bin/common.json new file mode 100644 index 0000000000..bf6e470e33 --- /dev/null +++ b/Extension/bin/common.json @@ -0,0 +1,33 @@ +{ + "defaults": [ + "cpfe", + "--wchar_t_keyword", + "--no_warnings", + "--rtti", + "--edge", + "--exceptions", + "--error_limit", + "25000", + "-D_EDG_COMPILER", + "-D_USE_DECLSPECS_FOR_SAL=1" + ], + "source_file_format": "-f %s", + "expressions": [ + { + "match": "^/I(.*)", + "replace": "-I\n$1" + }, + { + "match": "^/D(.*)", + "replace": "-D$1" + }, + { + "match": "^/AI(.*)", + "replace": "--using_directory\n$1" + }, + { + "match": "^/dE--header_only_fallback", + "replace": "--header_only_fallback" + } + ] +} \ No newline at end of file diff --git a/Extension/bin/linux.clang.arm.json b/Extension/bin/linux.clang.arm.json new file mode 100644 index 0000000000..f582efccff --- /dev/null +++ b/Extension/bin/linux.clang.arm.json @@ -0,0 +1,15 @@ +{ + "defaults": [ + "--pack_alignment", + "8", + "-Dunix=1", + "-D__unix__=1", + "-D__linux__=1", + "-D__arm__=1", + "-D__ARM_32BIT_STATE=1", + "-D__PTRDIFF_TYPE__=int", + "-D__SIZE_TYPE__=unsigned int", + "-D__WCHAR_TYPE__=long int" + ], + "defaults_op" : "merge" +} \ No newline at end of file diff --git a/Extension/bin/linux.clang.arm64.json b/Extension/bin/linux.clang.arm64.json new file mode 100644 index 0000000000..d75b8d805b --- /dev/null +++ b/Extension/bin/linux.clang.arm64.json @@ -0,0 +1,15 @@ +{ + "defaults": [ + "--pack_alignment", + "8", + "-Dunix=1", + "-D__unix__=1", + "-D__linux__=1", + "-D__aarch64__=1", + "-D__ARM_64BIT_STATE=1", + "-D__PTRDIFF_TYPE__=long int", + "-D__SIZE_TYPE__=long unsigned int", + "-D__WCHAR_TYPE__=int" + ], + "defaults_op" : "merge" +} \ No newline at end of file diff --git a/Extension/bin/linux.clang.x64.json b/Extension/bin/linux.clang.x64.json new file mode 100644 index 0000000000..24d8e78408 --- /dev/null +++ b/Extension/bin/linux.clang.x64.json @@ -0,0 +1,15 @@ +{ + "defaults": [ + "--pack_alignment", + "8", + "-Dunix=1", + "-D__unix__=1", + "-D__linux__=1", + "-D__x86_64=1", + "-D__x86_64__=1", + "-D__PTRDIFF_TYPE__=long int", + "-D__SIZE_TYPE__=long unsigned int", + "-D__WCHAR_TYPE__=int" + ], + "defaults_op" : "merge" +} \ No newline at end of file diff --git a/Extension/bin/linux.clang.x86.json b/Extension/bin/linux.clang.x86.json new file mode 100644 index 0000000000..d026cd030b --- /dev/null +++ b/Extension/bin/linux.clang.x86.json @@ -0,0 +1,15 @@ +{ + "defaults": [ + "--pack_alignment", + "8", + "-Dunix=1", + "-D__unix__=1", + "-D__linux__=1", + "-D__i386=1", + "-D__i386__=1", + "-D__PTRDIFF_TYPE__=int", + "-D__SIZE_TYPE__=unsigned int", + "-D__WCHAR_TYPE__=long int" + ], + "defaults_op" : "merge" +} \ No newline at end of file diff --git a/Extension/bin/linux.gcc.arm.json b/Extension/bin/linux.gcc.arm.json new file mode 100644 index 0000000000..f582efccff --- /dev/null +++ b/Extension/bin/linux.gcc.arm.json @@ -0,0 +1,15 @@ +{ + "defaults": [ + "--pack_alignment", + "8", + "-Dunix=1", + "-D__unix__=1", + "-D__linux__=1", + "-D__arm__=1", + "-D__ARM_32BIT_STATE=1", + "-D__PTRDIFF_TYPE__=int", + "-D__SIZE_TYPE__=unsigned int", + "-D__WCHAR_TYPE__=long int" + ], + "defaults_op" : "merge" +} \ No newline at end of file diff --git a/Extension/bin/linux.gcc.arm64.json b/Extension/bin/linux.gcc.arm64.json new file mode 100644 index 0000000000..d75b8d805b --- /dev/null +++ b/Extension/bin/linux.gcc.arm64.json @@ -0,0 +1,15 @@ +{ + "defaults": [ + "--pack_alignment", + "8", + "-Dunix=1", + "-D__unix__=1", + "-D__linux__=1", + "-D__aarch64__=1", + "-D__ARM_64BIT_STATE=1", + "-D__PTRDIFF_TYPE__=long int", + "-D__SIZE_TYPE__=long unsigned int", + "-D__WCHAR_TYPE__=int" + ], + "defaults_op" : "merge" +} \ No newline at end of file diff --git a/Extension/bin/linux.gcc.x64.json b/Extension/bin/linux.gcc.x64.json new file mode 100644 index 0000000000..b09cc36c35 --- /dev/null +++ b/Extension/bin/linux.gcc.x64.json @@ -0,0 +1,15 @@ +{ + "defaults": [ + "--pack_alignment", + "8", + "-Dunix=1", + "-D__unix__=1", + "-D__linux__=1", + "-D__x86_64=1", + "-D__x86_64__=1", + "-D__PTRDIFF_TYPE__=long int", + "-D__SIZE_TYPE__=long unsigned int", + "-D__WCHAR_TYPE__=int" + ], + "defaults_op" : "merge" +} diff --git a/Extension/bin/linux.gcc.x86.json b/Extension/bin/linux.gcc.x86.json new file mode 100644 index 0000000000..d026cd030b --- /dev/null +++ b/Extension/bin/linux.gcc.x86.json @@ -0,0 +1,15 @@ +{ + "defaults": [ + "--pack_alignment", + "8", + "-Dunix=1", + "-D__unix__=1", + "-D__linux__=1", + "-D__i386=1", + "-D__i386__=1", + "-D__PTRDIFF_TYPE__=int", + "-D__SIZE_TYPE__=unsigned int", + "-D__WCHAR_TYPE__=long int" + ], + "defaults_op" : "merge" +} \ No newline at end of file diff --git a/Extension/bin/macos.clang.arm.json b/Extension/bin/macos.clang.arm.json new file mode 100644 index 0000000000..92823ac523 --- /dev/null +++ b/Extension/bin/macos.clang.arm.json @@ -0,0 +1,14 @@ +{ + "defaults": [ + "--pack_alignment", + "8", + "-D__APPLE__=1", + "-D__MACH__=1", + "-D__arm__=1", + "-D__ARM_32BIT_STATE=1", + "-D__PTRDIFF_TYPE__=int", + "-D__SIZE_TYPE__=unsigned int", + "-D__WCHAR_TYPE__=long int" + ], + "defaults_op" : "merge" +} \ No newline at end of file diff --git a/Extension/bin/macos.clang.arm64.json b/Extension/bin/macos.clang.arm64.json new file mode 100644 index 0000000000..18721f3eb6 --- /dev/null +++ b/Extension/bin/macos.clang.arm64.json @@ -0,0 +1,14 @@ +{ + "defaults": [ + "--pack_alignment", + "8", + "-D__APPLE__=1", + "-D__MACH__=1", + "-D__aarch64__=1", + "-D__ARM_64BIT_STATE=1", + "-D__PTRDIFF_TYPE__=long int", + "-D__SIZE_TYPE__=long unsigned int", + "-D__WCHAR_TYPE__=int" + ], + "defaults_op" : "merge" +} \ No newline at end of file diff --git a/Extension/bin/macos.clang.x64.json b/Extension/bin/macos.clang.x64.json new file mode 100644 index 0000000000..d049f22eaf --- /dev/null +++ b/Extension/bin/macos.clang.x64.json @@ -0,0 +1,14 @@ +{ + "defaults": [ + "--pack_alignment", + "8", + "-D__APPLE__=1", + "-D__MACH__=1", + "-D__x86_64=1", + "-D__x86_64__=1", + "-D__PTRDIFF_TYPE__=long int", + "-D__SIZE_TYPE__=long unsigned int", + "-D__WCHAR_TYPE__=int" + ], + "defaults_op" : "merge" +} \ No newline at end of file diff --git a/Extension/bin/macos.clang.x86.json b/Extension/bin/macos.clang.x86.json new file mode 100644 index 0000000000..b6189bb0a7 --- /dev/null +++ b/Extension/bin/macos.clang.x86.json @@ -0,0 +1,14 @@ +{ + "defaults": [ + "--pack_alignment", + "8", + "-D__APPLE__=1", + "-D__MACH__=1", + "-D__i386=1", + "-D__i386__=1", + "-D__PTRDIFF_TYPE__=int", + "-D__SIZE_TYPE__=unsigned int", + "-D__WCHAR_TYPE__=long int" + ], + "defaults_op" : "merge" +} \ No newline at end of file diff --git a/Extension/bin/macos.gcc.arm.json b/Extension/bin/macos.gcc.arm.json new file mode 100644 index 0000000000..92823ac523 --- /dev/null +++ b/Extension/bin/macos.gcc.arm.json @@ -0,0 +1,14 @@ +{ + "defaults": [ + "--pack_alignment", + "8", + "-D__APPLE__=1", + "-D__MACH__=1", + "-D__arm__=1", + "-D__ARM_32BIT_STATE=1", + "-D__PTRDIFF_TYPE__=int", + "-D__SIZE_TYPE__=unsigned int", + "-D__WCHAR_TYPE__=long int" + ], + "defaults_op" : "merge" +} \ No newline at end of file diff --git a/Extension/bin/macos.gcc.arm64.json b/Extension/bin/macos.gcc.arm64.json new file mode 100644 index 0000000000..18721f3eb6 --- /dev/null +++ b/Extension/bin/macos.gcc.arm64.json @@ -0,0 +1,14 @@ +{ + "defaults": [ + "--pack_alignment", + "8", + "-D__APPLE__=1", + "-D__MACH__=1", + "-D__aarch64__=1", + "-D__ARM_64BIT_STATE=1", + "-D__PTRDIFF_TYPE__=long int", + "-D__SIZE_TYPE__=long unsigned int", + "-D__WCHAR_TYPE__=int" + ], + "defaults_op" : "merge" +} \ No newline at end of file diff --git a/Extension/bin/macos.gcc.x64.json b/Extension/bin/macos.gcc.x64.json new file mode 100644 index 0000000000..d049f22eaf --- /dev/null +++ b/Extension/bin/macos.gcc.x64.json @@ -0,0 +1,14 @@ +{ + "defaults": [ + "--pack_alignment", + "8", + "-D__APPLE__=1", + "-D__MACH__=1", + "-D__x86_64=1", + "-D__x86_64__=1", + "-D__PTRDIFF_TYPE__=long int", + "-D__SIZE_TYPE__=long unsigned int", + "-D__WCHAR_TYPE__=int" + ], + "defaults_op" : "merge" +} \ No newline at end of file diff --git a/Extension/bin/macos.gcc.x86.json b/Extension/bin/macos.gcc.x86.json new file mode 100644 index 0000000000..b6189bb0a7 --- /dev/null +++ b/Extension/bin/macos.gcc.x86.json @@ -0,0 +1,14 @@ +{ + "defaults": [ + "--pack_alignment", + "8", + "-D__APPLE__=1", + "-D__MACH__=1", + "-D__i386=1", + "-D__i386__=1", + "-D__PTRDIFF_TYPE__=int", + "-D__SIZE_TYPE__=unsigned int", + "-D__WCHAR_TYPE__=long int" + ], + "defaults_op" : "merge" +} \ No newline at end of file diff --git a/Extension/bin/msvc.json b/Extension/bin/msvc.json deleted file mode 100644 index 2f9af22205..0000000000 --- a/Extension/bin/msvc.json +++ /dev/null @@ -1,33 +0,0 @@ - { - "defaults": [ - "cpfe", - "--wchar_t_keyword", - "--no_warnings", - "--rtti", - "--edge", - "--exceptions", - "--error_limit", - "25000", - "-D_EDG_COMPILER", - "-D_USE_DECLSPECS_FOR_SAL=1" - ], - "source_file_format": "-f %s", - "expressions": [ - { - "match": "^/I(.*)", - "replace": "-I\n$1" - }, - { - "match": "^/D(.*)", - "replace": "-D$1" - }, - { - "match": "^/AI(.*)", - "replace": "--using_directory\n$1" - }, - { - "match": "^/dE--header_only_fallback", - "replace": "--header_only_fallback" - } - ] - } diff --git a/Extension/bin/msvc.x64.clang.json b/Extension/bin/msvc.x64.clang.json deleted file mode 100644 index e0ac16a148..0000000000 --- a/Extension/bin/msvc.x64.clang.json +++ /dev/null @@ -1,7 +0,0 @@ - { - "defaults": [ - "--pack_alignment", - "8" - ], - "defaults_op" : "merge" - } \ No newline at end of file diff --git a/Extension/bin/msvc.x64.gcc.json b/Extension/bin/msvc.x64.gcc.json deleted file mode 100644 index e88706f682..0000000000 --- a/Extension/bin/msvc.x64.gcc.json +++ /dev/null @@ -1,7 +0,0 @@ - { - "defaults": [ - "--pack_alignment", - "8" - ], - "defaults_op" : "merge" - } diff --git a/Extension/bin/msvc.x86.clang.json b/Extension/bin/msvc.x86.clang.json deleted file mode 100644 index e0ac16a148..0000000000 --- a/Extension/bin/msvc.x86.clang.json +++ /dev/null @@ -1,7 +0,0 @@ - { - "defaults": [ - "--pack_alignment", - "8" - ], - "defaults_op" : "merge" - } \ No newline at end of file diff --git a/Extension/bin/msvc.x86.gcc.json b/Extension/bin/msvc.x86.gcc.json deleted file mode 100644 index e0ac16a148..0000000000 --- a/Extension/bin/msvc.x86.gcc.json +++ /dev/null @@ -1,7 +0,0 @@ - { - "defaults": [ - "--pack_alignment", - "8" - ], - "defaults_op" : "merge" - } \ No newline at end of file diff --git a/Extension/bin/msvc.arm32.clang.json b/Extension/bin/windows.clang.arm.json similarity index 100% rename from Extension/bin/msvc.arm32.clang.json rename to Extension/bin/windows.clang.arm.json diff --git a/Extension/bin/msvc.arm32.gcc.json b/Extension/bin/windows.clang.arm64.json similarity index 100% rename from Extension/bin/msvc.arm32.gcc.json rename to Extension/bin/windows.clang.arm64.json diff --git a/Extension/bin/msvc.arm64.clang.json b/Extension/bin/windows.clang.x64.json similarity index 100% rename from Extension/bin/msvc.arm64.clang.json rename to Extension/bin/windows.clang.x64.json diff --git a/Extension/bin/windows.clang.x86.json b/Extension/bin/windows.clang.x86.json new file mode 100644 index 0000000000..37e18b9268 --- /dev/null +++ b/Extension/bin/windows.clang.x86.json @@ -0,0 +1,7 @@ +{ + "defaults": [ + "--pack_alignment", + "8" + ], + "defaults_op": "merge" +} \ No newline at end of file diff --git a/Extension/bin/windows.gcc.arm.json b/Extension/bin/windows.gcc.arm.json new file mode 100644 index 0000000000..37e18b9268 --- /dev/null +++ b/Extension/bin/windows.gcc.arm.json @@ -0,0 +1,7 @@ +{ + "defaults": [ + "--pack_alignment", + "8" + ], + "defaults_op": "merge" +} \ No newline at end of file diff --git a/Extension/bin/msvc.arm64.gcc.json b/Extension/bin/windows.gcc.arm64.json similarity index 100% rename from Extension/bin/msvc.arm64.gcc.json rename to Extension/bin/windows.gcc.arm64.json diff --git a/Extension/bin/windows.gcc.x64.json b/Extension/bin/windows.gcc.x64.json new file mode 100644 index 0000000000..37e18b9268 --- /dev/null +++ b/Extension/bin/windows.gcc.x64.json @@ -0,0 +1,7 @@ +{ + "defaults": [ + "--pack_alignment", + "8" + ], + "defaults_op": "merge" +} \ No newline at end of file diff --git a/Extension/bin/windows.gcc.x86.json b/Extension/bin/windows.gcc.x86.json new file mode 100644 index 0000000000..37e18b9268 --- /dev/null +++ b/Extension/bin/windows.gcc.x86.json @@ -0,0 +1,7 @@ +{ + "defaults": [ + "--pack_alignment", + "8" + ], + "defaults_op": "merge" +} \ No newline at end of file diff --git a/Extension/bin/msvc.arm32.msvc.json b/Extension/bin/windows.msvc.arm.json similarity index 100% rename from Extension/bin/msvc.arm32.msvc.json rename to Extension/bin/windows.msvc.arm.json diff --git a/Extension/bin/msvc.arm64.msvc.json b/Extension/bin/windows.msvc.arm64.json similarity index 100% rename from Extension/bin/msvc.arm64.msvc.json rename to Extension/bin/windows.msvc.arm64.json diff --git a/Extension/bin/msvc.x64.msvc.json b/Extension/bin/windows.msvc.x64.json similarity index 100% rename from Extension/bin/msvc.x64.msvc.json rename to Extension/bin/windows.msvc.x64.json diff --git a/Extension/bin/msvc.x86.msvc.json b/Extension/bin/windows.msvc.x86.json similarity index 100% rename from Extension/bin/msvc.x86.msvc.json rename to Extension/bin/windows.msvc.x86.json diff --git a/Extension/c_cpp_properties.schema.json b/Extension/c_cpp_properties.schema.json index 7b0d004752..23aea605b5 100644 --- a/Extension/c_cpp_properties.schema.json +++ b/Extension/c_cpp_properties.schema.json @@ -90,9 +90,37 @@ } }, "intelliSenseMode": { - "description": "The IntelliSense mode to use that maps to an architecture-specific variant of MSVC, gcc, or Clang. If not set or if set to ${default}, the extension will choose the default for that platform. Windows defaults to msvc-x64, Linux defaults to gcc-x64, and macOS defaults to clang-x64.", + "description": "The IntelliSense mode to use that maps to a platform and architecture variant of MSVC, gcc, or Clang. If not set or if set to ${default}, the extension will choose the default for that platform. Windows defaults to windows-msvc-x64, Linux defaults to linux-gcc-x64, and macOS defaults to macos-clang-x64.", "type": "string", "enum": [ + "macos-clang-x86", + "macos-clang-x64", + "macos-clang-arm", + "macos-clang-arm64", + "macos-gcc-x86", + "macos-gcc-x64", + "macos-gcc-arm", + "macos-gcc-arm64", + "linux-clang-x86", + "linux-clang-x64", + "linux-clang-arm", + "linux-clang-arm64", + "linux-gcc-x86", + "linux-gcc-x64", + "linux-gcc-arm", + "linux-gcc-arm64", + "windows-clang-x86", + "windows-clang-x64", + "windows-clang-arm", + "windows-clang-arm64", + "windows-gcc-x86", + "windows-gcc-x64", + "windows-gcc-arm", + "windows-gcc-arm64", + "windows-msvc-x86", + "windows-msvc-x64", + "windows-msvc-arm", + "windows-msvc-arm64", "clang-x86", "clang-x64", "clang-arm", diff --git a/Extension/package.json b/Extension/package.json index 78f19ef80d..933e6e77ce 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -927,6 +927,34 @@ "type": "string", "enum": [ "", + "macos-clang-x86", + "macos-clang-x64", + "macos-clang-arm", + "macos-clang-arm64", + "macos-gcc-x86", + "macos-gcc-x64", + "macos-gcc-arm", + "macos-gcc-arm64", + "linux-clang-x86", + "linux-clang-x64", + "linux-clang-arm", + "linux-clang-arm64", + "linux-gcc-x86", + "linux-gcc-x64", + "linux-gcc-arm", + "linux-gcc-arm64", + "windows-clang-x86", + "windows-clang-x64", + "windows-clang-arm", + "windows-clang-arm64", + "windows-gcc-x86", + "windows-gcc-x64", + "windows-gcc-arm", + "windows-gcc-arm64", + "windows-msvc-x86", + "windows-msvc-x64", + "windows-msvc-arm", + "windows-msvc-arm64", "clang-x86", "clang-x64", "clang-arm", diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index a50e74abc0..a8c5e7c7c1 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -440,10 +440,7 @@ export class CppProperties { const resolvedCompilerPath: string = this.resolvePath(configuration.compilerPath, true); const compilerPathAndArgs: util.CompilerPathAndArgs = util.extractCompilerPathAndArgs(resolvedCompilerPath); - // Valid compiler + IntelliSenseMode combinations: - // 1. compiler is cl/clang-cl and IntelliSenseMode is MSVC - // 2. compiler is not cl/clang-cl and IntelliSenseMode is not MSVC - const isValid: boolean = compilerPathAndArgs.compilerName.endsWith("cl.exe") === configuration.intelliSenseMode.startsWith("msvc"); + const isValid: boolean = (compilerPathAndArgs.compilerName.toLowerCase() === "cl.exe") === configuration.intelliSenseMode.includes("msvc"); if (isValid) { return ""; } else { @@ -1153,7 +1150,7 @@ export class CppProperties { const compilerPathAndArgs: util.CompilerPathAndArgs = util.extractCompilerPathAndArgs(resolvedCompilerPath); if (resolvedCompilerPath && // Don't error cl.exe paths because it could be for an older preview build. - !(isWindows && compilerPathAndArgs.compilerName === "cl.exe")) { + compilerPathAndArgs.compilerName.toLowerCase() !== "cl.exe") { resolvedCompilerPath = resolvedCompilerPath.trim(); // Error when the compiler's path has spaces without quotes but args are used. @@ -1443,7 +1440,7 @@ export class CppProperties { if (isCompilerPath) { resolvedPath = resolvedPath.trim(); const compilerPathAndArgs: util.CompilerPathAndArgs = util.extractCompilerPathAndArgs(resolvedPath); - if (isWindows && compilerPathAndArgs.compilerName === "cl.exe") { + if (compilerPathAndArgs.compilerName.toLowerCase() === "cl.exe") { continue; // Don't squiggle invalid cl.exe paths because it could be for an older preview build. } if (compilerPathAndArgs.compilerPath === undefined) { diff --git a/Extension/src/LanguageServer/cppBuildTaskProvider.ts b/Extension/src/LanguageServer/cppBuildTaskProvider.ts index e43d1df3e7..ed9ec1531d 100644 --- a/Extension/src/LanguageServer/cppBuildTaskProvider.ts +++ b/Extension/src/LanguageServer/cppBuildTaskProvider.ts @@ -154,7 +154,7 @@ export class CppBuildTaskProvider implements TaskProvider { private getTask: (compilerPath: string, appendSourceToName: boolean, compilerArgs?: string[], definition?: CppBuildTaskDefinition, detail?: string) => Task = (compilerPath: string, appendSourceToName: boolean, compilerArgs?: string[], definition?: CppBuildTaskDefinition, detail?: string) => { const compilerPathBase: string = path.basename(compilerPath); - const isCl: boolean = compilerPathBase === "cl.exe"; + const isCl: boolean = compilerPathBase.toLowerCase() === "cl.exe"; // Double-quote the command if it is not already double-quoted. let resolvedcompilerPath: string = isCl ? compilerPathBase : compilerPath; if (resolvedcompilerPath && !resolvedcompilerPath.startsWith("\"") && resolvedcompilerPath.includes(" ")) { diff --git a/Extension/src/common.ts b/Extension/src/common.ts index 366c72e49b..425357ea6e 100644 --- a/Extension/src/common.ts +++ b/Extension/src/common.ts @@ -544,19 +544,35 @@ export async function checkInstallBinariesExist(): Promise { export async function checkInstallJsonsExist(): Promise { let installJsonsExist: boolean = true; const jsonFiles: string[] = [ - "bin/msvc.arm32.clang.json", - "bin/msvc.arm32.gcc.json", - "bin/msvc.arm32.msvc.json", - "bin/msvc.arm64.clang.json", - "bin/msvc.arm64.gcc.json", - "bin/msvc.arm64.msvc.json", - "bin/msvc.json", - "bin/msvc.x64.clang.json", - "bin/msvc.x64.gcc.json", - "bin/msvc.x64.msvc.json", - "bin/msvc.x86.clang.json", - "bin/msvc.x86.gcc.json", - "bin/msvc.x86.msvc.json", + "bin/common.json", + "bin/linux.clang.arm.json", + "bin/linux.clang.arm64.json", + "bin/linux.clang.x64.json", + "bin/linux.clang.x86.json", + "bin/linux.gcc.arm.json", + "bin/linux.gcc.arm64.json", + "bin/linux.gcc.x64.json", + "bin/linux.gcc.x86.json", + "bin/macos.clang.arm.json", + "bin/macos.clang.arm64.json", + "bin/macos.clang.x64.json", + "bin/macos.clang.x86.json", + "bin/macos.gcc.arm.json", + "bin/macos.gcc.arm64.json", + "bin/macos.gcc.x64.json", + "bin/macos.gcc.x86.json", + "bin/windows.clang.arm.json", + "bin/windows.clang.arm64.json", + "bin/windows.clang.x64.json", + "bin/windows.clang.x86.json", + "bin/windows.gcc.arm.json", + "bin/windows.gcc.arm64.json", + "bin/windows.gcc.x64.json", + "bin/windows.gcc.x86.json", + "bin/windows.msvc.arm.json", + "bin/windows.msvc.arm64.json", + "bin/windows.msvc.x64.json", + "bin/windows.msvc.x86.json", "debugAdapters/bin/cppdbg.ad7Engine.json" ]; await Promise.all(jsonFiles.map(async (file) => { @@ -897,6 +913,7 @@ export function downloadFileToStr(urlStr: string, headers?: OutgoingHttpHeaders) }); } +/** CompilerPathAndArgs retains original casing of text input for compiler path and args */ export interface CompilerPathAndArgs { compilerPath?: string; compilerName: string; @@ -952,14 +969,13 @@ function extractArgs(argsString: string): string[] { export function extractCompilerPathAndArgs(inputCompilerPath?: string, inputCompilerArgs?: string[]): CompilerPathAndArgs { let compilerPath: string | undefined = inputCompilerPath; + const compilerPathLowercase: string | undefined = inputCompilerPath?.toLowerCase(); let compilerName: string = ""; let additionalArgs: string[] = []; - const isWindows: boolean = os.platform() === 'win32'; + if (compilerPath) { - if (compilerPath.endsWith("\\cl.exe") || compilerPath.endsWith("/cl.exe") || compilerPath === "cl.exe") { - // Input is only compiler name, this is only for cl.exe + if (compilerPathLowercase?.endsWith("\\cl.exe") || compilerPathLowercase?.endsWith("/cl.exe") || (compilerPathLowercase === "cl.exe")) { compilerName = path.basename(compilerPath); - } else if (compilerPath.startsWith("\"")) { // Input has quotes around compiler path const endQuote: number = compilerPath.substr(1).search("\"") + 1; @@ -969,12 +985,16 @@ export function extractCompilerPathAndArgs(inputCompilerPath?: string, inputComp compilerName = path.basename(compilerPath); } } else { - // Input has no quotes but can have a compiler path with spaces and args. - // Go from right to left checking if a valid path is to the left of a space. + // Input has no quotes around compiler path let spaceStart: number = compilerPath.lastIndexOf(" "); - if (spaceStart !== -1 && (!isWindows || !compilerPath.endsWith("cl.exe")) && !checkFileExistsSync(compilerPath)) { + if (checkFileExistsSync(compilerPath)) { + // Get compiler name if there are no args but path is valid. + compilerName = path.basename(compilerPath); + } else if (spaceStart !== -1 && !checkFileExistsSync(compilerPath)) { + // Get compiler name if compiler path has spaces and args. + // Go from right to left checking if a valid path is to the left of a space. let potentialCompilerPath: string = compilerPath.substr(0, spaceStart); - while ((!isWindows || !potentialCompilerPath.endsWith("cl.exe")) && !checkFileExistsSync(potentialCompilerPath)) { + while (!checkFileExistsSync(potentialCompilerPath)) { spaceStart = potentialCompilerPath.lastIndexOf(" "); if (spaceStart === -1) { // Reached the start without finding a valid path. Use the original value. @@ -987,12 +1007,8 @@ export function extractCompilerPathAndArgs(inputCompilerPath?: string, inputComp // Found a valid compilerPath and args. additionalArgs = extractArgs(compilerPath.substr(spaceStart + 1)); compilerPath = potentialCompilerPath; + compilerName = path.basename(potentialCompilerPath); } - compilerName = path.basename(compilerPath); - } - // Get compiler name if there are no args but path is valid or a valid path was found with args. - if (compilerPath === "cl.exe" || checkFileExistsSync(compilerPath)) { - compilerName = path.basename(compilerPath); } } } diff --git a/Extension/ui/settings.html b/Extension/ui/settings.html index 429e85a859..659d2567e8 100644 --- a/Extension/ui/settings.html +++ b/Extension/ui/settings.html @@ -504,11 +504,39 @@
IntelliSense mode
- The IntelliSense mode to use that maps to an architecture-specific variant of MSVC, gcc, or Clang. If not set or if set to ${default}, the extension will choose the default for that platform. Windows defaults to msvc-x64, Linux defaults to gcc-x64, and macOS defaults to clang-x64. Select a specific IntelliSense mode to override the ${default} mode. + The IntelliSense mode to use that maps to a platform and architecture variant of MSVC, gcc, or Clang. If not set or if set to ${default}, the extension will choose the default for that platform. Windows defaults to windows-msvc-x64, Linux defaults to linux-gcc-x64, and macOS defaults to macos-clang-x64. Select a specific IntelliSense mode to override the ${default} mode.
@@ -473,6 +473,7 @@ +
diff --git a/Extension/ui/settings.ts b/Extension/ui/settings.ts index c97df52823..8451859da1 100644 --- a/Extension/ui/settings.ts +++ b/Extension/ui/settings.ts @@ -7,6 +7,7 @@ const elementId: { [key: string]: string } = { // Basic settings configName: "configName", + configNameInvalid: "configNameInvalid", configSelection: "configSelection", addConfigDiv: "addConfigDiv", addConfigBtn: "addConfigBtn", @@ -285,6 +286,7 @@ class SettingsApp { private updateErrors(errors: any): void { this.updating = true; try { + this.showErrorWithInfo(elementId.configNameInvalid, errors.name); this.showErrorWithInfo(elementId.intelliSenseModeInvalid, errors.intelliSenseMode); this.showErrorWithInfo(elementId.compilerPathInvalid, errors.compilerPath); this.showErrorWithInfo(elementId.includePathInvalid, errors.includePath);