Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3eb50568e9 | ||
|
|
e65e602bab | ||
|
|
866b145645 | ||
|
|
65ec5abb72 | ||
|
|
fc909f88ba | ||
|
|
c22d13af30 | ||
|
|
290a53e934 | ||
|
|
4b20f32c39 | ||
|
|
5ce976f322 | ||
|
|
352e0bf2ff | ||
|
|
684404f29c | ||
|
|
478fb3c245 | ||
|
|
c3cfd55762 | ||
|
|
b2d989f85f | ||
|
|
bb3d290d6b | ||
|
|
33bdb7f425 | ||
|
|
94c12812e0 | ||
|
|
3144d82fb4 | ||
|
|
5a56dfc749 | ||
|
|
bddb1ba342 | ||
|
|
cafce7c050 | ||
|
|
324cd1bd59 | ||
|
|
ad5fe867c5 | ||
|
|
cc862b039e | ||
|
|
446eb16e7a | ||
|
|
e09702e5dc | ||
|
|
48000bdbda | ||
|
|
f8b8e094f9 | ||
|
|
9762fe5397 | ||
|
|
5780e18487 | ||
|
|
3c6f603aea | ||
|
|
35ab3eb26d | ||
|
|
302f4226cf | ||
|
|
377896c30a | ||
|
|
13893fbfb2 | ||
|
|
d603786a13 | ||
|
|
407342f482 | ||
|
|
5c8b812075 | ||
|
|
2a2d928075 | ||
|
|
e160229500 | ||
|
|
60cfb9998d | ||
|
|
6ec8c14a98 | ||
|
|
98f13a6f11 | ||
|
|
7b3ac0a22e | ||
|
|
0d85aea687 | ||
|
|
04b0be0452 | ||
|
|
25d2b76514 | ||
|
|
b0e7500bcb | ||
|
|
296bee8000 | ||
|
|
ec4977971e | ||
|
|
71684e0f90 | ||
|
|
7a99678e6f | ||
|
|
8bf5d6e9aa | ||
|
|
6fbf4df21d | ||
|
|
5cc9930813 | ||
|
|
5aa8b56cb7 | ||
|
|
4dfb2a39a6 | ||
|
|
cc11b68e20 | ||
|
|
5e327771ef | ||
|
|
0ec40d9000 | ||
|
|
dbfa0c5ed5 | ||
|
|
9b20549cef | ||
|
|
ce2fcf0c62 | ||
|
|
605c8032f8 | ||
|
|
bfdcba4449 | ||
|
|
fc9209f55a | ||
|
|
5a337901a6 | ||
|
|
6cabb390fd | ||
|
|
4efc47f955 | ||
|
|
8334b15f4e | ||
|
|
84343d04d3 | ||
|
|
e2c0f014dd | ||
|
|
e2bddc1901 | ||
|
|
c417da6ed4 | ||
|
|
2ad0a95bd4 | ||
|
|
e5b80da312 | ||
|
|
42dfef3f6b | ||
|
|
10125dfb08 | ||
|
|
3b7755a4d2 | ||
|
|
f0bef8dca6 | ||
|
|
1ce1e9cd71 | ||
|
|
fec8a4e07f | ||
|
|
65163966d5 | ||
|
|
e201d7905e | ||
|
|
32b9947b57 | ||
|
|
7b03e025a7 | ||
|
|
a81c4645c0 | ||
|
|
675720d466 | ||
|
|
646d9cfd6a | ||
|
|
d1e7326f4d | ||
|
|
0fd0adad84 | ||
|
|
aef2fa974e | ||
|
|
001b3a5721 | ||
|
|
350c1c3890 | ||
|
|
64c1327716 | ||
|
|
40fe35c8e2 | ||
|
|
532eee96fe | ||
|
|
febcf11215 | ||
|
|
7a76ee1ec5 | ||
|
|
81a026435d | ||
|
|
9f2d17d40c | ||
|
|
2e66dc794b | ||
|
|
3644b94ee9 | ||
|
|
cf2a1112f4 | ||
|
|
bcc7d61266 | ||
|
|
3c5e7e260e | ||
|
|
b137b7c3ed | ||
|
|
67118593b8 | ||
|
|
85514f21bc | ||
|
|
fa774544ea | ||
|
|
a45c8f8670 | ||
|
|
a014fe80bd | ||
|
|
b9bd78e64e | ||
|
|
21bc17ac6e | ||
|
|
d03f2d48fa | ||
|
|
edf8e0a155 | ||
|
|
82b8f261a8 | ||
|
|
1e779a5a3c | ||
|
|
4083075476 | ||
|
|
e4696c5dec | ||
|
|
9bf1c1d5a5 | ||
|
|
34745e0b10 | ||
|
|
5e96765467 | ||
|
|
9b49182355 | ||
|
|
88f419fc11 | ||
|
|
fc4fc00803 | ||
|
|
4b9ca430ba | ||
|
|
885b4c0a61 | ||
|
|
79a78ba994 | ||
|
|
982c4fb9cf | ||
|
|
9b7f7deb4d | ||
|
|
a6f535fd54 | ||
|
|
edb810aa3d | ||
|
|
42b3c28ab1 | ||
|
|
b745ebc218 | ||
|
|
6b6c16e378 | ||
|
|
8f55a2e8d2 | ||
|
|
5f68e6a868 | ||
|
|
93dc3737fb | ||
|
|
6f2714bfbb | ||
|
|
fafca55335 | ||
|
|
2605cac2a9 | ||
|
|
98a9b0cabe | ||
|
|
dc0a7af0aa | ||
|
|
3adcec81a4 | ||
|
|
b96737a919 | ||
|
|
c4d68fd859 | ||
|
|
2d3cac0dea | ||
|
|
0fcc415231 | ||
|
|
8431b37201 | ||
|
|
23f3b47e6f | ||
|
|
7d73a3124d | ||
|
|
b69d17a0f5 | ||
|
|
be8b6fb693 | ||
|
|
2041315910 | ||
|
|
04f822ab92 | ||
|
|
5a486fc8cd | ||
|
|
62fb757bb3 | ||
|
|
b79a965613 | ||
|
|
148a709e0e | ||
|
|
4916b2f361 | ||
|
|
f7c2cc869a | ||
|
|
79c8d1d64a | ||
|
|
54c73eaade | ||
|
|
a397a4731a | ||
|
|
4dfea3b68c | ||
|
|
384b33386b | ||
|
|
1a3afd10fc | ||
|
|
a2a0297ae9 | ||
|
|
8cf332baba | ||
|
|
77af87e92e | ||
|
|
01a747ad35 | ||
|
|
c8cbf6c0ba | ||
|
|
edaf6dce78 | ||
|
|
58e184fdc0 | ||
|
|
07efeb4c6c | ||
|
|
3555e2f1ab | ||
|
|
cf2ebd75fe | ||
|
|
ac74b5b6a3 | ||
|
|
c22c28d0c6 | ||
|
|
399daf9b27 | ||
|
|
b3a337aad0 | ||
|
|
ed1a1ca57e | ||
|
|
cae6c42928 | ||
|
|
4abec441f9 | ||
|
|
8e23df99d8 | ||
|
|
abe65b5879 | ||
|
|
20e220354d | ||
|
|
bc6bfac71a | ||
|
|
f40e9bc569 | ||
|
|
fa3e927011 | ||
|
|
9f9bfddd47 | ||
|
|
7fec8ba15f | ||
|
|
24f5fdd122 | ||
|
|
6a063be33f | ||
|
|
150c7aaf84 | ||
|
|
bbf2832356 | ||
|
|
e2e6662bae | ||
|
|
da3a4382dd | ||
|
|
eca31aa8a1 | ||
|
|
186ace28e0 | ||
|
|
c549c07fa6 | ||
|
|
340c00dc92 | ||
|
|
53b6bb29ec | ||
|
|
ed51a08388 | ||
|
|
140eb83f73 | ||
|
|
f1d9211b92 | ||
|
|
64b429c9a0 | ||
|
|
8a81837bd4 | ||
|
|
716979e1e3 | ||
|
|
117ec80611 | ||
|
|
6379d6e799 | ||
|
|
373e7face5 | ||
|
|
50eb6f94dd | ||
|
|
801c8dd5d4 | ||
|
|
27abc63d1c | ||
|
|
0a23125ae5 | ||
|
|
e8a33ff410 | ||
|
|
25162597e1 | ||
|
|
6502f27963 | ||
|
|
13e0bd2cff | ||
|
|
591242ab5f | ||
|
|
93e633490a | ||
|
|
250b5ca064 | ||
|
|
f0ae9b3a12 | ||
|
|
edb0af19c4 | ||
|
|
6329ba4091 | ||
|
|
ef48323a9b | ||
|
|
87a1e507ac | ||
|
|
0e3114a252 | ||
|
|
21f6ea640f | ||
|
|
03ebaf8783 | ||
|
|
d575335ade | ||
|
|
31abc1847f | ||
|
|
0b08fc9bac | ||
|
|
2bb1462f10 | ||
|
|
0ab9f770ea | ||
|
|
4416479d1c | ||
|
|
6231202374 | ||
|
|
6542b63660 | ||
|
|
fcab84cf6a | ||
|
|
e2e350883e | ||
|
|
47353932a1 | ||
|
|
850c61dc76 | ||
|
|
84bacd7edc | ||
|
|
773e60e31e | ||
|
|
9bce9d7a5d | ||
|
|
f1457ecffc | ||
|
|
8c284037c9 | ||
|
|
f2311d7dba | ||
|
|
3b4092f1ac | ||
|
|
2608f1a47c | ||
|
|
656018a440 | ||
|
|
70637aeb69 | ||
|
|
543aa5e3bb | ||
|
|
119a06f807 | ||
|
|
cb5b588711 | ||
|
|
adb9a4112c | ||
|
|
48653c0854 | ||
|
|
49e5dfdc24 | ||
|
|
35ebdb302a | ||
|
|
58f15d95d4 | ||
|
|
17db1d5970 | ||
|
|
0b97bea982 | ||
|
|
f054ffe9c8 | ||
|
|
2855600b5b | ||
|
|
ebb24763bd | ||
|
|
0c0f78d915 | ||
|
|
b0182fdd9a | ||
|
|
378e37adc9 | ||
|
|
3612c22adf | ||
|
|
230bce9864 | ||
|
|
f611df293f | ||
|
|
46944da663 | ||
|
|
518ea5bc31 | ||
|
|
3ee264015a | ||
|
|
65fcb15c09 | ||
|
|
304a336b57 | ||
|
|
28762c4be2 | ||
|
|
c2ca699e39 | ||
|
|
a8694b59a0 | ||
|
|
f0ecdd4862 | ||
|
|
98bfb54efc | ||
|
|
3a8e920a0d | ||
|
|
ba0cc65530 | ||
|
|
320d355e5d | ||
|
|
feae362cc3 | ||
|
|
66b0dbb945 | ||
|
|
14f2cc2bf4 | ||
|
|
c2fdf75c8c | ||
|
|
281d04feaf | ||
|
|
3526f5092c | ||
|
|
2be467ed68 | ||
|
|
38ed24f6a0 | ||
|
|
b56711ff6c | ||
|
|
379d1c8472 | ||
|
|
03b3995e19 | ||
|
|
466fb3b6bc | ||
|
|
08fd6214c9 | ||
|
|
feb70a3680 | ||
|
|
093757d182 | ||
|
|
a51209e051 | ||
|
|
4f86df6fa2 | ||
|
|
479368da95 | ||
|
|
9e9430e9b4 | ||
|
|
b38e9ef00a | ||
|
|
58cce1a996 | ||
|
|
c846e8106d | ||
|
|
68c9cb9236 | ||
|
|
2afbce5b28 | ||
|
|
d6574c6d3f | ||
|
|
886d3c58e9 | ||
|
|
0445fc4207 |
+15
-22
@@ -1,5 +1,5 @@
|
||||
name: Bug Report - Language Service
|
||||
description: Create a bug report for IntelliSense, autocomplete, code editing, code navigation, etc.
|
||||
description: Create a bug report for IntelliSense, code editing, code navigation, code completion, code formatting, semantic colorization, etc.
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
@@ -16,25 +16,21 @@ body:
|
||||
- OS and Version
|
||||
- VS Code Version
|
||||
- C/C++ Extension Version
|
||||
- Other extensions you installed (and if the issue persists after disabling them)
|
||||
- If using SSH remote, specify OS of remote machine
|
||||
- A clear and concise description of what the bug is, including information about the workspace (i.e. is the workspace a single project or multiple projects, size of the project, etc).
|
||||
value: |
|
||||
- OS and Version:
|
||||
- VS Code Version:
|
||||
- C/C++ Extension Version:
|
||||
- Other extensions you installed (and if the issue persists after disabling them):
|
||||
- If using SSH remote, specify OS of remote machine:
|
||||
- A clear and concise description of what the bug is, including information about the workspace (i.e. is the workspace a single project or multiple projects, size of the project, etc).
|
||||
- OS and Version:
|
||||
- VS Code Version:
|
||||
- C/C++ Extension Version:
|
||||
- If using SSH remote, specify OS of remote machine:
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Bug Summary and Steps to Reproduce
|
||||
description: |
|
||||
Please describe the language service issue or language service feature that is not working as expected.
|
||||
Please describe the language service issue or language service feature that is not working as expected. Include information about the actual workspace project (for example, is the workspace a single project or multiple projects, size of the project, etc).
|
||||
|
||||
Include clear steps on how to reproduce the issue.
|
||||
Include clear steps on how to reproduce the issue and a description of what you expected to happen.
|
||||
value: |
|
||||
Bug Summary:
|
||||
|
||||
@@ -44,20 +40,15 @@ body:
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
Expected behavior:
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Expected behavior
|
||||
description: A clear and concise description of what you expected to happen.
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Code sample and Logs
|
||||
label: Configuration and Logs
|
||||
description: |
|
||||
Please provide code sample, your c_cpp_properties.json and logs:
|
||||
- Code sample
|
||||
Please provide your c_cpp_properties.json and logs:
|
||||
- Configurations in `c_cpp_properties.json`
|
||||
- Logs from running `C/C++: Log Diagnostics` from the VS Code command palette
|
||||
- Logs from [the language server logging](https://code.visualstudio.com/docs/cpp/enable-logging-cpp#_enable-logging-for-the-language-server)
|
||||
@@ -66,14 +57,16 @@ body:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Screenshots
|
||||
description: If applicable, add screenshots to help explain your problem.
|
||||
label: Other Extensions
|
||||
description: If applicable, please list other extensions installed and if the issue persists after disabling other extensions.
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: |
|
||||
Optionally provide other information that will give us more context about the issue you are encountering, such as code sample, screenshots, screen recording of the issue, call stacks, etc.
|
||||
|
||||
Providing call stacks:
|
||||
For bugs like crashes, deadlocks, infinite loops, etc. that we are not able to repro and for which the call stack may be useful, please attach a debugger and/or create a dmp and provide the call stacks. Windows binaries have symbols available in VS Code by setting your "symbolSearchPath" to "https://msdl.microsoft.com/download/symbols".
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
name: Bug Report - General Extension
|
||||
description: Create a bug report for downloading, installing, or building the extension.
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
### Is there an existing issue for this?
|
||||
Please search our [existing issues](https://github.com/microsoft/vscode-cpptools/issues) to see if an issue already exists for the bug you encountered.
|
||||
|
||||
Please also review our [documentation](https://code.visualstudio.com/docs/languages/cpp) and [FAQs](https://code.visualstudio.com/docs/cpp/faq-cpp).
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Environment
|
||||
description: |
|
||||
Please provide the information for the following:
|
||||
- OS and version
|
||||
- VS Code version
|
||||
- C/C++ extension version
|
||||
- OS and version of remote machine (if applicable)
|
||||
value: |
|
||||
- OS and version:
|
||||
- VS Code:
|
||||
- C/C++ extension:
|
||||
- OS and version of remote machine (if applicable):
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Bug Summary and Steps to Reproduce
|
||||
description: |
|
||||
Please give a description of the issue you are encountering and what you expected to happen.
|
||||
|
||||
Include clear steps on how to reproduce the issue.
|
||||
value: |
|
||||
Bug Summary:
|
||||
|
||||
|
||||
Steps to reproduce:
|
||||
1. In this environment...
|
||||
2. With this config...
|
||||
3. Do '...'
|
||||
4. See error...
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Other Extensions
|
||||
description: If applicable, please list other extensions installed and if the issue persists after disabling other extensions.
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional Information
|
||||
description: |
|
||||
Optionally provide other information that will give us more context about the issue you are encountering.
|
||||
|
||||
Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
|
||||
validations:
|
||||
required: false
|
||||
@@ -15,8 +15,8 @@ class Locker extends ActionBase_1.ActionBase {
|
||||
this.daysSinceUpdate = daysSinceUpdate;
|
||||
}
|
||||
async run() {
|
||||
const closedTimestamp = utils_1.daysAgoToHumanReadbleDate(this.daysSinceClose);
|
||||
const updatedTimestamp = utils_1.daysAgoToHumanReadbleDate(this.daysSinceUpdate);
|
||||
const closedTimestamp = (0, utils_1.daysAgoToHumanReadbleDate)(this.daysSinceClose);
|
||||
const updatedTimestamp = (0, utils_1.daysAgoToHumanReadbleDate)(this.daysSinceUpdate);
|
||||
const query = this.buildQuery((this.daysSinceClose ? `closed:<${closedTimestamp} ` : "") + (this.daysSinceUpdate ? `updated:<${updatedTimestamp} ` : "") + "is:closed is:unlocked");
|
||||
for await (const page of this.github.query({ q: query })) {
|
||||
await Promise.all(page.map(async (issue) => {
|
||||
@@ -24,15 +24,15 @@ class Locker extends ActionBase_1.ActionBase {
|
||||
if (!hydrated.locked && hydrated.open === false && this.validateIssue(hydrated)
|
||||
// TODO: Verify closed and updated timestamps
|
||||
) {
|
||||
console.log(`Locking issue ${hydrated.number}`);
|
||||
(0, utils_1.safeLog)(`Locking issue ${hydrated.number}`);
|
||||
await issue.lockIssue();
|
||||
}
|
||||
else {
|
||||
if (hydrated.locked) {
|
||||
console.log(`Issue ${hydrated.number} is already locked. Ignoring`);
|
||||
(0, utils_1.safeLog)(`Issue ${hydrated.number} is already locked. Ignoring`);
|
||||
}
|
||||
else if (hydrated.open) {
|
||||
console.log(`Issue ${hydrated.number} is open. Ignoring`);
|
||||
(0, utils_1.safeLog)(`Issue ${hydrated.number} is open. Ignoring`);
|
||||
}
|
||||
}
|
||||
}));
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { GitHub, Issue } from '../api/api'
|
||||
import { daysAgoToHumanReadbleDate } from '../common/utils'
|
||||
import { ActionBase } from '../common/ActionBase'
|
||||
import { GitHub, Issue } from '../api/api';
|
||||
import { daysAgoToHumanReadbleDate, safeLog } from '../common/utils';
|
||||
import { ActionBase } from '../common/ActionBase';
|
||||
|
||||
export class Locker extends ActionBase {
|
||||
constructor(
|
||||
@@ -26,26 +26,26 @@ export class Locker extends ActionBase {
|
||||
}
|
||||
|
||||
async run() {
|
||||
const closedTimestamp = daysAgoToHumanReadbleDate(this.daysSinceClose)
|
||||
const updatedTimestamp = daysAgoToHumanReadbleDate(this.daysSinceUpdate)
|
||||
const closedTimestamp = daysAgoToHumanReadbleDate(this.daysSinceClose);
|
||||
const updatedTimestamp = daysAgoToHumanReadbleDate(this.daysSinceUpdate);
|
||||
|
||||
const query = this.buildQuery((this.daysSinceClose ? `closed:<${closedTimestamp} ` : "") + (this.daysSinceUpdate ? `updated:<${updatedTimestamp} ` : "") + "is:closed is:unlocked");
|
||||
|
||||
for await (const page of this.github.query({ q: query })) {
|
||||
await Promise.all(
|
||||
page.map(async (issue) => {
|
||||
const hydrated = await issue.getIssue()
|
||||
const hydrated = await issue.getIssue();
|
||||
|
||||
if (!hydrated.locked && hydrated.open === false && this.validateIssue(hydrated)
|
||||
// TODO: Verify closed and updated timestamps
|
||||
) {
|
||||
console.log(`Locking issue ${hydrated.number}`)
|
||||
await issue.lockIssue()
|
||||
safeLog(`Locking issue ${hydrated.number}`);
|
||||
await issue.lockIssue();
|
||||
} else {
|
||||
if (hydrated.locked) {
|
||||
console.log(`Issue ${hydrated.number} is already locked. Ignoring`)
|
||||
safeLog(`Issue ${hydrated.number} is already locked. Ignoring`);
|
||||
} else if (hydrated.open) {
|
||||
console.log(`Issue ${hydrated.number} is open. Ignoring`)
|
||||
safeLog(`Issue ${hydrated.number} is open. Ignoring`);
|
||||
}
|
||||
}
|
||||
}),
|
||||
|
||||
@@ -13,7 +13,7 @@ class LockerAction extends Action_1.Action {
|
||||
this.id = 'Locker';
|
||||
}
|
||||
async onTriggered(github) {
|
||||
await new Locker_1.Locker(github, +utils_1.getRequiredInput('daysSinceClose'), +utils_1.getRequiredInput('daysSinceUpdate'), utils_1.getInput('labels') || undefined, utils_1.getInput('milestoneName') || undefined, utils_1.getInput('milestoneId') || undefined, utils_1.getInput('ignoreLabels') || undefined, utils_1.getInput('ignoreMilestoneNames') || undefined, utils_1.getInput('ignoreMilestoneIds') || undefined, +(utils_1.getInput('minimumVotes') || 0), +(utils_1.getInput('maximumVotes') || 9999999)).run();
|
||||
await new Locker_1.Locker(github, +(0, utils_1.getRequiredInput)('daysSinceClose'), +(0, utils_1.getRequiredInput)('daysSinceUpdate'), (0, utils_1.getInput)('labels') || undefined, (0, utils_1.getInput)('milestoneName') || undefined, (0, utils_1.getInput)('milestoneId') || undefined, (0, utils_1.getInput)('ignoreLabels') || undefined, (0, utils_1.getInput)('ignoreMilestoneNames') || undefined, (0, utils_1.getInput)('ignoreMilestoneIds') || undefined, +((0, utils_1.getInput)('minimumVotes') || 0), +((0, utils_1.getInput)('maximumVotes') || 9999999)).run();
|
||||
}
|
||||
}
|
||||
new LockerAction().run(); // eslint-disable-line
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { OctoKit } from '../api/octokit'
|
||||
import { getInput, getRequiredInput } from '../common/utils'
|
||||
import { Locker } from './Locker'
|
||||
import { Action } from '../common/Action'
|
||||
import { OctoKit } from '../api/octokit';
|
||||
import { getInput, getRequiredInput } from '../common/utils';
|
||||
import { Locker } from './Locker';
|
||||
import { Action } from '../common/Action';
|
||||
|
||||
class LockerAction extends Action {
|
||||
id = 'Locker'
|
||||
id = 'Locker';
|
||||
|
||||
async onTriggered(github: OctoKit) {
|
||||
await new Locker(
|
||||
@@ -24,8 +24,8 @@ class LockerAction extends Action {
|
||||
getInput('ignoreMilestoneIds') || undefined,
|
||||
+(getInput('minimumVotes') || 0),
|
||||
+(getInput('maximumVotes') || 9999999)
|
||||
).run()
|
||||
).run();
|
||||
}
|
||||
}
|
||||
|
||||
new LockerAction().run() // eslint-disable-line
|
||||
new LockerAction().run(); // eslint-disable-line
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.Reopener = void 0;
|
||||
const utils_1 = require("../common/utils");
|
||||
const ActionBase_1 = require("../common/ActionBase");
|
||||
class Reopener extends ActionBase_1.ActionBase {
|
||||
constructor(github, alsoApplyToOpenIssues, addLabels, removeLabels, reopenComment, setMilestoneId, labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes) {
|
||||
@@ -19,7 +20,7 @@ class Reopener extends ActionBase_1.ActionBase {
|
||||
async run() {
|
||||
const addLabelsSet = this.addLabels ? this.addLabels.split(',') : [];
|
||||
const removeLabelsSet = this.removeLabels ? this.removeLabels.split(',') : [];
|
||||
console.log(`alsoApplyToOpenIssues: ${this.alsoApplyToOpenIssues}`);
|
||||
(0, utils_1.safeLog)(`alsoApplyToOpenIssues: ${this.alsoApplyToOpenIssues}`);
|
||||
const query = this.buildQuery((this.alsoApplyToOpenIssues ? "" : "is:closed ") + "is:unlocked");
|
||||
for await (const page of this.github.query({ q: query })) {
|
||||
await Promise.all(page.map(async (issue) => {
|
||||
@@ -28,17 +29,17 @@ class Reopener extends ActionBase_1.ActionBase {
|
||||
// TODO: Verify closed and updated timestamps
|
||||
) {
|
||||
if (hydrated.open === false) {
|
||||
console.log(`Reopening issue ${hydrated.number}`);
|
||||
(0, utils_1.safeLog)(`Reopening issue ${hydrated.number}`);
|
||||
await issue.reopenIssue();
|
||||
}
|
||||
if (this.setMilestoneId != undefined) {
|
||||
console.log(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`);
|
||||
(0, utils_1.safeLog)(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`);
|
||||
await issue.setMilestone(+this.setMilestoneId);
|
||||
}
|
||||
if (removeLabelsSet.length > 0) {
|
||||
for (const removeLabel of removeLabelsSet) {
|
||||
if (removeLabel && removeLabel.length > 0) {
|
||||
console.log(`Removing label on issue ${hydrated.number}: ${removeLabel}`);
|
||||
(0, utils_1.safeLog)(`Removing label on issue ${hydrated.number}: ${removeLabel}`);
|
||||
await issue.removeLabel(removeLabel);
|
||||
}
|
||||
}
|
||||
@@ -46,22 +47,22 @@ class Reopener extends ActionBase_1.ActionBase {
|
||||
if (addLabelsSet.length > 0) {
|
||||
for (const addLabel of addLabelsSet) {
|
||||
if (addLabel && addLabel.length > 0) {
|
||||
console.log(`Adding label on issue ${hydrated.number}: ${addLabel}`);
|
||||
(0, utils_1.safeLog)(`Adding label on issue ${hydrated.number}: ${addLabel}`);
|
||||
await issue.addLabel(addLabel);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.reopenComment) {
|
||||
console.log(`Posting comment to issue ${hydrated.number}.`);
|
||||
(0, utils_1.safeLog)(`Posting comment to issue ${hydrated.number}.`);
|
||||
await issue.postComment(this.reopenComment);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (hydrated.locked) {
|
||||
console.log(`Issue ${hydrated.number} is locked. Ignoring`);
|
||||
(0, utils_1.safeLog)(`Issue ${hydrated.number} is locked. Ignoring`);
|
||||
}
|
||||
else if (!this.alsoApplyToOpenIssues && hydrated.open) {
|
||||
console.log(`Issue ${hydrated.number} is open. Ignoring`);
|
||||
(0, utils_1.safeLog)(`Issue ${hydrated.number} is open. Ignoring`);
|
||||
}
|
||||
}
|
||||
}));
|
||||
|
||||
@@ -3,8 +3,9 @@
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { GitHub, Issue } from '../api/api'
|
||||
import { ActionBase } from '../common/ActionBase'
|
||||
import { GitHub, Issue } from '../api/api';
|
||||
import { daysAgoToHumanReadbleDate, safeLog } from '../common/utils';
|
||||
import { ActionBase } from '../common/ActionBase';
|
||||
|
||||
export class Reopener extends ActionBase {
|
||||
constructor(
|
||||
@@ -31,50 +32,50 @@ export class Reopener extends ActionBase {
|
||||
const addLabelsSet = this.addLabels ? this.addLabels.split(',') : [];
|
||||
const removeLabelsSet = this.removeLabels ? this.removeLabels.split(',') : [];
|
||||
|
||||
console.log(`alsoApplyToOpenIssues: ${this.alsoApplyToOpenIssues}`);
|
||||
safeLog(`alsoApplyToOpenIssues: ${this.alsoApplyToOpenIssues}`);
|
||||
|
||||
const query = this.buildQuery((this.alsoApplyToOpenIssues ? "": "is:closed ") + "is:unlocked");
|
||||
|
||||
for await (const page of this.github.query({ q: query })) {
|
||||
await Promise.all(
|
||||
page.map(async (issue) => {
|
||||
const hydrated = await issue.getIssue()
|
||||
const hydrated = await issue.getIssue();
|
||||
if (!hydrated.locked && (this.alsoApplyToOpenIssues || hydrated.open === false) && this.validateIssue(hydrated)
|
||||
// TODO: Verify closed and updated timestamps
|
||||
) {
|
||||
if (hydrated.open === false) {
|
||||
console.log(`Reopening issue ${hydrated.number}`)
|
||||
await issue.reopenIssue()
|
||||
safeLog(`Reopening issue ${hydrated.number}`);
|
||||
await issue.reopenIssue();
|
||||
}
|
||||
if (this.setMilestoneId != undefined) {
|
||||
console.log(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`)
|
||||
await issue.setMilestone(+this.setMilestoneId)
|
||||
safeLog(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`);
|
||||
await issue.setMilestone(+this.setMilestoneId);
|
||||
}
|
||||
if (removeLabelsSet.length > 0) {
|
||||
for (const removeLabel of removeLabelsSet) {
|
||||
if (removeLabel && removeLabel.length > 0) {
|
||||
console.log(`Removing label on issue ${hydrated.number}: ${removeLabel}`)
|
||||
await issue.removeLabel(removeLabel)
|
||||
safeLog(`Removing label on issue ${hydrated.number}: ${removeLabel}`);
|
||||
await issue.removeLabel(removeLabel);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (addLabelsSet.length > 0) {
|
||||
for (const addLabel of addLabelsSet) {
|
||||
if (addLabel && addLabel.length > 0) {
|
||||
console.log(`Adding label on issue ${hydrated.number}: ${addLabel}`)
|
||||
await issue.addLabel(addLabel)
|
||||
safeLog(`Adding label on issue ${hydrated.number}: ${addLabel}`);
|
||||
await issue.addLabel(addLabel);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.reopenComment) {
|
||||
console.log(`Posting comment to issue ${hydrated.number}.`)
|
||||
await issue.postComment(this.reopenComment)
|
||||
safeLog(`Posting comment to issue ${hydrated.number}.`);
|
||||
await issue.postComment(this.reopenComment);
|
||||
}
|
||||
} else {
|
||||
if (hydrated.locked) {
|
||||
console.log(`Issue ${hydrated.number} is locked. Ignoring`)
|
||||
safeLog(`Issue ${hydrated.number} is locked. Ignoring`);
|
||||
} else if (!this.alsoApplyToOpenIssues && hydrated.open) {
|
||||
console.log(`Issue ${hydrated.number} is open. Ignoring`)
|
||||
safeLog(`Issue ${hydrated.number} is open. Ignoring`);
|
||||
}
|
||||
}
|
||||
}),
|
||||
|
||||
@@ -10,11 +10,11 @@ const Action_1 = require("../common/Action");
|
||||
class ReopenerAction extends Action_1.Action {
|
||||
constructor() {
|
||||
super(...arguments);
|
||||
this.id = 'Locker';
|
||||
this.id = 'Reopener';
|
||||
}
|
||||
async onTriggered(github) {
|
||||
const alsoApplyToOpenIssues = utils_1.getInput('alsoApplyToOpenIssues');
|
||||
await new Reopener_1.Reopener(github, alsoApplyToOpenIssues != undefined && alsoApplyToOpenIssues.toLowerCase() == 'true', utils_1.getInput('addLabels') || undefined, utils_1.getInput('removeLabels') || undefined, utils_1.getInput('reopenComment') || '', utils_1.getInput('setMilestoneId') || undefined, utils_1.getInput('labels') || undefined, utils_1.getInput('milestoneName') || undefined, utils_1.getInput('milestoneId') || undefined, utils_1.getInput('ignoreLabels') || undefined, utils_1.getInput('ignoreMilestoneNames') || undefined, utils_1.getInput('ignoreMilestoneIds') || undefined, +(utils_1.getInput('minimumVotes') || 0), +(utils_1.getInput('maximumVotes') || 9999999)).run();
|
||||
const alsoApplyToOpenIssues = (0, utils_1.getInput)('alsoApplyToOpenIssues');
|
||||
await new Reopener_1.Reopener(github, alsoApplyToOpenIssues != undefined && alsoApplyToOpenIssues.toLowerCase() == 'true', (0, utils_1.getInput)('addLabels') || undefined, (0, utils_1.getInput)('removeLabels') || undefined, (0, utils_1.getInput)('reopenComment') || '', (0, utils_1.getInput)('setMilestoneId') || undefined, (0, utils_1.getInput)('labels') || undefined, (0, utils_1.getInput)('milestoneName') || undefined, (0, utils_1.getInput)('milestoneId') || undefined, (0, utils_1.getInput)('ignoreLabels') || undefined, (0, utils_1.getInput)('ignoreMilestoneNames') || undefined, (0, utils_1.getInput)('ignoreMilestoneIds') || undefined, +((0, utils_1.getInput)('minimumVotes') || 0), +((0, utils_1.getInput)('maximumVotes') || 9999999)).run();
|
||||
}
|
||||
}
|
||||
new ReopenerAction().run(); // eslint-disable-line
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { OctoKit } from '../api/octokit'
|
||||
import { getInput, getRequiredInput } from '../common/utils'
|
||||
import { Reopener } from './Reopener'
|
||||
import { Action } from '../common/Action'
|
||||
import { OctoKit } from '../api/octokit';
|
||||
import { getInput, getRequiredInput } from '../common/utils';
|
||||
import { Reopener } from './Reopener';
|
||||
import { Action } from '../common/Action';
|
||||
|
||||
class ReopenerAction extends Action {
|
||||
id = 'Locker'
|
||||
id = 'Reopener';
|
||||
|
||||
async onTriggered(github: OctoKit) {
|
||||
const alsoApplyToOpenIssues: string | undefined = getInput('alsoApplyToOpenIssues');
|
||||
@@ -28,8 +28,8 @@ class ReopenerAction extends Action {
|
||||
getInput('ignoreMilestoneIds') || undefined,
|
||||
+(getInput('minimumVotes') || 0),
|
||||
+(getInput('maximumVotes') || 9999999)
|
||||
).run()
|
||||
).run();
|
||||
}
|
||||
}
|
||||
|
||||
new ReopenerAction().run() // eslint-disable-line
|
||||
new ReopenerAction().run(); // eslint-disable-line
|
||||
|
||||
@@ -21,8 +21,8 @@ class StaleCloser extends ActionBase_1.ActionBase {
|
||||
this.setMilestoneId = setMilestoneId;
|
||||
}
|
||||
async run() {
|
||||
const updatedTimestamp = utils_1.daysAgoToHumanReadbleDate(this.closeDays);
|
||||
const pingTimestamp = this.pingDays ? utils_1.daysAgoToTimestamp(this.pingDays) : undefined;
|
||||
const updatedTimestamp = (0, utils_1.daysAgoToHumanReadbleDate)(this.closeDays);
|
||||
const pingTimestamp = this.pingDays ? (0, utils_1.daysAgoToTimestamp)(this.pingDays) : undefined;
|
||||
const query = this.buildQuery((this.closeDays ? `updated:<${updatedTimestamp} ` : "") + "is:open is:unlocked");
|
||||
const addLabelsSet = this.addLabels ? this.addLabels.split(',') : [];
|
||||
const removeLabelsSet = this.removeLabels ? this.removeLabels.split(',') : [];
|
||||
@@ -45,20 +45,20 @@ class StaleCloser extends ActionBase_1.ActionBase {
|
||||
await issue.hasWriteAccess(lastComment.author)) {
|
||||
if (pingTimestamp != undefined) {
|
||||
if (lastComment) {
|
||||
console.log(`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Closing.`);
|
||||
(0, utils_1.safeLog)(`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Closing.`);
|
||||
}
|
||||
else {
|
||||
console.log(`No comments on issue ${hydrated.number}. Closing.`);
|
||||
(0, utils_1.safeLog)(`No comments on issue ${hydrated.number}. Closing.`);
|
||||
}
|
||||
}
|
||||
if (this.closeComment) {
|
||||
console.log(`Posting comment on issue ${hydrated.number}`);
|
||||
(0, utils_1.safeLog)(`Posting comment on issue ${hydrated.number}`);
|
||||
await issue.postComment(this.closeComment);
|
||||
}
|
||||
if (removeLabelsSet.length > 0) {
|
||||
for (const removeLabel of removeLabelsSet) {
|
||||
if (removeLabel && removeLabel.length > 0) {
|
||||
console.log(`Removing label on issue ${hydrated.number}: ${removeLabel}`);
|
||||
(0, utils_1.safeLog)(`Removing label on issue ${hydrated.number}: ${removeLabel}`);
|
||||
await issue.removeLabel(removeLabel);
|
||||
}
|
||||
}
|
||||
@@ -66,22 +66,22 @@ class StaleCloser extends ActionBase_1.ActionBase {
|
||||
if (addLabelsSet.length > 0) {
|
||||
for (const addLabel of addLabelsSet) {
|
||||
if (addLabel && addLabel.length > 0) {
|
||||
console.log(`Adding label on issue ${hydrated.number}: ${addLabel}`);
|
||||
(0, utils_1.safeLog)(`Adding label on issue ${hydrated.number}: ${addLabel}`);
|
||||
await issue.addLabel(addLabel);
|
||||
}
|
||||
}
|
||||
}
|
||||
await issue.closeIssue();
|
||||
await issue.closeIssue("not_planned");
|
||||
if (this.setMilestoneId != undefined) {
|
||||
console.log(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`);
|
||||
(0, utils_1.safeLog)(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`);
|
||||
await issue.setMilestone(+this.setMilestoneId);
|
||||
}
|
||||
console.log(`Closing issue ${hydrated.number}.`);
|
||||
(0, utils_1.safeLog)(`Closing issue ${hydrated.number}.`);
|
||||
}
|
||||
else {
|
||||
// Ping
|
||||
if (hydrated.updatedAt < pingTimestamp && hydrated.assignee) {
|
||||
console.log(`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Pinging @${hydrated.assignee}`);
|
||||
(0, utils_1.safeLog)(`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Pinging @${hydrated.assignee}`);
|
||||
if (this.pingComment) {
|
||||
await issue.postComment(this.pingComment
|
||||
.replace('${assignee}', hydrated.assignee)
|
||||
@@ -89,13 +89,13 @@ class StaleCloser extends ActionBase_1.ActionBase {
|
||||
}
|
||||
}
|
||||
else {
|
||||
console.log(`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Skipping.${hydrated.assignee ? ' cc @' + hydrated.assignee : ''}`);
|
||||
(0, utils_1.safeLog)(`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Skipping.${hydrated.assignee ? ' cc @' + hydrated.assignee : ''}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (!hydrated.open) {
|
||||
console.log(`Issue ${hydrated.number} is not open. Ignoring`);
|
||||
(0, utils_1.safeLog)(`Issue ${hydrated.number} is not open. Ignoring`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { GitHub } from '../api/api'
|
||||
import { ActionBase } from '../common/ActionBase'
|
||||
import { daysAgoToHumanReadbleDate, daysAgoToTimestamp } from '../common/utils'
|
||||
import { GitHub } from '../api/api';
|
||||
import { ActionBase } from '../common/ActionBase';
|
||||
import { daysAgoToHumanReadbleDate, daysAgoToTimestamp, safeLog } from '../common/utils';
|
||||
|
||||
export class StaleCloser extends ActionBase {
|
||||
constructor(
|
||||
@@ -33,7 +33,7 @@ export class StaleCloser extends ActionBase {
|
||||
}
|
||||
|
||||
async run() {
|
||||
const updatedTimestamp = daysAgoToHumanReadbleDate(this.closeDays)
|
||||
const updatedTimestamp = daysAgoToHumanReadbleDate(this.closeDays);
|
||||
const pingTimestamp = this.pingDays ? daysAgoToTimestamp(this.pingDays) : undefined;
|
||||
|
||||
const query = this.buildQuery((this.closeDays ? `updated:<${updatedTimestamp} ` : "") + "is:open is:unlocked");
|
||||
@@ -43,12 +43,12 @@ export class StaleCloser extends ActionBase {
|
||||
|
||||
for await (const page of this.github.query({ q: query })) {
|
||||
for (const issue of page) {
|
||||
const hydrated = await issue.getIssue()
|
||||
const lastCommentIterator = await issue.getComments(true).next()
|
||||
const hydrated = await issue.getIssue();
|
||||
const lastCommentIterator = await issue.getComments(true).next();
|
||||
if (lastCommentIterator.done) {
|
||||
throw Error('Unexpected comment data')
|
||||
throw Error('Unexpected comment data');
|
||||
}
|
||||
const lastComment = lastCommentIterator.value[0]
|
||||
const lastComment = lastCommentIterator.value[0];
|
||||
|
||||
if (hydrated.open && this.validateIssue(hydrated)
|
||||
// TODO: Verify updated timestamp
|
||||
@@ -63,63 +63,63 @@ export class StaleCloser extends ActionBase {
|
||||
) {
|
||||
if (pingTimestamp != undefined) {
|
||||
if (lastComment) {
|
||||
console.log(
|
||||
safeLog(
|
||||
`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Closing.`,
|
||||
)
|
||||
);
|
||||
} else {
|
||||
console.log(`No comments on issue ${hydrated.number}. Closing.`)
|
||||
safeLog(`No comments on issue ${hydrated.number}. Closing.`);
|
||||
}
|
||||
}
|
||||
if (this.closeComment) {
|
||||
console.log(`Posting comment on issue ${hydrated.number}`)
|
||||
await issue.postComment(this.closeComment)
|
||||
safeLog(`Posting comment on issue ${hydrated.number}`);
|
||||
await issue.postComment(this.closeComment);
|
||||
}
|
||||
if (removeLabelsSet.length > 0) {
|
||||
for (const removeLabel of removeLabelsSet) {
|
||||
if (removeLabel && removeLabel.length > 0) {
|
||||
console.log(`Removing label on issue ${hydrated.number}: ${removeLabel}`)
|
||||
await issue.removeLabel(removeLabel)
|
||||
safeLog(`Removing label on issue ${hydrated.number}: ${removeLabel}`);
|
||||
await issue.removeLabel(removeLabel);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (addLabelsSet.length > 0) {
|
||||
for (const addLabel of addLabelsSet) {
|
||||
if (addLabel && addLabel.length > 0) {
|
||||
console.log(`Adding label on issue ${hydrated.number}: ${addLabel}`)
|
||||
await issue.addLabel(addLabel)
|
||||
safeLog(`Adding label on issue ${hydrated.number}: ${addLabel}`);
|
||||
await issue.addLabel(addLabel);
|
||||
}
|
||||
}
|
||||
}
|
||||
await issue.closeIssue()
|
||||
await issue.closeIssue("not_planned");
|
||||
if (this.setMilestoneId != undefined) {
|
||||
console.log(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`)
|
||||
await issue.setMilestone(+this.setMilestoneId)
|
||||
safeLog(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`);
|
||||
await issue.setMilestone(+this.setMilestoneId);
|
||||
}
|
||||
console.log(`Closing issue ${hydrated.number}.`)
|
||||
safeLog(`Closing issue ${hydrated.number}.`);
|
||||
} else {
|
||||
// Ping
|
||||
if (hydrated.updatedAt < pingTimestamp && hydrated.assignee) {
|
||||
console.log(
|
||||
safeLog(
|
||||
`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Pinging @${hydrated.assignee}`,
|
||||
)
|
||||
);
|
||||
if (this.pingComment) {
|
||||
await issue.postComment(
|
||||
this.pingComment
|
||||
.replace('${assignee}', hydrated.assignee)
|
||||
.replace('${author}', hydrated.author.name),
|
||||
)
|
||||
);
|
||||
}
|
||||
} else {
|
||||
console.log(
|
||||
safeLog(
|
||||
`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Skipping.${
|
||||
hydrated.assignee ? ' cc @' + hydrated.assignee : ''
|
||||
}`,
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (!hydrated.open) {
|
||||
console.log(`Issue ${hydrated.number} is not open. Ignoring`)
|
||||
safeLog(`Issue ${hydrated.number} is not open. Ignoring`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ class StaleCloserAction extends Action_1.Action {
|
||||
}
|
||||
async onTriggered(github) {
|
||||
var _a;
|
||||
await new StaleCloser_1.StaleCloser(github, +utils_1.getRequiredInput('closeDays'), utils_1.getRequiredInput('labels'), utils_1.getInput('closeComment') || '', +(utils_1.getInput('pingDays') || 0), utils_1.getInput('pingComment') || '', ((_a = utils_1.getInput('additionalTeam')) !== null && _a !== void 0 ? _a : '').split(','), utils_1.getInput('addLabels') || undefined, utils_1.getInput('removeLabels') || undefined, utils_1.getInput('setMilestoneId') || undefined, utils_1.getInput('milestoneName') || undefined, utils_1.getInput('milestoneId') || undefined, utils_1.getInput('ignoreLabels') || undefined, utils_1.getInput('ignoreMilestoneNames') || undefined, utils_1.getInput('ignoreMilestoneIds') || undefined, +(utils_1.getInput('minimumVotes') || 0), +(utils_1.getInput('maximumVotes') || 9999999), utils_1.getInput('involves') || undefined).run();
|
||||
await new StaleCloser_1.StaleCloser(github, +(0, utils_1.getRequiredInput)('closeDays'), (0, utils_1.getRequiredInput)('labels'), (0, utils_1.getInput)('closeComment') || '', +((0, utils_1.getInput)('pingDays') || 0), (0, utils_1.getInput)('pingComment') || '', ((_a = (0, utils_1.getInput)('additionalTeam')) !== null && _a !== void 0 ? _a : '').split(','), (0, utils_1.getInput)('addLabels') || undefined, (0, utils_1.getInput)('removeLabels') || undefined, (0, utils_1.getInput)('setMilestoneId') || undefined, (0, utils_1.getInput)('milestoneName') || undefined, (0, utils_1.getInput)('milestoneId') || undefined, (0, utils_1.getInput)('ignoreLabels') || undefined, (0, utils_1.getInput)('ignoreMilestoneNames') || undefined, (0, utils_1.getInput)('ignoreMilestoneIds') || undefined, +((0, utils_1.getInput)('minimumVotes') || 0), +((0, utils_1.getInput)('maximumVotes') || 9999999), (0, utils_1.getInput)('involves') || undefined).run();
|
||||
}
|
||||
}
|
||||
new StaleCloserAction().run(); // eslint-disable-line
|
||||
|
||||
@@ -9,7 +9,7 @@ import { StaleCloser } from './StaleCloser'
|
||||
import { Action } from '../common/Action'
|
||||
|
||||
class StaleCloserAction extends Action {
|
||||
id = 'StaleCloser'
|
||||
id = 'StaleCloser';
|
||||
|
||||
async onTriggered(github: OctoKit) {
|
||||
await new StaleCloser(
|
||||
@@ -31,8 +31,8 @@ class StaleCloserAction extends Action {
|
||||
+(getInput('minimumVotes') || 0),
|
||||
+(getInput('maximumVotes') || 9999999),
|
||||
getInput('involves') || undefined
|
||||
).run()
|
||||
).run();
|
||||
}
|
||||
}
|
||||
|
||||
new StaleCloserAction().run() // eslint-disable-line
|
||||
new StaleCloserAction().run(); // eslint-disable-line
|
||||
|
||||
+79
-56
@@ -4,43 +4,53 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
export interface GitHub {
|
||||
query(query: Query): AsyncIterableIterator<GitHubIssue[]>
|
||||
repoOwner: string;
|
||||
repoName: string;
|
||||
|
||||
hasWriteAccess(user: User): Promise<boolean>
|
||||
query(query: Query): AsyncIterableIterator<GitHubIssue[]>;
|
||||
|
||||
repoHasLabel(label: string): Promise<boolean>
|
||||
createLabel(label: string, color: string, description: string): Promise<void>
|
||||
deleteLabel(label: string): Promise<void>
|
||||
hasWriteAccess(user: User): Promise<boolean>;
|
||||
|
||||
readConfig(path: string): Promise<any>
|
||||
repoHasLabel(label: string): Promise<boolean>;
|
||||
createLabel(label: string, color: string, description: string): Promise<void>;
|
||||
deleteLabel(label: string): Promise<void>;
|
||||
|
||||
dispatch(title: string): Promise<void>
|
||||
readConfig(path: string): Promise<any>;
|
||||
|
||||
createIssue(owner: string, repo: string, title: string, body: string): Promise<void>
|
||||
dispatch(title: string): Promise<void>;
|
||||
|
||||
releaseContainsCommit(release: string, commit: string): Promise<'yes' | 'no' | 'unknown'>
|
||||
createIssue(owner: string, repo: string, title: string, body: string): Promise<void>;
|
||||
|
||||
releaseContainsCommit(release: string, commit: string): Promise<'yes' | 'no' | 'unknown'>;
|
||||
|
||||
/**
|
||||
* Returns what we think the current milestone for the repo is based on the due on date.
|
||||
* @returns The milestone id if one is found, else undefined
|
||||
*/
|
||||
getCurrentRepoMilestone(): Promise<number | undefined>;
|
||||
}
|
||||
|
||||
export interface GitHubIssue extends GitHub {
|
||||
getIssue(): Promise<Issue>
|
||||
getIssue(): Promise<Issue>;
|
||||
|
||||
postComment(body: string): Promise<void>
|
||||
deleteComment(id: number): Promise<void>
|
||||
getComments(last?: boolean): AsyncIterableIterator<Comment[]>
|
||||
postComment(body: string): Promise<void>;
|
||||
deleteComment(id: number): Promise<void>;
|
||||
getComments(last?: boolean): AsyncIterableIterator<Comment[]>;
|
||||
|
||||
closeIssue(): Promise<void>
|
||||
lockIssue(): Promise<void>
|
||||
reopenIssue(): Promise<void>
|
||||
closeIssue(reason: 'completed' | 'not_planned'): Promise<void>;
|
||||
lockIssue(): Promise<void>;
|
||||
unlockIssue(): Promise<void>;
|
||||
reopenIssue(): Promise<void>;
|
||||
|
||||
setMilestone(milestoneId: number): Promise<void>
|
||||
setMilestone(milestoneId: number): Promise<void>;
|
||||
|
||||
addLabel(label: string): Promise<void>
|
||||
removeLabel(label: string): Promise<void>
|
||||
addLabel(label: string): Promise<void>;
|
||||
removeLabel(label: string): Promise<void>;
|
||||
|
||||
addAssignee(assignee: string): Promise<void>
|
||||
removeAssignee(assignee: string): Promise<void>
|
||||
addAssignee(assignee: string): Promise<void>;
|
||||
removeAssignee(assignee: string): Promise<void>;
|
||||
|
||||
getClosingInfo(): Promise<{ hash: string | undefined; timestamp: number } | undefined>
|
||||
getClosingInfo(): Promise<{ hash: string | undefined; timestamp: number } | undefined>;
|
||||
}
|
||||
|
||||
type SortVar =
|
||||
@@ -54,47 +64,60 @@ type SortVar =
|
||||
| 'reactions-tada'
|
||||
| 'interactions'
|
||||
| 'created'
|
||||
| 'updated'
|
||||
type SortOrder = 'asc' | 'desc'
|
||||
| 'updated';
|
||||
type SortOrder = 'asc' | 'desc';
|
||||
export type Reactions = {
|
||||
'+1': number
|
||||
'-1': number
|
||||
laugh: number
|
||||
hooray: number
|
||||
confused: number
|
||||
heart: number
|
||||
rocket: number
|
||||
eyes: number
|
||||
}
|
||||
'+1': number;
|
||||
'-1': number;
|
||||
laugh: number;
|
||||
hooray: number;
|
||||
confused: number;
|
||||
heart: number;
|
||||
rocket: number;
|
||||
eyes: number;
|
||||
};
|
||||
|
||||
export interface User {
|
||||
name: string
|
||||
isGitHubApp?: boolean
|
||||
name: string;
|
||||
isGitHubApp?: boolean;
|
||||
}
|
||||
export interface Comment {
|
||||
author: User
|
||||
body: string
|
||||
id: number
|
||||
timestamp: number
|
||||
author: User;
|
||||
body: string;
|
||||
id: number;
|
||||
timestamp: number;
|
||||
}
|
||||
export interface Issue {
|
||||
author: User
|
||||
body: string
|
||||
title: string
|
||||
labels: string[]
|
||||
open: boolean
|
||||
locked: boolean
|
||||
number: number
|
||||
numComments: number
|
||||
reactions: Reactions
|
||||
milestoneId: number | null
|
||||
assignee?: string
|
||||
createdAt: number
|
||||
updatedAt: number
|
||||
closedAt?: number
|
||||
author: User;
|
||||
body: string;
|
||||
title: string;
|
||||
labels: string[];
|
||||
open: boolean;
|
||||
locked: boolean;
|
||||
number: number;
|
||||
isPr: boolean;
|
||||
numComments: number;
|
||||
reactions: Reactions;
|
||||
milestone: Milestone | null;
|
||||
assignee?: string;
|
||||
assignees: string[];
|
||||
createdAt: number;
|
||||
updatedAt: number;
|
||||
closedAt?: number;
|
||||
}
|
||||
export interface Milestone {
|
||||
milestoneId: number;
|
||||
title: string;
|
||||
description: string;
|
||||
numClosedIssues: number;
|
||||
numOpenIssues: number;
|
||||
dueOn: Date | null;
|
||||
createdAt: Date | null;
|
||||
closedAt: Date | null;
|
||||
state: 'open' | 'closed';
|
||||
}
|
||||
export interface Query {
|
||||
q: string
|
||||
sort?: SortVar
|
||||
order?: SortOrder
|
||||
q: string;
|
||||
sort?: SortVar;
|
||||
order?: SortOrder;
|
||||
}
|
||||
|
||||
+169
-90
@@ -5,11 +5,12 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.OctoKitIssue = exports.OctoKit = exports.getNumRequests = void 0;
|
||||
const core_1 = require("@actions/core");
|
||||
const github_1 = require("@actions/github");
|
||||
const child_process_1 = require("child_process");
|
||||
const utils_1 = require("../common/utils");
|
||||
let numRequests = 0;
|
||||
exports.getNumRequests = () => numRequests;
|
||||
const getNumRequests = () => numRequests;
|
||||
exports.getNumRequests = getNumRequests;
|
||||
class OctoKit {
|
||||
constructor(token, params, options = { readonly: false }) {
|
||||
this.token = token;
|
||||
@@ -18,73 +19,97 @@ class OctoKit {
|
||||
// when in readonly mode, record labels just-created so at to not throw unneccesary errors
|
||||
this.mockLabels = new Set();
|
||||
this.writeAccessCache = {};
|
||||
this._octokit = new github_1.GitHub(token);
|
||||
this._octokit = (0, github_1.getOctokit)(token);
|
||||
this.repoName = params.repo;
|
||||
this.repoOwner = params.owner;
|
||||
}
|
||||
get octokit() {
|
||||
numRequests++;
|
||||
return this._octokit;
|
||||
}
|
||||
getIssueByNumber(number) {
|
||||
return new OctoKitIssue(this.token, this.params, { number: number });
|
||||
}
|
||||
// TODO: just iterate over the issues in a page here instead of making caller do it
|
||||
async *query(query) {
|
||||
const q = query.q + ` repo:${this.params.owner}/${this.params.repo}`;
|
||||
console.log(`Querying for ${q}:`);
|
||||
const options = this.octokit.search.issuesAndPullRequests.endpoint.merge({
|
||||
const options = {
|
||||
...query,
|
||||
q,
|
||||
per_page: 100,
|
||||
headers: { Accept: 'application/vnd.github.squirrel-girl-preview+json' },
|
||||
});
|
||||
};
|
||||
let pageNum = 0;
|
||||
const timeout = async () => {
|
||||
if (pageNum < 2) {
|
||||
/* pass */
|
||||
}
|
||||
else if (pageNum < 4) {
|
||||
await new Promise((resolve) => setTimeout(resolve, 3000));
|
||||
await new Promise((resolve) => setTimeout(resolve, 10000));
|
||||
}
|
||||
else {
|
||||
await new Promise((resolve) => setTimeout(resolve, 30000));
|
||||
}
|
||||
};
|
||||
for await (const pageResponse of this.octokit.paginate.iterator(options)) {
|
||||
for await (const pageResponse of this.octokit.paginate.iterator(this.octokit.rest.search.issuesAndPullRequests, options)) {
|
||||
await timeout();
|
||||
numRequests++;
|
||||
const page = pageResponse.data;
|
||||
console.log(`Page ${++pageNum}: ${page.map(({ number }) => number).join(' ')}`);
|
||||
(0, utils_1.safeLog)(`Page ${++pageNum}: ${page.map(({ number }) => number).join(' ')}`);
|
||||
yield page.map((issue) => new OctoKitIssue(this.token, this.params, this.octokitIssueToIssue(issue), this.options));
|
||||
}
|
||||
}
|
||||
async createIssue(owner, repo, title, body) {
|
||||
core_1.debug(`Creating issue \`${title}\` on ${owner}/${repo}`);
|
||||
(0, utils_1.safeLog)(`Creating issue \`${title}\` on ${owner}/${repo}`);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.create({ owner, repo, title, body });
|
||||
await this.octokit.rest.issues.create({ owner, repo, title, body });
|
||||
}
|
||||
octokitIssueToIssue(issue) {
|
||||
var _a, _b, _c, _d, _e, _f;
|
||||
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
||||
return {
|
||||
author: { name: issue.user.login, isGitHubApp: issue.user.type === 'Bot' },
|
||||
body: issue.body,
|
||||
author: { name: (_b = (_a = issue.user) === null || _a === void 0 ? void 0 : _a.login) !== null && _b !== void 0 ? _b : 'unkown', isGitHubApp: ((_c = issue.user) === null || _c === void 0 ? void 0 : _c.type) === 'Bot' },
|
||||
body: (_d = issue.body) !== null && _d !== void 0 ? _d : '',
|
||||
number: issue.number,
|
||||
title: issue.title,
|
||||
labels: issue.labels.map((label) => label.name),
|
||||
isPr: !!((_e = issue.pull_request) === null || _e === void 0 ? void 0 : _e.html_url),
|
||||
labels: issue.labels.map((label) => { var _a; return (typeof label === 'string' ? label : (_a = label.name) !== null && _a !== void 0 ? _a : ''); }),
|
||||
open: issue.state === 'open',
|
||||
locked: issue.locked,
|
||||
numComments: issue.comments,
|
||||
reactions: issue.reactions,
|
||||
assignee: (_b = (_a = issue.assignee) === null || _a === void 0 ? void 0 : _a.login) !== null && _b !== void 0 ? _b : (_d = (_c = issue.assignees) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.login,
|
||||
milestoneId: (_f = (_e = issue.milestone) === null || _e === void 0 ? void 0 : _e.number) !== null && _f !== void 0 ? _f : null,
|
||||
assignee: (_g = (_f = issue.assignee) === null || _f === void 0 ? void 0 : _f.login) !== null && _g !== void 0 ? _g : (_j = (_h = issue.assignees) === null || _h === void 0 ? void 0 : _h[0]) === null || _j === void 0 ? void 0 : _j.login,
|
||||
assignees: (_l = (_k = issue.assignees) === null || _k === void 0 ? void 0 : _k.map((assignee) => assignee.login)) !== null && _l !== void 0 ? _l : [],
|
||||
milestone: issue.milestone ? this.octokitMilestoneToMilestone(issue.milestone) : null,
|
||||
createdAt: +new Date(issue.created_at),
|
||||
updatedAt: +new Date(issue.updated_at),
|
||||
closedAt: issue.closed_at ? +new Date(issue.closed_at) : undefined,
|
||||
};
|
||||
}
|
||||
octokitMilestoneToMilestone(milestone) {
|
||||
var _a;
|
||||
if ((milestone === null || milestone === void 0 ? void 0 : milestone.number) === undefined) {
|
||||
return null;
|
||||
}
|
||||
return {
|
||||
title: milestone.title,
|
||||
milestoneId: milestone.number,
|
||||
// Remove the time portions of the dates as they're not important
|
||||
createdAt: milestone.created_at !== null ? new Date(milestone.created_at.split('T')[0]) : null,
|
||||
dueOn: milestone.due_on !== null ? new Date(milestone.due_on.split('T')[0]) : null,
|
||||
closedAt: milestone.closed_at !== null ? new Date(milestone.closed_at.split('T')[0]) : null,
|
||||
description: (_a = milestone.description) !== null && _a !== void 0 ? _a : '',
|
||||
numClosedIssues: milestone.closed_issues,
|
||||
numOpenIssues: milestone.open_issues,
|
||||
state: milestone.state === 'open' ? 'open' : 'closed',
|
||||
};
|
||||
}
|
||||
async hasWriteAccess(user) {
|
||||
if (user.name in this.writeAccessCache) {
|
||||
core_1.debug('Got permissions from cache for ' + user);
|
||||
(0, utils_1.safeLog)('Got permissions from cache for ' + user);
|
||||
return this.writeAccessCache[user.name];
|
||||
}
|
||||
core_1.debug('Fetching permissions for ' + user);
|
||||
const permissions = (await this.octokit.repos.getCollaboratorPermissionLevel({
|
||||
(0, utils_1.safeLog)('Fetching permissions for ' + user.name);
|
||||
const permissions = (await this.octokit.rest.repos.getCollaboratorPermissionLevel({
|
||||
...this.params,
|
||||
username: user.name,
|
||||
})).data.permission;
|
||||
@@ -92,42 +117,44 @@ class OctoKit {
|
||||
}
|
||||
async repoHasLabel(name) {
|
||||
try {
|
||||
await this.octokit.issues.getLabel({ ...this.params, name });
|
||||
await this.octokit.rest.issues.getLabel({ ...this.params, name });
|
||||
return true;
|
||||
}
|
||||
catch (err) {
|
||||
if (err.status === 404) {
|
||||
const statusErorr = err;
|
||||
if (statusErorr.status === 404) {
|
||||
return this.options.readonly && this.mockLabels.has(name);
|
||||
}
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
async createLabel(name, color, description) {
|
||||
core_1.debug('Creating label ' + name);
|
||||
(0, utils_1.safeLog)('Creating label ' + name);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.createLabel({ ...this.params, color, description, name });
|
||||
await this.octokit.rest.issues.createLabel({ ...this.params, color, description, name });
|
||||
else
|
||||
this.mockLabels.add(name);
|
||||
}
|
||||
async deleteLabel(name) {
|
||||
core_1.debug('Deleting label ' + name);
|
||||
(0, utils_1.safeLog)('Deleting label ' + name);
|
||||
try {
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.deleteLabel({ ...this.params, name });
|
||||
await this.octokit.rest.issues.deleteLabel({ ...this.params, name });
|
||||
}
|
||||
catch (err) {
|
||||
if (err.status === 404) {
|
||||
const statusErorr = err;
|
||||
if (statusErorr.status === 404) {
|
||||
return;
|
||||
}
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
async readConfig(path) {
|
||||
core_1.debug('Reading config at ' + path);
|
||||
(0, utils_1.safeLog)('Reading config at ' + path);
|
||||
const repoPath = `.github/${path}.json`;
|
||||
try {
|
||||
const data = (await this.octokit.repos.getContents({ ...this.params, path: repoPath })).data;
|
||||
if ('type' in data && data.type === 'file') {
|
||||
const data = (await this.octokit.rest.repos.getContent({ ...this.params, path: repoPath })).data;
|
||||
if ('type' in data && data.type === 'file' && 'content' in data) {
|
||||
if (data.encoding === 'base64' && data.content) {
|
||||
return JSON.parse(Buffer.from(data.content, 'base64').toString('utf-8'));
|
||||
}
|
||||
@@ -140,7 +167,10 @@ class OctoKit {
|
||||
}
|
||||
}
|
||||
async releaseContainsCommit(release, commit) {
|
||||
return new Promise((resolve, reject) => child_process_1.exec(`git -C ./repo merge-base --is-ancestor ${commit} ${release}`, (err) => {
|
||||
const isHash = (s) => /^[a-fA-F0-9]*$/.test(s);
|
||||
if (!isHash(release) || !isHash(commit))
|
||||
return 'unknown';
|
||||
return new Promise((resolve, reject) => (0, child_process_1.exec)(`git -C ./repo merge-base --is-ancestor ${commit} ${release}`, (err) => {
|
||||
if (!err || err.code === 1) {
|
||||
resolve(!err ? 'yes' : 'no');
|
||||
}
|
||||
@@ -157,10 +187,31 @@ class OctoKit {
|
||||
}
|
||||
}));
|
||||
}
|
||||
async getCurrentRepoMilestone() {
|
||||
(0, utils_1.safeLog)(`Getting repo milestone for ${this.params.owner}/${this.params.repo}`);
|
||||
// Fetch all milestones open for this repo
|
||||
const allMilestones = (await this.octokit.rest.issues.listMilestones({
|
||||
owner: this.params.owner,
|
||||
repo: this.params.repo,
|
||||
state: 'open',
|
||||
sort: 'due_on',
|
||||
direction: 'asc',
|
||||
})).data;
|
||||
const currentDate = new Date();
|
||||
const possibleMilestones = allMilestones
|
||||
.filter((milestone) => new Date(milestone.due_on === null ? currentDate : milestone.due_on) > currentDate &&
|
||||
currentDate > new Date(milestone.created_at) &&
|
||||
!milestone.title.includes('Recovery'))
|
||||
.sort((a, b) => { var _a, _b; return +new Date((_a = a.due_on) !== null && _a !== void 0 ? _a : currentDate) - +new Date((_b = b.due_on) !== null && _b !== void 0 ? _b : currentDate); });
|
||||
if (possibleMilestones.length === 0) {
|
||||
return undefined;
|
||||
}
|
||||
return possibleMilestones[0].number;
|
||||
}
|
||||
async dispatch(title) {
|
||||
core_1.debug('Dispatching ' + title);
|
||||
(0, utils_1.safeLog)('Dispatching ' + title);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.repos.createDispatchEvent({ ...this.params, event_type: title });
|
||||
await this.octokit.rest.repos.createDispatchEvent({ ...this.params, event_type: title });
|
||||
}
|
||||
}
|
||||
exports.OctoKit = OctoKit;
|
||||
@@ -169,12 +220,12 @@ class OctoKitIssue extends OctoKit {
|
||||
super(token, params, options);
|
||||
this.params = params;
|
||||
this.issueData = issueData;
|
||||
console.log('running bot on issue', issueData.number);
|
||||
(0, utils_1.safeLog)('running bot on issue', issueData.number);
|
||||
}
|
||||
async addAssignee(assignee) {
|
||||
core_1.debug('Adding assignee ' + assignee + ' to ' + this.issueData.number);
|
||||
(0, utils_1.safeLog)('Adding assignee ' + assignee + ' to ' + this.issueData.number);
|
||||
if (!this.options.readonly) {
|
||||
await this.octokit.issues.addAssignees({
|
||||
await this.octokit.rest.issues.addAssignees({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
assignees: [assignee],
|
||||
@@ -182,45 +233,64 @@ class OctoKitIssue extends OctoKit {
|
||||
}
|
||||
}
|
||||
async removeAssignee(assignee) {
|
||||
core_1.debug('Removing assignee ' + assignee + ' to ' + this.issueData.number);
|
||||
(0, utils_1.safeLog)('Removing assignee ' + assignee + ' to ' + this.issueData.number);
|
||||
if (!this.options.readonly) {
|
||||
await this.octokit.issues.removeAssignees({
|
||||
await this.octokit.rest.issues.removeAssignees({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
assignees: [assignee],
|
||||
});
|
||||
}
|
||||
}
|
||||
async closeIssue() {
|
||||
core_1.debug('Closing issue ' + this.issueData.number);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.update({
|
||||
async closeIssue(reason) {
|
||||
(0, utils_1.safeLog)('Closing issue ' + this.issueData.number);
|
||||
if (!this.options.readonly) {
|
||||
const issue = await this.octokit.rest.issues.get({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
});
|
||||
// Don't close already closed issues even if it means changing the state
|
||||
if (issue.data.state === 'closed') {
|
||||
return;
|
||||
}
|
||||
await this.octokit.rest.issues
|
||||
.update({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
state: 'closed',
|
||||
state_reason: reason,
|
||||
})
|
||||
.catch((e) => {
|
||||
(0, utils_1.safeLog)('error closing issue:', e);
|
||||
});
|
||||
}
|
||||
}
|
||||
async reopenIssue() {
|
||||
core_1.debug('Reopening issue ' + this.issueData.number);
|
||||
(0, utils_1.safeLog)('Reopening issue ' + this.issueData.number);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.update({
|
||||
await this.octokit.rest.issues.update({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
state: 'open',
|
||||
});
|
||||
}
|
||||
async lockIssue() {
|
||||
core_1.debug('Locking issue ' + this.issueData.number);
|
||||
(0, utils_1.safeLog)('Locking issue ' + this.issueData.number);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.lock({ ...this.params, issue_number: this.issueData.number });
|
||||
await this.octokit.rest.issues.lock({ ...this.params, issue_number: this.issueData.number });
|
||||
}
|
||||
async unlockIssue() {
|
||||
(0, utils_1.safeLog)('Unlocking issue ' + this.issueData.number);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.rest.issues.unlock({ ...this.params, issue_number: this.issueData.number });
|
||||
}
|
||||
async getIssue() {
|
||||
if (isIssue(this.issueData)) {
|
||||
core_1.debug('Got issue data from query result ' + this.issueData.number);
|
||||
(0, utils_1.safeLog)('Got issue data from query result ' + this.issueData.number);
|
||||
return this.issueData;
|
||||
}
|
||||
console.log('Fetching issue ' + this.issueData.number);
|
||||
const issue = (await this.octokit.issues.get({
|
||||
(0, utils_1.safeLog)('Fetching issue ' + this.issueData.number);
|
||||
const issue = (await this.octokit.rest.issues.get({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
mediaType: { previews: ['squirrel-girl'] },
|
||||
@@ -228,77 +298,83 @@ class OctoKitIssue extends OctoKit {
|
||||
return (this.issueData = this.octokitIssueToIssue(issue));
|
||||
}
|
||||
async postComment(body) {
|
||||
core_1.debug(`Posting comment ${body} on ${this.issueData.number}`);
|
||||
(0, utils_1.safeLog)(`Posting comment on ${this.issueData.number}`);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.createComment({
|
||||
await this.octokit.rest.issues.createComment({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
body,
|
||||
});
|
||||
}
|
||||
async deleteComment(id) {
|
||||
core_1.debug(`Deleting comment ${id} on ${this.issueData.number}`);
|
||||
(0, utils_1.safeLog)(`Deleting comment ${id} on ${this.issueData.number}`);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.deleteComment({
|
||||
await this.octokit.rest.issues.deleteComment({
|
||||
owner: this.params.owner,
|
||||
repo: this.params.repo,
|
||||
comment_id: id,
|
||||
});
|
||||
}
|
||||
async setMilestone(milestoneId) {
|
||||
core_1.debug(`Setting milestone for ${this.issueData.number} to ${milestoneId}`);
|
||||
(0, utils_1.safeLog)(`Setting milestone for ${this.issueData.number} to ${milestoneId}`);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.update({
|
||||
await this.octokit.rest.issues.update({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
milestone: milestoneId,
|
||||
});
|
||||
}
|
||||
async *getComments(last) {
|
||||
core_1.debug('Fetching comments for ' + this.issueData.number);
|
||||
const response = this.octokit.paginate.iterator(this.octokit.issues.listComments.endpoint.merge({
|
||||
(0, utils_1.safeLog)('Fetching comments for ' + this.issueData.number);
|
||||
const response = this.octokit.paginate.iterator(this.octokit.rest.issues.listComments, {
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
per_page: 100,
|
||||
...(last ? { per_page: 1, page: (await this.getIssue()).numComments } : {}),
|
||||
}));
|
||||
});
|
||||
for await (const page of response) {
|
||||
numRequests++;
|
||||
yield page.data.map((comment) => ({
|
||||
author: { name: comment.user.login, isGitHubApp: comment.user.type === 'Bot' },
|
||||
body: comment.body,
|
||||
id: comment.id,
|
||||
timestamp: +new Date(comment.created_at),
|
||||
}));
|
||||
yield page.data.map((comment) => {
|
||||
var _a, _b, _c, _d;
|
||||
return ({
|
||||
author: { name: (_b = (_a = comment.user) === null || _a === void 0 ? void 0 : _a.login) !== null && _b !== void 0 ? _b : '', isGitHubApp: ((_c = comment.user) === null || _c === void 0 ? void 0 : _c.type) === 'Bot' },
|
||||
body: (_d = comment.body) !== null && _d !== void 0 ? _d : '',
|
||||
id: comment.id,
|
||||
timestamp: +new Date(comment.created_at),
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
async addLabel(name) {
|
||||
core_1.debug(`Adding label ${name} to ${this.issueData.number}`);
|
||||
(0, utils_1.safeLog)(`Adding label ${name} to ${this.issueData.number}`);
|
||||
if (!(await this.repoHasLabel(name))) {
|
||||
throw Error(`Action could not execute becuase label ${name} is not defined.`);
|
||||
}
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.addLabels({
|
||||
await this.octokit.rest.issues.addLabels({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
labels: [name],
|
||||
});
|
||||
}
|
||||
async getAssigner(assignee) {
|
||||
const options = this.octokit.issues.listEventsForTimeline.endpoint.merge({
|
||||
var _a, _b;
|
||||
const options = {
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
});
|
||||
};
|
||||
let assigner;
|
||||
for await (const event of this.octokit.paginate.iterator(options)) {
|
||||
for await (const event of this.octokit.paginate.iterator(this.octokit.rest.issues.listEventsForTimeline, options)) {
|
||||
numRequests++;
|
||||
const timelineEvents = event.data;
|
||||
for (const timelineEvent of timelineEvents) {
|
||||
if (timelineEvent.event === 'assigned' &&
|
||||
timelineEvent.assignee.login === assignee) {
|
||||
assigner = timelineEvent.actor.login;
|
||||
if (timelineEvent.event === 'assigned' && ((_a = timelineEvent.assignee) === null || _a === void 0 ? void 0 : _a.login) === assignee) {
|
||||
assigner = (_b = timelineEvent.actor) === null || _b === void 0 ? void 0 : _b.login;
|
||||
}
|
||||
}
|
||||
if (assigner) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!assigner) {
|
||||
throw Error('Expected to find ' + assignee + ' in issue timeline but did not.');
|
||||
@@ -306,25 +382,26 @@ class OctoKitIssue extends OctoKit {
|
||||
return assigner;
|
||||
}
|
||||
async removeLabel(name) {
|
||||
core_1.debug(`Removing label ${name} from ${this.issueData.number}`);
|
||||
(0, utils_1.safeLog)(`Removing label ${name} from ${this.issueData.number}`);
|
||||
try {
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.removeLabel({
|
||||
await this.octokit.rest.issues.removeLabel({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
name,
|
||||
});
|
||||
}
|
||||
catch (err) {
|
||||
if (err.status === 404) {
|
||||
console.log(`Label ${name} not found on issue`);
|
||||
const statusErorr = err;
|
||||
if (statusErorr.status === 404) {
|
||||
(0, utils_1.safeLog)(`Label ${name} not found on issue`);
|
||||
return;
|
||||
}
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
async getClosingInfo(alreadyChecked = []) {
|
||||
var _a, _b, _c, _d, _e, _f, _g;
|
||||
var _a, _b, _c, _d, _e, _f, _g, _h;
|
||||
if (alreadyChecked.includes(this.issueData.number)) {
|
||||
return undefined;
|
||||
}
|
||||
@@ -332,22 +409,21 @@ class OctoKitIssue extends OctoKit {
|
||||
if ((await this.getIssue()).open) {
|
||||
return;
|
||||
}
|
||||
const closingHashComment = /(?:\\|\/)closedWith (\S*)/;
|
||||
const options = this.octokit.issues.listEventsForTimeline.endpoint.merge({
|
||||
const closingHashComment = /(?:\\|\/)closedWith (?:https:\/\/github\.com\/microsoft\/vscode\/commit\/)?([a-fA-F0-9]{7,40})/;
|
||||
const options = {
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
});
|
||||
};
|
||||
let closingCommit;
|
||||
const crossReferencing = [];
|
||||
for await (const event of this.octokit.paginate.iterator(options)) {
|
||||
for await (const event of this.octokit.paginate.iterator(this.octokit.rest.issues.listEventsForTimeline, options)) {
|
||||
numRequests++;
|
||||
const timelineEvents = event.data;
|
||||
for (const timelineEvent of timelineEvents) {
|
||||
if ((timelineEvent.event === 'closed' || timelineEvent.event === 'merged') &&
|
||||
timelineEvent.created_at &&
|
||||
timelineEvent.commit_id &&
|
||||
timelineEvent.commit_url
|
||||
.toLowerCase()
|
||||
.includes(`/${this.params.owner}/${this.params.repo}/`.toLowerCase())) {
|
||||
((_a = timelineEvent.commit_url) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(`/${this.params.owner}/${this.params.repo}/`.toLowerCase()))) {
|
||||
closingCommit = {
|
||||
hash: timelineEvent.commit_id,
|
||||
timestamp: +new Date(timelineEvent.created_at),
|
||||
@@ -356,15 +432,18 @@ class OctoKitIssue extends OctoKit {
|
||||
if (timelineEvent.event === 'reopened') {
|
||||
closingCommit = undefined;
|
||||
}
|
||||
if (timelineEvent.event === 'commented' &&
|
||||
!((_a = timelineEvent.body) === null || _a === void 0 ? void 0 : _a.includes('UNABLE_TO_LOCATE_COMMIT_MESSAGE')) &&
|
||||
if (timelineEvent.created_at &&
|
||||
timelineEvent.event === 'commented' &&
|
||||
!((_b = timelineEvent.body) === null || _b === void 0 ? void 0 : _b.includes('UNABLE_TO_LOCATE_COMMIT_MESSAGE')) &&
|
||||
closingHashComment.test(timelineEvent.body)) {
|
||||
closingCommit = {
|
||||
hash: closingHashComment.exec(timelineEvent.body)[1],
|
||||
timestamp: +new Date(timelineEvent.created_at),
|
||||
};
|
||||
}
|
||||
if (timelineEvent.event === 'cross-referenced' && ((_c = (_b = timelineEvent.source) === null || _b === void 0 ? void 0 : _b.issue) === null || _c === void 0 ? void 0 : _c.number) && ((_f = (_e = (_d = timelineEvent.source) === null || _d === void 0 ? void 0 : _d.issue) === null || _e === void 0 ? void 0 : _e.pull_request) === null || _f === void 0 ? void 0 : _f.url.includes(`/${this.params.owner}/${this.params.repo}/`.toLowerCase()))) {
|
||||
if (timelineEvent.event === 'cross-referenced' &&
|
||||
((_d = (_c = timelineEvent.source) === null || _c === void 0 ? void 0 : _c.issue) === null || _d === void 0 ? void 0 : _d.number) &&
|
||||
((_g = (_f = (_e = timelineEvent.source) === null || _e === void 0 ? void 0 : _e.issue) === null || _f === void 0 ? void 0 : _f.pull_request) === null || _g === void 0 ? void 0 : _g.url.includes(`/${this.params.owner}/${this.params.repo}/`.toLowerCase()))) {
|
||||
crossReferencing.push(timelineEvent.source.issue.number);
|
||||
}
|
||||
}
|
||||
@@ -375,16 +454,16 @@ class OctoKitIssue extends OctoKit {
|
||||
for (const id of crossReferencing.reverse()) {
|
||||
const closed = await new OctoKitIssue(this.token, this.params, {
|
||||
number: id,
|
||||
}, this.options).getClosingInfo(alreadyChecked);
|
||||
}).getClosingInfo(alreadyChecked);
|
||||
if (closed) {
|
||||
if (Math.abs(closed.timestamp - ((_g = (await this.getIssue()).closedAt) !== null && _g !== void 0 ? _g : 0)) < 5000) {
|
||||
if (Math.abs(closed.timestamp - ((_h = (await this.getIssue()).closedAt) !== null && _h !== void 0 ? _h : 0)) < 5000) {
|
||||
closingCommit = closed;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
console.log(`Got ${JSON.stringify(closingCommit)} as closing commit of ${this.issueData.number}`);
|
||||
(0, utils_1.safeLog)(`Got ${JSON.stringify(closingCommit)} as closing commit of ${this.issueData.number}`);
|
||||
return closingCommit;
|
||||
}
|
||||
}
|
||||
|
||||
+260
-171
@@ -3,181 +3,242 @@
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { debug } from '@actions/core'
|
||||
import { GitHub as GitHubAPI } from '@actions/github'
|
||||
import { Octokit } from '@octokit/rest'
|
||||
import { exec } from 'child_process'
|
||||
import { Comment, GitHub, GitHubIssue, Issue, Query, User } from './api'
|
||||
import { getOctokit } from '@actions/github';
|
||||
import type { RequestError } from '@octokit/request-error';
|
||||
import { exec } from 'child_process';
|
||||
import { IssueGetResponse, IssuesGetResponseMilestone } from '../common/OctokitTypings';
|
||||
import { safeLog } from '../common/utils';
|
||||
import { Comment, GitHub, GitHubIssue, Issue, Milestone, Query, User } from './api';
|
||||
|
||||
let numRequests = 0
|
||||
export const getNumRequests = () => numRequests
|
||||
let numRequests = 0;
|
||||
export const getNumRequests = () => numRequests;
|
||||
|
||||
export class OctoKit implements GitHub {
|
||||
private _octokit: GitHubAPI
|
||||
protected get octokit(): GitHubAPI {
|
||||
numRequests++
|
||||
return this._octokit
|
||||
private _octokit: ReturnType<typeof getOctokit>;
|
||||
protected get octokit(): ReturnType<typeof getOctokit> {
|
||||
numRequests++;
|
||||
return this._octokit;
|
||||
}
|
||||
|
||||
// when in readonly mode, record labels just-created so at to not throw unneccesary errors
|
||||
protected mockLabels: Set<string> = new Set()
|
||||
protected mockLabels: Set<string> = new Set();
|
||||
|
||||
public readonly repoName: string;
|
||||
public readonly repoOwner: string;
|
||||
|
||||
constructor(
|
||||
protected token: string,
|
||||
protected params: { repo: string; owner: string },
|
||||
protected options: { readonly: boolean } = { readonly: false },
|
||||
) {
|
||||
this._octokit = new GitHubAPI(token)
|
||||
this._octokit = getOctokit(token);
|
||||
this.repoName = params.repo;
|
||||
this.repoOwner = params.owner;
|
||||
}
|
||||
|
||||
getIssueByNumber(number: number) {
|
||||
return new OctoKitIssue(this.token, this.params, { number: number });
|
||||
}
|
||||
|
||||
// TODO: just iterate over the issues in a page here instead of making caller do it
|
||||
async *query(query: Query): AsyncIterableIterator<GitHubIssue[]> {
|
||||
const q = query.q + ` repo:${this.params.owner}/${this.params.repo}`
|
||||
console.log(`Querying for ${q}:`)
|
||||
const q = query.q + ` repo:${this.params.owner}/${this.params.repo}`;
|
||||
|
||||
const options = this.octokit.search.issuesAndPullRequests.endpoint.merge({
|
||||
const options = {
|
||||
...query,
|
||||
q,
|
||||
per_page: 100,
|
||||
headers: { Accept: 'application/vnd.github.squirrel-girl-preview+json' },
|
||||
})
|
||||
};
|
||||
|
||||
let pageNum = 0
|
||||
let pageNum = 0;
|
||||
|
||||
const timeout = async () => {
|
||||
if (pageNum < 2) {
|
||||
/* pass */
|
||||
} else if (pageNum < 4) {
|
||||
await new Promise((resolve) => setTimeout(resolve, 3000))
|
||||
await new Promise((resolve) => setTimeout(resolve, 10000));
|
||||
} else {
|
||||
await new Promise((resolve) => setTimeout(resolve, 30000))
|
||||
await new Promise((resolve) => setTimeout(resolve, 30000));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
for await (const pageResponse of this.octokit.paginate.iterator(options)) {
|
||||
await timeout()
|
||||
numRequests++
|
||||
const page: Array<Octokit.SearchIssuesAndPullRequestsResponseItemsItem> = pageResponse.data
|
||||
console.log(`Page ${++pageNum}: ${page.map(({ number }) => number).join(' ')}`)
|
||||
for await (const pageResponse of this.octokit.paginate.iterator(
|
||||
this.octokit.rest.search.issuesAndPullRequests,
|
||||
options,
|
||||
)) {
|
||||
await timeout();
|
||||
numRequests++;
|
||||
const page = pageResponse.data;
|
||||
safeLog(`Page ${++pageNum}: ${page.map(({ number }) => number).join(' ')}`);
|
||||
yield page.map(
|
||||
(issue) => new OctoKitIssue(this.token, this.params, this.octokitIssueToIssue(issue), this.options),
|
||||
)
|
||||
(issue) =>
|
||||
new OctoKitIssue(this.token, this.params, this.octokitIssueToIssue(issue), this.options),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
async createIssue(owner: string, repo: string, title: string, body: string): Promise<void> {
|
||||
debug(`Creating issue \`${title}\` on ${owner}/${repo}`)
|
||||
if (!this.options.readonly) await this.octokit.issues.create({ owner, repo, title, body })
|
||||
safeLog(`Creating issue \`${title}\` on ${owner}/${repo}`);
|
||||
if (!this.options.readonly) await this.octokit.rest.issues.create({ owner, repo, title, body });
|
||||
}
|
||||
|
||||
protected octokitIssueToIssue(
|
||||
issue: Octokit.IssuesGetResponse | Octokit.SearchIssuesAndPullRequestsResponseItemsItem,
|
||||
): Issue {
|
||||
protected octokitIssueToIssue(issue: IssueGetResponse): Issue {
|
||||
return {
|
||||
author: { name: issue.user.login, isGitHubApp: issue.user.type === 'Bot' },
|
||||
body: issue.body,
|
||||
author: { name: issue.user?.login ?? 'unkown', isGitHubApp: issue.user?.type === 'Bot' },
|
||||
body: issue.body ?? '',
|
||||
number: issue.number,
|
||||
title: issue.title,
|
||||
labels: (issue.labels as Octokit.IssuesGetLabelResponse[]).map((label) => label.name),
|
||||
isPr: !!issue.pull_request?.html_url,
|
||||
labels: issue.labels.map((label) => (typeof label === 'string' ? label : label.name ?? '')),
|
||||
open: issue.state === 'open',
|
||||
locked: (issue as any).locked,
|
||||
numComments: issue.comments,
|
||||
reactions: (issue as any).reactions,
|
||||
assignee: issue.assignee?.login ?? (issue as any).assignees?.[0]?.login,
|
||||
milestoneId: issue.milestone?.number ?? null,
|
||||
assignee: issue.assignee?.login ?? (issue as IssueGetResponse).assignees?.[0]?.login,
|
||||
assignees: (issue as IssueGetResponse).assignees?.map((assignee) => assignee.login) ?? [],
|
||||
milestone: issue.milestone ? this.octokitMilestoneToMilestone(issue.milestone) : null,
|
||||
createdAt: +new Date(issue.created_at),
|
||||
updatedAt: +new Date(issue.updated_at),
|
||||
closedAt: issue.closed_at ? +new Date((issue.closed_at as unknown) as string) : undefined,
|
||||
}
|
||||
closedAt: issue.closed_at ? +new Date(issue.closed_at as unknown as string) : undefined,
|
||||
};
|
||||
}
|
||||
|
||||
private writeAccessCache: Record<string, boolean> = {}
|
||||
protected octokitMilestoneToMilestone(milestone: IssuesGetResponseMilestone): Milestone | null {
|
||||
if (milestone?.number === undefined) {
|
||||
return null;
|
||||
}
|
||||
return {
|
||||
title: milestone.title,
|
||||
milestoneId: milestone.number,
|
||||
// Remove the time portions of the dates as they're not important
|
||||
createdAt: milestone.created_at !== null ? new Date(milestone.created_at.split('T')[0]) : null,
|
||||
dueOn: milestone.due_on !== null ? new Date(milestone.due_on.split('T')[0]) : null,
|
||||
closedAt: milestone.closed_at !== null ? new Date(milestone.closed_at.split('T')[0]) : null,
|
||||
description: milestone.description ?? '',
|
||||
numClosedIssues: milestone.closed_issues,
|
||||
numOpenIssues: milestone.open_issues,
|
||||
state: milestone.state === 'open' ? 'open' : 'closed',
|
||||
};
|
||||
}
|
||||
|
||||
private writeAccessCache: Record<string, boolean> = {};
|
||||
async hasWriteAccess(user: User): Promise<boolean> {
|
||||
if (user.name in this.writeAccessCache) {
|
||||
debug('Got permissions from cache for ' + user)
|
||||
return this.writeAccessCache[user.name]
|
||||
safeLog('Got permissions from cache for ' + user);
|
||||
return this.writeAccessCache[user.name];
|
||||
}
|
||||
debug('Fetching permissions for ' + user)
|
||||
safeLog('Fetching permissions for ' + user.name);
|
||||
const permissions = (
|
||||
await this.octokit.repos.getCollaboratorPermissionLevel({
|
||||
await this.octokit.rest.repos.getCollaboratorPermissionLevel({
|
||||
...this.params,
|
||||
username: user.name,
|
||||
})
|
||||
).data.permission
|
||||
return (this.writeAccessCache[user.name] = permissions === 'admin' || permissions === 'write')
|
||||
).data.permission;
|
||||
return (this.writeAccessCache[user.name] = permissions === 'admin' || permissions === 'write');
|
||||
}
|
||||
|
||||
async repoHasLabel(name: string): Promise<boolean> {
|
||||
try {
|
||||
await this.octokit.issues.getLabel({ ...this.params, name })
|
||||
return true
|
||||
await this.octokit.rest.issues.getLabel({ ...this.params, name });
|
||||
return true;
|
||||
} catch (err) {
|
||||
if (err.status === 404) {
|
||||
return this.options.readonly && this.mockLabels.has(name)
|
||||
const statusErorr = err as RequestError;
|
||||
if (statusErorr.status === 404) {
|
||||
return this.options.readonly && this.mockLabels.has(name);
|
||||
}
|
||||
throw err
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
async createLabel(name: string, color: string, description: string): Promise<void> {
|
||||
debug('Creating label ' + name)
|
||||
safeLog('Creating label ' + name);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.createLabel({ ...this.params, color, description, name })
|
||||
else this.mockLabels.add(name)
|
||||
await this.octokit.rest.issues.createLabel({ ...this.params, color, description, name });
|
||||
else this.mockLabels.add(name);
|
||||
}
|
||||
|
||||
async deleteLabel(name: string): Promise<void> {
|
||||
debug('Deleting label ' + name)
|
||||
safeLog('Deleting label ' + name);
|
||||
try {
|
||||
if (!this.options.readonly) await this.octokit.issues.deleteLabel({ ...this.params, name })
|
||||
if (!this.options.readonly) await this.octokit.rest.issues.deleteLabel({ ...this.params, name });
|
||||
} catch (err) {
|
||||
if (err.status === 404) {
|
||||
return
|
||||
const statusErorr = err as RequestError;
|
||||
if (statusErorr.status === 404) {
|
||||
return;
|
||||
}
|
||||
throw err
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
async readConfig(path: string): Promise<any> {
|
||||
debug('Reading config at ' + path)
|
||||
const repoPath = `.github/${path}.json`
|
||||
safeLog('Reading config at ' + path);
|
||||
const repoPath = `.github/${path}.json`;
|
||||
try {
|
||||
const data = (await this.octokit.repos.getContents({ ...this.params, path: repoPath })).data
|
||||
|
||||
if ('type' in data && data.type === 'file') {
|
||||
const data = (await this.octokit.rest.repos.getContent({ ...this.params, path: repoPath })).data;
|
||||
if ('type' in data && data.type === 'file' && 'content' in data) {
|
||||
if (data.encoding === 'base64' && data.content) {
|
||||
return JSON.parse(Buffer.from(data.content, 'base64').toString('utf-8'))
|
||||
return JSON.parse(Buffer.from(data.content, 'base64').toString('utf-8'));
|
||||
}
|
||||
throw Error(`Could not read contents "${data.content}" in encoding "${data.encoding}"`)
|
||||
throw Error(`Could not read contents "${data.content}" in encoding "${data.encoding}"`);
|
||||
}
|
||||
throw Error('Found directory at config path when expecting file' + JSON.stringify(data))
|
||||
throw Error('Found directory at config path when expecting file' + JSON.stringify(data));
|
||||
} catch (e) {
|
||||
throw Error('Error with config file at ' + repoPath + ': ' + JSON.stringify(e))
|
||||
throw Error('Error with config file at ' + repoPath + ': ' + JSON.stringify(e));
|
||||
}
|
||||
}
|
||||
|
||||
async releaseContainsCommit(release: string, commit: string): Promise<'yes' | 'no' | 'unknown'> {
|
||||
const isHash = (s: string) => /^[a-fA-F0-9]*$/.test(s);
|
||||
if (!isHash(release) || !isHash(commit)) return 'unknown';
|
||||
return new Promise((resolve, reject) =>
|
||||
exec(`git -C ./repo merge-base --is-ancestor ${commit} ${release}`, (err) => {
|
||||
if (!err || err.code === 1) {
|
||||
resolve(!err ? 'yes' : 'no')
|
||||
resolve(!err ? 'yes' : 'no');
|
||||
} else if (err.message.includes(`Not a valid commit name ${release}`)) {
|
||||
// release branch is forked. Probably in endgame. Not released.
|
||||
resolve('no')
|
||||
resolve('no');
|
||||
} else if (err.message.includes(`Not a valid commit name ${commit}`)) {
|
||||
// commit is probably in a different repo.
|
||||
resolve('unknown')
|
||||
resolve('unknown');
|
||||
} else {
|
||||
reject(err)
|
||||
reject(err);
|
||||
}
|
||||
}),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
async getCurrentRepoMilestone(): Promise<number | undefined> {
|
||||
safeLog(`Getting repo milestone for ${this.params.owner}/${this.params.repo}`);
|
||||
// Fetch all milestones open for this repo
|
||||
const allMilestones = (
|
||||
await this.octokit.rest.issues.listMilestones({
|
||||
owner: this.params.owner,
|
||||
repo: this.params.repo,
|
||||
state: 'open',
|
||||
sort: 'due_on',
|
||||
direction: 'asc',
|
||||
})
|
||||
).data;
|
||||
const currentDate = new Date();
|
||||
const possibleMilestones = allMilestones
|
||||
.filter(
|
||||
(milestone) =>
|
||||
new Date(milestone.due_on === null ? currentDate : milestone.due_on) > currentDate &&
|
||||
currentDate > new Date(milestone.created_at) &&
|
||||
!milestone.title.includes('Recovery'),
|
||||
)
|
||||
.sort((a, b) => +new Date(a.due_on ?? currentDate) - +new Date(b.due_on ?? currentDate));
|
||||
if (possibleMilestones.length === 0) {
|
||||
return undefined;
|
||||
}
|
||||
return possibleMilestones[0].number;
|
||||
}
|
||||
|
||||
async dispatch(title: string): Promise<void> {
|
||||
debug('Dispatching ' + title)
|
||||
safeLog('Dispatching ' + title);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.repos.createDispatchEvent({ ...this.params, event_type: title })
|
||||
await this.octokit.rest.repos.createDispatchEvent({ ...this.params, event_type: title });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,184 +249,206 @@ export class OctoKitIssue extends OctoKit implements GitHubIssue {
|
||||
private issueData: { number: number } | Issue,
|
||||
options: { readonly: boolean } = { readonly: false },
|
||||
) {
|
||||
super(token, params, options)
|
||||
console.log('running bot on issue', issueData.number)
|
||||
super(token, params, options);
|
||||
safeLog('running bot on issue', issueData.number);
|
||||
}
|
||||
|
||||
async addAssignee(assignee: string): Promise<void> {
|
||||
debug('Adding assignee ' + assignee + ' to ' + this.issueData.number)
|
||||
safeLog('Adding assignee ' + assignee + ' to ' + this.issueData.number);
|
||||
if (!this.options.readonly) {
|
||||
await this.octokit.issues.addAssignees({
|
||||
await this.octokit.rest.issues.addAssignees({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
assignees: [assignee],
|
||||
})
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
async removeAssignee(assignee: string): Promise<void> {
|
||||
debug('Removing assignee ' + assignee + ' to ' + this.issueData.number)
|
||||
safeLog('Removing assignee ' + assignee + ' to ' + this.issueData.number);
|
||||
if (!this.options.readonly) {
|
||||
await this.octokit.issues.removeAssignees({
|
||||
await this.octokit.rest.issues.removeAssignees({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
assignees: [assignee],
|
||||
})
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
async closeIssue(): Promise<void> {
|
||||
debug('Closing issue ' + this.issueData.number)
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.update({
|
||||
async closeIssue(reason: 'completed' | 'not_planned'): Promise<void> {
|
||||
safeLog('Closing issue ' + this.issueData.number);
|
||||
if (!this.options.readonly) {
|
||||
const issue = await this.octokit.rest.issues.get({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
state: 'closed',
|
||||
})
|
||||
});
|
||||
// Don't close already closed issues even if it means changing the state
|
||||
if (issue.data.state === 'closed') {
|
||||
return;
|
||||
}
|
||||
await this.octokit.rest.issues
|
||||
.update({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
state: 'closed',
|
||||
state_reason: reason,
|
||||
})
|
||||
.catch((e) => {
|
||||
safeLog('error closing issue:', e);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
async reopenIssue(): Promise<void> {
|
||||
debug('Reopening issue ' + this.issueData.number)
|
||||
safeLog('Reopening issue ' + this.issueData.number);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.update({
|
||||
await this.octokit.rest.issues.update({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
state: 'open',
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
async lockIssue(): Promise<void> {
|
||||
debug('Locking issue ' + this.issueData.number)
|
||||
safeLog('Locking issue ' + this.issueData.number);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.lock({ ...this.params, issue_number: this.issueData.number })
|
||||
await this.octokit.rest.issues.lock({ ...this.params, issue_number: this.issueData.number });
|
||||
}
|
||||
|
||||
async unlockIssue(): Promise<void> {
|
||||
safeLog('Unlocking issue ' + this.issueData.number);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.rest.issues.unlock({ ...this.params, issue_number: this.issueData.number });
|
||||
}
|
||||
|
||||
async getIssue(): Promise<Issue> {
|
||||
if (isIssue(this.issueData)) {
|
||||
debug('Got issue data from query result ' + this.issueData.number)
|
||||
return this.issueData
|
||||
safeLog('Got issue data from query result ' + this.issueData.number);
|
||||
return this.issueData;
|
||||
}
|
||||
|
||||
console.log('Fetching issue ' + this.issueData.number)
|
||||
safeLog('Fetching issue ' + this.issueData.number);
|
||||
const issue = (
|
||||
await this.octokit.issues.get({
|
||||
await this.octokit.rest.issues.get({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
mediaType: { previews: ['squirrel-girl'] },
|
||||
})
|
||||
).data
|
||||
return (this.issueData = this.octokitIssueToIssue(issue))
|
||||
).data;
|
||||
return (this.issueData = this.octokitIssueToIssue(issue));
|
||||
}
|
||||
|
||||
async postComment(body: string): Promise<void> {
|
||||
debug(`Posting comment ${body} on ${this.issueData.number}`)
|
||||
safeLog(`Posting comment on ${this.issueData.number}`);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.createComment({
|
||||
await this.octokit.rest.issues.createComment({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
body,
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
async deleteComment(id: number): Promise<void> {
|
||||
debug(`Deleting comment ${id} on ${this.issueData.number}`)
|
||||
safeLog(`Deleting comment ${id} on ${this.issueData.number}`);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.deleteComment({
|
||||
await this.octokit.rest.issues.deleteComment({
|
||||
owner: this.params.owner,
|
||||
repo: this.params.repo,
|
||||
comment_id: id,
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
async setMilestone(milestoneId: number) {
|
||||
debug(`Setting milestone for ${this.issueData.number} to ${milestoneId}`)
|
||||
safeLog(`Setting milestone for ${this.issueData.number} to ${milestoneId}`);
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.update({
|
||||
await this.octokit.rest.issues.update({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
milestone: milestoneId,
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
async *getComments(last?: boolean): AsyncIterableIterator<Comment[]> {
|
||||
debug('Fetching comments for ' + this.issueData.number)
|
||||
safeLog('Fetching comments for ' + this.issueData.number);
|
||||
|
||||
const response = this.octokit.paginate.iterator(
|
||||
this.octokit.issues.listComments.endpoint.merge({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
per_page: 100,
|
||||
...(last ? { per_page: 1, page: (await this.getIssue()).numComments } : {}),
|
||||
}),
|
||||
)
|
||||
const response = this.octokit.paginate.iterator(this.octokit.rest.issues.listComments, {
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
per_page: 100,
|
||||
...(last ? { per_page: 1, page: (await this.getIssue()).numComments } : {}),
|
||||
});
|
||||
|
||||
for await (const page of response) {
|
||||
numRequests++
|
||||
yield (page.data as Octokit.IssuesListCommentsResponseItem[]).map((comment) => ({
|
||||
author: { name: comment.user.login, isGitHubApp: comment.user.type === 'Bot' },
|
||||
body: comment.body,
|
||||
numRequests++;
|
||||
yield page.data.map((comment) => ({
|
||||
author: { name: comment.user?.login ?? '', isGitHubApp: comment.user?.type === 'Bot' },
|
||||
body: comment.body ?? '',
|
||||
id: comment.id,
|
||||
timestamp: +new Date(comment.created_at),
|
||||
}))
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
async addLabel(name: string): Promise<void> {
|
||||
debug(`Adding label ${name} to ${this.issueData.number}`)
|
||||
safeLog(`Adding label ${name} to ${this.issueData.number}`);
|
||||
if (!(await this.repoHasLabel(name))) {
|
||||
throw Error(`Action could not execute becuase label ${name} is not defined.`)
|
||||
throw Error(`Action could not execute becuase label ${name} is not defined.`);
|
||||
}
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.addLabels({
|
||||
await this.octokit.rest.issues.addLabels({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
labels: [name],
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
async getAssigner(assignee: string): Promise<string> {
|
||||
const options = this.octokit.issues.listEventsForTimeline.endpoint.merge({
|
||||
const options = {
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
})
|
||||
};
|
||||
|
||||
let assigner: string | undefined
|
||||
let assigner: string | undefined;
|
||||
|
||||
for await (const event of this.octokit.paginate.iterator(options)) {
|
||||
numRequests++
|
||||
const timelineEvents = event.data as Octokit.IssuesListEventsForTimelineResponseItem[]
|
||||
for await (const event of this.octokit.paginate.iterator(
|
||||
this.octokit.rest.issues.listEventsForTimeline,
|
||||
options,
|
||||
)) {
|
||||
numRequests++;
|
||||
const timelineEvents = event.data;
|
||||
for (const timelineEvent of timelineEvents) {
|
||||
if (
|
||||
timelineEvent.event === 'assigned' &&
|
||||
(timelineEvent as any).assignee.login === assignee
|
||||
) {
|
||||
assigner = timelineEvent.actor.login
|
||||
if (timelineEvent.event === 'assigned' && timelineEvent.assignee?.login === assignee) {
|
||||
assigner = timelineEvent.actor?.login;
|
||||
}
|
||||
}
|
||||
if (assigner) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!assigner) {
|
||||
throw Error('Expected to find ' + assignee + ' in issue timeline but did not.')
|
||||
throw Error('Expected to find ' + assignee + ' in issue timeline but did not.');
|
||||
}
|
||||
|
||||
return assigner
|
||||
return assigner;
|
||||
}
|
||||
|
||||
async removeLabel(name: string): Promise<void> {
|
||||
debug(`Removing label ${name} from ${this.issueData.number}`)
|
||||
safeLog(`Removing label ${name} from ${this.issueData.number}`);
|
||||
try {
|
||||
if (!this.options.readonly)
|
||||
await this.octokit.issues.removeLabel({
|
||||
await this.octokit.rest.issues.removeLabel({
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
name,
|
||||
})
|
||||
});
|
||||
} catch (err) {
|
||||
if (err.status === 404) {
|
||||
console.log(`Label ${name} not found on issue`)
|
||||
return
|
||||
const statusErorr = err as RequestError;
|
||||
if (statusErorr.status === 404) {
|
||||
safeLog(`Label ${name} not found on issue`);
|
||||
return;
|
||||
}
|
||||
throw err
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -373,43 +456,49 @@ export class OctoKitIssue extends OctoKit implements GitHubIssue {
|
||||
alreadyChecked: number[] = [],
|
||||
): Promise<{ hash: string | undefined; timestamp: number } | undefined> {
|
||||
if (alreadyChecked.includes(this.issueData.number)) {
|
||||
return undefined
|
||||
return undefined;
|
||||
}
|
||||
alreadyChecked.push(this.issueData.number)
|
||||
alreadyChecked.push(this.issueData.number);
|
||||
|
||||
if ((await this.getIssue()).open) {
|
||||
return
|
||||
return;
|
||||
}
|
||||
|
||||
const closingHashComment = /(?:\\|\/)closedWith (\S*)/
|
||||
const closingHashComment =
|
||||
/(?:\\|\/)closedWith (?:https:\/\/github\.com\/microsoft\/vscode\/commit\/)?([a-fA-F0-9]{7,40})/;
|
||||
|
||||
const options = this.octokit.issues.listEventsForTimeline.endpoint.merge({
|
||||
const options = {
|
||||
...this.params,
|
||||
issue_number: this.issueData.number,
|
||||
})
|
||||
let closingCommit: { hash: string | undefined; timestamp: number } | undefined
|
||||
const crossReferencing: number[] = []
|
||||
for await (const event of this.octokit.paginate.iterator(options)) {
|
||||
numRequests++
|
||||
};
|
||||
let closingCommit: { hash: string | undefined; timestamp: number } | undefined;
|
||||
const crossReferencing: number[] = [];
|
||||
for await (const event of this.octokit.paginate.iterator(
|
||||
this.octokit.rest.issues.listEventsForTimeline,
|
||||
options,
|
||||
)) {
|
||||
numRequests++;
|
||||
|
||||
const timelineEvents = event.data as Octokit.IssuesListEventsForTimelineResponseItem[]
|
||||
const timelineEvents = event.data;
|
||||
for (const timelineEvent of timelineEvents) {
|
||||
if (
|
||||
(timelineEvent.event === 'closed' || timelineEvent.event === 'merged') &&
|
||||
timelineEvent.created_at &&
|
||||
timelineEvent.commit_id &&
|
||||
timelineEvent.commit_url
|
||||
.toLowerCase()
|
||||
?.toLowerCase()
|
||||
.includes(`/${this.params.owner}/${this.params.repo}/`.toLowerCase())
|
||||
) {
|
||||
closingCommit = {
|
||||
hash: timelineEvent.commit_id,
|
||||
timestamp: +new Date(timelineEvent.created_at),
|
||||
}
|
||||
};
|
||||
}
|
||||
if (timelineEvent.event === 'reopened') {
|
||||
closingCommit = undefined
|
||||
closingCommit = undefined;
|
||||
}
|
||||
if (
|
||||
timelineEvent.created_at &&
|
||||
timelineEvent.event === 'commented' &&
|
||||
!((timelineEvent as any).body as string)?.includes('UNABLE_TO_LOCATE_COMMIT_MESSAGE') &&
|
||||
closingHashComment.test((timelineEvent as any).body)
|
||||
@@ -417,7 +506,7 @@ export class OctoKitIssue extends OctoKit implements GitHubIssue {
|
||||
closingCommit = {
|
||||
hash: closingHashComment.exec((timelineEvent as any).body)![1],
|
||||
timestamp: +new Date(timelineEvent.created_at),
|
||||
}
|
||||
};
|
||||
}
|
||||
if (
|
||||
timelineEvent.event === 'cross-referenced' &&
|
||||
@@ -426,7 +515,7 @@ export class OctoKitIssue extends OctoKit implements GitHubIssue {
|
||||
`/${this.params.owner}/${this.params.repo}/`.toLowerCase(),
|
||||
)
|
||||
) {
|
||||
crossReferencing.push((timelineEvent as any).source.issue.number)
|
||||
crossReferencing.push((timelineEvent as any).source.issue.number);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -437,19 +526,19 @@ export class OctoKitIssue extends OctoKit implements GitHubIssue {
|
||||
for (const id of crossReferencing.reverse()) {
|
||||
const closed = await new OctoKitIssue(this.token, this.params, {
|
||||
number: id,
|
||||
}, this.options).getClosingInfo(alreadyChecked)
|
||||
}).getClosingInfo(alreadyChecked);
|
||||
|
||||
if (closed) {
|
||||
if (Math.abs(closed.timestamp - ((await this.getIssue()).closedAt ?? 0)) < 5000) {
|
||||
closingCommit = closed
|
||||
break
|
||||
closingCommit = closed;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
console.log(`Got ${JSON.stringify(closingCommit)} as closing commit of ${this.issueData.number}`)
|
||||
return closingCommit
|
||||
safeLog(`Got ${JSON.stringify(closingCommit)} as closing commit of ${this.issueData.number}`);
|
||||
return closingCommit;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -464,7 +553,7 @@ function isIssue(object: any): object is Issue {
|
||||
'number' in object &&
|
||||
'numComments' in object &&
|
||||
'reactions' in object &&
|
||||
'milestoneId' in object
|
||||
'milestoneId' in object;
|
||||
|
||||
return isIssue
|
||||
return isIssue;
|
||||
}
|
||||
|
||||
@@ -11,51 +11,50 @@ const utils_1 = require("./utils");
|
||||
const core_1 = require("@actions/core");
|
||||
class Action {
|
||||
constructor() {
|
||||
this.token = utils_1.getRequiredInput('token');
|
||||
this.username = new github_1.GitHub(this.token).users.getAuthenticated().then((v) => v.data.name);
|
||||
this.token = (0, utils_1.getRequiredInput)('token');
|
||||
this.username = (0, github_1.getOctokit)(this.token)
|
||||
.rest.users.getAuthenticated()
|
||||
.then((v) => { var _a; return (_a = v.data.name) !== null && _a !== void 0 ? _a : 'unknown'; }, () => 'unknown');
|
||||
}
|
||||
async run() {
|
||||
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
||||
console.log('running ', this.id, 'with context', {
|
||||
...github_1.context,
|
||||
payload: {
|
||||
issue: (_b = (_a = github_1.context.payload) === null || _a === void 0 ? void 0 : _a.issue) === null || _b === void 0 ? void 0 : _b.number,
|
||||
label: (_d = (_c = github_1.context.payload) === null || _c === void 0 ? void 0 : _c.label) === null || _d === void 0 ? void 0 : _d.name,
|
||||
repository: (_f = (_e = github_1.context.payload) === null || _e === void 0 ? void 0 : _e.repository) === null || _f === void 0 ? void 0 : _f.html_url,
|
||||
sender: (_j = (_h = (_g = github_1.context.payload) === null || _g === void 0 ? void 0 : _g.sender) === null || _h === void 0 ? void 0 : _h.login) !== null && _j !== void 0 ? _j : (_l = (_k = github_1.context.payload) === null || _k === void 0 ? void 0 : _k.sender) === null || _l === void 0 ? void 0 : _l.type,
|
||||
},
|
||||
});
|
||||
var _a, _b, _c, _d, _e, _f;
|
||||
if (utils_1.errorLoggingIssue) {
|
||||
const { repo, issue, owner } = utils_1.errorLoggingIssue;
|
||||
if (github_1.context.repo.repo === repo &&
|
||||
github_1.context.repo.owner === owner &&
|
||||
((_m = github_1.context.payload.issue) === null || _m === void 0 ? void 0 : _m.number) === issue) {
|
||||
return console.log('refusing to run on error logging issue to prevent cascading errors');
|
||||
((_a = github_1.context.payload.issue) === null || _a === void 0 ? void 0 : _a.number) === issue) {
|
||||
return (0, utils_1.safeLog)('refusing to run on error logging issue to prevent cascading errors');
|
||||
}
|
||||
}
|
||||
try {
|
||||
const token = utils_1.getRequiredInput('token');
|
||||
const readonly = !!core_1.getInput('readonly');
|
||||
const issue = (_o = github_1.context === null || github_1.context === void 0 ? void 0 : github_1.context.issue) === null || _o === void 0 ? void 0 : _o.number;
|
||||
const token = (0, utils_1.getRequiredInput)('token');
|
||||
const readonly = !!(0, core_1.getInput)('readonly');
|
||||
const issue = (_b = github_1.context === null || github_1.context === void 0 ? void 0 : github_1.context.issue) === null || _b === void 0 ? void 0 : _b.number;
|
||||
if (issue) {
|
||||
const octokit = new octokit_1.OctoKitIssue(token, github_1.context.repo, { number: issue }, { readonly });
|
||||
if (github_1.context.eventName === 'issue_comment') {
|
||||
await this.onCommented(octokit, github_1.context.payload.comment.body, github_1.context.actor);
|
||||
await this.onCommented(octokit, (_c = github_1.context.payload.comment) === null || _c === void 0 ? void 0 : _c.body, github_1.context.actor);
|
||||
}
|
||||
else if (github_1.context.eventName === 'issues') {
|
||||
else if (github_1.context.eventName === 'issues' ||
|
||||
github_1.context.eventName === 'pull_request' ||
|
||||
github_1.context.eventName === 'pull_request_target') {
|
||||
switch (github_1.context.payload.action) {
|
||||
case 'opened':
|
||||
await this.onOpened(octokit);
|
||||
case 'ready_for_review':
|
||||
await this.onOpened(octokit, github_1.context.payload);
|
||||
break;
|
||||
case 'reopened':
|
||||
await this.onReopened(octokit);
|
||||
break;
|
||||
case 'closed':
|
||||
await this.onClosed(octokit);
|
||||
await this.onClosed(octokit, github_1.context.payload);
|
||||
break;
|
||||
case 'labeled':
|
||||
await this.onLabeled(octokit, github_1.context.payload.label.name);
|
||||
break;
|
||||
case 'assigned':
|
||||
await this.onAssigned(octokit, github_1.context.payload.assignee.login);
|
||||
break;
|
||||
case 'unassigned':
|
||||
await this.onUnassigned(octokit, github_1.context.payload.assignee.login);
|
||||
break;
|
||||
@@ -70,22 +69,32 @@ class Action {
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (github_1.context.eventName === 'create') {
|
||||
await this.onCreated(new octokit_1.OctoKit(token, github_1.context.repo, { readonly }), (_d = github_1.context === null || github_1.context === void 0 ? void 0 : github_1.context.payload) === null || _d === void 0 ? void 0 : _d.ref, (_f = (_e = github_1.context === null || github_1.context === void 0 ? void 0 : github_1.context.payload) === null || _e === void 0 ? void 0 : _e.sender) === null || _f === void 0 ? void 0 : _f.login);
|
||||
}
|
||||
else {
|
||||
await this.onTriggered(new octokit_1.OctoKit(token, github_1.context.repo, { readonly }));
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
await this.error(e);
|
||||
const err = e;
|
||||
try {
|
||||
await this.error(err);
|
||||
}
|
||||
catch {
|
||||
(0, utils_1.safeLog)((err === null || err === void 0 ? void 0 : err.stack) || (err === null || err === void 0 ? void 0 : err.message) || String(e));
|
||||
}
|
||||
}
|
||||
const usage = await utils_1.getRateLimit(this.token);
|
||||
const usage = await (0, utils_1.getRateLimit)(this.token);
|
||||
}
|
||||
async error(error) {
|
||||
var _a;
|
||||
const details = {
|
||||
message: `${error.message}\n${error.stack}`,
|
||||
id: this.id,
|
||||
user: await this.username,
|
||||
};
|
||||
if (github_1.context.issue.number)
|
||||
if ((_a = github_1.context.issue) === null || _a === void 0 ? void 0 : _a.number)
|
||||
details.issue = github_1.context.issue.number;
|
||||
const rendered = `
|
||||
Message: ${details.message}
|
||||
@@ -94,28 +103,34 @@ Actor: ${details.user}
|
||||
|
||||
ID: ${details.id}
|
||||
`;
|
||||
await utils_1.logErrorToIssue(rendered, true, this.token);
|
||||
core_1.setFailed(error.message);
|
||||
await (0, utils_1.logErrorToIssue)(rendered, true, this.token);
|
||||
(0, core_1.setFailed)(error.message);
|
||||
}
|
||||
async onTriggered(_octokit) {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
async onCreated(_octokit, _ref, _creator) {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
async onEdited(_issue) {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
async onLabeled(_issue, _label) {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
async onUnassigned(_issue, _label) {
|
||||
async onAssigned(_issue, _assignee) {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
async onOpened(_issue) {
|
||||
async onUnassigned(_issue, _assignee) {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
async onOpened(_issue, _payload) {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
async onReopened(_issue) {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
async onClosed(_issue) {
|
||||
async onClosed(_issue, _payload) {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
async onMilestoned(_issue) {
|
||||
|
||||
@@ -3,87 +3,102 @@
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { OctoKit, OctoKitIssue, getNumRequests } from '../api/octokit'
|
||||
import { context, GitHub } from '@actions/github'
|
||||
import { getRequiredInput, logErrorToIssue, getRateLimit, errorLoggingIssue } from './utils'
|
||||
import { getInput, setFailed } from '@actions/core'
|
||||
import { OctoKit, OctoKitIssue, getNumRequests } from '../api/octokit';
|
||||
import { context, getOctokit } from '@actions/github';
|
||||
import { getRequiredInput, logErrorToIssue, getRateLimit, errorLoggingIssue, safeLog } from './utils';
|
||||
import { getInput, setFailed } from '@actions/core';
|
||||
import { WebhookPayload } from '@actions/github/lib/interfaces';
|
||||
|
||||
export abstract class Action {
|
||||
abstract id: string
|
||||
abstract id: string;
|
||||
|
||||
private username: Promise<string>
|
||||
private token = getRequiredInput('token')
|
||||
private username: Promise<string>;
|
||||
private token = getRequiredInput('token');
|
||||
|
||||
constructor() {
|
||||
this.username = new GitHub(this.token).users.getAuthenticated().then((v) => v.data.name)
|
||||
this.username = getOctokit(this.token)
|
||||
.rest.users.getAuthenticated()
|
||||
.then(
|
||||
(v) => v.data.name ?? 'unknown',
|
||||
() => 'unknown',
|
||||
);
|
||||
}
|
||||
|
||||
public async run() {
|
||||
console.log('running ', this.id, 'with context', {
|
||||
...context,
|
||||
payload: {
|
||||
issue: context.payload?.issue?.number,
|
||||
label: context.payload?.label?.name,
|
||||
repository: context.payload?.repository?.html_url,
|
||||
sender: context.payload?.sender?.login ?? context.payload?.sender?.type,
|
||||
},
|
||||
})
|
||||
|
||||
if (errorLoggingIssue) {
|
||||
const { repo, issue, owner } = errorLoggingIssue
|
||||
const { repo, issue, owner } = errorLoggingIssue;
|
||||
if (
|
||||
context.repo.repo === repo &&
|
||||
context.repo.owner === owner &&
|
||||
context.payload.issue?.number === issue
|
||||
) {
|
||||
return console.log('refusing to run on error logging issue to prevent cascading errors')
|
||||
return safeLog('refusing to run on error logging issue to prevent cascading errors');
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
const token = getRequiredInput('token')
|
||||
const readonly = !!getInput('readonly')
|
||||
const token = getRequiredInput('token');
|
||||
const readonly = !!getInput('readonly');
|
||||
|
||||
const issue = context?.issue?.number
|
||||
const issue = context?.issue?.number;
|
||||
if (issue) {
|
||||
const octokit = new OctoKitIssue(token, context.repo, { number: issue }, { readonly })
|
||||
const octokit = new OctoKitIssue(token, context.repo, { number: issue }, { readonly });
|
||||
if (context.eventName === 'issue_comment') {
|
||||
await this.onCommented(octokit, context.payload.comment.body, context.actor)
|
||||
} else if (context.eventName === 'issues') {
|
||||
await this.onCommented(octokit, context.payload.comment?.body, context.actor);
|
||||
} else if (
|
||||
context.eventName === 'issues' ||
|
||||
context.eventName === 'pull_request' ||
|
||||
context.eventName === 'pull_request_target'
|
||||
) {
|
||||
switch (context.payload.action) {
|
||||
case 'opened':
|
||||
await this.onOpened(octokit)
|
||||
break
|
||||
case 'ready_for_review':
|
||||
await this.onOpened(octokit, context.payload);
|
||||
break;
|
||||
case 'reopened':
|
||||
await this.onReopened(octokit)
|
||||
break
|
||||
await this.onReopened(octokit);
|
||||
break;
|
||||
case 'closed':
|
||||
await this.onClosed(octokit)
|
||||
break
|
||||
await this.onClosed(octokit, context.payload);
|
||||
break;
|
||||
case 'labeled':
|
||||
await this.onLabeled(octokit, context.payload.label.name)
|
||||
break
|
||||
await this.onLabeled(octokit, context.payload.label.name);
|
||||
break;
|
||||
case 'assigned':
|
||||
await this.onAssigned(octokit, context.payload.assignee.login);
|
||||
break;
|
||||
case 'unassigned':
|
||||
await this.onUnassigned(octokit, context.payload.assignee.login)
|
||||
break
|
||||
await this.onUnassigned(octokit, context.payload.assignee.login);
|
||||
break;
|
||||
case 'edited':
|
||||
await this.onEdited(octokit)
|
||||
break
|
||||
await this.onEdited(octokit);
|
||||
break;
|
||||
case 'milestoned':
|
||||
await this.onMilestoned(octokit)
|
||||
break
|
||||
await this.onMilestoned(octokit);
|
||||
break;
|
||||
default:
|
||||
throw Error('Unexpected action: ' + context.payload.action)
|
||||
throw Error('Unexpected action: ' + context.payload.action);
|
||||
}
|
||||
}
|
||||
} else if (context.eventName === 'create') {
|
||||
await this.onCreated(
|
||||
new OctoKit(token, context.repo, { readonly }),
|
||||
context?.payload?.ref,
|
||||
context?.payload?.sender?.login,
|
||||
);
|
||||
} else {
|
||||
await this.onTriggered(new OctoKit(token, context.repo, { readonly }))
|
||||
await this.onTriggered(new OctoKit(token, context.repo, { readonly }));
|
||||
}
|
||||
} catch (e) {
|
||||
await this.error(e)
|
||||
const err = e as Error;
|
||||
try {
|
||||
await this.error(err);
|
||||
} catch {
|
||||
safeLog(err?.stack || err?.message || String(e));
|
||||
}
|
||||
}
|
||||
|
||||
const usage = await getRateLimit(this.token)
|
||||
const usage = await getRateLimit(this.token);
|
||||
}
|
||||
|
||||
private async error(error: Error) {
|
||||
@@ -91,9 +106,9 @@ export abstract class Action {
|
||||
message: `${error.message}\n${error.stack}`,
|
||||
id: this.id,
|
||||
user: await this.username,
|
||||
}
|
||||
};
|
||||
|
||||
if (context.issue.number) details.issue = context.issue.number
|
||||
if (context.issue?.number) details.issue = context.issue.number;
|
||||
|
||||
const rendered = `
|
||||
Message: ${details.message}
|
||||
@@ -101,37 +116,43 @@ Message: ${details.message}
|
||||
Actor: ${details.user}
|
||||
|
||||
ID: ${details.id}
|
||||
`
|
||||
await logErrorToIssue(rendered, true, this.token)
|
||||
`;
|
||||
await logErrorToIssue(rendered, true, this.token);
|
||||
|
||||
setFailed(error.message)
|
||||
setFailed(error.message);
|
||||
}
|
||||
|
||||
protected async onTriggered(_octokit: OctoKit): Promise<void> {
|
||||
throw Error('not implemented')
|
||||
throw Error('not implemented');
|
||||
}
|
||||
protected async onCreated(_octokit: OctoKit, _ref: string, _creator: string): Promise<void> {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
protected async onEdited(_issue: OctoKitIssue): Promise<void> {
|
||||
throw Error('not implemented')
|
||||
throw Error('not implemented');
|
||||
}
|
||||
protected async onLabeled(_issue: OctoKitIssue, _label: string): Promise<void> {
|
||||
throw Error('not implemented')
|
||||
throw Error('not implemented');
|
||||
}
|
||||
protected async onUnassigned(_issue: OctoKitIssue, _label: string): Promise<void> {
|
||||
throw Error('not implemented')
|
||||
protected async onAssigned(_issue: OctoKitIssue, _assignee: string): Promise<void> {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
protected async onOpened(_issue: OctoKitIssue): Promise<void> {
|
||||
throw Error('not implemented')
|
||||
protected async onUnassigned(_issue: OctoKitIssue, _assignee: string): Promise<void> {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
protected async onOpened(_issue: OctoKitIssue, _payload: WebhookPayload): Promise<void> {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
protected async onReopened(_issue: OctoKitIssue): Promise<void> {
|
||||
throw Error('not implemented')
|
||||
throw Error('not implemented');
|
||||
}
|
||||
protected async onClosed(_issue: OctoKitIssue): Promise<void> {
|
||||
throw Error('not implemented')
|
||||
protected async onClosed(_issue: OctoKitIssue, _payload: WebhookPayload): Promise<void> {
|
||||
throw Error('not implemented');
|
||||
}
|
||||
protected async onMilestoned(_issue: OctoKitIssue): Promise<void> {
|
||||
throw Error('not implemented')
|
||||
throw Error('not implemented');
|
||||
}
|
||||
protected async onCommented(_issue: OctoKitIssue, _comment: string, _actor: string): Promise<void> {
|
||||
throw Error('not implemented')
|
||||
throw Error('not implemented');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.ActionBase = void 0;
|
||||
const utils_1 = require("./utils");
|
||||
class ActionBase {
|
||||
constructor(labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes, involves) {
|
||||
this.labels = labels;
|
||||
@@ -27,15 +28,15 @@ class ActionBase {
|
||||
buildQuery(baseQuery) {
|
||||
var _a, _b, _c, _d, _e, _f;
|
||||
let query = baseQuery;
|
||||
console.log(`labels: ${this.labels}`);
|
||||
console.log(`milestoneName: ${this.milestoneName}`);
|
||||
console.log(`milestoneId: ${this.milestoneId}`);
|
||||
console.log(`ignoreLabels: ${this.ignoreLabels}`);
|
||||
console.log(`ignoreMilestoneNames: ${this.ignoreMilestoneNames}`);
|
||||
console.log(`ignoreMilestoneIds: ${this.ignoreMilestoneIds}`);
|
||||
console.log(`minimumVotes: ${this.minimumVotes}`);
|
||||
console.log(`maximumVotes: ${this.maximumVotes}`);
|
||||
console.log(`involves: ${this.involves}`);
|
||||
(0, utils_1.safeLog)(`labels: ${this.labels}`);
|
||||
(0, utils_1.safeLog)(`milestoneName: ${this.milestoneName}`);
|
||||
(0, utils_1.safeLog)(`milestoneId: ${this.milestoneId}`);
|
||||
(0, utils_1.safeLog)(`ignoreLabels: ${this.ignoreLabels}`);
|
||||
(0, utils_1.safeLog)(`ignoreMilestoneNames: ${this.ignoreMilestoneNames}`);
|
||||
(0, utils_1.safeLog)(`ignoreMilestoneIds: ${this.ignoreMilestoneIds}`);
|
||||
(0, utils_1.safeLog)(`minimumVotes: ${this.minimumVotes}`);
|
||||
(0, utils_1.safeLog)(`maximumVotes: ${this.maximumVotes}`);
|
||||
(0, utils_1.safeLog)(`involves: ${this.involves}`);
|
||||
// Both milestone name and milestone Id must be provided and must match.
|
||||
// The name is used to construct the query, which does not accept ID.
|
||||
// The ID is used for comparisons with issue data, which does not include the name.
|
||||
@@ -104,22 +105,23 @@ class ActionBase {
|
||||
// This is necessary because GitHub sometimes returns incorrect results,
|
||||
// and because issues may get modified while we are processing them.
|
||||
validateIssue(issue) {
|
||||
var _a, _b;
|
||||
if (this.ignoreAllWithLabels) {
|
||||
// Validate that the issue does not have labels
|
||||
if (issue.labels && issue.labels.length !== 0) {
|
||||
console.log(`Issue ${issue.number} skipped due to label found after querying for no:label.`);
|
||||
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to label found after querying for no:label.`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Make sure all labels we wanted are present.
|
||||
if ((!issue.labels || issue.labels.length == 0) && this.labelsSet.length > 0) {
|
||||
console.log(`Issue ${issue.number} skipped due to not having a required label set. No labels found.`);
|
||||
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to not having a required label set. No labels found.`);
|
||||
return false;
|
||||
}
|
||||
for (const str of this.labelsSet) {
|
||||
if (!issue.labels.includes(str)) {
|
||||
console.log(`Issue ${issue.number} skipped due to not having a required label set.`);
|
||||
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to not having a required label set.`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -127,7 +129,7 @@ class ActionBase {
|
||||
if (issue.labels && issue.labels.length > 0) {
|
||||
for (const str of this.ignoreLabelsSet) {
|
||||
if (issue.labels.includes(str)) {
|
||||
console.log(`Issue ${issue.number} skipped due to having an ignore label set: ${str}`);
|
||||
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to having an ignore label set: ${str}`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -135,22 +137,22 @@ class ActionBase {
|
||||
}
|
||||
if (this.ignoreAllWithMilestones) {
|
||||
// Validate that the issue does not have a milestone.
|
||||
if (issue.milestoneId != null) {
|
||||
console.log(`Issue ${issue.number} skipped due to milestone found after querying for no:milestone.`);
|
||||
if (issue.milestone) {
|
||||
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to milestone found after querying for no:milestone.`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Make sure milestone is present, if required.
|
||||
if (this.milestoneId != undefined && issue.milestoneId != +this.milestoneId) {
|
||||
console.log(`Issue ${issue.number} skipped due to not having required milsetone id ${this.milestoneId}. Had: ${issue.milestoneId}`);
|
||||
if (this.milestoneId != null && ((_a = issue.milestone) === null || _a === void 0 ? void 0 : _a.milestoneId) != +this.milestoneId) {
|
||||
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to not having required milsetone id ${this.milestoneId}. Had: ${(_b = issue.milestone) === null || _b === void 0 ? void 0 : _b.milestoneId}`);
|
||||
return false;
|
||||
}
|
||||
// Make sure a milestones we wanted to ignore is not present.
|
||||
if (issue.milestoneId != null) {
|
||||
if (issue.milestone && issue.milestone.milestoneId != null) {
|
||||
for (const str of this.ignoreMilestoneIdsSet) {
|
||||
if (issue.milestoneId == +str) {
|
||||
console.log(`Issue ${issue.number} skipped due to milestone ${issue.milestoneId} found in list of ignored milestone IDs.`);
|
||||
if (issue.milestone.milestoneId == +str) {
|
||||
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to milestone ${issue.milestone.milestoneId} found in list of ignored milestone IDs.`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -163,14 +165,14 @@ class ActionBase {
|
||||
}
|
||||
if (this.minimumVotes != undefined) {
|
||||
if (upvotes < this.minimumVotes) {
|
||||
console.log(`Issue ${issue.number} skipped due to not having at least ${this.minimumVotes} upvotes. Had: ${upvotes}`);
|
||||
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to not having at least ${this.minimumVotes} upvotes. Had: ${upvotes}`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// Verify the issue does not have too many upvotes
|
||||
if (this.maximumVotes != undefined) {
|
||||
if (upvotes > this.maximumVotes) {
|
||||
console.log(`Issue ${issue.number} skipped due to having more than ${this.maximumVotes} upvotes. Had: ${upvotes}`);
|
||||
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to having more than ${this.maximumVotes} upvotes. Had: ${upvotes}`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { Issue } from '../api/api'
|
||||
import { safeLog } from './utils';
|
||||
|
||||
export class ActionBase {
|
||||
constructor(
|
||||
@@ -29,15 +30,15 @@ export class ActionBase {
|
||||
buildQuery(baseQuery: string): string {
|
||||
let query = baseQuery;
|
||||
|
||||
console.log(`labels: ${this.labels}`);
|
||||
console.log(`milestoneName: ${this.milestoneName}`);
|
||||
console.log(`milestoneId: ${this.milestoneId}`);
|
||||
console.log(`ignoreLabels: ${this.ignoreLabels}`);
|
||||
console.log(`ignoreMilestoneNames: ${this.ignoreMilestoneNames}`);
|
||||
console.log(`ignoreMilestoneIds: ${this.ignoreMilestoneIds}`);
|
||||
console.log(`minimumVotes: ${this.minimumVotes}`);
|
||||
console.log(`maximumVotes: ${this.maximumVotes}`);
|
||||
console.log(`involves: ${this.involves}`);
|
||||
safeLog(`labels: ${this.labels}`);
|
||||
safeLog(`milestoneName: ${this.milestoneName}`);
|
||||
safeLog(`milestoneId: ${this.milestoneId}`);
|
||||
safeLog(`ignoreLabels: ${this.ignoreLabels}`);
|
||||
safeLog(`ignoreMilestoneNames: ${this.ignoreMilestoneNames}`);
|
||||
safeLog(`ignoreMilestoneIds: ${this.ignoreMilestoneIds}`);
|
||||
safeLog(`minimumVotes: ${this.minimumVotes}`);
|
||||
safeLog(`maximumVotes: ${this.maximumVotes}`);
|
||||
safeLog(`involves: ${this.involves}`);
|
||||
|
||||
// Both milestone name and milestone Id must be provided and must match.
|
||||
// The name is used to construct the query, which does not accept ID.
|
||||
@@ -117,18 +118,18 @@ export class ActionBase {
|
||||
if (this.ignoreAllWithLabels) {
|
||||
// Validate that the issue does not have labels
|
||||
if (issue.labels && issue.labels.length !== 0) {
|
||||
console.log(`Issue ${issue.number} skipped due to label found after querying for no:label.`);
|
||||
safeLog(`Issue ${issue.number} skipped due to label found after querying for no:label.`);
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
// Make sure all labels we wanted are present.
|
||||
if ((!issue.labels || issue.labels.length == 0) && this.labelsSet.length > 0) {
|
||||
console.log(`Issue ${issue.number} skipped due to not having a required label set. No labels found.`);
|
||||
safeLog(`Issue ${issue.number} skipped due to not having a required label set. No labels found.`);
|
||||
return false;
|
||||
}
|
||||
for (const str of this.labelsSet) {
|
||||
if (!issue.labels.includes(str)) {
|
||||
console.log(`Issue ${issue.number} skipped due to not having a required label set.`);
|
||||
safeLog(`Issue ${issue.number} skipped due to not having a required label set.`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -136,7 +137,7 @@ export class ActionBase {
|
||||
if (issue.labels && issue.labels.length > 0) {
|
||||
for (const str of this.ignoreLabelsSet) {
|
||||
if (issue.labels.includes(str)) {
|
||||
console.log(`Issue ${issue.number} skipped due to having an ignore label set: ${str}`);
|
||||
safeLog(`Issue ${issue.number} skipped due to having an ignore label set: ${str}`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -144,21 +145,21 @@ export class ActionBase {
|
||||
}
|
||||
if (this.ignoreAllWithMilestones) {
|
||||
// Validate that the issue does not have a milestone.
|
||||
if (issue.milestoneId != null) {
|
||||
console.log(`Issue ${issue.number} skipped due to milestone found after querying for no:milestone.`);
|
||||
if (issue.milestone) {
|
||||
safeLog(`Issue ${issue.number} skipped due to milestone found after querying for no:milestone.`);
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
// Make sure milestone is present, if required.
|
||||
if (this.milestoneId != undefined && issue.milestoneId != +this.milestoneId) {
|
||||
console.log(`Issue ${issue.number} skipped due to not having required milsetone id ${this.milestoneId}. Had: ${issue.milestoneId}`);
|
||||
if (this.milestoneId != null && issue.milestone?.milestoneId != +this.milestoneId) {
|
||||
safeLog(`Issue ${issue.number} skipped due to not having required milsetone id ${this.milestoneId}. Had: ${issue.milestone?.milestoneId}`);
|
||||
return false;
|
||||
}
|
||||
// Make sure a milestones we wanted to ignore is not present.
|
||||
if (issue.milestoneId != null) {
|
||||
if (issue.milestone && issue.milestone.milestoneId != null) {
|
||||
for (const str of this.ignoreMilestoneIdsSet) {
|
||||
if (issue.milestoneId == +str) {
|
||||
console.log(`Issue ${issue.number} skipped due to milestone ${issue.milestoneId} found in list of ignored milestone IDs.`);
|
||||
if (issue.milestone.milestoneId == +str) {
|
||||
safeLog(`Issue ${issue.number} skipped due to milestone ${issue.milestone.milestoneId} found in list of ignored milestone IDs.`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -171,14 +172,14 @@ export class ActionBase {
|
||||
}
|
||||
if (this.minimumVotes != undefined) {
|
||||
if (upvotes < this.minimumVotes) {
|
||||
console.log(`Issue ${issue.number} skipped due to not having at least ${this.minimumVotes} upvotes. Had: ${upvotes}`);
|
||||
safeLog(`Issue ${issue.number} skipped due to not having at least ${this.minimumVotes} upvotes. Had: ${upvotes}`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// Verify the issue does not have too many upvotes
|
||||
if (this.maximumVotes != undefined) {
|
||||
if (upvotes > this.maximumVotes) {
|
||||
console.log(`Issue ${issue.number} skipped due to having more than ${this.maximumVotes} upvotes. Had: ${upvotes}`);
|
||||
safeLog(`Issue ${issue.number} skipped due to having more than ${this.maximumVotes} upvotes. Had: ${upvotes}`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
"use strict";
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
//# sourceMappingURL=OctokitTypings.js.map
|
||||
@@ -0,0 +1,16 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import type { RestEndpointMethodTypes } from '@octokit/rest';
|
||||
|
||||
// This file is just to re-export some octokit types as nicer names
|
||||
|
||||
export type ActionsListWorkflowRunsResponseWorkflowRunsItem =
|
||||
RestEndpointMethodTypes['actions']['listWorkflowRuns']['response']['data']['workflow_runs'][0];
|
||||
|
||||
export type IssueGetResponse = RestEndpointMethodTypes['issues']['get']['response']['data'];
|
||||
|
||||
export type IssuesGetResponseMilestone =
|
||||
RestEndpointMethodTypes['issues']['get']['response']['data']['milestone'];
|
||||
@@ -4,14 +4,16 @@
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.logErrorToIssue = exports.errorLoggingIssue = exports.getRateLimit = exports.daysAgoToHumanReadbleDate = exports.daysAgoToTimestamp = exports.loadLatestRelease = exports.normalizeIssue = exports.getRequiredInput = exports.getInput = void 0;
|
||||
exports.safeLog = exports.logErrorToIssue = exports.errorLoggingIssue = exports.getRateLimit = exports.daysAgoToHumanReadbleDate = exports.daysAgoToTimestamp = exports.loadLatestRelease = exports.normalizeIssue = exports.getRequiredInput = exports.getInput = void 0;
|
||||
const core = require("@actions/core");
|
||||
const github_1 = require("@actions/github");
|
||||
const axios_1 = require("axios");
|
||||
const octokit_1 = require("../api/octokit");
|
||||
exports.getInput = (name) => core.getInput(name) || undefined;
|
||||
exports.getRequiredInput = (name) => core.getInput(name, { required: true });
|
||||
exports.normalizeIssue = (issue) => {
|
||||
const getInput = (name) => core.getInput(name) || undefined;
|
||||
exports.getInput = getInput;
|
||||
const getRequiredInput = (name) => core.getInput(name, { required: true });
|
||||
exports.getRequiredInput = getRequiredInput;
|
||||
const normalizeIssue = (issue) => {
|
||||
let { body, title } = issue;
|
||||
body = body !== null && body !== void 0 ? body : '';
|
||||
title = title !== null && title !== void 0 ? title : '';
|
||||
@@ -43,25 +45,36 @@ exports.normalizeIssue = (issue) => {
|
||||
issueType: isBug ? 'bug' : isFeatureRequest ? 'feature_request' : 'unknown',
|
||||
};
|
||||
};
|
||||
exports.loadLatestRelease = async (quality) => (await axios_1.default.get(`https://vscode-update.azurewebsites.net/api/update/darwin/${quality}/latest`)).data;
|
||||
exports.daysAgoToTimestamp = (days) => +new Date(Date.now() - days * 24 * 60 * 60 * 1000);
|
||||
exports.daysAgoToHumanReadbleDate = (days) => new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString().replace(/\.\d{3}\w$/, '');
|
||||
exports.getRateLimit = async (token) => {
|
||||
const usageData = (await new github_1.GitHub(token).rateLimit.get()).data.resources;
|
||||
exports.normalizeIssue = normalizeIssue;
|
||||
const loadLatestRelease = async (quality) => (await axios_1.default.get(`https://update.code.visualstudio.com/api/update/darwin/${quality}/latest`)).data;
|
||||
exports.loadLatestRelease = loadLatestRelease;
|
||||
const daysAgoToTimestamp = (days) => +new Date(Date.now() - days * 24 * 60 * 60 * 1000);
|
||||
exports.daysAgoToTimestamp = daysAgoToTimestamp;
|
||||
const daysAgoToHumanReadbleDate = (days) => new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString().replace(/\.\d{3}\w$/, '');
|
||||
exports.daysAgoToHumanReadbleDate = daysAgoToHumanReadbleDate;
|
||||
const getRateLimit = async (token) => {
|
||||
const usageData = (await (0, github_1.getOctokit)(token).rest.rateLimit.get()).data.resources;
|
||||
const usage = {};
|
||||
['core', 'graphql', 'search'].forEach(async (category) => {
|
||||
usage[category] = 1 - usageData[category].remaining / usageData[category].limit;
|
||||
var _a, _b, _c, _d;
|
||||
if (usageData[category]) {
|
||||
usage[category] = 1 - ((_b = (_a = usageData[category]) === null || _a === void 0 ? void 0 : _a.remaining) !== null && _b !== void 0 ? _b : 0) / ((_d = (_c = usageData[category]) === null || _c === void 0 ? void 0 : _c.limit) !== null && _d !== void 0 ? _d : 1);
|
||||
}
|
||||
});
|
||||
return usage;
|
||||
};
|
||||
exports.getRateLimit = getRateLimit;
|
||||
exports.errorLoggingIssue = (() => {
|
||||
try {
|
||||
const repo = github_1.context.repo.owner.toLowerCase() + '/' + github_1.context.repo.repo.toLowerCase();
|
||||
if (repo === 'microsoft/vscode-cpptools') {
|
||||
return { repo: 'vscode-cpptools', owner: 'Microsoft', issue: 6282 };
|
||||
if (repo === 'microsoft/vscode' || repo === 'microsoft/vscode-remote-release') {
|
||||
return { repo: 'vscode', owner: 'Microsoft', issue: 93814 };
|
||||
}
|
||||
else if (exports.getInput('errorLogIssueNumber')) {
|
||||
return { ...github_1.context.repo, issue: +exports.getRequiredInput('errorLogIssueNumber') };
|
||||
else if (/microsoft\//.test(repo)) {
|
||||
return { repo: 'vscode-internalbacklog', owner: 'Microsoft', issue: 974 };
|
||||
}
|
||||
else if ((0, exports.getInput)('errorLogIssueNumber')) {
|
||||
return { ...github_1.context.repo, issue: +(0, exports.getRequiredInput)('errorLogIssueNumber') };
|
||||
}
|
||||
else {
|
||||
return undefined;
|
||||
@@ -72,19 +85,20 @@ exports.errorLoggingIssue = (() => {
|
||||
return undefined;
|
||||
}
|
||||
})();
|
||||
exports.logErrorToIssue = async (message, ping, token) => {
|
||||
const logErrorToIssue = async (message, ping, token) => {
|
||||
var _a;
|
||||
// Attempt to wait out abuse detection timeout if present
|
||||
await new Promise((resolve) => setTimeout(resolve, 10000));
|
||||
const dest = exports.errorLoggingIssue;
|
||||
if (!dest)
|
||||
return console.log('no error logging repo defined. swallowing error:', message);
|
||||
return new octokit_1.OctoKitIssue(token, { owner: dest.owner, repo: dest.repo }, { number: dest.issue }, { readonly: !!exports.getInput('readonly') })
|
||||
return console.log('no error logging repo defined. swallowing error.');
|
||||
return new octokit_1.OctoKitIssue(token, { owner: dest.owner, repo: dest.repo }, { number: dest.issue })
|
||||
.postComment(`
|
||||
Workflow: ${github_1.context.workflow}
|
||||
|
||||
Error: ${message}
|
||||
|
||||
Issue: ${ping ? `${github_1.context.repo.owner}/${github_1.context.repo.repo}#` : ''}${github_1.context.issue.number}
|
||||
Issue: ${ping ? `${github_1.context.repo.owner}/${github_1.context.repo.repo}#` : ''}${(_a = github_1.context.issue) === null || _a === void 0 ? void 0 : _a.number}
|
||||
|
||||
Repo: ${github_1.context.repo.owner}/${github_1.context.repo.repo}
|
||||
|
||||
@@ -96,4 +110,10 @@ ${JSON.stringify(github_1.context, null, 2)
|
||||
-->
|
||||
`);
|
||||
};
|
||||
exports.logErrorToIssue = logErrorToIssue;
|
||||
const safeLog = (message, ...args) => {
|
||||
const clean = (val) => ('' + val).replace(/:|#/g, '');
|
||||
console.log(clean(message), ...args.map(clean));
|
||||
};
|
||||
exports.safeLog = safeLog;
|
||||
//# sourceMappingURL=utils.js.map
|
||||
@@ -3,24 +3,24 @@
|
||||
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import * as core from '@actions/core'
|
||||
import { context, GitHub } from '@actions/github'
|
||||
import axios from 'axios'
|
||||
import { OctoKitIssue } from '../api/octokit'
|
||||
import * as core from '@actions/core';
|
||||
import { context, getOctokit } from '@actions/github';
|
||||
import axios from 'axios';
|
||||
import { OctoKitIssue } from '../api/octokit';
|
||||
|
||||
export const getInput = (name: string) => core.getInput(name) || undefined
|
||||
export const getRequiredInput = (name: string) => core.getInput(name, { required: true })
|
||||
export const getInput = (name: string) => core.getInput(name) || undefined;
|
||||
export const getRequiredInput = (name: string) => core.getInput(name, { required: true });
|
||||
|
||||
export const normalizeIssue = (issue: {
|
||||
body: string
|
||||
title: string
|
||||
body: string;
|
||||
title: string;
|
||||
}): { body: string; title: string; issueType: 'bug' | 'feature_request' | 'unknown' } => {
|
||||
let { body, title } = issue
|
||||
body = body ?? ''
|
||||
title = title ?? ''
|
||||
const isBug = body.includes('bug_report_template') || /Issue Type:.*Bug.*/.test(body)
|
||||
let { body, title } = issue;
|
||||
body = body ?? '';
|
||||
title = title ?? '';
|
||||
const isBug = body.includes('bug_report_template') || /Issue Type:.*Bug.*/.test(body);
|
||||
const isFeatureRequest =
|
||||
body.includes('feature_request_template') || /Issue Type:.*Feature Request.*/.test(body)
|
||||
body.includes('feature_request_template') || /Issue Type:.*Feature Request.*/.test(body);
|
||||
|
||||
const cleanse = (str: string) => {
|
||||
let out = str
|
||||
@@ -34,78 +34,83 @@ export const normalizeIssue = (issue: {
|
||||
.replace(/does this issue occur when all extensions are disabled.*/gu, '')
|
||||
.replace(/!?\[[^\]]*\]\([^)]*\)/gu, '')
|
||||
.replace(/\s+/gu, ' ')
|
||||
.replace(/```[^`]*?```/gu, '')
|
||||
.replace(/```[^`]*?```/gu, '');
|
||||
|
||||
while (
|
||||
out.includes(`<details>`) &&
|
||||
out.includes('</details>') &&
|
||||
out.indexOf(`</details>`) > out.indexOf(`<details>`)
|
||||
) {
|
||||
out = out.slice(0, out.indexOf('<details>')) + out.slice(out.indexOf(`</details>`) + 10)
|
||||
out = out.slice(0, out.indexOf('<details>')) + out.slice(out.indexOf(`</details>`) + 10);
|
||||
}
|
||||
|
||||
return out
|
||||
}
|
||||
return out;
|
||||
};
|
||||
|
||||
return {
|
||||
body: cleanse(body),
|
||||
title: cleanse(title),
|
||||
issueType: isBug ? 'bug' : isFeatureRequest ? 'feature_request' : 'unknown',
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
export interface Release {
|
||||
productVersion: string
|
||||
timestamp: number
|
||||
version: string
|
||||
productVersion: string;
|
||||
timestamp: number;
|
||||
version: string;
|
||||
}
|
||||
|
||||
export const loadLatestRelease = async (quality: 'stable' | 'insider'): Promise<Release | undefined> =>
|
||||
(await axios.get(`https://vscode-update.azurewebsites.net/api/update/darwin/${quality}/latest`)).data
|
||||
(await axios.get(`https://update.code.visualstudio.com/api/update/darwin/${quality}/latest`)).data;
|
||||
|
||||
export const daysAgoToTimestamp = (days: number): number => +new Date(Date.now() - days * 24 * 60 * 60 * 1000)
|
||||
export const daysAgoToTimestamp = (days: number): number =>
|
||||
+new Date(Date.now() - days * 24 * 60 * 60 * 1000);
|
||||
|
||||
export const daysAgoToHumanReadbleDate = (days: number) =>
|
||||
new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString().replace(/\.\d{3}\w$/, '')
|
||||
new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString().replace(/\.\d{3}\w$/, '');
|
||||
|
||||
export const getRateLimit = async (token: string) => {
|
||||
const usageData = (await new GitHub(token).rateLimit.get()).data.resources
|
||||
const usage = {} as { core: number; graphql: number; search: number }
|
||||
;(['core', 'graphql', 'search'] as const).forEach(async (category) => {
|
||||
usage[category] = 1 - usageData[category].remaining / usageData[category].limit
|
||||
})
|
||||
return usage
|
||||
}
|
||||
const usageData = (await getOctokit(token).rest.rateLimit.get()).data.resources;
|
||||
const usage = {} as { core: number; graphql: number; search: number };
|
||||
(['core', 'graphql', 'search'] as const).forEach(async (category) => {
|
||||
if (usageData[category]) {
|
||||
usage[category] = 1 - (usageData[category]?.remaining ?? 0) / (usageData[category]?.limit ?? 1);
|
||||
}
|
||||
});
|
||||
return usage;
|
||||
};
|
||||
|
||||
export const errorLoggingIssue = (() => {
|
||||
try {
|
||||
const repo = context.repo.owner.toLowerCase() + '/' + context.repo.repo.toLowerCase()
|
||||
if (repo === 'microsoft/vscode-cpptools') {
|
||||
return { repo: 'vscode-cpptools', owner: 'Microsoft', issue: 6282 }
|
||||
const repo = context.repo.owner.toLowerCase() + '/' + context.repo.repo.toLowerCase();
|
||||
if (repo === 'microsoft/vscode' || repo === 'microsoft/vscode-remote-release') {
|
||||
return { repo: 'vscode', owner: 'Microsoft', issue: 93814 };
|
||||
} else if (/microsoft\//.test(repo)) {
|
||||
return { repo: 'vscode-internalbacklog', owner: 'Microsoft', issue: 974 };
|
||||
} else if (getInput('errorLogIssueNumber')) {
|
||||
return { ...context.repo, issue: +getRequiredInput('errorLogIssueNumber') }
|
||||
return { ...context.repo, issue: +getRequiredInput('errorLogIssueNumber') };
|
||||
} else {
|
||||
return undefined
|
||||
return undefined;
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
return undefined
|
||||
console.error(e);
|
||||
return undefined;
|
||||
}
|
||||
})()
|
||||
})();
|
||||
|
||||
export const logErrorToIssue = async (message: string, ping: boolean, token: string): Promise<void> => {
|
||||
// Attempt to wait out abuse detection timeout if present
|
||||
await new Promise((resolve) => setTimeout(resolve, 10000))
|
||||
const dest = errorLoggingIssue
|
||||
if (!dest) return console.log('no error logging repo defined. swallowing error:', message)
|
||||
await new Promise((resolve) => setTimeout(resolve, 10000));
|
||||
const dest = errorLoggingIssue;
|
||||
if (!dest) return console.log('no error logging repo defined. swallowing error.');
|
||||
|
||||
return new OctoKitIssue(token, { owner: dest.owner, repo: dest.repo }, { number: dest.issue }, { readonly: !!getInput('readonly') })
|
||||
return new OctoKitIssue(token, { owner: dest.owner, repo: dest.repo }, { number: dest.issue })
|
||||
.postComment(`
|
||||
Workflow: ${context.workflow}
|
||||
|
||||
Error: ${message}
|
||||
|
||||
Issue: ${ping ? `${context.repo.owner}/${context.repo.repo}#` : ''}${context.issue.number}
|
||||
Issue: ${ping ? `${context.repo.owner}/${context.repo.repo}#` : ''}${context.issue?.number}
|
||||
|
||||
Repo: ${context.repo.owner}/${context.repo.repo}
|
||||
|
||||
@@ -115,5 +120,10 @@ ${JSON.stringify(context, null, 2)
|
||||
.replace(/-->/gu, '--@>')
|
||||
.replace(/\/|\\/gu, 'slash-')}
|
||||
-->
|
||||
`)
|
||||
}
|
||||
`);
|
||||
};
|
||||
|
||||
export const safeLog = (message: string, ...args: (string | number | string[])[]): void => {
|
||||
const clean = (val: any) => ('' + val).replace(/:|#/g, '');
|
||||
console.log(clean(message), ...args.map(clean));
|
||||
};
|
||||
|
||||
Generated
+6244
-419
File diff suppressed because it is too large
Load Diff
@@ -11,14 +11,35 @@
|
||||
"author": "",
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.9.1",
|
||||
"@actions/github": "^2.1.1",
|
||||
"axios": "^0.21.4"
|
||||
},
|
||||
"resolutions": {
|
||||
"follow-redirects": "1.14.7"
|
||||
"@actions/github": "^5.0.3",
|
||||
"@octokit/rest": "^19.0.3",
|
||||
"@slack/web-api": "^6.7.2",
|
||||
"applicationinsights": "^2.5.1",
|
||||
"axios": "^0.27.2",
|
||||
"uuid": "^8.3.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint": "^8.1.0",
|
||||
"typescript": "^3.8.3"
|
||||
"@azure/storage-blob": "^12.13.0",
|
||||
"@types/chai": "^4.3.3",
|
||||
"@types/mocha": "^9.1.1",
|
||||
"@types/uuid": "^8.3.4",
|
||||
"@types/yargs": "^17.0.11",
|
||||
"@typescript-eslint/eslint-plugin": "^5.33.0",
|
||||
"@typescript-eslint/parser": "^5.33.0",
|
||||
"chai": "^4.3.6",
|
||||
"eslint": "^8.21.0",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"eslint-plugin-prettier": "^4.2.1",
|
||||
"husky": "^8.0.1",
|
||||
"mocha": "^10.0.0",
|
||||
"mongodb": "^4.8.1",
|
||||
"nock": "^13.2.9",
|
||||
"prettier": "2.7.1",
|
||||
"ts-node": "^10.9.1",
|
||||
"typescript": "^4.7.4",
|
||||
"yargs": "^17.5.1"
|
||||
},
|
||||
"resolutions": {
|
||||
"minimatch": "^3.0.5"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
"moduleResolution": "node",
|
||||
"removeComments": false,
|
||||
"resolveJsonModule": true,
|
||||
"skipLibCheck": true,
|
||||
"sourceMap": true,
|
||||
"lib": [
|
||||
"es2020"
|
||||
|
||||
@@ -13,7 +13,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
|
||||
@@ -13,7 +13,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
|
||||
@@ -11,12 +11,12 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Use Node.js 14.16.x
|
||||
uses: actions/setup-node@v1
|
||||
- name: Use Node.js 16
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 14.16.x
|
||||
node-version: 16
|
||||
|
||||
- name: Install Dependencies
|
||||
run: yarn install
|
||||
@@ -35,13 +35,13 @@ jobs:
|
||||
working-directory: Extension
|
||||
|
||||
- name: Run unit tests
|
||||
uses: GabrielBB/xvfb-action@v1.4
|
||||
uses: GabrielBB/xvfb-action@v1.6
|
||||
with:
|
||||
run: yarn run unitTests
|
||||
working-directory: Extension
|
||||
|
||||
# - name: Run languageServer integration tests
|
||||
# uses: GabrielBB/xvfb-action@v1.4
|
||||
# uses: GabrielBB/xvfb-action@v1.6
|
||||
# with:
|
||||
# run: yarn run integrationTests
|
||||
# working-directory: Extension
|
||||
|
||||
@@ -11,12 +11,12 @@ jobs:
|
||||
runs-on: macos-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Use Node.js 14.16.x
|
||||
uses: actions/setup-node@v1
|
||||
- name: Use Node.js 16
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 14.16.x
|
||||
node-version: 16
|
||||
|
||||
- name: Install Dependencies
|
||||
run: yarn install --network-timeout 100000
|
||||
@@ -35,13 +35,13 @@ jobs:
|
||||
working-directory: Extension
|
||||
|
||||
- name: Run unit tests
|
||||
uses: GabrielBB/xvfb-action@v1.4
|
||||
uses: GabrielBB/xvfb-action@v1.6
|
||||
with:
|
||||
run: yarn run unitTests
|
||||
working-directory: Extension
|
||||
|
||||
# - name: Run languageServer integration tests
|
||||
# uses: GabrielBB/xvfb-action@v1.4
|
||||
# uses: GabrielBB/xvfb-action@v1.6
|
||||
# with:
|
||||
# run: yarn run integrationTests
|
||||
# working-directory: Extension
|
||||
|
||||
@@ -11,12 +11,12 @@ jobs:
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Use Node.js 14.16.x
|
||||
uses: actions/setup-node@v1
|
||||
- name: Use Node.js 16
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 14.16.x
|
||||
node-version: 16
|
||||
|
||||
- name: Install Dependencies
|
||||
run: yarn install
|
||||
|
||||
@@ -24,6 +24,11 @@ pool:
|
||||
- ImageOverride -equals AzurePipelinesWindows2022compliant
|
||||
|
||||
steps:
|
||||
- task: NodeTool@0
|
||||
inputs:
|
||||
versionSpec: '16.x'
|
||||
displayName: 'Install Node.js'
|
||||
|
||||
- task: CmdLine@2
|
||||
inputs:
|
||||
script: 'cd Extension && yarn install'
|
||||
|
||||
@@ -19,6 +19,7 @@ module.exports = {
|
||||
"rules": {
|
||||
"@typescript-eslint/adjacent-overload-signatures": "error",
|
||||
"@typescript-eslint/array-type": "error",
|
||||
"@typescript-eslint/await-thenable": "error",
|
||||
"camelcase": "off",
|
||||
"@typescript-eslint/naming-convention": [
|
||||
"error",
|
||||
@@ -27,7 +28,6 @@ module.exports = {
|
||||
"format": ["PascalCase"]
|
||||
}
|
||||
],
|
||||
"@typescript-eslint/indent": "error",
|
||||
"@typescript-eslint/member-delimiter-style": [
|
||||
"error",
|
||||
{
|
||||
@@ -43,6 +43,7 @@ module.exports = {
|
||||
],
|
||||
"@typescript-eslint/no-for-in-array": "error",
|
||||
"@typescript-eslint/no-misused-new": "error",
|
||||
"@typescript-eslint/no-misused-promises": "error",
|
||||
"@typescript-eslint/no-namespace": "error",
|
||||
"@typescript-eslint/no-non-null-assertion": "error",
|
||||
"@typescript-eslint/no-extra-non-null-assertion": "error",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# ignore dependency packages
|
||||
node_modules
|
||||
|
||||
# ignore compliled typescript
|
||||
# ignore compiled typescript
|
||||
out
|
||||
dist
|
||||
|
||||
|
||||
Vendored
+1
-9
@@ -10,7 +10,6 @@
|
||||
"args": [
|
||||
"--extensionDevelopmentPath=${workspaceFolder}"
|
||||
],
|
||||
"stopOnEntry": false,
|
||||
"sourceMaps": true,
|
||||
"outFiles": [
|
||||
"${workspaceFolder}/dist/**/*.js"
|
||||
@@ -25,7 +24,6 @@
|
||||
"args": [
|
||||
"--extensionDevelopmentPath=${workspaceFolder}"
|
||||
],
|
||||
"stopOnEntry": false,
|
||||
"sourceMaps": true,
|
||||
"outFiles": [
|
||||
"${workspaceFolder}/dist/**/*.js"
|
||||
@@ -40,7 +38,6 @@
|
||||
"args": [
|
||||
"--extensionDevelopmentPath=${workspaceFolder}"
|
||||
],
|
||||
"stopOnEntry": false,
|
||||
"sourceMaps": true,
|
||||
"outFiles": [
|
||||
"${workspaceFolder}/dist/**/*.js"
|
||||
@@ -54,7 +51,6 @@
|
||||
"args": [
|
||||
"--extensionDevelopmentPath=${workspaceFolder}"
|
||||
],
|
||||
"stopOnEntry": false,
|
||||
"sourceMaps": true,
|
||||
"outFiles": [
|
||||
"${workspaceFolder}/dist/**/*.js"
|
||||
@@ -69,7 +65,6 @@
|
||||
"args": [
|
||||
"--extensionDevelopmentPath=${workspaceFolder}"
|
||||
],
|
||||
"stopOnEntry": false,
|
||||
"sourceMaps": true,
|
||||
"outFiles": [
|
||||
"${workspaceFolder}/dist/**/*.js"
|
||||
@@ -85,7 +80,6 @@
|
||||
"--extensionDevelopmentPath=${workspaceFolder}",
|
||||
"--extensionTestsPath=${workspaceFolder}/out/test/unitTests/index"
|
||||
],
|
||||
"stopOnEntry": false,
|
||||
"sourceMaps": true,
|
||||
"outFiles": [
|
||||
"${workspaceFolder}/out/test/**/*.js"
|
||||
@@ -102,7 +96,6 @@
|
||||
"--extensionDevelopmentPath=${workspaceFolder}",
|
||||
"--extensionTestsPath=${workspaceFolder}/out/test/integrationTests/languageServer/index"
|
||||
],
|
||||
"stopOnEntry": false,
|
||||
"sourceMaps": true,
|
||||
"outFiles": [
|
||||
"${workspaceFolder}/out/test/**/*.js"
|
||||
@@ -115,11 +108,10 @@
|
||||
"request": "launch",
|
||||
"runtimeExecutable": "${execPath}",
|
||||
"args": [
|
||||
"C:/git/Vcls-vscode-test/SingleRootProject",
|
||||
"C:/git/Vcls-vscode-test/MultirootDeadlockTest/test.code-workspace",
|
||||
"--extensionDevelopmentPath=${workspaceFolder}",
|
||||
"--extensionTestsPath=${workspaceFolder}/out/test/integrationTests/IntelliSenseFeatures/index"
|
||||
],
|
||||
"stopOnEntry": false,
|
||||
"sourceMaps": true,
|
||||
"outFiles": [
|
||||
"${workspaceFolder}/out/test/**/*.js"
|
||||
|
||||
+243
-7
@@ -1,5 +1,241 @@
|
||||
# C/C++ for Visual Studio Code Changelog
|
||||
|
||||
## Version 1.16.0: May 22, 2023
|
||||
### New Features
|
||||
* Add Call Hierarchy. [#16](https://github.com/microsoft/vscode-cpptools/issues/16)
|
||||
* Add "Copy Definition" and "Copy Declaration" code actions (for when the default Create placement isn't desired). [#10238](https://github.com/microsoft/vscode-cpptools/issues/10238), [#10942](https://github.com/microsoft/vscode-cpptools/issues/10942)
|
||||
|
||||
### Enhancements
|
||||
* Add support for other glob pattern syntax, such as `[]` and `^`. [#8960](https://github.com/microsoft/vscode-cpptools/issues/8960)
|
||||
* Add support for C++23 z/Z and zu/ZU suffixes in clang/gcc modes. [#10190](https://github.com/microsoft/vscode-cpptools/issues/10190)
|
||||
|
||||
### Bug Fixes
|
||||
* Fix an IntelliSense parsing bug with C++20 ranges. [#8039](https://github.com/microsoft/vscode-cpptools/issues/8039)
|
||||
* Fix an IntelliSense bug with user-defined floating-point literals. [#10837](https://github.com/microsoft/vscode-cpptools/issues/10837)
|
||||
* Fix deadlock with Find All References. [#10855](https://github.com/microsoft/vscode-cpptools/issues/10855)
|
||||
* Fix performance issues on machines with > 32 threads. [#10874](https://github.com/microsoft/vscode-cpptools/issues/10874)
|
||||
* Fix localization of "C/C++ Configurations". [#10907](https://github.com/microsoft/vscode-cpptools/issues/10907)
|
||||
* Fix the workspace folder not getting added to the browse.path in some cases. [#10914](https://github.com/microsoft/vscode-cpptools/issues/10914)
|
||||
* Fix incorrect Apple clang to LLVM clang version mappings. [#10920](https://github.com/microsoft/vscode-cpptools/issues/10920)
|
||||
* Revert -fms-extensions being added for mingw compilers by default (due to bugs). [#10940](https://github.com/microsoft/vscode-cpptools/issues/10940)
|
||||
* Fix the "known compilers" list not getting updated with "user compilers". [#10943](https://github.com/microsoft/vscode-cpptools/issues/10943)
|
||||
* Fix cancelation of Find All References while confirming references. [#10947](https://github.com/microsoft/vscode-cpptools/issues/10947)
|
||||
* Fix a bug with workspace parsing status. [PR #10974](https://github.com/microsoft/vscode-cpptools/pull/10974)
|
||||
* Fix a bug that could cause incomplete reading of stdout/stderr of child processes on Windows.
|
||||
* Fix incorrect "declaration is incompatible" IntelliSense errors.
|
||||
* Fix some potential crashes.
|
||||
|
||||
## Version 1.15.4: May 1, 2023
|
||||
### Enhancements
|
||||
* Support multiple natvis files in `visualizerFile`. [#925](https://github.com/microsoft/vscode-cpptools/issues/925)
|
||||
* Enable error squiggles for single file mode if includes resolve. [#10062](https://github.com/microsoft/vscode-cpptools/issues/10062)
|
||||
* Improve the description of the `C_Cpp.codeAnalysis.clangTidy.enabled` setting. [#10454](https://github.com/microsoft/vscode-cpptools/issues/10454)
|
||||
* Add a 'Select an IntelliSense configuration' code action and error message for standard headers which can't be found. [#10531](https://github.com/microsoft/vscode-cpptools/issues/10531)
|
||||
* Change the 'Edit "includePath" setting' code action to reference "compilerPath" for missing system includes. [#10675](https://github.com/microsoft/vscode-cpptools/issues/10675)
|
||||
* Add a "Configure IntelliSense" status bar warning (currently controlled by an experiment). [#10685](https://github.com/microsoft/vscode-cpptools/issues/10685)
|
||||
* Re-enable an updated C/C++ walkthrough (currently only available for some users). [PR #10707](https://github.com/microsoft/vscode-cpptools/pull/10707)
|
||||
* Update to clang-format/tidy 16. [#10725](https://github.com/microsoft/vscode-cpptools/issues/10725)
|
||||
* Move the configuration status bar item out of the language status UI. [#10755](https://github.com/microsoft/vscode-cpptools/issues/10755)
|
||||
* Change `Select Default Compiler` to `Select IntelliSense Configuration` with configuration providers and compile commands added. [#10756](https://github.com/microsoft/vscode-cpptools/issues/10756)
|
||||
|
||||
### Bug Fixes
|
||||
* Support use of `ccache`, 'sccache', and 'clcache' in `compilerPath` and `compile_commands.json` command lines. [#7616](https://github.com/microsoft/vscode-cpptools/issues/7616)
|
||||
* Enable `-fms-extensions` by default for Cygwin and MinGW. [#8353](https://github.com/microsoft/vscode-cpptools/issues/8353)
|
||||
* Fix incorrect, excessive logging with compile commands. [#9865](https://github.com/microsoft/vscode-cpptools/issues/9865)
|
||||
* Fix IntelliSense errors with C++ 20 range and span. [#10024](https://github.com/microsoft/vscode-cpptools/issues/10024), [#10252](https://github.com/microsoft/vscode-cpptools/issues/10252)
|
||||
* Fix two vcFormat settings being inverted. [#10262](https://github.com/microsoft/vscode-cpptools/issues/10262), [#10263](https://github.com/microsoft/vscode-cpptools/issues/10263)
|
||||
* Fix 'Create Declaration / Definition' making modifications to files outside the workspace folder. [#10402](https://github.com/microsoft/vscode-cpptools/issues/10402)
|
||||
* Fix code analysis when `--use-color=true` is used. [#10407](https://github.com/microsoft/vscode-cpptools/issues/10407)
|
||||
* Fix IntelliSense errors with CUDA. [#10455](https://github.com/microsoft/vscode-cpptools/issues/10455)
|
||||
* Fix random save failures while code analysis is running on the saved file. [#10482](https://github.com/microsoft/vscode-cpptools/issues/10482)
|
||||
* Fix the compile commands prompt setting `compileCommands` to a `compile_commands.json` in a different workspace folder. [#10588](https://github.com/microsoft/vscode-cpptools/issues/10588)
|
||||
* Fix code analysis with `_Float16`. [#10610](https://github.com/microsoft/vscode-cpptools/issues/10610)
|
||||
* Fix code analysis with c23/gnu23. [#10615](https://github.com/microsoft/vscode-cpptools/issues/10615)
|
||||
* Fix 'Reset IntelliSense Database' being delayed until parsing is finished. [#10616](https://github.com/microsoft/vscode-cpptools/issues/10616)
|
||||
* Fix uncaught exception with some configuration providers. [#10634](https://github.com/microsoft/vscode-cpptools/issues/10634)
|
||||
* Fix crashes with a multi-root workspace. [#10636](https://github.com/microsoft/vscode-cpptools/issues/10636)
|
||||
* Fix bugs with the "You do not have IntelliSense configured" prompt. [#10658](https://github.com/microsoft/vscode-cpptools/issues/10658), [#10659](https://github.com/microsoft/vscode-cpptools/issues/10659)
|
||||
* Fix random failures when adding or removing workspace folders. [PR #10665](https://github.com/microsoft/vscode-cpptools/pull/10665)
|
||||
* Fix missing clang-tidy checks setting values. [#10667](https://github.com/microsoft/vscode-cpptools/issues/10667)
|
||||
* Fix 'Select IntelliSense configuration' so that it works if it's already set in the workspace or workspace folder settings. [#10674](https://github.com/microsoft/vscode-cpptools/issues/10674)
|
||||
* Fix clang-tidy 'clang-analyzer-' documentation links not working. [#10678](https://github.com/microsoft/vscode-cpptools/issues/10678)
|
||||
* Fix the browse configuration provider cache not getting cleared. [#10692](https://github.com/microsoft/vscode-cpptools/issues/10692), [#10877](https://github.com/microsoft/vscode-cpptools/issues/10877)
|
||||
* Fix a crash with recursive environment variables on Windows. [#10704](https://github.com/microsoft/vscode-cpptools/issues/10704)
|
||||
* Fix `#import` of `.tlb` files failing due to `/Fo` arguments to `cl.exe` not being processed. [#10710](https://github.com/microsoft/vscode-cpptools/issues/10710)
|
||||
* Fix `cppbuild` tasks not using the workspace folder as the `cwd` by default. [#10742](https://github.com/microsoft/vscode-cpptools/issues/10742)
|
||||
* Fix lots of IntelliSense processes getting launched after a Find/Replace operation (potentially freezing the OS). [#10743](https://github.com/microsoft/vscode-cpptools/issues/10743)
|
||||
* Fix workspace folder variable resolution with `clang_format_style`. [#10752](https://github.com/microsoft/vscode-cpptools/issues/10752)
|
||||
* For remote attach, use an absolute `/bin/sh` path on Linux. [PR #10765](https://github.com/microsoft/vscode-cpptools/pull/10765)
|
||||
* Fix the first registered configuration provider still being automatically used after a second registers. [PR #10772](https://github.com/microsoft/vscode-cpptools/pull/10772)
|
||||
* Fix `C_Cpp.default.compilerPath` in the settings UI showing a string editor when it shouldn't. [#10795](https://github.com/microsoft/vscode-cpptools/issues/10795)
|
||||
* Fix some issues due to usage of the spread operator not doing a deep copy. [PR #10803](https://github.com/microsoft/vscode-cpptools/pull/10803)
|
||||
* Fix a deadlock with Find All References. [#10855](https://github.com/microsoft/vscode-cpptools/issues/10855)
|
||||
* Fix the Code Analysis Options dropdown showing 'Resume' instead of 'Pause' after a cancel is done in a paused state. [#10879](https://github.com/microsoft/vscode-cpptools/issues/10879)
|
||||
* Fix "Code Analysis Mode" not being localized when initially shown. [#10881](https://github.com/microsoft/vscode-cpptools/issues/10881)
|
||||
* Fix the C/C++-related status bar items flickering off/on when switching documents. [PR #10888](https://github.com/microsoft/vscode-cpptools/pull/10888)
|
||||
* Fix `__GXX_RTTI` incorrectly being defined by IntelliSense with clang and `-fms-compatibility`.
|
||||
* Reduce the likelihood of an `onWillSaveWaitUntil` timeout.
|
||||
* Fix an IntelliSense crash with C++20 concepts.
|
||||
* Stop querying clang-cl.exe as C.
|
||||
|
||||
## Version 1.14.5: March 22, 2023
|
||||
### Bug Fix
|
||||
* Fix a deadlock with a multi-root workspace. [#10719](https://github.com/microsoft/vscode-cpptools/issues/10719)
|
||||
|
||||
## Version 1.14.4: February 28, 2023
|
||||
### Enhancements
|
||||
* Add `c23` and `c2x` support for clang and gcc modes. [#7471](https://github.com/microsoft/vscode-cpptools/issues/7471)
|
||||
* Filter out clang-tidy `#pragma once in main file` warnings. [#10539](https://github.com/microsoft/vscode-cpptools/issues/10539)
|
||||
* Auto-configure `configurationProvider` even if `default.compilerPath` is set. [PR #10607](https://github.com/microsoft/vscode-cpptools/pull/10607)
|
||||
|
||||
### Bug Fixes
|
||||
* Fix `--` in args making compiler querying fail. [#10529](https://github.com/microsoft/vscode-cpptools/issues/10529)
|
||||
* Fix every .C file being opened in a compile_commands.json if it's build for C++. [#10540](https://github.com/microsoft/vscode-cpptools/issues/10540)
|
||||
* Fix `-std=c++` not being used in compile_commands.json for .C files. [#10541](https://github.com/microsoft/vscode-cpptools/issues/10541)
|
||||
* Fix a crash when an error occurs in a forced include. [#10598](https://github.com/microsoft/vscode-cpptools/issues/10598)
|
||||
* Fix the configuration provider browse cache not getting cleared. [PR #10608](https://github.com/microsoft/vscode-cpptools/pull/10608)
|
||||
* Fix a bug that could cause IntelliSense to randomly stop updating.
|
||||
* Fix some random failures that could happen during database deletion.
|
||||
* Fix some random crashes on shutdown.
|
||||
|
||||
## Version 1.14.3: February 14, 2023
|
||||
### New Features
|
||||
* Add recursive macro expansion on hover. [#3579](https://github.com/microsoft/vscode-cpptools/issues/3579)
|
||||
* Move status bar items to the language status UI. [#8405](https://github.com/microsoft/vscode-cpptools/issues/8405)
|
||||
* This may not be enabled for all users unless `C_Cpp.experimentalFeatures` is `true`.
|
||||
* Add the 'Select Default Compiler' command that lets you choose a default compiler to configure IntelliSense. [#10027](https://github.com/microsoft/vscode-cpptools/issues/10027)
|
||||
|
||||
### Enhancements
|
||||
* Exclude rename results external to the workspace. [#9235](https://github.com/microsoft/vscode-cpptools/issues/9235)
|
||||
* Add error messages for Create Declaration / Definition. [#10163](https://github.com/microsoft/vscode-cpptools/issues/10163)
|
||||
* Add support for LLVM-based Intel C/C++ compilers. [#10218](https://github.com/microsoft/vscode-cpptools/issues/10218)
|
||||
* SSH output improvements. [PR #10292](https://github.com/microsoft/vscode-cpptools/pull/10292)
|
||||
* Reorder commands in the code action context menu. [#10400](https://github.com/microsoft/vscode-cpptools/issues/10400)
|
||||
* Add Ada to supported languages for debugging. [#10475](https://github.com/microsoft/vscode-cpptools/issues/10475)
|
||||
* Anthony Leonardo Gracio (@AnthonyLeonardoGracio) [PR #10476](https://github.com/microsoft/vscode-cpptools/pull/10476)
|
||||
|
||||
### Bug Fixes
|
||||
* Fix usage of relative paths in IntelliSense configuration settings with multi-root workspaces. [#4983](https://github.com/microsoft/vscode-cpptools/issues/4983)
|
||||
* Fix infinite recursion in scout_parser. [#8898](https://github.com/microsoft/vscode-cpptools/issues/8898)
|
||||
* Fix an IntelliSense crash with the seqan3 library. [#8956](https://github.com/microsoft/vscode-cpptools/issues/8956)
|
||||
* Fix looping between C and C++. [#9689](https://github.com/microsoft/vscode-cpptools/issues/9689)
|
||||
* Fix Doxygen comments for the function signature being autogenerated when typing inside a function. [#9742](https://github.com/microsoft/vscode-cpptools/issues/9742)
|
||||
* Show a reload prompt after `C_Cpp.hover` is changed. [#10076](https://github.com/microsoft/vscode-cpptools/issues/10076)
|
||||
* Fix function inlay hints not working with `std::string_literal` arguments. [#10078](https://github.com/microsoft/vscode-cpptools/issues/10078)
|
||||
* Fix IntelliSense completion for `std::string` with `?:` and `string()`. [#10103](https://github.com/microsoft/vscode-cpptools/issues/10103)
|
||||
* Fix semantic colorization not working in a certain case. [#10105](https://github.com/microsoft/vscode-cpptools/issues/10105)
|
||||
* Fix IntelliSense completion not working inside constructor calls that are incomplete. [#10111](https://github.com/microsoft/vscode-cpptools/issues/10111)
|
||||
* Fix changes to the enclosing type not being taken into account after "Create Declaration / Definition" is used once. [#10162](https://github.com/microsoft/vscode-cpptools/issues/10162)
|
||||
* Fix "False positive expression must have a constant value with __builtin_choose_expr in _Static_assert". [#10168](https://github.com/microsoft/vscode-cpptools/issues/10168)
|
||||
* Fix Create Declaration / Definition with an anonymous namespace. [#10189](https://github.com/microsoft/vscode-cpptools/issues/10189)
|
||||
* Fix file exclusions not being applied to the first directory found for each browse.path entry. [#10205](https://github.com/microsoft/vscode-cpptools/issues/10205)
|
||||
* Fix IntelliSense mode auto-detection for VS 2015 compiler paths. [#10207](https://github.com/microsoft/vscode-cpptools/issues/10207)
|
||||
* Fix clang-cl 15 querying with /WX. [#10221](https://github.com/microsoft/vscode-cpptools/issues/10221)
|
||||
* Fix an incorrect IntelliSense error with `std::bind`, c++17, and windows-msvc-arm64 mode. [#10304](https://github.com/microsoft/vscode-cpptools/issues/10304)
|
||||
* Fix vcFormat when using lambda functions. [#10326](https://github.com/microsoft/vscode-cpptools/issues/10326)
|
||||
* Fix IntelliSense crash in field_for_lambda_capture. [#10359](https://github.com/microsoft/vscode-cpptools/issues/10359)
|
||||
* Fix for cpptools getting shutdown after waking up from sleep. [#10362](https://github.com/microsoft/vscode-cpptools/issues/10362)
|
||||
* Fix an IntelliSense crash when using the French language pack. [#10374](https://github.com/microsoft/vscode-cpptools/issues/10374)
|
||||
* Fix the process id picker only showing part of the process on a remote machine. [#10379](https://github.com/microsoft/vscode-cpptools/issues/10379)
|
||||
* Fix temp files generating at the incorrect path. [#10386](https://github.com/microsoft/vscode-cpptools/issues/10386)
|
||||
* Fix a crash in extractArgs. [PR #10394](https://github.com/microsoft/vscode-cpptools/pull/10394)
|
||||
* Fix a bug with settings changes not being handled correctly for multi-root. [PR #10458](https://github.com/microsoft/vscode-cpptools/pull/10458)
|
||||
|
||||
## Version 1.13.9: January 4, 2023
|
||||
### Bug Fix
|
||||
* Fix clang-format and clang-tidy not working for macOS 11 arm64. [#10282](https://github.com/microsoft/vscode-cpptools/issues/10282)
|
||||
|
||||
## Version 1.13.8: December 15, 2022
|
||||
### Bug Fixes
|
||||
* Fix tag parser failure on machines with multiple extension users. [#10224](https://github.com/microsoft/vscode-cpptools/issues/10224)
|
||||
* Fix a `--using_directory` IntelliSense error if LIBPATH is defined with non-msvc IntelliSense modes. [#10249](https://github.com/microsoft/vscode-cpptools/issues/10249)
|
||||
* Fix a crash when the configuration name is missing. [#10251](https://github.com/microsoft/vscode-cpptools/issues/10251)
|
||||
|
||||
## Version 1.13.7: December 8, 2022
|
||||
### Bug Fix
|
||||
* Fix `files.associations` not working. [#10244](https://github.com/microsoft/vscode-cpptools/issues/10244)
|
||||
|
||||
## Version 1.13.6: December 6, 2022
|
||||
### New Features
|
||||
* Add the ability to generate definitions from declarations and vice versa. [#664](https://github.com/microsoft/vscode-cpptools/issues/664)
|
||||
* Add SSH Target Selector. [PR #9760](https://github.com/microsoft/vscode-cpptools/pull/9760)
|
||||
* Add rsync support in deploySteps. [PR #9808](https://github.com/microsoft/vscode-cpptools/pull/9808)
|
||||
|
||||
### Enhancements
|
||||
* Add `C_Cpp.caseSensitiveFileSupport` for enabling case sensitive file handling on Windows. [#1994](https://github.com/microsoft/vscode-cpptools/issues/1994)
|
||||
* Add sections to settings. [#8237](https://github.com/microsoft/vscode-cpptools/issues/8237)
|
||||
* Make Doxygen hover comments customizable with `C_Cpp.doxygen.sectionTags`. [#8525](https://github.com/microsoft/vscode-cpptools/issues/8525)
|
||||
* Add better build and debug task handling for when a compiler or debugger doesn't exist. [#8836](https://github.com/microsoft/vscode-cpptools/issues/8836)
|
||||
* Delay applying `c_cpp_properties.json` changes until after a save. [#9185](https://github.com/microsoft/vscode-cpptools/issues/9185)
|
||||
* Create directories on Linux/Mac with 755 instead of 777 permissions. [#9670](https://github.com/microsoft/vscode-cpptools/issues/9670)
|
||||
* Check for MSVC environment variables for configuring IntelliSense. [#9745](https://github.com/microsoft/vscode-cpptools/issues/9745)
|
||||
* Enable the inlay hint settings to be set per-workspace folder. [#9782](https://github.com/microsoft/vscode-cpptools/issues/9782)
|
||||
* Add a `C_Cpp.hover` setting to enable disabling hover results. [#9793](https://github.com/microsoft/vscode-cpptools/issues/9793)
|
||||
* Update to clang-format and clang-tidy 15.0.3. [#9816](https://github.com/microsoft/vscode-cpptools/issues/9816)
|
||||
* Enable hiding the SSH Targets view with the `C_Cpp.sshTargetsView` setting. [#9836](https://github.com/microsoft/vscode-cpptools/issues/9836)
|
||||
* Change "Enabled", "Disabled", "Default" settings to camelCase. [PR #9862](https://github.com/microsoft/vscode-cpptools/pull/9862)
|
||||
* Add support for C++ modules IFC version 0.42. [#9884](https://github.com/microsoft/vscode-cpptools/issues/9884)
|
||||
* Add SSH terminal for targets. [PR #9895](https://github.com/microsoft/vscode-cpptools/pull/9895)
|
||||
* Make array settings give a warning for duplicates. [PR #9959](https://github.com/microsoft/vscode-cpptools/pull/9959)
|
||||
* Add "iar" and "armcc5" problem matchers. [#10054](https://github.com/microsoft/vscode-cpptools/issues/10054)
|
||||
* Michael (@morsisko) [PR #10085](https://github.com/microsoft/vscode-cpptools/pull/10085), [PR #10101](https://github.com/microsoft/vscode-cpptools/pull/10101)
|
||||
* Pass `--Wno-error=unknown` to clang-format (12 or newer) to avoid failing on unsupported settings. [#10072](https://github.com/microsoft/vscode-cpptools/issues/10072)
|
||||
* Add support for `/cygdrive` paths returned by some versions of Cygwin. [#10112](https://github.com/microsoft/vscode-cpptools/issues/10112)
|
||||
* Switch from RapidJSON to VS's internal JSON parser.
|
||||
|
||||
### Bug Fixes
|
||||
* Fix "final" breaking formatting. [#6638](https://github.com/microsoft/vscode-cpptools/issues/6638)
|
||||
* Fix incorrect "expected concept name" IntelliSense error. [#6876](https://github.com/microsoft/vscode-cpptools/issues/6876)
|
||||
* Fix incorrect Outline view with C++20 namespace ::inline syntax. [#7216](https://github.com/microsoft/vscode-cpptools/issues/7216)
|
||||
* Fix updates to compile_commands.json not being handled if specified using a relative path. [#7610](https://github.com/microsoft/vscode-cpptools/issues/7610)
|
||||
* Fix variadic macros not expanding correctly. [#8178](https://github.com/microsoft/vscode-cpptools/issues/8178)
|
||||
* Fix the `editor.parameterHints.enabled` setting not being used when `C_Cpp.autocompleteAddParentheses` is `true`. [#9314](https://github.com/microsoft/vscode-cpptools/issues/9314)
|
||||
* Fix IntelliSense bug "A result type of `__builtin_choose_expr` that returns a pointer to a function is not correctly inferred in clang mode". [#9368](https://github.com/microsoft/vscode-cpptools/issues/9368)
|
||||
* Fix some invalid macro redefinition errors. [#9435](https://github.com/microsoft/vscode-cpptools/issues/9435)
|
||||
* Fix wordexp sometimes getting stuck on Mac (and Linux). [#9688](https://github.com/microsoft/vscode-cpptools/issues/9688)
|
||||
* Fix ctrl+space completion for Doxygen tags. [#9732](https://github.com/microsoft/vscode-cpptools/issues/9732)
|
||||
* Fix the position of inlay parameter hints when using at or operator[]. [#9741](https://github.com/microsoft/vscode-cpptools/issues/9741)
|
||||
* Fix `-std=` being passed to clang-tidy in certain cases . [#9776](https://github.com/microsoft/vscode-cpptools/issues/9776)
|
||||
* Fix `${workspaceFolder}` not being resolved in `C_Cpp.clang_format_style`. [#9786](https://github.com/microsoft/vscode-cpptools/issues/9786)
|
||||
* Fix debugger visualization for ArrayItem elements more than 1000. [#9801](https://github.com/microsoft/vscode-cpptools/issues/9801)
|
||||
* Fix extra comma in the generated the `(gdb) attach` configuration in `launch.json`. [#9818](https://github.com/microsoft/vscode-cpptools/issues/9818)
|
||||
* Fix IntelliSense crash with range-v3 `ranges::views::addressof`. [#9870](https://github.com/microsoft/vscode-cpptools/issues/9870)
|
||||
* Fix slow compiler querying. [#9882](https://github.com/microsoft/vscode-cpptools/issues/9882)
|
||||
* Handle `-fexperimental-library` clang argument. [#9888](https://github.com/microsoft/vscode-cpptools/issues/9888)
|
||||
* Fix compiler querying with multiple -arch. [#9894](https://github.com/microsoft/vscode-cpptools/issues/9894)
|
||||
* Fix code analysis errors related to SSE being enabled when gcc is used. [#9898](https://github.com/microsoft/vscode-cpptools/issues/9898)
|
||||
* Fix issue with parsing SSH configurations that could cause the extension to fail to activate. [#9933](https://github.com/microsoft/vscode-cpptools/pull/9933)
|
||||
* Fix inlay hints showing "type" for lambdas in certain cases. [#9971](https://github.com/microsoft/vscode-cpptools/issues/9971)
|
||||
* Resolve variables for `C_Cpp.codeAnalysis.clangTidy.args` and `headerFilter`. [#9981](https://github.com/microsoft/vscode-cpptools/issues/9981), [#9996](https://github.com/microsoft/vscode-cpptools/issues/9996)
|
||||
* Fix some translations. [#9986](https://github.com/microsoft/vscode-cpptools/issues/9986), [#10011](https://github.com/microsoft/vscode-cpptools/issues/10011), [#10012](https://github.com/microsoft/vscode-cpptools/issues/10012), [#10013](https://github.com/microsoft/vscode-cpptools/issues/10013)
|
||||
* Fix "Step Over past a logpoint stops at the wrong place". [#9995](https://github.com/microsoft/vscode-cpptools/issues/9995)
|
||||
* Disable the "Generate Doxygen Comment" context menu when IntelliSense is disabled. [PR #10007](https://github.com/microsoft/vscode-cpptools/pull/10007)
|
||||
* Fix Doxygen code action from appearing on a function that already has a `*/` comment. [#10009](https://github.com/microsoft/vscode-cpptools/issues/10009)
|
||||
* Fix clang-tidy and clang-format not working on CentOS7 and other Linux OS's without glibc 2.27 or greater. [#10019](https://github.com/microsoft/vscode-cpptools/issues/10019)
|
||||
* Fix various bugs with the `C_Cpp.codeAnalysis.clangTidy.headerFilter` setting. [#10023](https://github.com/microsoft/vscode-cpptools/issues/10023)
|
||||
* Fix Doxygen comment generation when there's a selection. [#10028](https://github.com/microsoft/vscode-cpptools/issues/10028)
|
||||
* Fix issue that could cause document corruption. [#10035](https://github.com/microsoft/vscode-cpptools/issues/10035)
|
||||
* Fixed crash on Linux/Mac when a full command line is specified in `compilerPath` containing invalid arguments. [PR #10070](https://github.com/microsoft/vscode-cpptools/pull/10070)
|
||||
* Fix random "Failed to spawn IntelliSense process: 65520" on Mac. [#10091](https://github.com/microsoft/vscode-cpptools/issues/10091)
|
||||
* Fix debugger throwing error "stdout maxBuffer exceeded". [10107](https://github.com/microsoft/vscode-cpptools/issues/10107)
|
||||
* Fix "Can't attach to process on Windows: Unexpected token \ in JSON". [#10108](https://github.com/microsoft/vscode-cpptools/issues/10108)
|
||||
* Fix "Don't hardcode path to kill in UnixUtilities". [#10124](https://github.com/microsoft/vscode-cpptools/issues/10124)
|
||||
* Ellie Hermaszewska (@expipiplus1) [PR #1373](https://github.com/microsoft/MIEngine/pull/1373)
|
||||
* Fix formatting when clang-format 11 or earlier is used (and another issue for version 8 or earlier). [#10178](https://github.com/microsoft/vscode-cpptools/issues/10178)
|
||||
* Fix "Natvis: are multi-dimensional arrays supported in gdb natvis?". [MIEngine#980](https://github.com/microsoft/MIEngine/issues/980)
|
||||
* Fix include completion sorting extensionless headers (e.g. string) after headers with an extension (e.g. string.h).
|
||||
* Fix extensionHost logging an error related to onWillSaveTextDocument whenever a save is done.
|
||||
* Fix random "Failed to spawn IntelliSense process" on Mac.
|
||||
* Fix a deadlock when IntelliSense errors are updating.
|
||||
* Fix redundant rescan when adding a workspace folder.
|
||||
|
||||
### Removed Feature
|
||||
* Removed explicit WSL support in favor of using the WSL extension. [PR #10066](https://github.com/microsoft/vscode-cpptools/pull/10066)
|
||||
|
||||
## Version 1.12.4: August 31, 2022
|
||||
### Other
|
||||
* Revert changes to telemetry key format. [PR #9822](https://github.com/microsoft/vscode-cpptools/pull/9822)
|
||||
|
||||
## Version 1.12.3: August 30, 2022
|
||||
### New Features
|
||||
* Add Doxygen comment generation via command, context menu, code action, or typing. [#5683](https://github.com/microsoft/vscode-cpptools/issues/5683)
|
||||
@@ -120,7 +356,7 @@
|
||||
* Fix Go to Definition with C for identifiers that are C++ keywords. [#9081](https://github.com/microsoft/vscode-cpptools/issues/9081)
|
||||
* Fix the new Run/Debug Code button not working with a modified program location. [#9082](https://github.com/microsoft/vscode-cpptools/issues/9082)
|
||||
* Fix `__GNUC__` system defines causing clang-tidy to undefine `_Float32`. [#9091](https://github.com/microsoft/vscode-cpptools/issues/9091)
|
||||
* Fix 'breakpoints set before launch in shared objects cannot be disabled/deleted' [#9095]([https://github.com/microsoft/vscode-cpptools/issues/9095)
|
||||
* Fix 'breakpoints set before launch in shared objects cannot be disabled/deleted' [#9095](https://github.com/microsoft/vscode-cpptools/issues/9095)
|
||||
* Fix compiler querying failing for compilers that don't output system includes. [#9099](https://github.com/microsoft/vscode-cpptools/issues/9099)
|
||||
* Fix completion occurring (when it shouldn't) after the comma in a definition list. [#9101](https://github.com/microsoft/vscode-cpptools/issues/9101)
|
||||
* Fix `;` incorrectly matching for `break;` and `continue;` completion. [#9115](https://github.com/microsoft/vscode-cpptools/issues/9115)
|
||||
@@ -173,7 +409,7 @@
|
||||
* Fix a crash when visualizing local variables for Microsoft Edge (msedge.exe) [#8738](https://github.com/microsoft/vscode-cpptools/issues/8738)
|
||||
* Fix some system defines being incorrectly removed when running code analysis. [#8740](https://github.com/microsoft/vscode-cpptools/issues/8740)
|
||||
* Prevent an error from being logged due to custom configuration processing prior to the provider being ready. [#8752](https://github.com/microsoft/vscode-cpptools/issues/8752)
|
||||
* Fix incorrect crash recovery with multiroot. [#8762](https://github.com/microsoft/vscode-cpptools/issues/8762)
|
||||
* Fix incorrect crash recovery with multi-root. [#8762](https://github.com/microsoft/vscode-cpptools/issues/8762)
|
||||
* Fix random compiler query, clang-tidy, or clang-format failure on Windows. [#8764](https://github.com/microsoft/vscode-cpptools/issues/8764)
|
||||
* Fix invoking commands before cpptools is activated. [#8785](https://github.com/microsoft/vscode-cpptools/issues/8785)
|
||||
* Fix a bug on Windows with semantic tokens updating. [#8799](https://github.com/microsoft/vscode-cpptools/issues/8799)
|
||||
@@ -488,7 +724,7 @@
|
||||
* Fix integrity hash checking of downloaded packages for the extension. [PR #7300](https://github.com/microsoft/vscode-cpptools/pull/7300)
|
||||
* Fix a bug preventing successful validation and receipt of browse configurations from custom configuration providers. [PR# 7131](https://github.com/microsoft/vscode-cpptools/pull/7313)
|
||||
* Fix a potential crash when editing at the end of a document.
|
||||
* Fix "Configure Task" selection to show root folder names for multiroot workspace [PR #7315](https://github.com/microsoft/vscode-cpptools/pull/7315)
|
||||
* Fix "Configure Task" selection to show root folder names for multi-root workspace [PR #7315](https://github.com/microsoft/vscode-cpptools/pull/7315)
|
||||
|
||||
## Version 1.2.2: February 25, 2021
|
||||
### Bug Fixes
|
||||
@@ -658,7 +894,7 @@
|
||||
* Fix `Build and Debug Active File` race condition with EngineLogs. [#6304](https://github.com/microsoft/vscode-cpptools/pull/6304)
|
||||
* Fix changes to some `c_cpp_properties.json` properties not taking effect (until a reload) if `compileCommands` is set. [#6332](https://github.com/microsoft/vscode-cpptools/issues/6332)
|
||||
* Fix issue with compiler querying not handling various clang command line options correctly. [#6356](https://github.com/microsoft/vscode-cpptools/issues/6356), [#6359](https://github.com/microsoft/vscode-cpptools/issues/6359)
|
||||
* Fix multiroot workspace tag parsing when `compileCommands` is set. [#6383](https://github.com/microsoft/vscode-cpptools/issues/6383)
|
||||
* Fix multi-root workspace tag parsing when `compileCommands` is set. [#6383](https://github.com/microsoft/vscode-cpptools/issues/6383)
|
||||
* Fix mingw32 compilers not being detected. [#6394](https://github.com/microsoft/vscode-cpptools/issues/6394)
|
||||
* Various bug fixes for vcFormat. [PR #6408](https://github.com/microsoft/vscode-cpptools/pull/6408)
|
||||
* Fix issue causing zh-cn and zh-tw language files not to be used. [PR #6418](https://github.com/microsoft/vscode-cpptools/pull/6418)
|
||||
@@ -713,7 +949,7 @@
|
||||
* Get the default target of the compiler. If the default target is ARM/ARM64, do not use the generic "--target" option to determine bitness. [#5772](https://github.com/microsoft/vscode-cpptools/issues/5772)
|
||||
* Fix `compilerArgs` not being used if no `compilerPath` is set. [#5776](https://github.com/microsoft/vscode-cpptools/issues/5776)
|
||||
* Fix an incorrect IntelliSense error squiggle. [#5783](https://github.com/microsoft/vscode-cpptools/issues/5783)
|
||||
* Fix semantic colorization and inactive regions for multiroot workspaces. [#5812](https://github.com/microsoft/vscode-cpptools/issues/5812), [#5828](https://github.com/microsoft/vscode-cpptools/issues/5828)
|
||||
* Fix semantic colorization and inactive regions for multi-root workspaces. [#5812](https://github.com/microsoft/vscode-cpptools/issues/5812), [#5828](https://github.com/microsoft/vscode-cpptools/issues/5828)
|
||||
* Fix bug with cl.exe flags /FU and /FI not being processed. [#5819](https://github.com/microsoft/vscode-cpptools/issues/5819)
|
||||
* Fix `cStandard` being set to `c11` instead of `gnu18` with gcc. [#5834](https://github.com/microsoft/vscode-cpptools/issues/5834)
|
||||
* Fix Doxygen parameterHint comment to display for a parameter name that is followed by colon. [#5836](https://github.com/microsoft/vscode-cpptools/issues/5836)
|
||||
@@ -834,7 +1070,7 @@
|
||||
* Fix the "Unable to load schema" error for `c_cpp_properties.json`. [#4841](https://github.com/microsoft/vscode-cpptools/issues/4841)
|
||||
* Change "Visual Studio" `clang_format_fallback_style` setting to use NamespaceIndentation All. [#5124](https://github.com/microsoft/vscode-cpptools/issues/5124)
|
||||
* Fix "C++98" and "C++0x" modes. [#5157](https://github.com/microsoft/vscode-cpptools/issues/5157), [#5225](https://github.com/microsoft/vscode-cpptools/issues/5225)
|
||||
* Improve the error message for multiroot projects using `compile_commands.json`. [#5160](https://github.com/microsoft/vscode-cpptools/issues/5160)
|
||||
* Improve the error message for multi-root projects using `compile_commands.json`. [#5160](https://github.com/microsoft/vscode-cpptools/issues/5160)
|
||||
* Fix some cpptools process crashes. [#5280](https://github.com/microsoft/vscode-cpptools/issues/5280)
|
||||
* Avoid `<…>` truncation on hover. [#5291](https://github.com/microsoft/vscode-cpptools/issues/5291)
|
||||
* Fix incorrect translations. [PR #5300](https://github.com/microsoft/vscode-cpptools/pull/5300)
|
||||
@@ -852,7 +1088,7 @@
|
||||
|
||||
## Version 0.27.0: March 30, 2020
|
||||
### Enhancements
|
||||
* Improved multi-root implementation with a single language server process and database for the entire workspace (shared between workspace folders). Fixes most [multi-root bugs](https://github.com/microsoft/vscode-cpptools/issues?q=is%3Aopen+is%3Aissue+label%3A%22Feature%3A+Multiroot%22+label%3A%22fixed+%28release+pending%29%22+milestone%3A0.27.0).
|
||||
* Improved multi-root implementation with a single language server process and database for the entire workspace (shared between workspace folders). Fixes most [multi-root bugs](https://github.com/microsoft/vscode-cpptools/issues?q=is%3Aopen+is%3Aissue+label%3A%22Feature%3A+Multi-root%22+label%3A%22fixed+%28release+pending%29%22+milestone%3A0.27.0).
|
||||
* Update to clang-format 9.0.1 (and without shared library dependencies). [#2887](https://github.com/microsoft/vscode-cpptools/issues/2887), [#3174](https://github.com/microsoft/vscode-cpptools/issues/3174)
|
||||
* Add new setting `C_Cpp.debugger.useBacktickCommandSubstitution` to fix debugging when CShell is the remote default shell. [#4015](https://github.com/microsoft/vscode-cpptools/issues/4015)
|
||||
* @Helloimbob [PR #5053](https://github.com/microsoft/vscode-cpptools/pull/5053)
|
||||
|
||||
@@ -29,4 +29,4 @@
|
||||
|
||||
<p data-loc-id="reinstall.extension.text7">Then reinstall via the marketplace UI in VS Code.</p>
|
||||
|
||||
<p data-loc-id="reinstall.extension.text8">If the correct version of the extension fails to be deployed by VS Code, the correct VSIX for your system can be <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools" data-loc-id="download.vsix.link.title">downloaded from the VS Code marketplace web site</a> and installed using the `Install from VSIX...` option under the '...' menu in the marketplace UI in VS Code.</p>
|
||||
<p data-loc-id="reinstall.extension.text8">If the correct version of the extension fails to be deployed by VS Code, the correct VSIX for your system can be <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools" data-loc-id="download.vsix.link.title">downloaded from the VS Code marketplace web site</a> and installed using the 'Install from VSIX...' option under the '...' menu in the marketplace UI in VS Code.</p>
|
||||
|
||||
+831
-213
File diff suppressed because it is too large
Load Diff
@@ -180,7 +180,7 @@
|
||||
"Použití '&' na pole nemá žádný účinek.",
|
||||
"Pravý operand %% je nula.",
|
||||
"Argument je nekompatibilní s formálním parametrem.",
|
||||
"Argument je nekompatibilní s odpovídající konverzí formátovacího řetězce.",
|
||||
"Argument není kompatibilní s odpovídajícím převodem formátovacího řetězce (očekával se typ %t1, ale argument má typ %t2).",
|
||||
"Nepodařilo se otevřít zdrojový soubor %sq (seznam vyhledávání neobsahuje žádné adresáře).",
|
||||
"Přetypování musí být integrálního typu.",
|
||||
"Přetypování musí být aritmetického typu nebo typu ukazatel.",
|
||||
@@ -952,7 +952,7 @@
|
||||
"Možnost nonstd_using_decl se dá použít jenom při kompilaci C++.",
|
||||
"Návratový typ funkce main musí být int.",
|
||||
"Netypový parametr šablony nemůže být typu třídy.",
|
||||
"Výchozí argument šablony se nemůže specifikovat u deklarace člena šablony třídy mimo jeho třídu.",
|
||||
"U definice člena šablony třídy mimo šablonu nelze zadat výchozí argument šablony.",
|
||||
"Příkaz return není povolený v obslužné rutině testovacího bloku funkce konstruktoru.",
|
||||
"Běžné nebo rozšířené specifikátory se nedají kombinovat v označení inicializátoru.",
|
||||
"Druhý dolní index nesmí být menší než první dolní index.",
|
||||
@@ -1644,7 +1644,7 @@
|
||||
"Deklarace kopírovacího konstruktoru pro %t1 se potlačila, protože deklarace %t2 není přístupná.",
|
||||
"Destruktor pro %t1 se nebude volat, protože není přístupný a destruktor pro %t2 byl potlačený.",
|
||||
"Po definici na konci souboru nenásleduje středník nebo deklarátor.",
|
||||
"První argument musí být ukazatel na celočíselný nebo výčtový typ.",
|
||||
"Prvním argumentem musí být ukazatel na celočíselný typ nebo typ výčtu",
|
||||
"Synchronizované operace jsou platné jenom u objektů o velikosti 1, 2, 4 nebo 8.",
|
||||
"Argumenty navíc se ignorují.",
|
||||
"Předpokládalo se, že znak = následuje po názvu makra %sq v definici příkazového řádku.",
|
||||
@@ -1916,13 +1916,13 @@
|
||||
"Sada parametrů nemůže mít výchozí hodnotu.",
|
||||
"C++/CLI se dá povolit jenom v režimu Microsoft C++.",
|
||||
"Pro konstantu enumerátoru se nedá použít název value__. (V tomto kontextu je to vyhrazený název.)",
|
||||
"U typu výčtu s nadřízeným typem boolean je povinná explicitní hodnota výčtu.",
|
||||
"Explicitní hodnota enumerátoru je ve výčtovém typu s logickou základní hodnotou povinná",
|
||||
null,
|
||||
"Odkazovalo se na sadu parametrů %sq, která nebyla rozšířená.",
|
||||
"Rozšíření sady nepoužívá žádnou sadu argumentů.",
|
||||
"Sada %sq má jiný počet prvků než sada %sq2.",
|
||||
null,
|
||||
"Atribut vector_size se u typu výčtu nepovoluje.",
|
||||
"atribut vector_size není povolený s typem výčtu",
|
||||
"Vlastnost nemůže být současně statická i virtuální.",
|
||||
"Indexovaná vlastnost nemůže být triviální.",
|
||||
"Tato deklarace se nedá použít v definici vlastnosti.",
|
||||
@@ -1955,7 +1955,7 @@
|
||||
"Specifikátor viditelnosti na nejvyšší úrovni vyžaduje definici typu.",
|
||||
"Triviální vlastnost nemůže být odkazovaného typu.",
|
||||
"Triviální vlastnost nemůže být typu const nebo volatile.",
|
||||
"%nd se dřív deklaroval jako jiný druh typu výčtu.",
|
||||
"%nd se dříve deklaroval jako jiný typ výčtu",
|
||||
"Proměnná zachycená výrazem lambda nemůže být typu třídy %[managed].",
|
||||
"Přepisování virtuální funkce s kovariantním návratovým typem není u třídy %[managed] povolené.",
|
||||
"Pole popisovačů není povolené.",
|
||||
@@ -2175,7 +2175,7 @@
|
||||
"Pojmenovaný specifikátor přepisu je povolený jenom ve třídě %[managed].",
|
||||
"Typu tohoto členu neodpovídá žádný člen označený pojmenovaným specifikátorem přepisu.",
|
||||
"Deklarace statického konstruktoru nemůže zahrnovat pojmenovaný specifikátor přepisu.",
|
||||
"Typ vymezeného výčtu musí mít název.",
|
||||
"Typ výčtu s vymezeným oborem musí mít název.",
|
||||
"Přenos řízení na blok finally není povolený.",
|
||||
"Příkaz return se v bloku finally použít nedá.",
|
||||
"Blok try vyžaduje aspoň jeden obslužnou rutinu nebo klauzuli finally.",
|
||||
@@ -2216,7 +2216,7 @@
|
||||
"U operátoru dynamic_cast se nemůže použít obecný typ, který by mohl být hodnotovým typem.",
|
||||
"Univerzální název znaku musí označovat platný bod kódu.",
|
||||
"Obecná omezení neodpovídají omezením %nd.",
|
||||
"Výraz __underlying_type se vztahuje jenom na typy výčtu.",
|
||||
"__underlying_type platí jenom pro výčtové typy",
|
||||
"U tohoto přetypování se očekával jenom jeden výraz operandu.",
|
||||
"Znak Unicode s šestnáctkovou hodnotou %s se nedá prezentovat ve výchozí systémové znakové stránce.",
|
||||
"Nestandardní převod svázaného ukazatele na člen na ukazatel funkce",
|
||||
@@ -2344,7 +2344,7 @@
|
||||
"%nd se dřív deklaroval s jiným základním typem.",
|
||||
"Tady se nedá použít enum class nebo enum struct. Použijte místo toho prostý výčet enum.",
|
||||
"U inicializátoru pro objekt typu %t je povolená jenom jedna úroveň závorek.",
|
||||
"%nd se nedá použít jako název výčtového typu.",
|
||||
"%nd nelze použít jako název typu výčtu",
|
||||
null,
|
||||
"U inicializátoru uzavřeného v závorkách nejde použít new auto.",
|
||||
"Definice std::initializer_list neobsahuje očekávaný konstruktor.",
|
||||
@@ -2367,7 +2367,7 @@
|
||||
"Inicializátor v závorkách pro entitu, která není třídou, musí být výraz, ne seznam uzavřený ve složených závorkách.",
|
||||
"Seznam uzavřený ve složených závorkách neposkytuje pro tuto funkci lambda návratový typ.",
|
||||
"Deklarovaná specifikace výjimky je nekompatibilní s generovanou specifikací.",
|
||||
"Typy vymezeného výčtu jsou funkcí C++11.",
|
||||
"Vymezené typy výčtu jsou funkcí C++11",
|
||||
"Typ funkce se nedá inicializovat pomocí hodnoty.",
|
||||
"Inicializace seznamu typu objektu %t není povolená, protože má neúplný typ.",
|
||||
"Seznam inicializátorů std::initializer_list obsahuje destruktor. Ten by ale obsahovat neměl: knihovna je chybně nakonfigurovaná.",
|
||||
@@ -2406,7 +2406,7 @@
|
||||
"Volání funkce musí mít v konstantním výrazu konstantní hodnotu.",
|
||||
"Funkce main se nedá deklarovat jako constexpr.",
|
||||
null,
|
||||
"Definice typu výčtu nebo třídy se nedá použít ve funkci constexpr nebo těle konstruktoru.",
|
||||
"Definice typu třídy nebo výčtu se nemůže vyskytovat ve funkci constexpr ani v těle konstruktoru",
|
||||
"Tady jsou povolené jenom atributy ve stylu GNU.",
|
||||
"Nestandardní použití auto současně k odvození typu od inicializátoru a ohlášení ukončovacího návratového typu.",
|
||||
"Deklarace seznamu parametrů typu void s kvalifikovaným typem void je nestandardní.",
|
||||
@@ -2664,7 +2664,7 @@
|
||||
"Proměnná ve funkci constexpr není inicializovaná.",
|
||||
"Inicializace (uzavřená v závorkách) proměnné deklarované se zástupným typem, ale bez znaku =, vyžaduje právě jeden element uzavřený do závorek.",
|
||||
"neexistuje žádná konfigurace %s --target",
|
||||
"atribut není podporovaný v 64bitových konfiguracích x86",
|
||||
"Atribut je podporován pouze v 32bitových konfiguracích x86",
|
||||
"%s vyžaduje argument",
|
||||
"konstruktor nebo destruktor nemůže být korutina",
|
||||
"%n nemůže být korutina",
|
||||
@@ -2935,7 +2935,7 @@
|
||||
"Neplatný typ %t pro this-pointer členské funkce %nfd s omezením AMP",
|
||||
"Neplatný návratový typ %t pro funkci %nfd s omezením AMP",
|
||||
"Neplatný typ parametru %t pro funkci %nfd s omezením AMP",
|
||||
null,
|
||||
"Neplatný konstruktor ve funkci %nfd s omezením AMP",
|
||||
"Neplatná třída úložiště %s ve funkci %nfd s omezením AMP",
|
||||
"%s není ve funkci %nfd s omezením AMP povolené.",
|
||||
"Neplatné přetypování ve funkci s omezením AMP",
|
||||
@@ -3292,7 +3292,7 @@
|
||||
"Nestálý typ %t brání vyhodnocování constexpr v __builtin_bit_cast.",
|
||||
"Typ sjednocení, ukazatele nebo ukazatele na člen %t brání vyhodnocování constexpr v __builtin_bit_cast.",
|
||||
"%npTd, zděděno pomocí decl %p",
|
||||
"Podobjekt %t pro dědící konstruktory se nedá vytvořit -- implicitní výchozí konstruktor se odstranil.",
|
||||
"Nelze provést vytvoření dílčího objektu %t pro dědící konstruktory – přidružený konstruktor je odstraněn",
|
||||
"%n musí vracet void.",
|
||||
"Neplatný začátek deklarace členu",
|
||||
"Očekává se klíčové slovo auto.",
|
||||
@@ -3343,14 +3343,14 @@
|
||||
"mapování souborů modulu pro %s bylo zadané více než jednou",
|
||||
"mapování jednotek záhlaví pro %s bylo zadané více než jednou",
|
||||
"není zadané žádné mapování pro %s",
|
||||
"mapování souborů modulu pro %s je neplatné",
|
||||
null,
|
||||
"nejde najít záhlaví %s, které se má importovat",
|
||||
"více než jeden soubor v seznamu souborů modulu odpovídá %s",
|
||||
"soubor modulu, který se našel pro %s, je pro jiný modul",
|
||||
"libovolný druh souboru modulu",
|
||||
"nejde přečíst soubor modulu",
|
||||
"předdefinovaná funkce není k dispozici, protože typ char8_t se nepodporuje s aktuálními možnostmi",
|
||||
"možnost příkazového řádku --ms_await nejde zadat, pokud jsou povolené korutiny C++20",
|
||||
null,
|
||||
"nestandardní použití explicitního konstruktoru %nod pro inicializaci výchozího agregačního elementu",
|
||||
"zdroj nebo cíl vnitřní funkce memcpy-like neukazuje na objekt",
|
||||
"vnitřní funkce memcpy-like se pokouší o kopírování reprezentačně odlišných typů %t1 a %t2",
|
||||
@@ -3378,7 +3378,7 @@
|
||||
"Název modulu nesmí obsahovat slovo module.",
|
||||
null,
|
||||
null,
|
||||
"%n není výčtový typ.",
|
||||
"%n není typ výčtu",
|
||||
"Enumerátor %no2 je v konfliktu s %n1.",
|
||||
"Enumerátor %no se už v tomto oboru %p deklaroval.",
|
||||
"specifikace throw() není součástí standardu C++20 a novějších",
|
||||
@@ -3452,8 +3452,8 @@
|
||||
"očekával se ukazatel na člen",
|
||||
"flexibilní člen pole nelze deklarovat v jinak prázdném typu",
|
||||
"Očekávalo se, že std::source_location::__impl bude definováno pro třídu pouze s datovými členy _M_function_name, _M_file_name, _M_column a _M_line.",
|
||||
"během inicializace std::source_location::__impl přeteklo číslo sloupce člena _M_column typu %t",
|
||||
"během inicializace std::source_location::__impl přeteklo číslo řádku člena _M_line typu %t",
|
||||
"zadané číslo sloupce je pro implementaci std::source_location příliš velké",
|
||||
"zadané číslo řádku je pro implementaci std::source_location příliš velké",
|
||||
"znaková konstanta UTF-16 nemůže zabírat více než jednu jednotku kódu; hodnota byla zkrácena",
|
||||
"oba argumenty musí mít stejný typ",
|
||||
"typ %t není platný jako argument pro tento předdefinovan.",
|
||||
@@ -3463,9 +3463,39 @@
|
||||
"typ operandu vektoru s plovoucí desetinnou čárkou (%t) nemá žádný odpovídající celočíselný vektorový typ.",
|
||||
"mangling pro výrazy requires ještě není implementovaný.",
|
||||
"kvůli atributu „není k dispozici“",
|
||||
"došlo k pokusu o vytvoření elementu z oddílu IFC %sq pomocí indexu do oddílu IFC %sq.",
|
||||
"duplicitní kvalifikátor asm",
|
||||
"bitové pole s nekompletním typem výčtu nebo neprůhledný výčet s neplatným základním typem",
|
||||
"došlo k pokusu o vytvoření elementu z oddílu IFC %sq pomocí indexu do oddílu IFC %sq2.",
|
||||
"oddíl %sq určil svou velikost položky jako %d1, když bylo očekáváno %d2.",
|
||||
"při zpracování modulu %sq1 byl zjištěn neočekávaný požadavek IFC.",
|
||||
"podmínka selhala na řádku %d v %s1: %sq2",
|
||||
"atomické omezení závisí na sobě"
|
||||
"atomické omezení závisí na sobě",
|
||||
"Funkce noreturn má návratový typ, který není void.",
|
||||
"oprava byla provedena vyřazením parametru %sq (v relativním indexu %d).",
|
||||
"výchozí argument šablony nelze zadat pro definici členské šablony mimo její třídu.",
|
||||
"při rekonstrukci entity se zjistil neplatný název identifikátoru IFC %sq.",
|
||||
"neplatný identifikátor IFC s názvem %sq byl během obnovy entity přeskočen.",
|
||||
"neplatná hodnota řazení modulu %sq",
|
||||
"šablona funkce načtená z modulu IFC byla nesprávně parsována jako %nd.",
|
||||
"nepovedlo se načíst odkaz na entitu IFC v modulu %sq.",
|
||||
"Z oddílu %sq, elementu %d1 (pozice v souboru %d2, relativní pozice %d3)",
|
||||
"zřetězené specifikátory nejsou povolené pro typ třídy s netriviálním destruktorem.",
|
||||
"Explicitní deklarace specializace nemůže být deklarací typu friend.",
|
||||
"typ std::float128_t se nepodporuje. místo toho se použije std::float64_t",
|
||||
"typ std::bfloat16_t se nepodporuje. místo toho se použije std::float32_t",
|
||||
"vodítko pro dedukce se nedá deklarovat pro šablonu aliasu %no",
|
||||
"%n bylo deklarováno jako nedostupné.",
|
||||
"%n bylo deklarováno jako nedostupné (%sq).",
|
||||
"kvůli atributu deprecated",
|
||||
"explicitní parametry šablony lambda jsou funkcí C++20",
|
||||
"použití _Noreturn je od C23 zastaralé. Místo toho použijte [[noreturn]].",
|
||||
"použití _Alignof je od C23 zastaralé. Místo toho použijte alignof.",
|
||||
"použití _Alignas je od C23 zastaralé. Místo toho použijte alignas.",
|
||||
"použití _Bool je od C23 zastaralé. Místo toho použijte bool.",
|
||||
"použití _Static_assert je od C23 zastaralé. Místo toho použijte static_assert.",
|
||||
"použití _Thread_local je od C23 zastaralé. Místo toho použijte thread_local.",
|
||||
"Aby bylo možné používat soubor modulu %sq (modul Microsoft Visual Studio IFC), musí být povolený režim Microsoftu.",
|
||||
"soubor modulu %sq se nepovedlo otevřít",
|
||||
"nalezeno v mapě modulu %sq.",
|
||||
"nalezeno v mapě jednotek hlaviček pro %sq"
|
||||
]
|
||||
@@ -180,7 +180,7 @@
|
||||
"Das Anwenden von \"&\" auf ein Array hat keine Auswirkungen.",
|
||||
"Der rechte Operand von \"%%\" ist Null.",
|
||||
"Das Argument ist nicht mit dem formellen Parameter kompatibel.",
|
||||
"Das Argument ist mit der entsprechenden Formatzeichenfolgenkonvertierung inkompatibel.",
|
||||
"Argument ist nicht mit der entsprechenden Formatzeichenfolgenkonvertierung kompatibel (erwarteter Typ %t1, aber das Argument weist den Typ %t2 auf)",
|
||||
"Die Quelldatei \"%sq\" konnte nicht geöffnet werden (keine Verzeichnisse in der Suchliste).",
|
||||
"Der Typ der Umwandlung muss eine ganze Zahl sein.",
|
||||
"Der Typ der Umwandlung muss arithmetisch oder ein Zeiger sein.",
|
||||
@@ -952,7 +952,7 @@
|
||||
"Die nonstad_using_decl-Option kann nur beim Kompilieren von C++ verwendet werden.",
|
||||
"Der Rückgabetyp der Main-Funktion muss \"int\" sein.",
|
||||
"Ein Nichttyp-Vorlagenparameter darf keinen Klassentyp aufweisen.",
|
||||
"Ein Standardvorlagenargument kann nicht in der Deklaration eines Members einer Klassenvorlage außerhalb seiner Klasse angegeben werden.",
|
||||
"ein Standardvorlagenargument kann nicht in der Definition eines Members einer Klassenvorlage außerhalb der Vorlage angegeben werden",
|
||||
"Eine return-Anweisung ist in einem Handler eines Funktions-Try-Blocks eines Konstruktors nicht zulässig.",
|
||||
"Normale und erweiterte Kennzeichner können nicht in einer Initialisiererkennzeichnung kombiniert werden.",
|
||||
"Der zweite Index darf nicht kleiner als der erste sein.",
|
||||
@@ -1644,7 +1644,7 @@
|
||||
"Die Deklaration des Kopierkonstruktors für \"%t1\" wurde unterdrückt, da auf die Deklaration von \"%t2\" nicht zugegriffen werden kann.",
|
||||
"Der Destruktor für \"%t1\" wird nicht aufgerufen, da auf ihn nicht zugegriffen werden kann und der Destruktor für \"%t2\" unterdrückt wurde.",
|
||||
"Auf die Definition am Ende der Datei darf kein Semikolon oder ein Deklarator folgen.",
|
||||
"Das erste Argument muss ein Zeiger auf einen Ganzzahl- oder einen Enumerationstyp sein.",
|
||||
"das erste Argument muss ein Zeiger auf einen Integer- oder Enumerationstyp sein.",
|
||||
"Synchronisierte Operationen sind nur für Objekte der Größe 1, 2, 4 oder 8 gültig.",
|
||||
"Zusätzliche Argumente werden ignoriert.",
|
||||
"\"=\" nahm den folgenden Makronamen \"%sq\" in der Befehlszeilendefinition an.",
|
||||
@@ -1695,8 +1695,8 @@
|
||||
null,
|
||||
"Für die Vektoroperation sind identische Elementtypen erforderlich.",
|
||||
"Die Vektoroperation gilt nicht für Vektoren mit nicht integralem Typ.",
|
||||
"Die Datei \"%s\" kann nicht geöffnet werden: %sq2.",
|
||||
"Die -Datei \"%s\" kann nicht geöffnet werden: %sq2: %s3.",
|
||||
"Die Datei %s kann nicht geöffnet werden: %sq2.",
|
||||
"Die -Datei %s kann nicht geöffnet werden: %sq2: %s3.",
|
||||
"Vorkompilierte Headerdatei",
|
||||
"Vordefiniertes Makro",
|
||||
"Generierter C-Code",
|
||||
@@ -1955,7 +1955,7 @@
|
||||
"ein Sichtbarkeitsspezifizierer der obersten Ebene erfordert eine Typdefinition",
|
||||
"eine triviale Eigenschaft kann keinen Verweistyp aufweisen",
|
||||
"eine triviale Eigenschaft kann keinen const- oder volatile-Typ aufweisen",
|
||||
"%nd wurde zuvor als andere Art von Enumerationstyp deklariert",
|
||||
"%nd wurde zuvor als andere Variante des Enumerationstyps deklariert",
|
||||
"Eine von einer Lambdafunktion erfasste Variable kann keinen %[managed]-Klassentyp aufweisen.",
|
||||
"Überschreiben einer virtuellen Funktion mit einem covariant-Rückgabetyp ist in einer %[managed]-Klasse nicht zulässig",
|
||||
"ein Array von Handles ist nicht zulässig",
|
||||
@@ -2175,7 +2175,7 @@
|
||||
"ein benannter Überschreibungsspezifizierer ist nur in einer %[managed]-Klasse zulässig",
|
||||
"kein vom benannten Überschreibungsspezifizierer angegebener Member stimmt mit dem Typ dieses Members überein",
|
||||
"eine statische Destruktordeklaration kann keinen benannten Überschreibungsspezifizierer enthalten",
|
||||
"Eine Enumeration mit eigenem Gültigkeitsbereich muss einen Namen aufweisen.",
|
||||
"ein bereichsbezogenes Enumerationstyp muss einen Namen haben",
|
||||
"Übertragung des Steuerelements in einen Finally-Block ist nicht zulässig",
|
||||
"Eine return-Anweisung innerhalb eines Finally-Block ist unzulässig.",
|
||||
"Der Try-Block erfordert mindestens einen Handler oder eine Finally-Klausel.",
|
||||
@@ -2344,7 +2344,7 @@
|
||||
"\"%nd\" wurde zuvor mit einem unterschiedlichen Basistyp deklariert",
|
||||
"'enum class' und 'enum struct' können hier nicht verwendet werden (verwenden Sie stattdessen eine einfache 'enum')",
|
||||
"bei Initialisierern für Objekte des Typs \"%t\" ist nur eine Ebene geschweifter Klammern zulässig",
|
||||
"\"%nd\" kann nicht als Name für einen Enumerationstyp",
|
||||
"%nd kann nicht als Name für einen Enumerationstyp verwendet werden",
|
||||
null,
|
||||
"Ein Initialisierer in geschweiften Klammern darf nicht mit 'new auto' verwendet werden.",
|
||||
"Die Definition von \"std::initializer_list\" enthält nicht den erwarteten Konstruktor.",
|
||||
@@ -2367,7 +2367,7 @@
|
||||
"Ein in Klammern gesetzter Initialisierer für eine Nicht-Klassenentität muss ein Ausdruck sein, keine in geschweifte Klammern gesetzte Liste.",
|
||||
"Eine in geschweifte Klammern gesetzte Liste stellt keinen Rückgabetyp für diese Lambdafunktion bereit.",
|
||||
"Die deklarierte Ausnahmespezifikation ist mit der generierten inkompatibel.",
|
||||
"Enumerationstypen mit eigenem Gültigkeitsbereich sind eine Funktion von C++11.",
|
||||
"bereichsbezogene Enumerationstypen sind ein C++11-Feature.",
|
||||
"Ein Funktionstyp kann nicht wertinitialisiert sein.",
|
||||
"Die Listeninitialisierung eines Objekttyps \"%t\" ist nicht zulässig, da der Typ unvollständig ist.",
|
||||
"\"std::initializer_list\" enthält entgegen der Erwartung einen Destruktor -- Die Bibliothek ist falsch konfiguriert.",
|
||||
@@ -2406,7 +2406,7 @@
|
||||
"Ein Funktionsaufruf muss in einem Konstantenausdruck einen konstanten Wert enthalten.",
|
||||
"Die Main-Funktion darf nicht als constexpr deklariert werden.",
|
||||
null,
|
||||
"Die Definition einer Klasse oder eines Enumerationstyps darf nicht in einer constexpr-Funktion oder einem Konstruktortext stehen.",
|
||||
"die Definition einer Klasse oder eines Enumerationstyps darf nicht in einer constexpr-Funktion oder einem Konstruktortext stehen",
|
||||
"Hier sind nur Attribute im GNU-Stil zulässig.",
|
||||
"Nicht dem Standard entsprechende Verwendung von 'auto', um den Typ eines Initialisierers abzuleiten und einen nachstehenden Rückgabetyp anzukündigen",
|
||||
"Die Deklaration einer Void-Parameterliste mit einem qualifizierten Void-Typ entspricht nicht dem Standard.",
|
||||
@@ -2664,7 +2664,7 @@
|
||||
"Variable in constexpr-Funktion ist nicht initialisiert.",
|
||||
"Initialisierung in Klammern einer Variablen, die mit einem Platzhaltertyp, jedoch ohne \"=\" initialisiert wurde, erfordert genau ein Element innerhalb der Klammern",
|
||||
"Es ist keine --target-Konfiguration \"%s\" vorhanden.",
|
||||
"Das Attribut wird in 64-Bit-x86-Konfigurationen nicht unterstützt.",
|
||||
"das Attribut wird nur in einer 32-Bit-x86-Konfigurationen unterstützt",
|
||||
"\"%s\" erfordert ein Argument.",
|
||||
"Ein Konstruktor oder Destruktor kann keine Coroutine sein.",
|
||||
"\"%n\" kann keine Coroutine sein.",
|
||||
@@ -2935,7 +2935,7 @@
|
||||
"Unzulässiger Typ %t im this-Zeiger für die eingeschränkte amp-Memberfunktion %nfd",
|
||||
"Unzulässiger Rückgabetyp \"%t\" für die auf AMP begrenzte Funktion \"%nfd\".",
|
||||
"Unzulässiger Parametertyp \"%t\" für die auf AMP begrenzte Funktion \"%nfd\".",
|
||||
null,
|
||||
"Unzulässiges Konstrukt in auf AMP begrenzter Funktion %nfd",
|
||||
"Unzulässige Speicherklasse \"%s\" in der auf AMP begrenzten Funktion \"%nfd\".",
|
||||
"\"%s\" ist in der auf AMP begrenzten Funktion \"%nfd\" unzulässig.",
|
||||
"Unzulässige Umwandlung in auf AMP begrenzte Funktion.",
|
||||
@@ -3292,7 +3292,7 @@
|
||||
"Ein flüchtiger %t-Typ verhindert die constexpr-Auswertung von \"__builtin_bit_cast\".",
|
||||
"Ein Union-, Zeiger- oder Pointer-to-Member-Typ \"%t\" verhindert die constexpr-Auswertung von \"__builtin_bit_cast\".",
|
||||
"%npTd, geerbt über die Verwendung von decl %p",
|
||||
"Die Teilobjekterstellung von \"%t\" für erbende Konstruktoren kann nicht durchgeführt werden – der implizite Standardkonstruktor wurde gelöscht.",
|
||||
"Die Teilobjekterstellung von %t für erbende Konstruktoren kann nicht durchgeführt werden – der zugehörige Konstruktor wurde gelöscht.",
|
||||
"\"%n\" muss \"void\" zurückgeben.",
|
||||
"Ungültiger Beginn der Memberdeklaration.",
|
||||
"Erwartet wurde \"auto\".",
|
||||
@@ -3343,14 +3343,14 @@
|
||||
"Die Moduldateizuordnung für \"%s\" wurde mehrmals angegeben.",
|
||||
"Die Zuordnung der Headereinheit für \"%s\" wurde mehrmals angegeben.",
|
||||
"Für \"%s\" wurde keine Zuordnung angegeben.",
|
||||
"Die Moduldateizuordnung für \"%s\" ist ungültig.",
|
||||
null,
|
||||
"Der zu importierende Header \"%s\" wurde nicht gefunden.",
|
||||
"Mehrere Dateien in der Moduldateiliste stimmen mit \"%s\" überein.",
|
||||
"Die für \"%s\" gefundene Moduldatei ist für ein anderes Modul bestimmt.",
|
||||
"Beliebige Art von Moduldatei",
|
||||
"Die Moduldatei kann nicht gelesen werden.",
|
||||
"Die integrierte Funktion ist nicht verfügbar, weil der char8_t-Typ mit den aktuellen Optionen nicht unterstützt wird.",
|
||||
"Die Befehlszeilenoption \"--ms_await\" kann nicht angegeben werden, wenn C++20-Coroutinen aktiviert sind.",
|
||||
null,
|
||||
"Nicht standardmäßige Verwendung des expliziten Konstruktors \"%nod\" für die standardmäßige Aggregatelementinitialisierung",
|
||||
"Die Quelle oder das Ziel des memcpy-ähnlichen systeminternen Objekts verweist nicht auf ein Objekt.",
|
||||
"Ein memcpy-ähnliches systeminternes Objekt versucht, die darstellerisch unterschiedlichen Typen %t1 und %t2 zu kopieren.",
|
||||
@@ -3378,7 +3378,7 @@
|
||||
"\"Modul\" ist in einem Modulnamen unzulässig.",
|
||||
null,
|
||||
null,
|
||||
"\"%n\" ist kein Enumerationstyp.",
|
||||
"%n ist kein Enumerationstyp",
|
||||
"Der Enumerator \"%no2\" steht in Konflikt mit \"%n1\".",
|
||||
"Der Enumerator \"%no\" wurde bereits in diesem Bereich (%p) deklariert.",
|
||||
"Die Spezifikation \"throw()\" ist nicht in C++ 20 und höher enthalten.",
|
||||
@@ -3423,7 +3423,7 @@
|
||||
"Modul %sq1 Dateiposition %d1 (relative Position %d2) wurde für Partition %sq2 angefordert – was dem Start der Partition vorausgeht",
|
||||
"Modul %sq1 Dateiposition %d1 (relative Position %d2) wurde für die Partition %sq2 angefordert – was das Ende ihrer Partition überschreitet",
|
||||
"Modul %sq1 Dateiposition %d1 (relative Position %d2) wurde für die Partition %sq2 angefordert – welche mit ihren Partitionselementen falsch ausgerichtet ist",
|
||||
"aus dem Subfeld %sq",
|
||||
"von Unterfeld %sq (relative Position zum Knoten %d)",
|
||||
"von Partition %sq Element %d1 (Dateiposition %d2, relative Position %d3)",
|
||||
"Lambda-Attribute entsprechen hier nicht dem Standard",
|
||||
"der Bezeichner %sq könnte mit einem visuell ähnlichen Bezeichner verwechselt werden, der %p angezeigt wird",
|
||||
@@ -3452,8 +3452,8 @@
|
||||
"Es wurde ein Pointer-to-Member erwartet",
|
||||
"Ein flexibles Arrayelement kann nicht in einem ansonsten leeren Typ deklariert werden.",
|
||||
"Es wurde erwartet, dass \"std::source_location::__impl\" für eine Klasse definiert ist, die nur die Datenmember \"_M_function_name\", \"_M_file_name\", \"_M_column\", \"_M_line\" enthält.",
|
||||
"während der Initialisierung von \"std::source_location::__impl\" überläuft die Spaltennummer den Member \"_M_column\" vom Typ \"%t\".",
|
||||
"während der Initialisierung von \"std::source_location::__impl\" überläuft die Zeilennummer den Member \"_M_line\" vom Typ \"%t\".",
|
||||
"die angegebene Spaltennummer ist für die Implementierung von „std::source_location“ zu groß",
|
||||
"die angegebene Zeilennummer ist für die Implementierung von „std::source_location“ zu groß",
|
||||
"Eine UTF-16-Zeichenkonstante darf nicht mehrere Codeeinheiten belegen. Wert abgeschnitten.",
|
||||
"Beide Argumente müssen denselben Typ aufweisen.",
|
||||
"Der Typ \"%t\" ist als Argument für dieses integrierte Element ungültig.",
|
||||
@@ -3462,5 +3462,40 @@
|
||||
"der Elementtyp der Vektorbedingung (%t1) muss dieselbe Größe haben wie der Elementtyp des Ergebnisses (%t2)",
|
||||
"der Gleitkomma-Vektoroperandentyp (%t) hat keinen übereinstimmenden ganzzahligen Vektortyp",
|
||||
"das Mangling für 'requires'-Ausdrücke ist noch nicht implementiert",
|
||||
"aufgrund eines „nicht verfügbaren“ Attributs"
|
||||
"aufgrund eines „nicht verfügbaren“ Attributs",
|
||||
"Doppelter „ASM“-Qualifizierer",
|
||||
"entweder ein Bitfeld mit einem unvollständigen Enumerationstyp oder eine opake Enumeration mit einem ungültigen Basistyp",
|
||||
"Es wurde versucht, ein Element aus der IFC-Partition %sq mithilfe eines Indexes in der IFC-Partition %sq2 zu erstellen",
|
||||
"Die Partition %sq hat ihre Eintragsgröße mit %d1 angegeben, obwohl %d2 erwartet wurde",
|
||||
"Unerwartete IFC-Anforderung beim Verarbeiten des Moduls %sq1",
|
||||
"Bedingungsfehler in Zeile %d in %s1: %sq2",
|
||||
"Die atomische Einschränkung hängt von sich selbst ab",
|
||||
"Die Funktion \"noreturn\" weist den Rückgabetyp \"nicht void\" auf.",
|
||||
"Eine Korrektur wurde vorgenommen, indem der Parameter %sq (beim relativen Index %d) weggelassen wurde",
|
||||
"ein Standardvorlagenargument kann nicht für die Definition einer Membervorlage außerhalb seiner Klasse angegeben werden",
|
||||
"Ungültiger IFC-Bezeichnername %sq bei der Rekonstruktion der Entität gefunden",
|
||||
"Ungültiger IFC-Bezeichnername %sq bei der Rekonstruktion der Entität übersprungen",
|
||||
"Modul %sq ungültiger Sortierwert",
|
||||
"Eine aus einem IFC-Modul geladene Funktionsvorlage wurde fälschlicherweise als %nd analysiert",
|
||||
"Fehler beim Laden eines IFC-Entitätsverweises im Modul \"%sq\"",
|
||||
"von Partition %sq Element %d1 (Dateiposition %d2, relative Position %d3)",
|
||||
"verkettete Kennzeichner sind für einen Klassentyp mit einem nichttrivialen Destruktor nicht zulässig",
|
||||
"Eine explizite Spezialisierungsdeklaration darf keine Frienddeklaration sein",
|
||||
"der Typ „std::float128_t“ wird nicht unterstützt. Stattdessen wird „std::float64_t“ verwendet",
|
||||
"der Typ „std::bfloat16_t“ wird nicht unterstützt. Stattdessen wird „std::float32_t“ verwendet",
|
||||
"Für die Aliasvorlage %no darf keine Deduktionsanleitung deklariert werden.",
|
||||
"%n wurde als nicht verfügbar deklariert.",
|
||||
"%n wurde als nicht verfügbar deklariert (%sq).",
|
||||
"aufgrund eines „veralteten“ Attributs",
|
||||
"Explizite Lambdavorlagenparameter sind ein C++20-Feature.",
|
||||
"Die Verwendung von „_Noreturn“ in C23 ist veraltet. Verwenden Sie stattdessen „[[noreturn]]“.",
|
||||
"Die Verwendung von „_Alignof“ in C23 ist veraltet. Verwenden Sie stattdessen „alignof“.",
|
||||
"Die Verwendung von „_Alignas“ in C23 ist veraltet. Verwenden Sie stattdessen „alignas“.",
|
||||
"Die Verwendung von „_Bool“ in C23 ist veraltet. Verwenden Sie stattdessen „bool“.",
|
||||
"Die Verwendung von „_Static_assert“ in C23 ist veraltet. Verwenden Sie stattdessen „static_assert“.",
|
||||
"Die Verwendung von „_Thread_local“ in C23 ist veraltet. Verwenden Sie stattdessen „thread_local“.",
|
||||
"Der Microsoft-Modus muss aktiviert sein, um die Moduldatei %sq (ein Microsoft Visual Studio IFC-Modul) zu verwenden.",
|
||||
"Die Moduldatei \"%sq\" konnte nicht importiert werden.",
|
||||
"wurde in der Modulzuordnung für das Modul %sq gefunden",
|
||||
"wurde in der Headereinheitszuordnung für %sq gefunden"
|
||||
]
|
||||
@@ -180,7 +180,7 @@
|
||||
"no tiene ningún efecto aplicar '&' a una matriz",
|
||||
"el operando derecho de '%%' es cero",
|
||||
"el argumento no es compatible con un parámetro formal",
|
||||
"el argumento no es compatible con la conversión de la cadena de formato correspondiente",
|
||||
"el argumento no es compatible con la conversión de cadena de formato correspondiente (se esperaba el tipo %t1 pero el argumento tiene el tipo %t2)",
|
||||
"no se pudo abrir el archivo de código fuente %sq (no hay directorios en la lista de búsqueda)",
|
||||
"la conversión debe ser de tipo integral",
|
||||
"la conversión debe ser de tipo aritmético o de puntero",
|
||||
@@ -952,7 +952,7 @@
|
||||
"la opción 'nonstd_using_decl' solo se puede usar al compilar C++",
|
||||
"el tipo de valor devuelto de la función 'main' debe ser 'int'",
|
||||
"un parámetro de plantilla sin tipo no puede tener un tipo de clase",
|
||||
"no se puede especificar un argumento de plantilla predeterminado en la declaración de un miembro de una plantilla de clase fuera de su clase",
|
||||
"no se puede especificar un argumento de plantilla predeterminado en la definición de un miembro de una plantilla de clase fuera de la plantilla",
|
||||
"No se permite una instrucción \"return\" en un controlador de un bloque try de función de un constructor",
|
||||
"los designadores comunes y extendidos no se pueden combinar en una designación de inicializador",
|
||||
"el segundo subíndice no debe ser más pequeño que el primero",
|
||||
@@ -1955,7 +1955,7 @@
|
||||
"un especificador de visibilidad de nivel superior requiere una definición de tipo",
|
||||
"una propiedad trivial no puede tener un tipo de referencia",
|
||||
"una propiedad trivial no puede tener un tipo const o volatile",
|
||||
"%nd se declaró previamente como un tipo de enumeración distinto",
|
||||
"%nd se declaró anteriormente como un tipo diferente de tipo de enumeración",
|
||||
"una variable capturada por una lambda no puede tener un tipo de clase %[managed]",
|
||||
"no se admite la invalidación de una función virtual con un tipo de valor devuelto covariante en una clase %[managed]",
|
||||
"no se permite una matriz de identificadores",
|
||||
@@ -2367,7 +2367,7 @@
|
||||
"un inicializador entre paréntesis para una entidad que no es una clase debe ser una expresión, no una lista entre llaves",
|
||||
"una lista entre llaves no proporciona un tipo devuelto para este lambda",
|
||||
"la especificación de excepción declarada es incompatible con la que se ha generado",
|
||||
"los tipos de enumeración con ámbito son una funcionalidad de C++11",
|
||||
"los tipos de enumeración con ámbito son una característica de C++11",
|
||||
"un tipo de función no se puede inicializar con un valor",
|
||||
"no se permite la inicialización con lista de un tipo de objeto %t porque el tipo está incompleto",
|
||||
"std::initializer_list tiene un destructor y se supone que no debe tenerlo; la biblioteca no está bien configurada",
|
||||
@@ -2664,7 +2664,7 @@
|
||||
"la variable de la función constexpr está sin inicializar",
|
||||
"la inicialización entre llaves de una variable declarada con un tipo de marcador de posición pero sin \"=\" necesita exactamente un elemento dentro de las llaves",
|
||||
"no existe ninguna configuración \"%s\" --target",
|
||||
"el atributo no es compatible con configuraciones x86 de 64 bits",
|
||||
"el atributo solo se admite en configuraciones x86 de 32 bits",
|
||||
"\"%s\" requiere un argumento",
|
||||
"un constructor o destructor no puede ser una corrutina",
|
||||
"%n no puede ser una corrutina",
|
||||
@@ -2935,7 +2935,7 @@
|
||||
"tipo %t no válido en puntero this para la función miembro %nfd con restricción amp",
|
||||
"Tipo de valor devuelto %t no válido para la función %nfd con restricción amp",
|
||||
"Tipo de parámetro %t no válido para la función %nfd con restricción amp",
|
||||
null,
|
||||
"construcción no válida en la función %nfd con restricción amp",
|
||||
"Clase de almacenamiento %s no válida en la función %nfd con restricción amp",
|
||||
"%s no se permite en la función %nfd con restricción amp",
|
||||
"conversión no válida en la función con restricción amp",
|
||||
@@ -2997,7 +2997,7 @@
|
||||
"<error de emisión de diagnóstico>",
|
||||
"Hay demasiados errores como para que el motor de IntelliSense funcione correctamente. Puede que algunos no se vean en el editor.",
|
||||
"la asignación al anacronismo \"this\" no es compatible con el modo C++11",
|
||||
"error desconocido. No se generó un archivo Intellisense PCH.",
|
||||
"error desconocido. No se generó un archivo IntelliSense PCH.",
|
||||
"No se pueden asignar una o varias rutas remotas a las rutas locales actuales. La experiencia con IntelliSense puede degradarse.",
|
||||
null,
|
||||
null,
|
||||
@@ -3292,7 +3292,7 @@
|
||||
"un tipo volatile %t impide la evaluación constexpr de __builtin_bit_cast",
|
||||
"un tipo de unión, puntero o puntero a miembro %t impide la evaluación constexpr de __builtin_bit_cast",
|
||||
"%npTd, heredado mediante el uso de la declaración %p",
|
||||
"no se puede realizar la construcción de subobjetos de %t para los constructores de herencia; se elimina el constructor predeterminado implícito",
|
||||
"no se puede realizar la construcción del subobjeto de %t para los constructores heredados; se elimina el constructor asociado",
|
||||
"%n debe devolver void",
|
||||
"inicio de declaración de miembro no válido",
|
||||
"se esperaba \"auto\"",
|
||||
@@ -3343,14 +3343,14 @@
|
||||
"la asignación de archivos de módulo para \"%s\" se especificó más de una vez",
|
||||
"la asignación de unidades de encabezado para \"%s\" se especificó más de una vez",
|
||||
"no se especificó ninguna asignación para \"%s\"",
|
||||
"la asignación del archivo de módulo para \"%s\" no es válida",
|
||||
null,
|
||||
"no se encuentra el encabezado \"%s\" para importar",
|
||||
"hay más de un archivo de la lista de archivos de módulo que coincide con \"%s\"",
|
||||
"el archivo de módulo que se encontró para \"%s\" es para otro módulo",
|
||||
"cualquier tipo de archivo de módulo",
|
||||
"no se puede leer el archivo de módulo",
|
||||
"la función integrada no está disponible porque no se admite el tipo char8_t con las opciones actuales",
|
||||
"no se puede especificar la opción de línea de comandos --ms_await si están habilitadas las corrutinas de C++ 20",
|
||||
null,
|
||||
"uso no estándar de %nod de constructor explícito para la inicialización predeterminada del elemento de agregado",
|
||||
"el origen o el destino del intento intrínseco de tipo memcpy no apunta a un objeto",
|
||||
"intentos intrínsecos de tipo memcpy para copiar los tipos %t1 y %t2 diferentes de forma representativa",
|
||||
@@ -3452,8 +3452,8 @@
|
||||
"se esperaba un puntero a miembro",
|
||||
"un miembro de matriz flexible no se puede declarar en un tipo que de otro modo estaría vacío",
|
||||
"se esperaba que 'std::source_location::__impl' se definiera a una clase con solo los miembros de datos '_M_function_name', '_M_file_name', '_M_column', '_M_line'",
|
||||
"durante la inicialización de 'std::source_location::__impl', el número de columna desborda el miembro '_M_column' de tipo %t",
|
||||
"durante la inicialización de 'std::source_location::__impl', el número de línea desborda el miembro '_M_line' de tipo %t",
|
||||
"el número de columna dado es demasiado grande para la implementación 'std::source_location'",
|
||||
"el número de línea especificado es demasiado grande para la implementación 'std::source_location'",
|
||||
"una constante de caracteres UTF-16 no puede ocupar más de una unidad de código; valor truncado",
|
||||
"ambos argumentos deben tener el mismo tipo",
|
||||
"el tipo %t no es válido como argumento para este elemento integrado",
|
||||
@@ -3463,9 +3463,39 @@
|
||||
"el tipo de operando de vector de punto flotante (%t) no tiene ningún tipo de vector entero coincidente",
|
||||
"aún no se ha implementado la limpieza de expresiones \"requires\"",
|
||||
"debido a un atributo “no disponible”",
|
||||
"intentó construir un elemento a partir de la partición IFC %sq mediante un índice en la partición IFC %sq",
|
||||
"calificador 'asm' duplicado",
|
||||
"un campo de bits con un tipo de enumeración incompleto o una enumeración opaca con un tipo base no válido",
|
||||
"intentó construir un elemento a partir de la partición IFC %sq mediante un índice en la partición IFC %sq2",
|
||||
"la partición %sq especificó su tamaño de entrada como %d1 cuando se esperaba %d2",
|
||||
"se encontró un requisito IFC inesperado al procesar el módulo %sq1",
|
||||
"error de condición en la línea %d en %s1: %sq2",
|
||||
"la restricción atómica depende de sí misma"
|
||||
"la restricción atómica depende de sí misma",
|
||||
"La función \"noreturn\" tiene un tipo de valor devuelto distinto de nulo",
|
||||
"se ha quitado el parámetro %sq (en el índice relativo %d) para realizar una corrección",
|
||||
"no se puede especificar un argumento de plantilla predeterminado en la definición de una plantilla de miembro fuera de su clase",
|
||||
"se encontró un nombre de identificador IFC no válido %sq durante la reconstrucción de entidades",
|
||||
"se omitió un nombre de identificador IFC no válido %sq durante la reconstrucción de entidades",
|
||||
"el módulo %sq es un valor de ordenación no válido",
|
||||
"una plantilla de función cargada desde un módulo IFC se analizó incorrectamente como %nd",
|
||||
"no se pudo cargar una referencia de entidad IFC en el módulo %sq",
|
||||
"de la partición %sq elemento %d1 (posición de archivo %d2, posición relativa %d3)",
|
||||
"no se permiten designadores encadenados para un tipo de clase con un destructor no trivial",
|
||||
"una declaración de especialización explícita no puede ser una declaración \"friend\"",
|
||||
"no se admite el tipo std::float128_t; se usará std::float64_t en su lugar",
|
||||
"no se admite el tipo std::bfloat16_t; se usará std::float32_t en su lugar",
|
||||
"no se puede declarar una guía de deducción para la plantilla de alias %no",
|
||||
"%n se declaró no disponible",
|
||||
"%n se declaró no disponible (%sq)",
|
||||
"debido a un atributo \"en desuso\"",
|
||||
"los parámetros de plantilla lambda explícitos son una característica de C++20",
|
||||
"el uso de \"_Noreturn\" ha quedado obsoleto en C23; usar '[[noreturn]]' en su lugar",
|
||||
"el uso de \"_Alignof\" ha quedado obsoleto en C23; usar \"alignof\" en su lugar",
|
||||
"el uso de \"_Alignas\" ha quedado obsoleto en C23; usar \"alignas\" en su lugar",
|
||||
"el uso de \"_Bool\" ha quedado obsoleto en C23; usar 'bool' en su lugar",
|
||||
"el uso de \"_Static_assert\" ha quedado obsoleto en C23; usar \"static_assert\" en su lugar",
|
||||
"el uso de \"_Thread_local\" ha quedado obsoleto en C23; usar \"thread_local\" en su lugar",
|
||||
"El modo Microsoft debe estar habilitado para usar el archivo de módulo %sq (un módulo IFC de Microsoft Visual Studio).",
|
||||
"no se pudo abrir el archivo de módulo %sq",
|
||||
"se encuentra en la asignación de módulo para el módulo %sq",
|
||||
"se encuentra en el mapa de unidad de encabezado para %sq"
|
||||
]
|
||||
@@ -180,7 +180,7 @@
|
||||
"l'application de '&' à un tableau n'a aucun effet",
|
||||
"l'opérande droit de '%%' est égal à zéro",
|
||||
"argument incompatible avec le paramètre formel",
|
||||
"argument incompatible avec la conversion de chaîne de format correspondante",
|
||||
"l’argument est incompatible avec la conversion de chaîne de format correspondante (type attendu %t1 mais l’argument a le type %t2)",
|
||||
"impossible d'ouvrir le fichier source %sq (aucun répertoire dans la liste de recherche)",
|
||||
"le type de cast doit être intégral",
|
||||
"le type de cast doit être arithmétique ou pointeur",
|
||||
@@ -952,7 +952,7 @@
|
||||
"l'option 'nonstd_using_decl' peut uniquement être utilisée lors de la compilation de C++",
|
||||
"le type de retour de la fonction 'main' doit être 'int'",
|
||||
"un paramètre de modèle sans type ne peut pas avoir le type classe",
|
||||
"impossible de spécifier un argument template par défaut sur la déclaration d'un membre de modèle de classe en dehors de sa classe",
|
||||
"impossible de spécifier un argument de modèle par défaut sur la définition d'un membre de modèle de classe en dehors du modèle",
|
||||
"instruction return non autorisée dans le gestionnaire d'un bloc try de fonction d'un constructeur",
|
||||
"impossible de combiner des désignateurs ordinaires et étendus dans la désignation d'un initialiseur",
|
||||
"le second indice doit être inférieur au premier",
|
||||
@@ -1644,7 +1644,7 @@
|
||||
"la déclaration du constructeur de copie de %t1 a été supprimée car celle de %t2 est inaccessible",
|
||||
"le destructeur de %t1 ne sera pas appelé car il est inaccessible et le destructeur de %t2 a été supprimé",
|
||||
"la définition à la fin du fichier n'est pas suivie d'un point-virgule ou d'un déclarateur",
|
||||
"le premier argument doit être un pointeur vers un type entier ou énumération",
|
||||
"le premier argument doit être un pointeur vers un type enum ou entier",
|
||||
"les opérations synchronisées sont valides sur les objets de taille 1, 2, 4 ou 8",
|
||||
"arguments supplémentaires ignorés",
|
||||
"'=' pris par défaut après le nom de macro %sq dans la définition de ligne de commande",
|
||||
@@ -1916,13 +1916,13 @@
|
||||
"un package de paramètres ne peut pas avoir de valeur par défaut",
|
||||
"C++/CLI peut uniquement être activé en mode Microsoft C++",
|
||||
"impossible d'utiliser 'value__' en tant que nom de constante d'énumérateur (il s'agit d'un nom réservé dans ce contexte)",
|
||||
"une valeur d'énumérateur explicite est requise dans un type d'énumération avec un type sous-jacent booléen",
|
||||
"une valeur d’énumération explicite est requise dans un type enum avec un type sous-jacent booléen",
|
||||
null,
|
||||
"package de paramètres %sq référencé mais non développé",
|
||||
"l'expansion de package n'utilise aucun package d'arguments",
|
||||
"le package %sq n'a pas le même nombre d'éléments que %sq2",
|
||||
null,
|
||||
"l'attribut vector_size n'est pas autorisé avec un type d'énumération",
|
||||
"l'attribut vector_size n'est pas autorisé avec un type enum",
|
||||
"une propriété ne peut pas être à la fois statique et virtuelle",
|
||||
"une propriété indexée ne peut pas être triviale",
|
||||
"cette déclaration ne peut pas figurer dans une définition de propriété",
|
||||
@@ -1955,7 +1955,7 @@
|
||||
"un spécificateur de visibilité de niveau supérieur requiert une définition de type",
|
||||
"une propriété triviale ne peut pas être de type référence",
|
||||
"une propriété triviale ne peut pas être de type const ou volatile",
|
||||
"%nd a précédemment été déclaré en tant qu'un autre genre d'énumération",
|
||||
"%nd a précédemment été déclaré en tant qu'un autre genre de type enum",
|
||||
"une variable capturée par une capture lambda ne peut pas avoir un type de classe %[managed]",
|
||||
"une fonction virtuelle effectuant une substitution avec un type de retour covariant n'est pas autorisée dans une classe %[managed]",
|
||||
"tableau de handles non autorisé",
|
||||
@@ -2175,7 +2175,7 @@
|
||||
"un spécificateur de substitution nommé est uniquement autorisé dans une classe %[managed]",
|
||||
"aucun membre désigné par le spécificateur de substitution nommé ne correspond au type de ce membre",
|
||||
"une déclaration de constructeur statique ne peut pas inclure un spécificateur de substitution nommé",
|
||||
"un type énumération délimitée doit avoir un nom",
|
||||
"un type enum délimité doit avoir un nom",
|
||||
"transfert de contrôle non autorisé dans un bloc finally",
|
||||
"instruction return non autorisée dans un bloc finally",
|
||||
"un bloc try requiert au moins un gestionnaire ou une clause finally",
|
||||
@@ -2216,7 +2216,7 @@
|
||||
"le type d'un dynamic_cast ne peut pas être un type générique susceptible d'être un type valeur",
|
||||
"un nom de caractère universel doit désigner un point de code valide",
|
||||
"les contraintes génériques ne correspondent pas à celles de %nd",
|
||||
"__underlying_type s'applique uniquement aux types d'énumération",
|
||||
"__underlying_type s'applique uniquement aux types enum",
|
||||
"une seule expression d'opérande attendue pour ce cast",
|
||||
"le caractère Unicode avec valeur hexadécimale %s n'est pas représentable dans la page de codes par défaut système",
|
||||
"conversion non standard de pointeur vers membre lié en pointeur fonction",
|
||||
@@ -2344,7 +2344,7 @@
|
||||
"%nd a précédemment été déclaré avec un type de base différent",
|
||||
"'enum class' et 'enum struct' ne peuvent pas être utilisés ici (utilisez un 'enum' simple à la place)",
|
||||
"un seul niveau d'accolades autorisé sur un initialiseur pour un objet de type %t",
|
||||
"%nd ne peut pas être utilisé en tant que nom de type d'énumération",
|
||||
"%nd ne peut pas être utilisé en tant que nom de type enum",
|
||||
null,
|
||||
"un initialiseur entre accolades ne peut pas être utilisé avec 'new auto'",
|
||||
"la définition de std::initializer_list ne contient pas le constructeur attendu",
|
||||
@@ -2367,7 +2367,7 @@
|
||||
"un initialiseur entre parenthèses pour une entité autre qu'une classe doit être une expression et non une liste entre accolades",
|
||||
"une liste entre accolades ne fournit pas de type de retour pour cette expression lambda",
|
||||
"la spécification d'exception déclarée est incompatible avec celle qui a été générée",
|
||||
"les types d'énumération délimitée sont une fonctionnalité du C++11",
|
||||
"les types enum délimités sont une fonctionnalité du C++11",
|
||||
"un type de fonction ne peut pas être initialisé par une valeur",
|
||||
"l'initialisation de liste d'un type d'objet %t n'est pas autorisée car le type est incomplet",
|
||||
"std::initializer_list a un destructeur et n'est pas censé en avoir un -- la bibliothèque n'est pas configurée correctement",
|
||||
@@ -2406,7 +2406,7 @@
|
||||
"l'appel de fonction doit avoir une valeur constante dans une expression constante",
|
||||
"impossible de déclarer la fonction 'main' constexpr",
|
||||
null,
|
||||
"une définition de classe ou de type d'énumération ne peut pas apparaître dans une fonction constexpr ou dans le corps d'un constructeur",
|
||||
"une définition de classe ou de type enum ne peut pas apparaître dans une fonction constexpr ou dans le corps d'un constructeur",
|
||||
"seuls les attributs de style GNU sont autorisés ici",
|
||||
"utilisation non standard de 'auto' pour déduire le type d'un initialiseur et pour annoncer un type de retour de fin",
|
||||
"la déclaration d'une liste de paramètres void avec un type void qualifié est non standard",
|
||||
@@ -2664,7 +2664,7 @@
|
||||
"la variable dans la fonction constexpr n'est pas initialisée",
|
||||
"L'initialisation entre accolades d'une variable déclarée avec un type d'espace réservé mais sans `=` requiert exactement un élément à l'intérieur des accolades",
|
||||
"aucune configuration --target '%s' n'existe",
|
||||
"l'attribut n'est pas pris en charge dans les configurations x86 64 bits",
|
||||
"l'attribut est uniquement pris en charge dans les configurations 32 bits x86",
|
||||
"'%s' nécessite un argument",
|
||||
"un constructeur ou un destructeur ne peut pas être une coroutine",
|
||||
"%n ne peut pas être une coroutine",
|
||||
@@ -2935,7 +2935,7 @@
|
||||
"type interdit %t dans ce pointeur pour la fonction membre %nfd restreinte à amp",
|
||||
"type de retour interdit %t pour la fonction à restriction amp %nfd",
|
||||
"type de paramètre interdit %t pour la fonction à restriction amp %nfd",
|
||||
null,
|
||||
"construction non conforme dans la fonction à restriction amp %nfd",
|
||||
"classe de stockage interdite %s dans la fonction à restriction amp %nfd",
|
||||
"%s non autorisé dans la fonction à restriction amp %nfd",
|
||||
"cast non conforme dans la fonction à restriction amp",
|
||||
@@ -3292,7 +3292,7 @@
|
||||
"un type volatile %t empêche l'évaluation de constexpr de __builtin_bit_cast",
|
||||
"un type union, pointeur ou pointeur vers membre %t empêche l'évaluation de constexpr de __builtin_bit_cast",
|
||||
"%npTd, hérité via l'utilisation de decl %p",
|
||||
"la construction de sous-objet de %t pour l'héritage de constructeurs ne peut pas être effectuée -- le constructeur par défaut implicite est supprimé",
|
||||
"la construction de sous-objet de %t pour l'héritage de constructeurs ne peut pas être effectuée -- le constructeur associé est supprimé",
|
||||
"%n doit retourner void",
|
||||
"début de déclaration de membre non valide",
|
||||
"'auto' attendu",
|
||||
@@ -3343,14 +3343,14 @@
|
||||
"mappage de fichier de module pour '%s' spécifié plusieurs fois",
|
||||
"mappage d'unité d'en-tête pour '%s' spécifié plusieurs fois",
|
||||
"aucun mappage spécifié pour '%s'",
|
||||
"le mappage de fichier de module pour '%s' est non valide",
|
||||
null,
|
||||
"l'en-tête '%s' à importer est introuvable",
|
||||
"plusieurs fichiers dans la liste de fichiers de module correspondent à '%s'",
|
||||
"le fichier de module trouvé pour '%s' est destiné à un autre module",
|
||||
"n'importe quel genre de fichier de module",
|
||||
"impossible de lire le fichier de module",
|
||||
"la fonction intégrée n'est pas disponible, car le type char8_t n'est pas pris en charge avec les options actuelles",
|
||||
"l'option de ligne de commande --ms_await ne peut pas être spécifiée si les coroutines C++20 sont activées",
|
||||
null,
|
||||
"utilisation non standard du constructeur explicite %nod pour l'initialisation de l'élément d'agrégation par défaut",
|
||||
"la source ou la destination de l'intrinsèque de type memcpy ne pointe pas vers un objet",
|
||||
"l'intrinsèque de type memcpy tente de copier les types représentatifs distincts %t1 et %t2",
|
||||
@@ -3378,7 +3378,7 @@
|
||||
"'module' n'est pas autorisé dans un nom de module",
|
||||
null,
|
||||
null,
|
||||
"%n n'est pas un type énumération",
|
||||
"%n n'est pas un type enum",
|
||||
"l'énumérateur %no2 est en conflit avec %n1",
|
||||
"l'énumérateur %no a déjà été déclaré dans cette étendue %p",
|
||||
"la spécification 'throw()' ne fait pas partie de C++20 ni des versions ultérieures",
|
||||
@@ -3452,8 +3452,8 @@
|
||||
"pointeur vers membre attendu",
|
||||
"un membre de tableau flexible ne peut pas être déclaré dans un type autrement vide.",
|
||||
"expected 'std::source_location::__impl' to be defined to a class with only the data members '_M_function_name', '_M_file_name', '_M_column', '_M_line'",
|
||||
"lors de l’initialisation de 'std::source_location::__impl', le numéro de colonne dépasse le membre '_M_column' de type %t",
|
||||
"lors de l’initialisation de 'std::source_location::__impl', le numéro de ligne dépasse le membre '_M_line' de type %t",
|
||||
"numéro de colonne donné trop grand pour l’implémentation de 'std::source_location'",
|
||||
"numéro de ligne donné trop grand pour l’implémentation de 'std::source_location'",
|
||||
"une constante de caractères UTF-16 ne peut pas occuper plusieurs unités de code ; valeur tronquée",
|
||||
"les deux arguments doivent avoir le même type",
|
||||
"le type %t n’est pas valide en tant qu’argument pour ce builtin",
|
||||
@@ -3463,9 +3463,39 @@
|
||||
"le type d’opérande vectoriel à virgule flottante (%t) n’a pas de type de vecteur entier correspondant.",
|
||||
"La gestion des expressions \"requires\" n'est pas encore implémentée.",
|
||||
"en raison d’un attribut 'unavailable'",
|
||||
"a tenté de construire un élément à partir d’une partition IFC %sq à l’aide d’un index dans la partition IFC %sq.",
|
||||
"qualificateur 'asm' dupliqué",
|
||||
"soit un champ de bits avec un type enum incomplet, soit une énumération opaque avec un type de base non valide",
|
||||
"a tenté de construire un élément à partir d’une partition IFC %sq à l’aide d’un index dans la partition IFC %sq2.",
|
||||
"le %sq de partition a spécifié sa taille d’entrée %d1 alors que %d2 était attendu.",
|
||||
"une exigence IFC inattendue s’est produite lors du traitement du module %sq1.",
|
||||
"échec de la condition à la ligne %d dans %s1 : %sq2",
|
||||
"la contrainte atomique dépend d’elle-même."
|
||||
"la contrainte atomique dépend d’elle-même.",
|
||||
"La fonction 'noreturn' a un type de retour non vide",
|
||||
"une correction a été effectuée en supprimant le paramètre %sq (au %d d’index relatif)",
|
||||
"impossible de spécifier un argument template par défaut sur la définition d'un membre de modèle en dehors de sa classe",
|
||||
"nom d’identificateur IFC non valide %sq rencontré lors de la reconstruction de l’entité",
|
||||
"identificateur IFC non valide nommé %sq ignoré lors de la reconstruction de l’entité",
|
||||
"le module %sq valeur de tri non valide",
|
||||
"un modèle de fonction chargé à partir d’un module IFC a été analysé de manière incorrecte en tant que %nd",
|
||||
"échec du chargement d’une référence d’entité IFC dans le module %sq",
|
||||
"à partir de la partition %sq, élément %d1 (position de fichier %d2, position relative %d3)",
|
||||
"les désignateurs chaînés ne sont pas autorisés pour un type classe avec un destructeur non trivial",
|
||||
"une déclaration de spécialisation explicite ne peut pas être une déclaration friend",
|
||||
"le type std::float128_t n’est pas pris en charge ; std::float64_t sera utilisé à la place",
|
||||
"le type std::bfloat16_t n’est pas pris en charge ; std::float32_t sera utilisé à la place",
|
||||
"un guide de déduction ne peut pas être déclaré pour le modèle d’alias %no",
|
||||
"%n a été déclaré non disponible",
|
||||
"%n a été déclaré indisponible (%sq)",
|
||||
"en raison d’un attribut 'deprecated'",
|
||||
"les paramètres de modèle lambda explicites sont une fonctionnalité C++20",
|
||||
"l’utilisation de '_Noreturn' a été obsolète en C23; utiliser '[[noreturn]]' à la place",
|
||||
"l’utilisation de '_Alignof' a été obsolète en C23; utiliser 'alignof' à la place",
|
||||
"l’utilisation de '_Alignas' a été obsolète en C23; utiliser 'alignas' à la place",
|
||||
"l’utilisation de '_Bool' a été obsolète en C23; utiliser 'bool' à la place",
|
||||
"l’utilisation de '_Static_assert' a été obsolète en C23; utiliser 'static_assert' à la place",
|
||||
"l’utilisation de '_Thread_local' a été obsolète en C23; utiliser 'thread_local' à la place",
|
||||
"Le mode Microsoft doit être activé pour utiliser le fichier de module %sq (module IFC Microsoft Visual Studio)",
|
||||
"impossible d’ouvrir le fichier de module %sq",
|
||||
"trouvé dans le mappage de module pour le module %sq",
|
||||
"trouvé dans le mappage d’unité d’en-tête pour %sq"
|
||||
]
|
||||
@@ -180,7 +180,7 @@
|
||||
"l'applicazione di '&' a una matrice non ha alcun effetto",
|
||||
"l'operando destro di '%%' è zero",
|
||||
"argomento incompatibile con il parametro formale",
|
||||
"argomento incompatibile con la conversione della stringa di formato corrispondente",
|
||||
"argomento non compatibile con la conversione della stringa di formato corrispondente (tipo previsto %t1 ma argomento di tipo %t2)",
|
||||
"non è stato possibile aprire il file di origine %sq. Non è presente alcuna directory nell'elenco di ricerca",
|
||||
"il cast deve essere di tipo integrale",
|
||||
"il cast deve essere di tipo aritmetico o puntatore",
|
||||
@@ -952,7 +952,7 @@
|
||||
"è possibile utilizzare l'opzione 'nonstd_using_decl' solo quando si esegue la compilazione nel linguaggio C++",
|
||||
"il tipo restituito della funzione 'main' deve essere 'int'",
|
||||
"il tipo di un parametro di modello non di tipo non può essere di classe",
|
||||
"impossibile specificare un argomento di modello predefinito nella dichiarazione di un membro di un modello di classe esterno alla relativa classe",
|
||||
"impossibile specificare un argomento di modello predefinito nella definizione di un membro di un modello di classe all'esterno del modello",
|
||||
"istruzione return non consentita in un gestore di un blocco try di funzione di un costruttore",
|
||||
"non è possibile combinare indicatori ordinari ed estesi in una designazione di inizializzatori",
|
||||
"il secondo indice deve essere minore del primo",
|
||||
@@ -1916,13 +1916,13 @@
|
||||
"un pacchetto parametri non può avere un valore predefinito",
|
||||
"C++/CLI può essere abilitato solo in modalità Microsoft C++",
|
||||
"non è possibile usare 'value__' come nome di una costante di enumerazione (è un nome riservato in questo contesto)",
|
||||
"è richiesto un valore di enumerazione esplicito in un tipo di enumerazione con tipo sottostante booleano",
|
||||
"è richiesto un valore di enumerazione esplicito in un tipo enumerazione con tipo sottostante booleano",
|
||||
null,
|
||||
"è stato fatto riferimento al pacchetto parametri %sq che però non è espanso",
|
||||
"l'espansione del pacchetto non usa pacchetti di argomenti",
|
||||
"il pacchetto %sq non ha lo stesso numero di elementi di %sq2",
|
||||
null,
|
||||
"l'attributo vector_size non è consentito con un tipo di enumeratore",
|
||||
"l'attributo vector_size non è consentito con un tipo enumerazione",
|
||||
"una proprietà non può essere contemporaneamente statica e virtuale",
|
||||
"una proprietà indicizzata non può essere semplice",
|
||||
"questa dichiarazione non può apparire in una definizione di proprietà",
|
||||
@@ -1955,7 +1955,7 @@
|
||||
"un identificatore di visibilità di primo livello richiede una definizione di tipo",
|
||||
"una proprietà trivial non può disporre di un tipo di riferimento",
|
||||
"una proprietà trivial non può disporre di un tipo const o volatile",
|
||||
"%nd è stato dichiarato in precedenza come un tipo diverso di tipo di enumeratore",
|
||||
"%nd è stato dichiarato in precedenza come tipo di enumerazione diverso",
|
||||
"in una variabile acquisita da un lambda non può essere presente un tipo classe %[managed]",
|
||||
"l'override della funzione virtuale con un tipo restituito con variante non è consentito in una classe %[managed]",
|
||||
"matrice di handle non consentita",
|
||||
@@ -2175,7 +2175,7 @@
|
||||
"un indicatore di override denominato è consentito solo in una classe %[managed]",
|
||||
"nessun membro designato dall'indicatore di override denominato corrisponde al tipo di membro",
|
||||
"una dichiarazione di costruttore statico non può includere un indicatore di override denominato",
|
||||
"il tipo di enumerazione con ambito deve avere un nome",
|
||||
"il tipo enumerazione con ambito deve avere un nome",
|
||||
"trasferimento del controllo in un blocco finally non consentito",
|
||||
"istruzione return all'interno di un blocco finally non consentita",
|
||||
"con il blocco try è richiesto almeno un gestore o una clausola finally",
|
||||
@@ -2344,7 +2344,7 @@
|
||||
"%nd dichiarato in precedenza con un tipo base diverso",
|
||||
"in questo punto non è possibile usare 'enum class' ed 'enum struct' (usare semplicemente 'enum')",
|
||||
"è consentito un solo livello di parentesi in un inizializzatore per un oggetto di tipo %t",
|
||||
"non è possibile usare %nd come nome del tipo di enumerazione",
|
||||
"non è possibile usare %nd come nome del tipo enumerazione",
|
||||
null,
|
||||
"impossibile utilizzare un inizializzatore tra parentesi con 'new auto'",
|
||||
"la definizione di std::initializer_list non contiene il costruttore previsto",
|
||||
@@ -2367,7 +2367,7 @@
|
||||
"un inizializzatore tra parentesi per un'entità non classe deve essere un'espressione, non un elenco tra parentesi graffe",
|
||||
"un elenco tra parentesi graffe non fornisce un tipo restituito per questa espressione lambda",
|
||||
"la specifica dell'eccezione dichiarata non è compatibile con quella generata",
|
||||
"i tipi di enumerazione con ambito sono una funzionalità C++11",
|
||||
"i tipi enumerazione con ambito sono una funzionalità C++11",
|
||||
"un tipo di funzione non può essere inizializzato dal valore",
|
||||
"l'inizializzazione di elenco di un tipo di oggetto %t non è consentita perché il tipo non è completo",
|
||||
"std::initializer_list contiene un distruttore non previsto. La libreria non è configurata correttamente",
|
||||
@@ -2664,7 +2664,7 @@
|
||||
"la variabile nella funzione constexpr non è inizializzata",
|
||||
"per l'inizializzazione tra parentesi graffe di una variabile dichiarata con un tipo di segnaposto, ma senza `=`, è necessario specificare un solo elemento all'interno delle parentesi",
|
||||
"non esistono configurazioni '%s' --target",
|
||||
"l'attributo non è supportato in configurazioni x86 a 64 bit",
|
||||
"l'attributo è supportato soltanto in configurazioni x86 a 32 bit",
|
||||
"con '%s' è richiesto un argomento",
|
||||
"un costruttore o un distruttore non può essere una coroutine",
|
||||
"%n non può essere una coroutine",
|
||||
@@ -2935,7 +2935,7 @@
|
||||
"il tipo %t nel puntatore this per la funzione membro con limitazioni amp %nfd non è valido",
|
||||
"il tipo restituito %t per la funzione con restrizioni AMP %nfd non è valido",
|
||||
"il tipo di parametro %t per la funzione con restrizioni AMP %nfd non è valido",
|
||||
null,
|
||||
"il costrutto nella funzione con restrizioni AMP %nfd non è valido",
|
||||
"la classe di archiviazione %s nella funzione con restrizioni AMP %nfd non è valida",
|
||||
"%s non è consentito nella funzione con restrizioni AMP %nfd",
|
||||
"il cast nella funzione con restrizioni AMP non è valido",
|
||||
@@ -3292,7 +3292,7 @@
|
||||
"un tipo volatile %t impedisce la valutazione constexpr di __builtin_bit_cast",
|
||||
"un tipo unione, puntatore o puntatore a membro %t impedisce la valutazione constexpr di __builtin_bit_cast",
|
||||
"%npTd, ereditato tramite l'uso della dichiarazione %p",
|
||||
"non è possibile costruire oggetti secondari di %t per ereditare costruttori. Il costruttore predefinito implicito è stato eliminato",
|
||||
"non è possibile costruire oggetti secondari di %t per ereditare costruttori. Il costruttore associato è stato eliminato",
|
||||
"%n deve restituire void",
|
||||
"l'inizio della dichiarazione di membro non è valido",
|
||||
"è previsto 'auto'",
|
||||
@@ -3343,14 +3343,14 @@
|
||||
"il mapping del file del modulo per '%s' è stato specificato più di una volta",
|
||||
"il mapping dell'unità intestazione per '%s' è stato specificato più di una volta",
|
||||
"non è stato specificato alcun mapping per '%s'",
|
||||
"Il mapping del file del modulo per '%s' non è valido",
|
||||
null,
|
||||
"non è possibile trovare l'intestazione '%s' da importare",
|
||||
"più di un file nell'elenco file di modulo corrisponde a '%s'",
|
||||
"il file di modulo trovato per '%s' è riferito a un modulo diverso",
|
||||
"qualsiasi tipo di modulo",
|
||||
"non è possibile leggere il file del modulo",
|
||||
"la funzione predefinita non è disponibile perché il tipo char8_t non è supportato con le opzioni correnti",
|
||||
"non è possibile specificare l'opzione della riga di comando --ms_await se le coroutine di C++20 sono abilitate",
|
||||
null,
|
||||
"uso non standard del costruttore esplicito %nod per l'inizializzazione dell'elemento di aggregazione predefinito",
|
||||
"l'origine o la destinazione dell'intrinseco simile a memcpy non punta a un oggetto",
|
||||
"l'intrinseco simile a memcpy prova a copiare i tipi distinti dal punto di vista della rappresentazione %t1 e %t2",
|
||||
@@ -3378,7 +3378,7 @@
|
||||
"Il nome di un modulo non può contenere 'module'",
|
||||
null,
|
||||
null,
|
||||
"%n non è un tipo di enumerazione",
|
||||
"%n non è un tipo enumerazione.",
|
||||
"l'enumeratore %no2 è in conflitto con %n1",
|
||||
"l'enumeratore %no è già stato dichiarato in questo ambito %p",
|
||||
"la specifica 'throw()' non fa parte di C++20 e versioni successive",
|
||||
@@ -3423,7 +3423,7 @@
|
||||
"modulo %sq1 posizione del file %d1 (posizione relativa %d2) richiesta per la partizione %sq2, che precede l'inizio della partizione",
|
||||
"modulo %sq1 posizione del file %d1 (posizione relativa %d2) richiesta per la partizione %sq2, che causa l'overflow della fine della partizione",
|
||||
"modulo %sq1 posizione file %d1 (posizione relativa %d2) richiesta per la partizione %sq2, che non è allineata con i relativi elementi di partizioni",
|
||||
"dal sottocampo %sq",
|
||||
"dal sottocampo %sq (posizione relativa al nodo %d)",
|
||||
"dalla partizione %sq elemento %d1 (posizione file %d2, posizione relativa %d3)",
|
||||
"attributi lambda non conformi allo standard",
|
||||
"l'identificatore %sq potrebbe essere confuso con un identificatore visivamente simile visualizzato %p",
|
||||
@@ -3452,8 +3452,8 @@
|
||||
"è previsto un puntatore a membro",
|
||||
"un membro di matrice flessibile non può essere dichiarato in un tipo altrimenti vuoto",
|
||||
"previsto 'std::source_location::__impl' da definire in una classe con solo i membri dati '_M_function_name', '_M_file_name', '_M_column', '_M_line'",
|
||||
"durante l'inizializzazione di 'std::source_location::__impl', il membro '_M_column' in overflow del numero di colonna è di tipo %t",
|
||||
"durante l'inizializzazione di 'std::source_location::__impl', il membro '_M_line' in overflow del numero di riga è di tipo %t",
|
||||
"il numero di colonna specificato è troppo grande per l'implementazione di 'std::source_location'",
|
||||
"il numero di riga specificato è troppo grande per l'implementazione di 'std::source_location'",
|
||||
"una costante di caratteri UTF-16 non può occupare più di un'unità di codice; valore troncato",
|
||||
"entrambi gli argomenti devono avere lo stesso tipo",
|
||||
"il tipo %t non è valido come argomento per questa compilazione",
|
||||
@@ -3462,5 +3462,40 @@
|
||||
"il tipo di elemento della condizione vettoriale (%t1) deve avere le stesse dimensioni del tipo di elemento del risultato (%t2)",
|
||||
"il tipo di operando di vettore a virgola mobile (%t) non ha un tipo di vettore intero corrispondente",
|
||||
"il mangling per le espressioni 'requires' non è ancora implementato",
|
||||
"a causa di un attributo 'non disponibile'"
|
||||
"a causa di un attributo 'non disponibile'",
|
||||
"qualificatore 'asm' duplicato",
|
||||
"o un campo di bit con un tipo di enumerazione incompleto o un'enumerazione opaca con un tipo di base non valido",
|
||||
"ha tentato di costruire un elemento dalla partizione IFC %sq utilizzando un indice nella partizione IFC %sq2",
|
||||
"la partizione %sq ha specificato la dimensione della voce come %d1 mentre era previsto %d2",
|
||||
"Durante l'elaborazione del modulo %sq1 è stato riscontrato un requisito IFC imprevisto.",
|
||||
"condizione fallita alla riga %d in %s1: %sq2",
|
||||
"il vincolo atomico dipende da se stesso",
|
||||
"La funzione 'noreturn' ha un tipo restituito non void",
|
||||
"è stata apportata una correzione eliminando il parametro %sq (in corrispondenza dell'indice relativo %d)",
|
||||
"non è possibile specificare un argomento di modello predefinito nella definizione di un modello di membro all'esterno della relativa classe",
|
||||
"nome identificatore IFC %sq non valido rilevato durante la ricostruzione dell'entità",
|
||||
"nome identificatore IFC %sq non valido ignorato durante la ricostruzione dell'entità",
|
||||
"il modulo %sq valore di ordinamento non valido",
|
||||
"un modello di funzione caricato da un modulo IFC è stato analizzato erroneamente come %nd",
|
||||
"non è stato possibile caricare un riferimento all'entità IFC nel modulo %sq",
|
||||
"dalla partizione %sq elemento %d1 (posizione file %d2, posizione relativa %d3)",
|
||||
"gli indicatori concatenati non sono consentiti per un tipo di classe con un distruttore non banale",
|
||||
"una dichiarazione di specializzazione esplicita non può essere una dichiarazione Friend",
|
||||
"il tipo std::float128_t non è supportato; verrà invece usato std::float64_t",
|
||||
"il tipo std::bfloat16_t non è supportato; verrà utilizzato std::float32_t",
|
||||
"non è possibile dichiarare una guida alla deduzione per il modello di alias %no",
|
||||
"%n dichiarato non disponibile",
|
||||
"%n dichiarato non disponibile (%sq)",
|
||||
"a causa di un attributo 'deprecato'",
|
||||
"i parametri espliciti del modello lambda sono una funzionalità di C++20",
|
||||
"l'uso di '_Noreturn' è obsoleto in C23; usare '[[noreturn]]'",
|
||||
"l'uso di '_Alignof' è obsoleto in C23; usare 'alignof'",
|
||||
"l'uso di '_Alignas' è obsoleto in C23; usare 'alignas'",
|
||||
"l'uso di '_Bool' è obsoleto in C23; usare 'bool'",
|
||||
"l'uso di '_Static_assert' è obsoleto in C23; usare 'static_assert'",
|
||||
"l'uso di '_Thread_local' è obsoleto in C23; usare 'thread_local'",
|
||||
"È necessario abilitare la modalità Microsoft per usare il file del modulo %sq (un modulo IFC Microsoft Visual Studio)",
|
||||
"non è stato possibile aprire il file del modulo %sq",
|
||||
"trovato nella mappa dei moduli per il modulo %sq",
|
||||
"trovato nella mappa delle unità intestazione per %sq"
|
||||
]
|
||||
@@ -180,7 +180,7 @@
|
||||
"配列に適用された '&' は無効です",
|
||||
"'%%' の右オペランドが 0 です",
|
||||
"引数と仮パラメーターの間に互換性がありません",
|
||||
"引数と、対応する書式指定文字列変換の間に互換性がありません",
|
||||
"引数は対応する書式指定文字列変換と互換性がありません (想定されていた型は %t1 ですが引数の型は %t2 でした)",
|
||||
"ソース ファイル %sq を開けませんでした (検索リストにディレクトリがありません)",
|
||||
"キャストは整数型である必要があります",
|
||||
"キャストは演算型またはポインター型である必要があります",
|
||||
@@ -952,7 +952,7 @@
|
||||
"オプション 'nonstd_using_decl' は C++ をコンパイルするときにのみ使用できます",
|
||||
"関数 'main' の戻り値の型は 'int' である必要があります",
|
||||
"非型テンプレート パラメーターにクラス型を使用することはできません",
|
||||
"既定のテンプレート引数はクラスの外部でのクラス テンプレートのメンバーの宣言では指定できません",
|
||||
"既定のテンプレート引数は、そのテンプレートの外部でのクラス テンプレートのメンバーの定義では指定できません",
|
||||
"コンストラクターの関数 try ブロックのハンドラーでは return ステートメントを使用できません",
|
||||
"指定子 ordinary と extended を初期化子の指定で組み合わせることはできません",
|
||||
"2 番目の添字を 1 番目より小さくすることはできません",
|
||||
@@ -1644,7 +1644,7 @@
|
||||
"%t2 のコピー コンストラクターにアクセスできないため、%t1 のコピー コンストラクターの宣言は抑制されています",
|
||||
"%t1 のデストラクターは、アクセスできず、また %t2 のデストラクターが抑制されたため、呼び出されません",
|
||||
"ファイル末尾の定義の終わりにセミコロンまたは宣言子がありません",
|
||||
"最初の引数は整数または列挙型へのポインターでなければなりません",
|
||||
"最初の引数は整数または列挙型へのポインターである必要があります",
|
||||
"同期された操作はサイズが 1、2、4、または 8 のオブジェクトでのみ有効です",
|
||||
"余分な引数は無視されました",
|
||||
"コマンド ライン定義でマクロ名 %sq の後に '=' があることが想定されます",
|
||||
@@ -1916,7 +1916,7 @@
|
||||
"パラメーター パックには既定値を設定できません",
|
||||
"C++/CLI は Microsoft C++ モードでのみ有効にできます",
|
||||
"'value__' は列挙定数の名前として使用できません (このコンテキストではこの名前は予約されています)",
|
||||
"基になる型がブールの列挙型には、明示的な列挙子の値が必要です",
|
||||
"基になる型がブールである列挙型には明示的な列挙子の値が必要です",
|
||||
null,
|
||||
"パラメーター パック %sq が参照されましたが展開されていません",
|
||||
"パックの展開で引数パックが使用されません",
|
||||
@@ -1955,7 +1955,7 @@
|
||||
"トップレベルの可視性指定子には型定義が必要です",
|
||||
"trivial プロパティに参照型を指定することはできません",
|
||||
"trivial プロパティに const 型または volatile 型を指定することはできません",
|
||||
"%nd は以前に異なる種類の列挙型として宣言されました",
|
||||
"%nd は以前に異なる種類の列挙型として宣言されています",
|
||||
"ラムダでキャプチャされる変数には %[managed] クラス型を使用できません",
|
||||
"共変の戻り値の型をオーバーライドする仮想関数は、%[managed] クラスでは使用できません",
|
||||
"ハンドルの配列は使用できません",
|
||||
@@ -2175,7 +2175,7 @@
|
||||
"名前付きオーバーライド指定子は %[managed] クラスでのみ使用できます",
|
||||
"名前付きオーバーライド指定子で指定されたメンバーは、このメンバーの型と一致しません",
|
||||
"静的コンストラクター宣言には名前付きオーバーライド指定子を含めることができません",
|
||||
"スコープを持つ列挙型型には名前を指定する必要があります",
|
||||
"スコープ付き列挙型には名前を指定する必要があります",
|
||||
"finally ブロックへの制御の転送は許可されていません",
|
||||
"finally ブロック内では return ステートメントは使用できません",
|
||||
"try ブロックには 1 つ以上のハンドラーまたは finally 句が必要です",
|
||||
@@ -2367,7 +2367,7 @@
|
||||
"非クラス エンティティのかっこで囲まれた初期化子は、式である必要があり、中かっこで囲まれたリストであってはなりません",
|
||||
"中かっこで囲まれたリストは、このラムダの戻り値の型を提供しません",
|
||||
"宣言された例外指定は生成された例外指定と互換性がありません",
|
||||
"スコープを持つ列挙型型は C++11 の機能です",
|
||||
"スコープ付き列挙型は C++11 の機能です",
|
||||
"関数型を値で初期化できません",
|
||||
"オブジェクト型 %t のリスト初期化は、型が不完全であるため許可されません",
|
||||
"std::initializer_list にはデストラクターが含まれていて、ライブラリは正しく構成されている必要があります",
|
||||
@@ -2406,7 +2406,7 @@
|
||||
"関数呼び出しでは、定数式に定数値が必要です",
|
||||
"関数 'main' は constexpr として宣言できません",
|
||||
null,
|
||||
"クラス型または列挙型の定義は、constexpr 関数またはコンストラクターの本体には指定できません",
|
||||
"クラスまたは列挙型の定義は、constexpr 関数またはコンストラクターの本体では指定できません",
|
||||
"ここでは GNU 形式の属性のみを使用できます",
|
||||
"初期化子から型を推測すること、および後続の戻り値の型を知らせることを目的とした、'auto' の非標準の使用です",
|
||||
"修飾された void 型を使用した void パラメーター リストの宣言は非標準です",
|
||||
@@ -2664,7 +2664,7 @@
|
||||
"constexpr 関数の変数が初期化されていません",
|
||||
"中かっこで囲まれた変数の初期化がプレースホルダー型で宣言されましたが、`=` がないため、中かっこ内の要素と正確に一致しなければなりません",
|
||||
"'%s' --target の構成が存在しません",
|
||||
"64 ビット x86 構成では、属性がサポートされていません",
|
||||
"属性は 32 ビット x86 構成でのみサポートされています",
|
||||
"'%s' は引数が必要です",
|
||||
"コンストラクターまたはデストラクターをコルーチンにすることはできません",
|
||||
"%n をコルーチンにすることはできません",
|
||||
@@ -2935,7 +2935,7 @@
|
||||
"amp 制限メンバー関数 %nfd の this-pointer に無効な型 %t",
|
||||
"amp 制限関数 %nfd に無効な戻り値の型 %t",
|
||||
"amp 制限関数 %nfd に無効なパラメーター型 %t",
|
||||
null,
|
||||
"amp 制限関数 %nfd に無効なコンストラクト",
|
||||
"無効なストレージ クラス %s (amp 制限関数 %nfd)",
|
||||
"%s は amp 制限関数 %nfd では許可されていません",
|
||||
"amp 制限関数に無効なキャスト",
|
||||
@@ -3292,7 +3292,7 @@
|
||||
"volatile 型 %t は、__builtin_bit_cast の constexpr 評価を妨げます",
|
||||
"UNION、ポインター、またはメンバーへのポインター型 %t は、__builtin_bit_cast の constexpr 評価を妨げます",
|
||||
"%npTd (宣言 %p を使用して継承されています)",
|
||||
"コンストラクターを継承するための %t のサブオブジェクト構築は実行できません。暗黙の既定のコンストラクターは削除されます",
|
||||
"コンストラクターを継承するための %t のサブオブジェクト構築は実行できません。関連するコンストラクターは削除されます",
|
||||
"%n は void を返す必要があります",
|
||||
"メンバー宣言の先頭が無効です",
|
||||
"'auto' が必要です",
|
||||
@@ -3343,14 +3343,14 @@
|
||||
"'%s' のモジュール ファイル マッピングが 2 回以上指定されました",
|
||||
"'%s' のヘッダー単位のマッピングが 2 回以上指定されました",
|
||||
"'%s' にマッピングが指定されていません",
|
||||
"'%s' のモジュール ファイル マッピングが無効です",
|
||||
null,
|
||||
"インポートするヘッダー '%s' が見つかりません",
|
||||
"モジュール ファイル リスト内の複数のファイルが '%s' と一致しています",
|
||||
"'%s' に対して見つかったモジュール ファイルは別のモジュール用です",
|
||||
"あらゆる種類のモジュール ファイル",
|
||||
"モジュール ファイルを読み取れません",
|
||||
"現在のオプションで char8_t 型がサポートされていないので、ビルトイン関数を使用できません",
|
||||
"--ms_await コマンド ライン オプションは、C++20 コルーチンが有効になっている場合は指定できません",
|
||||
null,
|
||||
"既定の集約要素の初期化における明示的なコンストラクター %nod の非標準的な使用",
|
||||
"memcpy に似た組み込み関数のソースやターゲットでオブジェクトが指定されていません",
|
||||
"memcpy に似た組み込み関数により、表現上個別の型である %t1 と %t2 のコピーが試行されます",
|
||||
@@ -3452,8 +3452,8 @@
|
||||
"メンバーへのポインターが必要です",
|
||||
"フレキシブル配列メンバーは、otherwise-empty 型で宣言できません",
|
||||
"'std::source_location::__impl' が、データ メンバー '_M_function_name'、'_M_file_name'、'_M_column'、'_M_line' のみを持つクラスに定義される必要があります",
|
||||
"'std::source_location::__impl' の初期化中に、列番号が型 %t のメンバー '_M_column' をオーバーフローしました",
|
||||
"'std::source_location::__impl' の初期化中に、行番号が型 %t のメンバー '_M_line' をオーバーフローしました",
|
||||
"指定された列番号は 'std::source_location' 実装には大きすぎます",
|
||||
"指定された行番号は 'std::source_location' 実装には大きすぎます",
|
||||
"UTF-16 文字定数は複数のコード単位を占有できません。値が切り捨てられました",
|
||||
"両方の引数は同じ型である必要があります",
|
||||
"型 %t は、このビルトインの引数として無効です",
|
||||
@@ -3463,9 +3463,39 @@
|
||||
"浮動小数点ベクトル オペランド型 (%t) に一致する整数ベクトル型がありません",
|
||||
"'requires' 式のためのマングリングは、まだ実装されていません",
|
||||
"'unavailable' 属性が原因です",
|
||||
"IFC パーティション %sq へのインデックスを使用して、IFC パーティション %sq から要素を構築しようとしました",
|
||||
"'asm' 修飾子の複製",
|
||||
"不完全な列挙型を持つビット フィールド、または無効な基本型を持つ不透明な列挙のいずれかです",
|
||||
"IFC パーティション %sq2 へのインデックスを使用して、IFC パーティション %sq から要素を構築しようとしました",
|
||||
"パーティション %sq は、%d2 が予期されたときにエントリ サイズを %d1 として指定しました",
|
||||
"モジュール %sq1 の処理中に予期しない IFC 要件が発生しました",
|
||||
null,
|
||||
"アトミック制約は、それ自体に依存します"
|
||||
"条件が行 %d で失敗しました (%s1: %sq2)",
|
||||
"アトミック制約は、それ自体に依存します",
|
||||
"'noreturn' 関数に void 以外の戻り値の型があります",
|
||||
"パラメーター %sq (相対インデックス %d) を削除することで修正が行われています",
|
||||
"クラス外のメンバー テンプレートの定義では、既定のテンプレート引数を指定できません",
|
||||
"エンティティの再構築中に無効な IFC 識別子名 %sq が見つかりました",
|
||||
"エンティティの再構築中に %sq と命名された無効な IFC 識別子がスキップされました",
|
||||
"モジュール %sq は無効な並べ替え値です",
|
||||
"IFC モジュールから読み込まれた関数テンプレートが誤って %nd として解析されました",
|
||||
"モジュール %sq で IFC エンティティ参照を読み込めませんでした",
|
||||
"パーティション元 %sq 要素 %d1 (ファイル位置 %d2、相対位置 %d3)",
|
||||
"非単純デストラクターを持つクラス型では、チェーンされた指定子は許可されていません",
|
||||
"明示的特殊化宣言はフレンド宣言にできない場合があります",
|
||||
"std::float128_t 型はサポートされていません。代わりに std::float64_t が使用されます",
|
||||
"std::bfloat16_t 型はサポートされていません。代わりに std::float32_t が使用されます",
|
||||
"エイリアス テンプレート %no に対して演繹ガイドを宣言することはできません",
|
||||
"%n は使用できないと宣言されました",
|
||||
"%n は使用できないと宣言されました (%sq)",
|
||||
"'deprecated' 属性が原因です",
|
||||
"明示的なラムダ テンプレート パラメーターは C++20 機能です",
|
||||
"'_Noreturn' の使用は C23 で廃止されました。代わりに '[[noreturn]]' を使用してください",
|
||||
"'_Alignof' の使用は C23 で廃止されました。代わりに 'alignof' を使用してください",
|
||||
"'_Alignas' の使用は C23 で廃止されました。代わりに 'alignas' を使用してください",
|
||||
"'_Bool' の使用は C23 で廃止されました。代わりに 'bool' を使用してください",
|
||||
"'_Static_assert' の使用は C23 で廃止されました。代わりに 'static_assert' を使用してください",
|
||||
"'_Thread_local' の使用は C23 で廃止されました。代わりに 'thread_local' を使用してください",
|
||||
"モジュール ファイル %sq (Microsoft Visual Studio IFC モジュール) を使用するには、Microsoft モードを有効にする必要があります",
|
||||
"モジュール ファイル %sq を開くことができませんでした",
|
||||
"モジュール %sq のモジュール マップで見つかりました",
|
||||
"%sq のヘッダー ユニット マップで見つかりました"
|
||||
]
|
||||
@@ -180,7 +180,7 @@
|
||||
"배열에 적용된 '&'는 효과가 없습니다.",
|
||||
"'%%'의 오른쪽 피연산자는 0입니다.",
|
||||
"인수가 정식 매개 변수와 호환되지 않습니다.",
|
||||
"인수가 대응하는 서식 문자열 변환과 호환되지 않습니다.",
|
||||
"인수가 해당 형식 문자열 변환과 호환되지 않습니다(형식 %t1이(가) 예상되지만 인수 형식이 %t2임).",
|
||||
"소스 파일 %sq을(를) 열 수 없습니다(검색 목록에 디렉터리 없음).",
|
||||
"캐스트 형식은 정수 계열이어야 합니다.",
|
||||
"캐스트 형식은 산술 또는 포인터여야 합니다.",
|
||||
@@ -952,7 +952,7 @@
|
||||
"'nonstd_using_decl' 옵션은 C++를 컴파일할 경우에만 사용할 수 있습니다.",
|
||||
"'main' 함수의 반환 형식은 'int'여야 합니다.",
|
||||
"비형식 템플릿 매개 변수에는 클래스 형식을 사용할 수 없습니다.",
|
||||
"클래스 외부의 클래스 템플릿의 선언에서 기본 템플릿 인수를 지정할 수 없습니다.",
|
||||
"기본 템플릿 인수는 템플릿 외부의 클래스 템플릿 멤버 정의에 지정할 수 없습니다.",
|
||||
"생성자의 함수 try 블록 처리기에는 return 문을 사용할 수 없습니다.",
|
||||
"일반 지정자와 확장 지정자를 이니셜라이저 지정에서 결합할 수 없습니다.",
|
||||
"두 번째 첨자는 첫 번째 첨자보다 작아서는 안 됩니다.",
|
||||
@@ -1644,7 +1644,7 @@
|
||||
"%t2의 선언에 액세스할 수 없기 때문에 %t1에 대한 복사 생성자 선언이 표시되지 않았습니다.",
|
||||
"%t1의 소멸자는 액세스가 불가능하며 %t2의 소멸자가 표시되지 않았기 때문에 호출되지 않습니다.",
|
||||
"파일 끝에 있는 정의 다음에 세미콜론이나 선언자가 오지 않았습니다.",
|
||||
"첫 번째 인수는 정수 포인터이거나 열거형 형식이어야 합니다.",
|
||||
"첫 번째 인수는 정수 또는 열거형 형식에 대한 포인터여야 합니다.",
|
||||
"동기화된 작업은 크기가 1, 2, 4 또는 8인 개체에만 유효합니다.",
|
||||
"불필요한 인수가 무시되었습니다.",
|
||||
"명령줄 정의에서 매크로 이름 %sq 다음에는 '='로 간주됩니다.",
|
||||
@@ -1916,13 +1916,13 @@
|
||||
"매개 변수 팩에는 기본값을 사용할 수 없습니다.",
|
||||
"C++/CLI는 Microsoft C++ 모드에서만 사용할 수 있습니다.",
|
||||
"'value__'는 열거자 상수의 이름으로 사용할 수 없습니다(이 컨텍스트에서 예약된 이름임).",
|
||||
"부울 내부 형식을 사용하는 열거형 형식에는 명시적 열거자 값이 필요합니다.",
|
||||
"부울 기본 형식이 있는 열거형 형식에는 명시적 열거자 값이 필요합니다.",
|
||||
null,
|
||||
"매개 변수 팩 %sq이(가) 참조되었지만 확장되지 않았습니다.",
|
||||
"팩 확장에는 인수 팩이 사용되지 않습니다.",
|
||||
"%sq 팩의 요소 수가 %sq2과(와) 같지 않습니다.",
|
||||
null,
|
||||
"열거형 형식에서 vector_size 특성을 사용할 수 없습니다.",
|
||||
"vector_size 속성은 열거형 형식에 허용되지 않습니다.",
|
||||
"속성은 static이면서 virtual일 수 없습니다.",
|
||||
"인덱싱된 속성은 trivial일 수 없습니다.",
|
||||
"속성 정의에는 이 선언이 표시될 수 없습니다.",
|
||||
@@ -1955,7 +1955,7 @@
|
||||
"최상위 표시 유형 지정자에는 형식 정의가 필요합니다.",
|
||||
"trivial 속성에는 참조 형식을 사용할 수 없습니다.",
|
||||
"trivial 속성에는 const 또는 volatile 형식을 사용할 수 없습니다.",
|
||||
"%nd은(는) 이전에 다른 종류의 열거형 형식으로 선언되었습니다.",
|
||||
"%nd는 이전에 다른 종류의 열거형 형식으로 선언되었습니다.",
|
||||
"람다로 캡처된 변수에는 %[managed] 클래스 형식을 사용할 수 없습니다.",
|
||||
"%[managed] 클래스에는 공변(covariant) 반환 형식을 사용한 가상 함수 재정의를 사용할 수 없습니다.",
|
||||
"핸들의 배열을 사용할 수 없습니다.",
|
||||
@@ -2344,7 +2344,7 @@
|
||||
"%nd이(가) 이전에 다른 기본 형식을 사용하여 선언되었습니다.",
|
||||
"여기에서는 'enum class' 및 'enum struct'를 사용할 수 없습니다. 대신 일반 'enum'을 사용하세요.",
|
||||
"형식이 %t인 개체의 경우 이니셜라이저에 중괄호가 한 수준만 허용됩니다.",
|
||||
"%nd을(를) 열거형 형식 이름으로 사용할 수 없습니다.",
|
||||
"%nd는 열거형 이름으로 사용할 수 없습니다.",
|
||||
null,
|
||||
"중괄호로 묶인 이니셜라이저는 'new auto'와 함께 사용할 수 없습니다.",
|
||||
"std::initializer_list의 정의에 필요한 생성자가 포함되어 있지 않습니다.",
|
||||
@@ -2367,7 +2367,7 @@
|
||||
"비클래스 엔터티의 괄호로 묶인 이니셜라이저는 중괄호로 묶인 목록이 아니라 식이어야 합니다.",
|
||||
"중괄호로 묶인 목록은 이 람다에 대한 반환 형식을 제공하지 않습니다.",
|
||||
"선언된 예외 사양이 생성된 예외 사양과 호환되지 않습니다.",
|
||||
"범위가 지정된 열거형 형식이 C++11 기능입니다.",
|
||||
"범위가 지정된 열거형 형식은 C++11 기능입니다.",
|
||||
"함수 형식의 값은 초기화할 수 있습니다.",
|
||||
"%t 개체 형식의 list-initialization은 형식이 불완전하므로 허용되지 않습니다.",
|
||||
"std::initializer_list에 소멸자가 없어야 하는데 있습니다. 라이브러리가 잘못 구성되었습니다.",
|
||||
@@ -2406,7 +2406,7 @@
|
||||
"함수를 호출하려면 상수 식에 상수 값이 있어야 합니다.",
|
||||
"'main' 함수는 constexpr로 선언할 수 없습니다.",
|
||||
null,
|
||||
"클래스 또는 열거형 형식 정의는 constexpr 함수 또는 생성자 본문에 사용할 수 없습니다.",
|
||||
"클래스 또는 열거형 형식 정의는 constexpr 함수 또는 생성자 본문에 나타날 수 없습니다.",
|
||||
"여기에는 GNU 스타일의 특성만 허용됩니다.",
|
||||
"이니셜라이저에서 형식을 추론하고 후행 반환 형식을 알리는 'auto'의 비표준 사용입니다.",
|
||||
"정규화된 void 형식의 void 매개 변수 목록 선언은 표준이 아닙니다.",
|
||||
@@ -2664,7 +2664,7 @@
|
||||
"constexpr 함수에 있는 변수의 초기화가 취소되었습니다.",
|
||||
"자리 표시자 형식은 있으나 `=`는 없이 선언된 변수의 중괄호 초기화에서는 중괄호 안에 정확히 하나의 요소가 있어야 합니다.",
|
||||
"'%s' 없음 --대상 구성이 존재함",
|
||||
"64비트 x86 구성에서 지원되지 않는 특성",
|
||||
"속성은 32비트 x86 구성에서만 지원됩니다.",
|
||||
"'%s'에 인수 필요",
|
||||
"생성자 또는 소멸자는 코루틴일 수 없습니다.",
|
||||
"%n은(는) 코루틴일 수 없습니다.",
|
||||
@@ -2935,7 +2935,7 @@
|
||||
"amp 제한 멤버 함수 %nfd에 대한 this 포인터의 %t 형식이 잘못되었습니다.",
|
||||
"amp 제한 함수 %nfd의 반환 형식 %t이(가) 잘못되었습니다.",
|
||||
"amp 제한 함수 %nfd의 매개 변수 형식 %t이(가) 잘못되었습니다.",
|
||||
null,
|
||||
"amp 제한 함수 %nfd의 구문이 잘못되었습니다.",
|
||||
"잘못된 스토리지 클래스 %s(amp 제한 함수 %nfd 내)",
|
||||
"%s은(는) amp 제한 함수 %nfd에서 사용할 수 없습니다.",
|
||||
"amp 제한 함수의 캐스트가 잘못되었습니다.",
|
||||
@@ -3292,7 +3292,7 @@
|
||||
"volatile 형식 %t은(는) __builtin_bit_cast의 constexpr 평가를 차단합니다.",
|
||||
"공용 구조체, 포인터 또는 멤버 포인터 형식 %t은(는) __builtin_bit_cast의 constexpr 평가를 차단합니다.",
|
||||
"%npTd, decl %p 사용을 통해 상속됨",
|
||||
"생성자를 상속하기 위해 %t의 하위 개체를 생성할 수 없습니다. 암시적 기본 생성자가 삭제됩니다.",
|
||||
"생성자를 상속하기 위한 %t의 하위 개체 생성을 수행할 수 없습니다. 연결된 생성자가 삭제됩니다.",
|
||||
"%n은(는) void를 반환해야 합니다.",
|
||||
"잘못된 멤버 선언 시작",
|
||||
"'auto'가 필요합니다.",
|
||||
@@ -3343,14 +3343,14 @@
|
||||
"'%s'에 대한 모듈 파일 매핑이 두 번 이상 지정되었습니다.",
|
||||
"'%s'에 대한 헤더 단위 매핑이 두 번 이상 지정되었습니다.",
|
||||
"'%s'에 대한 매핑이 지정되지 않았습니다.",
|
||||
"'%s'에 대한 모듈 파일 매핑이 잘못되었습니다.",
|
||||
null,
|
||||
"가져올 '%s' 헤더를 찾을 수 없습니다.",
|
||||
"모듈 파일 목록에 있는 두 개 이상의 파일이 '%s'과(와) 일치합니다.",
|
||||
"'%s'에 대해 찾은 모듈 파일이 다른 모듈에 대한 것입니다.",
|
||||
"모든 종류의 모듈 파일",
|
||||
"모듈 파일을 읽을 수 없음",
|
||||
"char8_t 형식이 현재 옵션에서 지원되지 않기 때문에 기본 제공 함수를 사용할 수 없습니다.",
|
||||
"C++20 코루틴을 사용하도록 설정한 경우 --ms_await 명령줄 옵션을 지정할 수 없습니다.",
|
||||
null,
|
||||
"기본 집계 요소 초기화에 명시적 생성자 %nod의 비표준 사용",
|
||||
"memcpy 유사 내장의 소스 또는 대상이 개체를 가리키지 않음",
|
||||
"memcpy 유사 내장이 대표적으로 차별화된 형식 %t1 및 %t2을(를) 복사하려고 시도함",
|
||||
@@ -3452,8 +3452,8 @@
|
||||
"멤버 포인터가 필요합니다.",
|
||||
"유연한 배열 멤버는 비어 있는 형식으로 선언할 수 없습니다.",
|
||||
"예상되는 'std::source_location::__impl'이 '_M_function_name', '_M_file_name', '_M_column', '_M_line'의 데이터 멤버만을 포함하는 클래스에 정의되어야 함",
|
||||
"'std::source_location::__impl' 초기화 중 열 번호가 %t 형식의 '_M_column' 멤버를 오버플로",
|
||||
"'std::source_location::__impl' 초기화 중 줄 번호가 %t 형식의 '_M_line' 멤버를 오버플로",
|
||||
"주어진 열 번호가 'std::source_location' 구현에 너무 큽니다.",
|
||||
"주어진 줄 번호가 'std::source_location' 구현에 너무 큽니다.",
|
||||
"UTF-16 문자 상수는 코드 단위를 두 개 이상 사용할 수 없음; 값 잘림",
|
||||
"두 인수의 형식이 같아야 함",
|
||||
"%t 형식은 이 기본 제공의 인수로 사용할 수 없음",
|
||||
@@ -3463,9 +3463,39 @@
|
||||
"부동 소수점 벡터 피연산자 유형(%t)에 일치하는 정수 벡터 유형이 없습니다.",
|
||||
"'requires' 식에 대한 mangling이 아직 구현되지 않았습니다.",
|
||||
"'unavailable' 특성 때문에",
|
||||
"IFC 파티션 %sq에 대한 인덱스를 사용하여 IFC 파티션 %sq에서 요소를 구성하려고 했습니다.",
|
||||
"중복된 'asm' 한정자",
|
||||
"불완전한 열거형 형식이 있는 비트 필드 또는 잘못된 기본 형식이 있는 불투명 열거형",
|
||||
"IFC 파티션 %sq2에 대한 인덱스를 사용하여 IFC 파티션 %sq에서 요소를 구성하려고 했습니다.",
|
||||
"파티션 %sq는 %d2가 예상될 때 항목 크기를 %d1로 지정했습니다.",
|
||||
"모듈 %sq1을(를) 처리하는 동안 예기치 않은 IFC 요구 사항이 발생했습니다.",
|
||||
null,
|
||||
"원자성 제약 조건은 자체에 따라 달라집니다."
|
||||
"%d행(%s1)에서 조건 실패: %sq2",
|
||||
"원자성 제약 조건은 자체에 따라 달라집니다.",
|
||||
"'noreturn' 함수에 void가 아닌 반환 형식이 있습니다.",
|
||||
"매개 변수 %sq(상대 인덱스 %d)를 삭제하여 수정했습니다.",
|
||||
"클래스 외부의 멤버 템플릿 정의에 기본 템플릿 인수를 지정할 수 없습니다.",
|
||||
"엔터티를 재구성하는 동안 %sq라는 잘못된 IFC 식별자를 발견했습니다.",
|
||||
"엔티티를 재구성하는 동안 %sq라는 잘못된 IFC 식별자를 건너뛰었습니다.",
|
||||
"모듈 %sq 잘못된 정렬 값",
|
||||
"IFC 모듈에서 로드된 함수 템플릿이 %nd(으)로 잘못 구문 분석되었습니다.",
|
||||
"모듈 %sq에서 IFC 엔터티 참조를 로드하지 못했습니다.",
|
||||
"파티션 %sq 요소 %d1(파일 위치 %d2, 상대 위치 %d3)에서",
|
||||
"비자명 소멸자가 있는 클래스 형식에는 연결된 지정자를 사용할 수 없습니다.",
|
||||
"명시적 전문화 선언은 friend 선언이 아닐 수 있습니다.",
|
||||
"std::float128_t 형식은 지원되지 않습니다. std::float64_t이(가) 대신 사용됩니다.",
|
||||
"std::bfloat16_t 형식은 지원되지 않습니다. std::float32_t이(가) 대신 사용됩니다.",
|
||||
"별칭 템플릿 %no에 대해 추론 가이드를 선언할 수 없습니다.",
|
||||
"%n이(가) 사용할 수 없음으로 선언되었습니다.",
|
||||
"%n이(가) 사용할 수 없음으로 선언되었습니다 (%sq).",
|
||||
"'deprecated' 특성 때문에",
|
||||
"명시적 람다 템플릿 매개 변수는 C++20 기능입니다.",
|
||||
"'_Noreturn'은 C23에서 더 이상 사용되지 않습니다. 대신 '[[noreturn]]'을 사용하세요.",
|
||||
"'_Alignof'는 C23에서 더 이상 사용되지 않습니다. 대신 'alignof'를 사용하세요.",
|
||||
"'_Alignas'는 C23에서 더 이상 사용되지 않습니다. 대신 'alignas'를 사용하세요.",
|
||||
"'_Bool'은 C23에서 더 이상 사용되지 않습니다. 대신 'bool'을 사용하세요.",
|
||||
"'_Static_assert'는 C23에서 더 이상 사용되지 않습니다. 대신 'static_assert'을 사용하세요.",
|
||||
"'_Thread_local'은 C23에서 더 이상 사용되지 않습니다. 대신 'thread_local'을 사용하세요.",
|
||||
"모듈 파일 %sq(Microsoft Visual Studio IFC 모듈)을 사용하려면 Microsoft 모드를 활성화해야 합니다.",
|
||||
"모듈 파일 %sq을(를) 열 수 없습니다.",
|
||||
"모듈 %sq에 대한 모듈 맵에서 찾았습니다.",
|
||||
"%sq의 헤더 단위 맵에서 찾았습니다."
|
||||
]
|
||||
@@ -180,7 +180,7 @@
|
||||
"zastosowanie operatora „&” do tablicy nie ma żadnego efektu",
|
||||
"prawy argument operacji „%%” wynosi zero",
|
||||
"argument jest niezgodny z parametrem formalnym",
|
||||
"argument jest niezgodny z odpowiadającą konwersją ciągu formatu",
|
||||
"argument jest niezgodny z odpowiednią konwersją ciągu formatu (oczekiwano typu %t1, ale argument ma typ %t2)",
|
||||
"nie można otworzyć pliku źródłowego %sq (brak katalogów na liście wyszukiwania)",
|
||||
"typ rzutowania musi być wartością całkowitą",
|
||||
"typ rzutowania musi być wartością arytmetyczną lub wskaźnikiem",
|
||||
@@ -686,7 +686,7 @@
|
||||
"wykryto podczas niejawnego generowania elementu %nt %p",
|
||||
"wykryto podczas tworzenia wystąpienia elementu %na %p",
|
||||
"wykryto podczas przetwarzania listy argumentów szablonu dla elementu %na %p",
|
||||
"wykryto podczas niejawnego definiowania elementu %na %p",
|
||||
"wykryto podczas niejawnego definiowania elementu %nt %p",
|
||||
"elementu %sq nie znaleziono na stosie wyrównania pakowania",
|
||||
"pusty stos wyrównania pakowania",
|
||||
"opcji RTTI można użyć tylko w przypadku kompilowania kodu C++",
|
||||
@@ -876,11 +876,11 @@
|
||||
"opcji „embedded_c++” można użyć tylko w przypadku kompilowania kodu C++",
|
||||
"dialekt Embedded C++ nie obsługuje szablonów",
|
||||
"dialekt Embedded C++ nie ma obsługi wyjątków",
|
||||
"dialekt Embedded C++ nie obsługuje przestrzeni nazw",
|
||||
"Język Embedded C++ nie obsługuje przestrzeni nazw",
|
||||
"dialekt Embedded C++ nie obsługuje informacji o typie w czasie wykonywania",
|
||||
"dialekt Embedded C++ nie obsługuje nowej składni operatora cast",
|
||||
"dialekt Embedded C++ nie obsługuje deklaracji using",
|
||||
"dialekt Embedded C++ nie obsługuje słowa kluczowego „mutable”",
|
||||
"Język Embedded C++ nie obsługuje słowa kluczowego \"mutable\"",
|
||||
"dialekt Embedded C++ nie obsługuje dziedziczenia wielokrotnego ani wirtualnego",
|
||||
"nieprawidłowy numer wersji Microsoft: %s",
|
||||
"reprezentacja wskaźnika do składowej %sq została już ustawiona dla elementu %n",
|
||||
@@ -952,7 +952,7 @@
|
||||
"opcji „nonstd_using_decl” można użyć tylko w przypadku kompilowania kodu C++",
|
||||
"zwracanym typem funkcji „main” musi być typ „int”",
|
||||
"parametr stałej parametryzującej szablon nie może być typu klasy",
|
||||
"nie można określić domyślnego argumentu szablonu w deklaracji składowej szablonu klasy poza jego klasą",
|
||||
"nie można określić domyślnego argumentu szablonu w definicji elementu członkowskiego szablonu klasy poza szablonem",
|
||||
"instrukcja return jest niedozwolona w procedurze obsługi bloku try konstruktora",
|
||||
"desygnatory zwykłe i rozszerzone nie mogą być łączone w wyznaczeniu inicjatora",
|
||||
"drugi indeks nie może być mniejszy niż pierwszy",
|
||||
@@ -1916,13 +1916,13 @@
|
||||
"pakiet parametrów nie może mieć wartości domyślnej",
|
||||
"kod C++/CLI może zostać włączony tylko w trybie Microsoft C++",
|
||||
"wyrażenie „value__” nie może być używane jako nazwa wartości stałej modułu wyliczającego (w tym kontekście jest to nazwa zastrzeżona)",
|
||||
"w typie wyliczenia z typem bazowym Boolean jest wymagana jawna wartość modułu wyliczającego",
|
||||
"jawna wartość modułu wyliczającego jest wymagana w typie wyliczenia z typem bazowym wartości logicznej",
|
||||
null,
|
||||
"utworzono odwołanie do pakietu parametrów %sq, ale nie został on rozwinięty",
|
||||
"rozwinięcie pakietu nie korzysta z żadnych pakietów argumentów",
|
||||
"pakiet %sq nie zawiera takiej samej liczby elementów jak %sq2",
|
||||
null,
|
||||
"atrybut vector_size nie jest dozwolony dla typu wyliczenia",
|
||||
"Atrybut vector_size nie jest dozwolony dla typu wyliczenia",
|
||||
"właściwość nie może być jednocześnie statyczna i wirtualna",
|
||||
"właściwość indeksowania nie może być prosta",
|
||||
"ta deklaracja nie może występować w definicji właściwości",
|
||||
@@ -1955,7 +1955,7 @@
|
||||
"specyfikator widoczności najwyższego poziomu wymaga definicji typu",
|
||||
"właściwość prosta nie może mieć typu referencyjnego",
|
||||
"właściwość prosta nie może być typu const ani volatile",
|
||||
"element %nd został wcześniej zadeklarowany jako inny rodzaj typu wyliczenia",
|
||||
"Element %nd został wcześniej zadeklarowany jako inny rodzaj typu wyliczenia",
|
||||
"zmienna przechwycona przez element lambda nie może mieć klasy typu %[managed]",
|
||||
"przesłanianie funkcji wirtualnej za pomocą kowariantnego typu zwracanego jest niedozwolone w klasie typu %[managed]",
|
||||
"tablica dojść jest niedozwolona",
|
||||
@@ -2216,7 +2216,7 @@
|
||||
"typ w operacji dynamic_cast nie może być typem ogólnym, który może być typem wartości",
|
||||
"nazwa zawierająca znaki uniwersalne musi wyznaczać prawidłowy punkt kodu",
|
||||
"ograniczenia ogólne nie są zgodne z ograniczeniami elementu %nd",
|
||||
"słowo kluczowe __underlying_type ma zastosowanie tylko do typów wyliczenia",
|
||||
"__underlying_type dotyczy tylko typów wyliczenia",
|
||||
"oczekiwano tylko jednego wyrażenia argumentu operacji dla tego rzutowania",
|
||||
"nie można przedstawić znaku Unicode o wartości szesnastkowej %s w domyślnej systemowej stronie kodowej",
|
||||
"niestandardowa konwersja powiązania wskaźnika do składowej ze wskaźnikiem funkcji",
|
||||
@@ -2344,7 +2344,7 @@
|
||||
"element %nd został wcześniej zadeklarowany z innym typem bazowym",
|
||||
"nie można tutaj użyć deklaracji „enum class” ani „enum struct” (zamiast tego użyj zwykłej deklaracji „enum”)",
|
||||
"tylko jeden poziom nawiasów klamrowych jest dozwolony w przypadku inicjatora dla obiektu typu %t",
|
||||
"nie można używać elementu %nd jako nazwy typu wyliczenia",
|
||||
"Nie można użyć elementu %nd jako nazwy typu wyliczenia",
|
||||
null,
|
||||
"inicjator w nawiasach klamrowych nie może być używany z obiektem „new auto”",
|
||||
"definicja obiektu std::initializer_list nie zawiera oczekiwanego konstruktora",
|
||||
@@ -2367,7 +2367,7 @@
|
||||
"inicjator w nawiasach dla jednostki bez klasy musi być wyrażeniem, a nie listą w nawiasach klamrowych",
|
||||
"lista w nawiasach klamrowych nie dostarcza zwracanego typu dla tego elementu lambda",
|
||||
"zadeklarowana specyfikacja wyjątku jest niezgodna z wygenerowaną",
|
||||
"typy wyliczeń z zakresem są funkcją języka C++11",
|
||||
"typy wyliczenia w zakresie są funkcją języka C++11",
|
||||
"typ funkcji nie może być inicjowany przez wartość",
|
||||
"inicjalizacja typu obiektu %t za pomocą listy jest niedozwolona, ponieważ typ jest niekompletny",
|
||||
"obiekt std::initializer_list ma destruktora, a nie powinien — biblioteka jest błędnie skonfigurowana",
|
||||
@@ -2406,7 +2406,7 @@
|
||||
"wywołanie funkcji musi mieć wartość stałą w wyrażeniu stałej",
|
||||
"słowo kluczowe „main” funkcji nie może być deklarowane jako constexpr",
|
||||
null,
|
||||
"definicja typu wyliczenia ani klasy nie może występować w treści funkcji ani konstruktora constexpr",
|
||||
"definicja typu wyliczenia ani klasy nie może występować w funkcji constexpr ani treści konstruktora",
|
||||
"tylko atrybuty w stylu GNU są tutaj dozwolone",
|
||||
"niestandardowe użycie słowa kluczowego „auto” w celu zarówno ustalenia typu z inicjatora, jak i zaanonsowania końcowego typu zwracanego",
|
||||
"deklarowanie listy parametrów void za pomocą kwalifikowanego typu void jest niestandardowe",
|
||||
@@ -2664,7 +2664,7 @@
|
||||
"nie zainicjowano zmiennej w funkcji constexpr",
|
||||
"Inicjowanie w nawiasach klamrowych zmiennej zadeklarowanej przy użyciu typu symbolu zastępczego bez znaku „=” wymaga dokładnie jednego elementu w nawiasach klamrowych",
|
||||
"konfiguracja opcji --target elementu „%s” nie istnieje",
|
||||
"atrybut nie jest obsługiwany w 64-bitowych konfiguracjach x86",
|
||||
"atrybut jest obsługiwany tylko w 32-bitowych konfiguracjach x86",
|
||||
"element „%s” wymaga argumentu",
|
||||
"konstruktor lub destruktor nie może być koprocedurą",
|
||||
"element %n nie może być koprocedurą",
|
||||
@@ -2935,7 +2935,7 @@
|
||||
"niedozwolony typ %t we wskaźniku this dla funkcji składowej ograniczonej przez amp %nfd",
|
||||
"niedozwolony zwracany typ %t dla funkcji z ograniczeniem amp %nfd",
|
||||
"niedozwolony typ parametru %t dla funkcji z ograniczeniem amp %nfd",
|
||||
null,
|
||||
"niedozwolona konstrukcja w funkcji z ograniczeniami amp %nfd",
|
||||
"niedozwolona klasa magazynu %s w funkcji z ograniczeniem amp %nfd",
|
||||
"element %s nie jest dozwolony w funkcji z ograniczeniem amp %nfd",
|
||||
"niedozwolone rzutowanie w funkcji z ograniczeniem amp",
|
||||
@@ -3343,14 +3343,14 @@
|
||||
"mapowanie pliku modułu dla elementu „%s” zostało określone więcej niż raz",
|
||||
"mapowanie jednostki nagłówka dla elementu „%s” zostało określone więcej niż raz",
|
||||
"nie określono mapowania dla elementu „%s”",
|
||||
"mapowanie pliku modułu dla elementu „%s” jest nieprawidłowe",
|
||||
null,
|
||||
"nie można odnaleźć nagłówka „%s” do zaimportowania",
|
||||
"więcej niż jeden plik na liście plików modułu pasuje do elementu „%s”",
|
||||
"plik modułu znaleziony dla elementu „%s” jest dla innego modułu",
|
||||
"dowolny rodzaj pliku modułu",
|
||||
"nie można odczytać pliku modułu",
|
||||
"wbudowana funkcja jest niedostępna, ponieważ typ char8_t nie jest obsługiwany z bieżącymi opcjami",
|
||||
"nie można określić opcji wiersza polecenia --ms_await, jeśli włączono koprocedury języka C++20",
|
||||
null,
|
||||
"niestandardowe użycie konstruktora jawnego %nod dla domyślnej inicjalizacji elementu agregacji",
|
||||
"element źródłowy lub docelowy funkcji wewnętrznej podobnej do memcpy nie wskazuje obiektu",
|
||||
"Funkcja wewnętrzna podobna do memcpy próbuje skopiować reprezentacyjnie odrębne typy %t1 i %t2",
|
||||
@@ -3378,7 +3378,7 @@
|
||||
"Ciąg „module” nie jest dozwolony w nazwie modułu",
|
||||
null,
|
||||
null,
|
||||
"Element %n nie jest typem wyliczenia",
|
||||
"%n nie jest typem wyliczenia",
|
||||
"moduł wyliczający %no2 powoduje konflikt z elementem %n1",
|
||||
"moduł wyliczający %no został już zadeklarowany w tym zakresie %p",
|
||||
"Specyfikacja „throw()” nie jest częścią języka C++20 i nowszych",
|
||||
@@ -3452,8 +3452,8 @@
|
||||
"oczekiwano wskaźnika do składowej",
|
||||
"elastyczna składowa tablicy nie może być zadeklarowana w typie pustym w inny sposób",
|
||||
"oczekiwano zdefiniowania elementu „std::source_location::__impl” w klasie z tylko składowymi danych „_M_function_name”, „_M_file_name”, „_M_column”, „_M_line”",
|
||||
"podczas inicjowania elementu „std::source_location::__impl” liczba kolumn przepełnia składową „_M_column” typu %t",
|
||||
"podczas inicjowania elementu „std::source_location::__impl” liczba wierszy przepełnia składową „_M_line” typu %t",
|
||||
"podany numer kolumny jest zbyt duży dla implementacji „std::source_location”",
|
||||
"podany numer wiersza jest zbyt duży dla implementacji „std::source_location”",
|
||||
"stała znaków UTF-16 nie może zajmować więcej niż jednej jednostki kodu; obcięta wartość",
|
||||
"oba argumenty muszą mieć ten sam typ",
|
||||
"typ %t jest nieprawidłowy jako argument dla tej wbudowanej",
|
||||
@@ -3463,9 +3463,39 @@
|
||||
"typ operandu wektora zmiennoprzecinkowego (%t) nie ma zgodnego typu wektora liczb całkowitych",
|
||||
"nie jest jeszcze zaimplementowane dekorowanie wyrażeń typu „requires”.",
|
||||
"z powodu atrybutu „unavailable”",
|
||||
"zduplikowany kwalifikator „asm”",
|
||||
"pole bitowe z niekompletnym typem wyliczeniowym lub nieprzezroczyste wyliczenie z nieprawidłowym typem podstawowym",
|
||||
"próbowano skonstruować element z partycji IFC %sq przy użyciu indeksu do partycji IFC %sq",
|
||||
"partycja %sq określiła swój rozmiar wpisu jako %d1, gdy oczekiwano wartości %d2",
|
||||
"napotkano nieoczekiwane wymaganie IFC podczas przetwarzania modułu %sq1",
|
||||
"warunek nie powiódł się w wierszu %d w %s1: %sq2",
|
||||
"niepodzielne ograniczenie zależy od samego siebie"
|
||||
"niepodzielne ograniczenie zależy od samego siebie",
|
||||
"Funkcja \"noreturn\" ma zwracany typ inny niż void",
|
||||
"wprowadzono poprawkę przez usunięcie parametru %sq (względny indeks %d)",
|
||||
"nie można określić domyślnego argumentu szablonu w deklaracji szablonu składowej klasy poza jej klasą",
|
||||
"napotkano nieprawidłową nazwę identyfikatora IFC %sq podczas odbudowy jednostki",
|
||||
"podczas odbudowy jednostki pominięto nieprawidłowy identyfikator IFC o nazwie %sq",
|
||||
"nieprawidłowa wartość sortowania modułu %sq",
|
||||
"szablon funkcji załadowany z modułu IFC został niepoprawnie przeanalizowany jako %nd",
|
||||
"nie można załadować odwołania do jednostki IFC w module %sq",
|
||||
"z partycji %sq element %d1 (pozycja pliku %d2, względna pozycja %d3)",
|
||||
"desygnator łańcuchowy nie jest dozwolony dla typu klasy z destruktorem nietrywialnym",
|
||||
"jawna deklaracja specjalizacji nie może być deklaracją zaprzyjaźnioną",
|
||||
"typ std::float128_t nie jest obsługiwany; zamiast tego zostanie użyty std::float64_t",
|
||||
"Typ std::bfloat16_t nie jest obsługiwany; zamiast tego zostanie użyty std::float32_t",
|
||||
"nie można zadeklarować przewodnika wnioskowania dla szablonu aliasu %no",
|
||||
"Element %n został zadeklarowany jako niedostępny",
|
||||
"Element %n został zadeklarowany jako niedostępny (%sq)",
|
||||
"z powodu atrybutu „deprecated”",
|
||||
"jawne parametry szablonu lambda są funkcją języka C++20",
|
||||
"użycie elementu „_Noreturn” jest przestarzałe w języku C23; użyj zamiast tego „[[noreturn]]”",
|
||||
"użycie elementu „_Alignof” jest przestarzałe w C23; użyj zamiast tego elementu „alignof”",
|
||||
"użycie elementu „_Alignas” zostało uznane za przestarzałe w C23; użyj zamiast tego elementu „alignas”",
|
||||
"użycie elementu „_Bool” jest przestarzałe w języku C23; użyj zamiast tego opcji „bool”",
|
||||
"użycie elementu „_Static_assert” jest przestarzałe w języku C23; użyj zamiast tego elementu \"static_assert\"",
|
||||
"użycie elementu „_Thread_local” jest przestarzałe w języku C23; użyj zamiast tego elementu \"thread_local\"",
|
||||
"Aby można było używać pliku modułu %sq (modułu MICROSOFT Visual Studio IFC) musi być włączony tryb firmy Microsoft.",
|
||||
"nie można otworzyć pliku modułu %sq",
|
||||
"znaleziono w mapie modułu dla modułu %sq",
|
||||
"znaleziono na mapie jednostki nagłówka dla %sq"
|
||||
]
|
||||
@@ -180,7 +180,7 @@
|
||||
"'&' não possui efeito quando aplicado a uma matriz",
|
||||
"o operador da direta de '%%' é zero",
|
||||
"argumento é incompatível com parâmetro formal",
|
||||
"argumento é incompatível com conversão de formato de cadeia de caracteres correspondente",
|
||||
"o argumento é incompatível com a conversão de cadeia de caracteres de formato correspondente (tipo esperado %t1, mas o argumento tem o tipo %t2)",
|
||||
"não pôde abrir o arquivo fonte %sq (nenhum diretório na lista de busca)",
|
||||
"tipo de conversão deve ser integral",
|
||||
"tipo de conversão deve ser aritmético ou ponteiro",
|
||||
@@ -952,7 +952,7 @@
|
||||
"a opção 'nonstd_using_decl' pode ser utilizada somente quando se estiver compilando C++",
|
||||
"o tipo de retorno da função 'main' deve ser 'int'",
|
||||
"um parâmetro de modelo sem tipo pode não ter tipo de classe",
|
||||
"um argumento de modelo padrão não pode ser especificado na declaração de um membro de um modelo de classe fora de sua classe",
|
||||
"um argumento de modelo padrão não pode ser especificado na definição de um membro de um modelo de classe fora do modelo",
|
||||
"uma instrução return não é permitida em um manipulador de um bloco try de função de um construtor",
|
||||
"os designadores estendidos e comuns não podem ser combinados em uma designação de inicializador",
|
||||
"a segunda subscrição não deve ser menor que a primeira",
|
||||
@@ -1644,7 +1644,7 @@
|
||||
"a declaração do construtor de cópia para %t1 foi suprimida porque a de %t2 está inacessível",
|
||||
"o destruidor para %t1 não será chamado porque está inacessível e o destruidor para %t2 foi suprimido",
|
||||
"definição no fim do arquivo não seguida por ponto e vírgula ou um declarador",
|
||||
"o primeiro argumento deve ser do tipo ponteiro para número inteiro ou enumeração",
|
||||
"o primeiro argumento deve der do tipo ponteiro para número inteiro ou enumerado",
|
||||
"as operações sincronizadas são válidas somente em objetos de tamanho 1, 2, 4 ou 8",
|
||||
"argumentos extras ignorados",
|
||||
"'=' presumido seguindo um nome de macro %sq na definição da linha de comando",
|
||||
@@ -1916,13 +1916,13 @@
|
||||
"pacotes de parâmetros não podem ter um default",
|
||||
"C++/ CLI podem ser ativados apenas no modo do Microsoft C++",
|
||||
"'value__' não pode ser usado como nome para uma constante de enumerador (é um nome reservado neste contexto)",
|
||||
"é necessário um valor explícito de enumerador em um tipo de enumerador com tipo subjacente booleano",
|
||||
"é necessário um valor explícito de enumerador em um tipo enumerado com tipo subjacente booliano",
|
||||
null,
|
||||
"o pacote de parâmetros %sq foi citado, mas não expandido",
|
||||
"o pacote de expansão não utiliza nenhum dos pacotes de argumentos",
|
||||
"o pacote %sq não tem o mesmo número de elementos de %sq2",
|
||||
null,
|
||||
"o atributo vector_size não é permitido com um tipo de enumeração",
|
||||
"o atributo vector_size não é permitido com um tipo enumerado",
|
||||
"uma propriedade não pode ser ao mesmo tempo estática e virtual",
|
||||
"uma propriedade indexada não pode ser trivial",
|
||||
"esta declaração não pode aparecer em uma definição de propriedade",
|
||||
@@ -1955,7 +1955,7 @@
|
||||
"um especificador de visibilidade de nível superior requer uma definição de tipo",
|
||||
"uma propriedade trivial não pode possuir um tipo de referência",
|
||||
"uma propriedade trivial não pode ter um tipo const ou volátil",
|
||||
"%nd foi declarado anteriormente como um tipo diferente do tipo de enumeração",
|
||||
"%nd foi declarado anteriormente como um tipo diferente do tipo enumerado",
|
||||
"uma variável capturada por um lambda não pode ter um tipo de classe %[managed]",
|
||||
"substituição de funções com tipos de saída covariantes não são permitidos em classes %[managed]",
|
||||
"matrizes de controladores não são permitidas",
|
||||
@@ -2175,7 +2175,7 @@
|
||||
"especificadores de substituição nomeados só são permitidos em classes %[managed]",
|
||||
"nenhum membro designado pelo especificador de substituição nomeado corresponde ao tipo deste membro",
|
||||
"uma declaração de construtor estático não pode incluir um especificador de substituição nomeado",
|
||||
"tipos de enumeração com escopo deve ter um nome",
|
||||
"um tipo enumerado com escopo deve ter um nome",
|
||||
"não permitida a transferência de controle para um bloco finally",
|
||||
"instrução return dentro de blocos finally não permitida",
|
||||
"o bloqueio de tentativa exige pelo menos um manipulador ou cláusula finalmente",
|
||||
@@ -2216,7 +2216,7 @@
|
||||
"o tipo em um dynamic_cast não pode ser um tipo genérico que possa ser um tipo value",
|
||||
"um nome de caractere universal deve designar um ponto de código válido",
|
||||
"restrições genéricas não correspondem às de %nd",
|
||||
"__underlying_type só se aplica a tipos de enumeração",
|
||||
"__underlying_type só se aplica a tipos enumerados",
|
||||
"espera-se apenas uma expressão de operando para essa conversão",
|
||||
"caractere Unicode com valor hexadecimal %s não representável na página de código padrão do sistema",
|
||||
"conversão não padrão de ponteiro para membro acoplado um ponteiro de função",
|
||||
@@ -2344,7 +2344,7 @@
|
||||
"%nd foi declarado anteriormente com um tipo base diferente",
|
||||
"'enum class' e 'enum struct' não podem ser usados aqui (use 'enum' simples)",
|
||||
"somente um nível de chave é permitido em um inicializador para um objeto do tipo %t",
|
||||
"%nd não pode ser usado como um nome de tipo de enumeração",
|
||||
"%nd não pode ser usado como um nome de tipo enumerado",
|
||||
null,
|
||||
"um inicializador entre chaves não pode ser usado com 'new auto'",
|
||||
"a definição de std::initializer_list não contém o construtor esperado",
|
||||
@@ -2367,7 +2367,7 @@
|
||||
"um inicializador entre parênteses para uma entidade não classe deve ser uma expressão, e não uma lista delimitada por chaves",
|
||||
"uma lista delimitada por chaves não fornece um tipo de retorno para este lambda",
|
||||
"a especificação da exceção declarada é incompatível com a gerada",
|
||||
"os tipos de enumeração com escopo são um recurso do C++11",
|
||||
"os tipos enumerados com escopo são um recurso do C++11",
|
||||
"um tipo de função não pode ser inicializado por valor",
|
||||
"a inicialização de lista de um tipo de objeto %t não é permitida porque o tipo está incompleto",
|
||||
"std::initializer_list possui um destruidor, mas não deveria -- a biblioteca está configurada incorretamente",
|
||||
@@ -2406,7 +2406,7 @@
|
||||
"a chamada de função deve ter um valor constante em uma expressão constante",
|
||||
"a função 'main' não pode ser declarada como constexpr",
|
||||
null,
|
||||
"uma definição de tipo de enumeração ou classe não pode aparecer em um corpo de construtor ou função constexpr",
|
||||
"uma definição de tipo enumerado ou classe não pode aparecer em um corpo de construtor ou função constexpr",
|
||||
"somente atributos GNU-style são permitidos aqui",
|
||||
"uso não padrão de 'auto' para deduzir o tipo a partir de um inicializador e para anunciar um tipo de retorno à direita",
|
||||
"a declaração de uma lista de parâmetros void com um tipo void qualificado não é padrão",
|
||||
@@ -2664,7 +2664,7 @@
|
||||
"a variável na função constexpr não foi inicializada",
|
||||
"inicialização entre chaves de uma variável declarada com um tipo de espaço reservado, mas sem '=', requer exatamente um elemento entre chaves",
|
||||
"nenhuma --configuração de destino '%s' existente",
|
||||
"o atributo não tem suporte em configurações x86 de 64 bits",
|
||||
"o atributo tem suporte apenas em configurações x86 de 32 bits",
|
||||
"'%s' exige um argumento",
|
||||
"um construtor ou destruidor não pode ser uma corrotina",
|
||||
"%n não pode ser um corrotina",
|
||||
@@ -2935,7 +2935,7 @@
|
||||
"tipo ilegal %t neste ponteiro para a função membro restrita por amp %nfd",
|
||||
"tipo de retorno %t ilícito para a função restrita por amp %nfd",
|
||||
"tipo de parâmetro %t ilícito para a função restrita por amp %nfd",
|
||||
null,
|
||||
"constructo ilícito na função restrita por amp %nfd",
|
||||
"classe de armazenamento %s ilícito na função restrita por amp %nfd",
|
||||
"%s não é permitido na função restrita por amp %nfd",
|
||||
"conversão ilícita na função restrita por amp",
|
||||
@@ -3292,7 +3292,7 @@
|
||||
"um tipo volátil %t impede a avaliação constexpr de __builtin_bit_cast",
|
||||
"um tipo de união, ponteiro ou ponteiro para membro %t impede a avaliação constexpr de __builtin_bit_cast",
|
||||
"%npTd, herdado por meio do uso de decl %p",
|
||||
"a construção de subobjeto de %t para construtores herdados não pode ser executada. O construtor padrão implícito foi excluído",
|
||||
"a construção de subobjeto de %t para construtores herdados não pode ser executada. O construtor associado foi excluído",
|
||||
"%n precisa retornar nulo",
|
||||
"declaração de início de membro inválida",
|
||||
"'auto' era esperado",
|
||||
@@ -3343,14 +3343,14 @@
|
||||
"o mapeamento de arquivo de módulo de '%s' foi especificado mais de uma vez",
|
||||
"o mapeamento de unidade de cabeçalho de '%s' foi especificado mais de uma vez",
|
||||
"não foi especificado nenhum mapeamento para '%s'",
|
||||
"o mapeamento de arquivo de módulo de '%s' é inválido",
|
||||
null,
|
||||
"não é possível localizar o cabeçalho '%s' a ser importado",
|
||||
"mais de um arquivo na lista de arquivos de módulo corresponde a '%s'",
|
||||
"o arquivo de módulo encontrado para '%s' é de um módulo diferente",
|
||||
"qualquer tipo de arquivo de módulo",
|
||||
"não é possível ler o arquivo de módulo",
|
||||
"a função interna não está disponível porque não há suporte para o tipo char8_t com as opções atuais",
|
||||
"a opção da linha de comando --ms_await não poderá ser especificada se as corrotinas do C++20 estiverem habilitadas",
|
||||
null,
|
||||
"o uso não padrão do construtor explícito %nod para inicialização do elemento de agregação padrão",
|
||||
"a origem ou o destino do intrínseco similar a memcpy não aponta para um objeto",
|
||||
"tentativas intrínsecas similares a memcpy de copiar tipos representacionalmente distintos %t1 e %t2",
|
||||
@@ -3378,7 +3378,7 @@
|
||||
"'module' não é permitido em um nome de módulo",
|
||||
null,
|
||||
null,
|
||||
"O %n não é um tipo de enumeração",
|
||||
"%n não é um tipo enumerado",
|
||||
"o enumerador %no2 entra em conflito com %n1",
|
||||
"o enumerador %no já foi declarado neste escopo %p",
|
||||
"a especificação 'throw()' não faz parte de C++ 20 e posteriores",
|
||||
@@ -3452,8 +3452,8 @@
|
||||
"esperava-se um ponteiro para membro",
|
||||
"um membro da matriz flexível não pode ser declarado em um tipo de outro modo vazio",
|
||||
"esperado que 'std::source_location::__impl' seja definido para uma classe com apenas os membros de dados '_M_function_name', '_M_file_name', '_M_column', '_M_line'",
|
||||
"durante a inicialização de 'std::source_location::__impl', o número da coluna estoura o membro '_M_column' do tipo %t",
|
||||
"durante a inicialização de 'std::source_location::__impl', o número da linha estoura o membro '_M_line' do tipo %t",
|
||||
"o número de coluna fornecido é muito grande para a implementação 'std::source_location'",
|
||||
"o número de linha fornecido é muito grande para a implementação 'std::source_location'",
|
||||
"uma constante de caractere UTF-16 não pode ocupar mais de uma unidade de código; valor truncado",
|
||||
"ambos os argumentos devem ter o mesmo tipo",
|
||||
"o tipo %téinválido como argumento para este builtin",
|
||||
@@ -3463,9 +3463,39 @@
|
||||
"o tipo de operando vetorial de ponto flutuante (%t) não tem nenhum tipo de vetor inteiro correspondente",
|
||||
"a estruturação para expressões 'requires' ainda não foi implementada",
|
||||
"devido a um atributo 'indisponível'",
|
||||
"tentou construir um elemento da partição IFC %sq usando um índice na partição IFC %sq",
|
||||
"qualificador 'asm' duplicado",
|
||||
"um campo de bits com um tipo de enumeração incompleto ou uma enumeração opaca com um tipo base inválido",
|
||||
"tentou construir um elemento da partição IFC %sq usando um índice na partição IFC %sq2",
|
||||
"a partição %sq especificou seu tamanho de entrada como %d1 quando %d2 era esperado",
|
||||
"um requisito IFC inesperado foi encontrado durante o processamento do módulo %sq1",
|
||||
"condição falhou na linha %d em %s1: %sq2",
|
||||
"restrição atômica depende de si mesma"
|
||||
"restrição atômica depende de si mesma",
|
||||
"A função 'noreturn' tem um tipo de retorno não nulo",
|
||||
"foi feita uma correção eliminando o parâmetro %sq (no índice relativo %d)",
|
||||
"não é possível especificar um argumento de modelo padrão na definição do modelo de um membro fora de sua classe",
|
||||
"nome de identificador IFC inválido %sq encontrado durante a reconstrução da entidade",
|
||||
"identificador IFC inválido chamado %sq ignorado durante a reconstrução da entidade",
|
||||
"valor de classificação inválido do módulo %sq",
|
||||
"um modelo de função carregado de um módulo IFC foi analisado incorretamente como %nd",
|
||||
"falha ao carregar uma referência de entidade IFC no módulo %sq",
|
||||
"da partição %sq elemento %d1 (posição do arquivo %d2, posição relativa %d3)",
|
||||
"designadores encadeados não são permitidos para um tipo de classe com um destruidor não trivial",
|
||||
"uma declaração de especialização explícita não pode ser uma declaração de friend",
|
||||
"o tipo std::float128_t não tem suporte; em vez disso, std::float64_t será usado",
|
||||
"o tipo std::bfloat16_t não tem suporte; em vez disso, std::float32_t será usado",
|
||||
"um guia de dedução não pode ser declarado para o modelo de alias %no",
|
||||
"%n foi declarado indisponível",
|
||||
"%n foi declarado indisponível (%sq)",
|
||||
"por causa de um atributo 'obsoleto'",
|
||||
"parâmetros de modelo lambda explícitos são um recurso do C++20",
|
||||
"o uso de '_Noreturn' foi obsoleto em C23; use '[[noreturn]]' em vez disso",
|
||||
"o uso de '_Alignof' foi obsoleto em C23; use 'alignof' em vez disso",
|
||||
"o uso de '_Alignas' foi obsoleto em C23; use 'alignas' em vez disso",
|
||||
"o uso de '_Bool' foi obsoleto em C23; use 'bool' em vez disso",
|
||||
"o uso de '_Static_assert' foi obsoleto em C23; use 'static_assert' em vez disso",
|
||||
"o uso de '_Thread_local' foi obsoleto em C23; use 'thread_local' em vez disso",
|
||||
"O modo Microsoft deve estar ativado para usar o arquivo de módulo %sq (um módulo IFC do Microsoft Visual Studio)",
|
||||
"não foi possível abrir o arquivo de módulo %sq",
|
||||
"encontrado no mapa de módulo para o módulo %sq",
|
||||
"encontrado no mapa de unidade de cabeçalho para %sq"
|
||||
]
|
||||
@@ -180,7 +180,7 @@
|
||||
"применение \"&\" к массиву не дало результата",
|
||||
"правый оператор %% равен нулю",
|
||||
"аргумент несовместим с формальным параметром",
|
||||
"аргумент несовместим с соответствующим преобразованием строки формата",
|
||||
"аргумент несовместим с соответствующим преобразованием строки формата (ожидаемый тип %t1, но аргумент имеет тип %t2)",
|
||||
"не удалось открыть исходный файл %sq (отсутствуют каталоги в списке поиска)",
|
||||
"тип приведения должен быть целочисленным",
|
||||
"тип приведения должен быть арифметическим или указателем",
|
||||
@@ -952,7 +952,7 @@
|
||||
"параметр nonstd_using_decl можно использовать только при компиляции C++",
|
||||
"тип возвращаемого значения функции \"main\" должен быть \"int\"",
|
||||
"нетипизированный параметр шаблона не может иметь тип класса",
|
||||
"не удается определить аргумент шаблона по умолчанию в объявлении члена шаблона класса вне соответствующего класса",
|
||||
"аргумент шаблона по умолчанию не может быть указан в определении члена шаблона класса вне шаблона",
|
||||
"Использование оператора return в обработчике блока function try конструктора недопустимо.",
|
||||
"Недопустимо сочетать обычные и расширенные указатели в указании инициализатора.",
|
||||
"второй нижний индекс не может быть меньше первого",
|
||||
@@ -1916,7 +1916,7 @@
|
||||
"у пакета параметров не может быть значения по умолчанию",
|
||||
"C++/CLI можно включить только в режиме Microsoft C++",
|
||||
"нельзя использовать \"value__\" в качестве имени константы перечислителя (в данном контексте это зарезервированное имя)",
|
||||
"в типе перечисления, базовым типом которого является логический, требуется явное значение перечислителя",
|
||||
"в типе перечисления, в основе которого лежит логический тип данных, требуется явное значение перечислителя",
|
||||
null,
|
||||
"ссылка на пакет параметров %sq присутствует, однако пакет не раскрыт",
|
||||
"при раскрытии пакетов никакие пакеты аргументов не используются",
|
||||
@@ -1955,7 +1955,7 @@
|
||||
"для спецификатора видимости верхнего уровня требуется определение типа",
|
||||
"тривиальное свойство не может относиться к ссылочному типу",
|
||||
"тривиальное свойство не может относиться к типу const или volatile",
|
||||
"переменная %nd была ранее объявлена как относящаяся к другому типу перечисления",
|
||||
"переменная %nd была ранее объявлена как другой тип перечисления",
|
||||
"полученная лямбда-выражением переменная не может относиться к типу класса %[managed]",
|
||||
"в классах %[managed] не допускается переопределение виртуальных функций с ковариантным типом возвращаемых значений",
|
||||
"использование массивов дескрипторов не допускается",
|
||||
@@ -2175,7 +2175,7 @@
|
||||
"именованный спецификатор переопределения может применяться только в классах %[managed]",
|
||||
"ни один из членов, помеченных именованным спецификатором переопределения, не соответствует типу данного члена",
|
||||
"объявление статического конструктора не может включать именованный спецификатор переопределения",
|
||||
"Тип ограниченного перечисления должен иметь имя.",
|
||||
"тип ограниченного перечисления должен иметь имя",
|
||||
"не допускается передача управления в блок finally",
|
||||
"Оператор return внутри блока finally недопустим.",
|
||||
"для блока try требуется как минимум один обработчик или одно предложение finally",
|
||||
@@ -2216,7 +2216,7 @@
|
||||
"тип в операторе dynamic_cast не может быть универсальным типом, который может быть типом значения",
|
||||
"универсальное имя символа должно обозначать допустимую точку кода",
|
||||
"универсальные ограничения не соответствуют ограничениям %nd",
|
||||
"__underlying_type применяется только к типам перечислений",
|
||||
"__базовый_тип применяется только к типам перечисления",
|
||||
"для этого приведения ожидалось только одно выражение операнда",
|
||||
"Символ Юникода с шестнадцатеричным значением %s не может быть представлен с помощью системной кодовой страницы по умолчанию",
|
||||
"Нестандартное преобразование связанного указателя на элемент в указатель на функцию",
|
||||
@@ -2344,7 +2344,7 @@
|
||||
"%nd ранее объявлено с другим базовым типом",
|
||||
"здесь нельзя использовать \"enum class\" и \"enum struct\" (используйте простое перечисление \"enum\")",
|
||||
"в инициализаторе объекта типа %t допускается использовать только один уровень фигурных скобок",
|
||||
"%nd нельзя использовать в качестве имени типа перечисления",
|
||||
"%nd не может использоваться в качестве имени типа перечисления",
|
||||
null,
|
||||
"невозможно использовать заключенный в фигурные скобки инициализатор с оператором \"new auto\"",
|
||||
"определение std::initializer_list не содержит ожидаемого конструктора",
|
||||
@@ -2367,7 +2367,7 @@
|
||||
"Инициализатор неклассовой сущности в круглых скобках должен быть выражением, а не списком в фигурных скобках.",
|
||||
"Список в фигурных скобках не предоставляет тип возвращаемого значения для этой лямбды.",
|
||||
"объявленная спецификация исключения несовместима с созданной",
|
||||
"Типы ограниченного перечисления являются возможностью С++11.",
|
||||
"типы ограниченного перечисления являются возможностью С++11",
|
||||
"тип функции не может инициализироваться значением",
|
||||
"инициализация объекта типа %t в списке не разрешена, потому что тип не завершен",
|
||||
"std::initializer_list имеет деструктор, хотя не должен — библиотека настроена неверно",
|
||||
@@ -2664,7 +2664,7 @@
|
||||
"переменная в функции constexpr не инициализирована",
|
||||
"заключенная в фигурные скобки инициализация переменной, объявленная с типом заполнителя, но без \"=\", должна содержать строго один элемент внутри фигурных скобок",
|
||||
"конфигурация \"%s\" --target не существует",
|
||||
"атрибут не поддерживается в 64-разрядных конфигурациях x86",
|
||||
"атрибут поддерживается только в 32-разрядных (x86) конфигурациях",
|
||||
"для \"%s\" требуется аргумент",
|
||||
"Конструктор или деструктор не может быть сопрограммой.",
|
||||
"%n не может быть сопрограммой.",
|
||||
@@ -2935,7 +2935,7 @@
|
||||
"недопустимый тип %t в указателе this для функции-члена %nfd с описателем ограничения amp",
|
||||
"Недопустимый тип возвращаемого значения %t для функции %nfd со спецификатором ограничения amp.",
|
||||
"Недопустимый тип параметра %t для функции %nfd со спецификатором ограничения amp.",
|
||||
null,
|
||||
"Недопустимая метка в функции %nfd со спецификатором ограничения amp.",
|
||||
"Недопустимый класс хранения %s в функции %nfd со спецификатором ограничения amp.",
|
||||
"Недопустимо использовать %s в функции %nfd со спецификатором ограничения amp.",
|
||||
"Недопустимое приведение в функции со спецификатором ограничения amp.",
|
||||
@@ -3292,7 +3292,7 @@
|
||||
"непостоянный тип %t не позволяет выполнять вычисление constexpr для __builtin_bit_cast",
|
||||
"тип %t объединения, указателя или указателя на элемент не позволяет выполнять вычисление constexpr для __builtin_bit_cast.",
|
||||
"%npTd, унаследованный с помощью decl %p",
|
||||
"невозможно выполнить конструирование подобъекта %t для наследования конструкторов — неявный конструктор по умолчанию удален.",
|
||||
"невозможно выполнить конструирование подобъекта %t для наследования конструкторов — связанный конструктор удален",
|
||||
"%n требует возврата void.",
|
||||
"недопустимое начало объявления элемента",
|
||||
"ожидается \"auto\"",
|
||||
@@ -3343,14 +3343,14 @@
|
||||
"сопоставление файла модуля для \"%s\" указано несколько раз",
|
||||
"сопоставление блока заголовка для \"%s\" указано несколько раз",
|
||||
"сопоставление для \"%s\" не указано",
|
||||
"сопоставление файла модуля для \"%s\" является недопустимым",
|
||||
null,
|
||||
"не удается найти заголовок \"%s\" для импорта",
|
||||
"несколько файлов в списке файлов модулей соответствуют \"%s\"",
|
||||
"файл модуля, обнаруженный для \"%s\", относится к другому модулю",
|
||||
"любой тип файла модуля",
|
||||
"не удалось прочитать файл модуля",
|
||||
"встроенная функция недоступна, так как тип char8_t не поддерживается с текущими параметрами.",
|
||||
"невозможно указать параметр командной строки --ms_await, если включены сопрограммы C++20.",
|
||||
null,
|
||||
"нестандартное использование явного конструктора %nod для агрегатной инициализации элементов по умолчанию.",
|
||||
"источник или назначение встроенной функции, похожей на memcpy, не указывает на объект",
|
||||
"Встроенная функция, похожая на memcpy, пытается скопировать различные с точки зрения представления типы %t1 и %t2",
|
||||
@@ -3452,8 +3452,8 @@
|
||||
"необходим указатель на элемент",
|
||||
"гибкий элемент массива не может быть объявлен в пустом типе",
|
||||
"ожидается, что ''std::source_location::__impl'' будет определен для класса только с элементами данных ''_M_function_name'', ''_M_file_name'', ''_M_column'', ''_M_line''",
|
||||
"во время инициализации ''std::source_location::__impl'' номер столбца переполняет элемент ''_M_column'' типа %t",
|
||||
"во время инициализации ''std::source_location::__impl'' номер строки переполняет элемент ''_M_line'' типа %t",
|
||||
"заданный номер столбца слишком велик для реализации \"std::source_location\"",
|
||||
"заданный номер строки слишком велик для реализации \"std::source_location\"",
|
||||
"символьная константа UTF-16 не может занимать более одной кодовой единицы; значение усечено",
|
||||
"оба аргумента должны быть одного типа",
|
||||
"тип %t недопустим в качестве аргумента для этой встроенной функции.",
|
||||
@@ -3463,9 +3463,39 @@
|
||||
"тип векторного операнда с плавающей запятой (%t) не имеет соответствующего целочисленного векторного типа",
|
||||
"искажение для выражений \"requires\" еще не реализовано",
|
||||
"из-за атрибута \"unavailable\"",
|
||||
"попытка создать элемент из раздела IFC %sq с использованием индекса в разделе IFC %sq",
|
||||
"дубликат квалификатора \"asm\"",
|
||||
"битовые поля с неполным типом или непрозрачное перечисление с недопустимым базовым типом",
|
||||
"попытка создать элемент из раздела IFC %sq с использованием индекса в разделе IFC %sq2",
|
||||
"раздел %sq указал размер своей записи как %d1, в то время как ожидалось %d2",
|
||||
"При обработке модуля %sq1 было обнаружено неожиданное требование IFC",
|
||||
"сбой условия в строке %d в %s1: %sq2",
|
||||
"атомарное ограничение зависит от самого себя"
|
||||
"атомарное ограничение зависит от самого себя",
|
||||
"Функция \"noreturn\" имеет не недействительный тип возврата",
|
||||
"исправление внесено путем удаления параметра %sq (по относительному индексу %d)",
|
||||
"аргумент шаблона по умолчанию не может быть указан в определении шаблона элемента вне его класса",
|
||||
"обнаружено недопустимое имя идентификатора IFC %sq во время реконструкции сущности",
|
||||
"недопустимое имя идентификатора IFC %sq пропущено во время реконструкции сущности",
|
||||
"недопустимое значение сортировки модуля %sq",
|
||||
"шаблон функции, загруженный из модуля IFC, был неправильно проанализирован как %nd",
|
||||
"не удалось загрузить ссылку на объект IFC в модуль %sq",
|
||||
"из раздела %sq, элемент %d1 (позиция файла %d2, относительная позиция %d3)",
|
||||
"цепные обозначения не разрешены для типа класса с нетривиальным деструктором",
|
||||
"явное объявление специализации не может быть объявлением дружественной функции",
|
||||
"тип std::float128_t не поддерживается; вместо этого будет использоваться std::float64_t",
|
||||
"тип std::bfloat16_t не поддерживается; вместо этого будет использоваться std::float32_t",
|
||||
"руководство по дедукции не может быть объявлено для шаблона псевдонима %no",
|
||||
"%n объявлено недоступным",
|
||||
"%n объявлено недоступным (%sq)",
|
||||
"из-за атрибута \"deprecated\"",
|
||||
"явные параметры шаблона лямбда-выражения — это функция C++20",
|
||||
"использование \"_Noreturn\" устарело в C23; используйте вместо этого \"[[noreturn]]\"",
|
||||
"использование \"_Alignof\" устарело в C23; используйте вместо этого \"alignof\"",
|
||||
"использование \"_Alignas\" устарело в C23; используйте вместо этого \"alignas\"",
|
||||
"использование \"_Bool\" устарело в C23; используйте вместо этого \"bool\"",
|
||||
"использование \"_Static_assert\" устарело в C23; используйте вместо этого \"static_assert\"",
|
||||
"использование \"_Thread_local\" устарело в C23; используйте вместо этого \"thread_local\"",
|
||||
"Для использования файла модуля %sq должен быть включен режим Майкрософт (модуль IFC Microsoft Visual Studio)",
|
||||
"не удалось открыть файл модуля %sq",
|
||||
"найдено в сопоставлении модулей для модуля %sq",
|
||||
"найдено в сопоставлении единиц заголовка для %sq"
|
||||
]
|
||||
@@ -180,7 +180,7 @@
|
||||
"bir diziye uygulanan '&' işaretinin bir etkisi yok",
|
||||
"'%%' öğesinin sağ işleneni sıfır",
|
||||
"bağımsız değişken, biçimsel parametre ile uyumlu değil",
|
||||
"bağımsız değişken, ilgili dize biçim dönüştürmesine uyumlu değil",
|
||||
"bağımsız değişken karşılık gelen biçim dizesi dönüştürmesi ile uyumsuz (beklenen tür %t1 ancak bağımsız değişkenin türü %t2)",
|
||||
"kaynak dosya %sq açılamıyor (arama listesinde dizin yok)",
|
||||
"dönüştürme türü, tamsayı türünde olmalı",
|
||||
"dönüştürme türü, aritmetik veya işaretçi türünde olmalı",
|
||||
@@ -952,7 +952,7 @@
|
||||
"'nonstd_using_decl' seçeneği yalnızca C++ derlerken kullanılabilir",
|
||||
"'main' işlevinin dönüş türü 'int' olmalı",
|
||||
"tür olmayan bir şablon parametresi, sınıf türünden olamaz",
|
||||
"varsayılan bir şablon bağımsız değişkeni, sınıfının dışındaki bir sınıf şablonu üyesinin bildiriminde belirtilemez",
|
||||
"varsayılan bir şablon bağımsız değişkeni, şablonun dışındaki bir sınıf şablonu üyesinin tanımında belirtilemez",
|
||||
"bir oluşturucunun işlev try bloğunun işleyicisinde, bir return deyimine izin verilmiyor",
|
||||
"sıradan ve genişletilmiş belirleyiciler, bir başlatıcı gösteriminde birleştirilemiyor",
|
||||
"ikinci alt indis ilkinden küçük olmamalıdır",
|
||||
@@ -1955,7 +1955,7 @@
|
||||
"Üst düzey görünürlük tanımlayıcısı bir tür tanımı gerektirir",
|
||||
"Önemsiz özellik bir başvuru türüne sahip olamaz",
|
||||
"Önemsiz özellik sabit veya geçici bir türe sahip olamaz",
|
||||
"%nd, daha önceden farklı bir sabit listesi türü olarak bildirildi",
|
||||
"%nd, daha önceden farklı sabit listesi türü olarak bildirildi",
|
||||
"Lambda tarafından yakalanan bir değişken %[managed] sınıf türüne sahip olamaz",
|
||||
"%[managed] sınıfında, kovaryant dönüş türü ile geçersiz kılan sanal işleve izin verilmez",
|
||||
"Tanıtıcı dizisine izin verilmez",
|
||||
@@ -2664,7 +2664,7 @@
|
||||
"constexpr işlevindeki değişken başlatılmadı",
|
||||
"`=` olmadan bir yer tutucu ile bildirilen değişkenin küme ayraçlarıyla başlatılması için küme ayraçlarının içinde tam bir öğe olması gerekir",
|
||||
"'%s' --target yapılandırması yok",
|
||||
"öznitelik 64 bit x86 yapılandırmalarında desteklenmez",
|
||||
"öznitelik yalnızca 32 bit x86 yapılandırmalarında desteklenir",
|
||||
"'%s' bir bağımsız değişken gerektiriyor",
|
||||
"bir oluşturucu veya yıkıcı, eş yordam olamaz",
|
||||
"%n bir eş yordam olamaz",
|
||||
@@ -2935,7 +2935,7 @@
|
||||
"this işaretçisinde amp kısıtlamalı %nfd üye işlevi için %t türü geçersiz",
|
||||
"AMP ile sınırlı %nfd işlevi için %t dönüş türü geçersiz",
|
||||
"AMP ile sınırlı %nfd işlevi için %t parametre türü geçersiz",
|
||||
null,
|
||||
"AMP ile sınırlı %nfd işlevinde geçersiz yapı",
|
||||
"%s depolama sınıfı AMP ile sınırlı %nfd işlevi için geçersiz",
|
||||
"%s kullanımına AMP ile sınırlı %nfd işlevinde izin verilmiyor",
|
||||
"AMP ile sınırlı işlevde geçersiz tür dönüştürme",
|
||||
@@ -3292,7 +3292,7 @@
|
||||
"geçici tür %t __builtin_bit_cast constexpr değerlendirmesi yapılmasını engelliyor",
|
||||
"bir %t türü birleşim, işaretçi veya üye işaretçisi __builtin_bit_cast constexpr değerlendirmesine engel oluyor",
|
||||
"%npTd, %p bildirimi kullanılarak devralındı",
|
||||
"devralma oluşturucuları için %t alt nesne oluşturma gerçekleştirilemiyor; örtük varsayılan Oluşturucu silindi",
|
||||
"devralma oluşturucuları için %t alt nesne oluşturma gerçekleştirilemiyor; ilişkili oluşturucu silindi",
|
||||
"%n void döndürmesi gerekir",
|
||||
"üye bildiriminin başlangıcı geçersiz",
|
||||
"'auto' bekleniyordu",
|
||||
@@ -3343,14 +3343,14 @@
|
||||
"'%s' için modül dosyası eşlemesi birden çok kez belirtildi",
|
||||
"'%s' için üst bilgi birimi eşlemesi birden çok kez belirtildi",
|
||||
"'%s' için eşleme belirtilmedi",
|
||||
"'%s' için modül dosyası eşlemesi geçersiz",
|
||||
null,
|
||||
"içeri aktarılacak '%s' üst bilgisi bulunamıyor",
|
||||
"modül dosyası listesinde birden fazla dosya '%s' ile eşleşiyor",
|
||||
"'%s' için bulunan modül dosyası farklı bir modüle yönelik",
|
||||
"herhangi bir türde modül dosyası",
|
||||
"modül dosyası okunamıyor",
|
||||
"char8_t türü geçerli seçeneklerle desteklenmediği için yerleşik işlev kullanılamıyor",
|
||||
"C++20 eş yordamları etkinleştirilirse --ms_await komut satırı seçeneği belirtilemez",
|
||||
null,
|
||||
"varsayılan toplama öğesi başlatma için açık oluşturucu %nod için standart olmayan kullanım",
|
||||
"memcpy benzeri iç öğenin kaynağı veya hedefi bir nesneye işaret etmiyor",
|
||||
"memcpy benzeri iç öğe, temsili olarak farklı %t1 ve %t2 türlerini kopyalamaya çalışıyor",
|
||||
@@ -3378,7 +3378,7 @@
|
||||
"Modül adında 'module' kullanılmasına izin verilmez",
|
||||
null,
|
||||
null,
|
||||
"%n sabit listesi türü değil",
|
||||
"%n bir sabit listesi türü değil",
|
||||
"%no2 numaralandırıcısı %n1 ile çakışıyor",
|
||||
"%no numaralandırıcısı bu %p kapsamında zaten bildirildi",
|
||||
"'throw ()' belirtimi C++ 20 ve üzeri sürümlerin bir parçası değil",
|
||||
@@ -3452,8 +3452,8 @@
|
||||
"üye işaretçisi bekleniyordu",
|
||||
"esnek bir dizi üyesi diğer türlü boş olan bir türde bildirilemez",
|
||||
"'std::source_location::__impl', yalnızca '_M_function_name', '_M_file_name', '_M_column', '_M_line' veri üyelerine sahip bir sınıfa tanımlanmalıdır",
|
||||
"'std::source_location::__impl' başlatılırken, sütun numarası %t türündeki '_M_column' üyesini aşıyor",
|
||||
"'std::source_location::__impl' başlatılırken, satır numarası %t türündeki '_M_line' üyesini aşıyor",
|
||||
"verilen sütun numarası 'std::source_location' uygulaması için çok büyük",
|
||||
"verilen satır numarası 'std::source_location' uygulaması için çok büyük",
|
||||
"UTF-16 karakter sabit değeri, bir kod biriminden fazla yer kaplayamaz; kesilmiş değer",
|
||||
"her iki bağımsız değişken de aynı türe sahip olmalıdır",
|
||||
"%t türü bu yerleşik için bağımsız değişken olarak geçersiz",
|
||||
@@ -3463,9 +3463,39 @@
|
||||
"kayan nokta vektörü işlenen türü (%t) eşleşen bir tamsayı vektörü türü içermiyor",
|
||||
"'requires' ifadeleri için değiştirme henüz uygulanmadı",
|
||||
"'kullanılamayan' bir öznitelik nedeniyle",
|
||||
"%sq IFC bölümü içinde bir dizin kullanılarak %sq IFC bölümündeki bir öğe oluşturulmaya çalışıldı",
|
||||
"yinelenen 'asm' niteleyicisi",
|
||||
"tamamlanmamış sabit listesi türüne sahip bir bit alanı veya geçersiz temel türe sahip opak bir sabit listesi",
|
||||
"%sq2 IFC bölümü içinde bir dizin kullanılarak %sq IFC bölümündeki bir öğe oluşturulmaya çalışıldı",
|
||||
"%sq bölümü, %d2 beklenirken girdi boyutunu %d1 olarak belirtti",
|
||||
"%sq1 modülü işlenirken beklenmeyen bir IFC gereksinimiyle karşılaşıldı",
|
||||
null,
|
||||
"atomik kısıtlama kendisine bağımlı"
|
||||
"koşul, %d numaralı satırda (%s1 içinde) başarısız oldu: %sq2",
|
||||
"atomik kısıtlama kendisine bağımlı",
|
||||
"'noreturn' işlevi geçersiz olmayan bir dönüş türüne sahiptir",
|
||||
"%sq parametresi kaldırılarak bir düzeltme yapıldı (%d göreli dizininde)",
|
||||
"varsayılan bir şablon bağımsız değişkeni, sınıfının dışındaki bir şablon üyesinin tanımında belirtilemez",
|
||||
"varlık yeniden oluşturma işlemi sırasında geçersiz %sq IFC tanımlayıcı adı ile karşılaşıldı",
|
||||
"varlık yeniden oluşturma işlemi sırasında geçersiz %sq IFC tanımlayıcı adı atlandı",
|
||||
"%sq modülü geçersiz sıralama değeri",
|
||||
"bir IFC modülünden yüklenen bir fonksiyon şablonu hatalı bir şekilde %nd olarak ayrıştırıldı",
|
||||
"%sq modülünde bir IFC varlık referansı yüklenemedi",
|
||||
"%sq bölümündeki %d1 öğesinden (%d2 dosya konumu, %d3 göreli konumu)",
|
||||
"zincirli belirleyicilere, önemsiz yıkıcıya sahip bir sınıf türü için izin verilmez",
|
||||
"açık bir özelleştirme bildirimi, arkadaş bildirimi olamaz",
|
||||
"std::float128_t türü desteklenmiyor; bunun yerine std::float64_t kullanılacak",
|
||||
"std::bfloat16_t türü desteklenmiyor; bunun yerine std::float32_t kullanılacak",
|
||||
"%no diğer ad şablonu için çıkarsama kılavuzu bildirilmemiş olabilir",
|
||||
"%n, kullanılamaz olarak bildirildi",
|
||||
"%n, kullanılamaz olarak bildirildi (%sq)",
|
||||
"'deprecated' özniteliği nedeniyle",
|
||||
"açık lambda şablon parametreleri bir C++20 özelliğidir",
|
||||
"'_Noreturn' kullanımı C23'te kullanımdan kaldırıldı. Bunun yerine '[[noreturn]]' kullanın",
|
||||
"'_Alignof' kullanımı C23'te kullanımdan kaldırıldı. Bunun yerine 'alignof' kullanın",
|
||||
"'_Alignas' kullanımı C23'te kullanımdan kaldırıldı. Bunun yerine 'alignas' kullanın",
|
||||
"'_Bool' kullanımı C23'te kullanımdan kaldırıldı. Bunun yerine 'bool' kullanın",
|
||||
"'_Static_assert' kullanımı C23'te kullanımdan kaldırıldı. Bunun yerine 'static_assert' kullanın",
|
||||
"'_Thread_local' kullanımı C23'te kullanımdan kaldırıldı. Bunun yerine 'thread_local' kullanın",
|
||||
"Microsoft modu, %sq modül dosyasını (Microsoft Visual Studio IFC modülü) kullanmak için etkinleştirilmelidir",
|
||||
"%sq modül dosyası açılamadı",
|
||||
"%sq modülü için modül eşlemesinde bulundu",
|
||||
"%sq için üst bilgi birimi eşlemesinde bulundu"
|
||||
]
|
||||
@@ -180,7 +180,7 @@
|
||||
"应用于数组的“&”不起任何作用",
|
||||
"“%%”的右操作数为零",
|
||||
"实参与形参不兼容",
|
||||
"参数与对应的格式字符串转换不兼容",
|
||||
"参数与相应的格式字符串转换不兼容(应为类型 %t1,但参数的类型为 %t2)",
|
||||
"未能打开源文件 %sq (搜索列表中没有目录)",
|
||||
"强制转换的类型必须为整型",
|
||||
"强制转换的类型必须为算术或指针",
|
||||
@@ -952,7 +952,7 @@
|
||||
"选项“nonstd_using_decl”只能在编译 C++ 时使用",
|
||||
"函数“main”的返回类型必须是“int”",
|
||||
"非类型模板参数不能为类类型",
|
||||
"不能在类外部的类模板成员声明上指定默认模板参数",
|
||||
"不能在模板外部的类模板成员的定义上指定默认模板参数",
|
||||
"构造函数的函数 try 块的处理程序中不允许使用 return 语句",
|
||||
"初始值设定项指定中不能组合一般或扩展指示符",
|
||||
"第二个下标一定不能比第一个下标小",
|
||||
@@ -2175,7 +2175,7 @@
|
||||
"仅允许在 %[managed] 类中使用命名的重写说明符",
|
||||
"命名重写说明符指定的任何成员都不与此成员的类型相匹配",
|
||||
"静态构造函数声明不能包含命名重写说明符",
|
||||
"区分范围的枚举类型必须具有名称",
|
||||
"作用域内枚举类型必须具有名称",
|
||||
"不允许将控制传输到 finally 块",
|
||||
"不允许 finally 块内存在 return 语句",
|
||||
"try 块至少需要一个 handler 或 finally 子句",
|
||||
@@ -2344,7 +2344,7 @@
|
||||
"%nd 之前是用不同的基类型声明的",
|
||||
"此处不能使用“enum class”和“enum struct”(改用普通“enum”)",
|
||||
"在类型为 %t 的对象的初始值设定项中只允许使用一级括号",
|
||||
"%nd 不能在具有隐式返回类型",
|
||||
"%nd 不能用作枚举类型名称",
|
||||
null,
|
||||
"用大括号括起来的初始值设定项无法与“new auto”配合使用",
|
||||
"std::initializer_list 的定义未包含预期的构造函数",
|
||||
@@ -2367,7 +2367,7 @@
|
||||
"非类实体的带圆括号的初始值设定项必须为表达式,而不能是用大括号括起的列表",
|
||||
"用大括号括起的列表无法为此 lambda 提供返回类型",
|
||||
"所声明的异常规范与所生成的异常规范不兼容",
|
||||
"区分范围的枚举类型是 C++11 的一项功能",
|
||||
"范围枚举类型是 C++11 功能",
|
||||
"函数类型不能进行值初始化",
|
||||
"不允许对象类型 %t 的列表初始化,因为该类型不完整",
|
||||
"std::initializer_list 有析构函数,但实际不应有 -- 库配置有误",
|
||||
@@ -2664,7 +2664,7 @@
|
||||
"constexpr 函数中的变量未初始化",
|
||||
"使用占位符类型(但未使用 \"=\")声明的变量的大括号初始化只需要大括号里有一个元素",
|
||||
"无 \"%s\" --存在目标配置",
|
||||
"64 位 x86 配置中不支持属性",
|
||||
"属性仅在 32 位 x86 配置中受支持",
|
||||
"“%s”需要一个参数",
|
||||
"构造函数或析构函数不能是协同例程",
|
||||
"%n 不能是协同例程",
|
||||
@@ -2935,7 +2935,7 @@
|
||||
"this-pointer 中的类型 %t 对于 amp 限制的成员函数 %nfd 是非法的",
|
||||
"返回类型 %t 对于受 AMP 限制的函数 %nfd 是非法的",
|
||||
"参数类型 %t 对于受 AMP 限制的函数 %nfd 是非法的",
|
||||
null,
|
||||
"受 AMP 限制的函数 %nfd 中的非法构造",
|
||||
"存储类 %s 在受 AMP 限制的函数 %nfd 中是非法的",
|
||||
"%s 不可在受 AMP 限制的函数 %nfd 中使用",
|
||||
"受 AMP 限制的函数中的强制转换非法",
|
||||
@@ -3292,7 +3292,7 @@
|
||||
"易失类型 %t 阻止对 __builtin_bit_cast 进行 constexpr 计算",
|
||||
"联合类型、指针类型或指向成员的指针类型 %t 阻止对 __builtin_bit_cast 进行 constexpr 计算",
|
||||
"%npTd,已通过使用 decl %p 继承",
|
||||
"无法为继承构造函数执行 %t 的子对象构造 -- 已删除隐式默认构造函数",
|
||||
"无法为继承构造函数执行 %t 的子对象构造 -- 已删除关联的构造函数",
|
||||
"%n 必须返回 void",
|
||||
"成员声明的开头无效",
|
||||
"应为 \"auto\"",
|
||||
@@ -3343,14 +3343,14 @@
|
||||
"多次为“%s”指定了模块文件映射",
|
||||
"多次为“%s”指定了标头单元映射",
|
||||
"未为“%s”指定映射",
|
||||
"“%s”的模块文件映射无效",
|
||||
null,
|
||||
"找不到要导入的标头“%s”",
|
||||
"模块文件列表中有多个文件与“%s”匹配",
|
||||
"为“%s”找到的模块文件用于其他模块",
|
||||
"任何类型的模块文件",
|
||||
"无法读取模块文件",
|
||||
"内置函数不可用,因为当前选项不支持 char8_t 类型",
|
||||
"如果启用了 C++20 协同程序,则无法指定 --ms_await 命令行选项",
|
||||
null,
|
||||
"对默认聚合元素初始化使用显式构造函数 %nod 不是标准做法",
|
||||
"与 memcpy 类似的固有项的源或目标不指向对象",
|
||||
"与 memcpy 类似的固有项尝试复制在表达上不同的类型 %t1 和 %t2",
|
||||
@@ -3452,8 +3452,8 @@
|
||||
"需要指向成员的指针",
|
||||
"不能在其他空类型中声明灵活数组成员",
|
||||
"应将“std::source_location::__impl”定义为仅包含数据成员“__M_function_name”、“_M_file_name”、“_M_column”、“_M_line”的类",
|
||||
"在初始化“std::source_location::__impl”期间,列号将溢出类型为 %t 的成员“_M_column”",
|
||||
"在初始化“std::source_location::__impl”期间,行号将溢出类型为 %t 的成员“_M_line”",
|
||||
"给定的列号对于“std::source_location”实现而言太大",
|
||||
"给定的行号对于“std::source_location”实现而言太大",
|
||||
"UTF-16 字符常量不能占用多个代码单元;值已截断",
|
||||
"两个参数的类型必须相同",
|
||||
"类型 %t 无效,不能用作此内置项的参数",
|
||||
@@ -3463,9 +3463,39 @@
|
||||
"浮点向量操作数类型(%t)没有匹配的整数向量类型",
|
||||
"尚未实现 “requires” 表达式的变量名压缩",
|
||||
"因为“不可用”属性",
|
||||
"已尝试使用索引将一个元素从 IFC 分区 %sq 构造到 IFC 分区 %sq",
|
||||
null,
|
||||
"重复的 \"asm\" 限定符",
|
||||
"具有不完整枚举类型的位字段或具有无效基类型的不透明枚举",
|
||||
"已尝试使用索引将一个元素从 IFC 分区 %sq 构造到 IFC 分区 %sq2",
|
||||
"分区 %sq 将其条目大小指定为 %d1,正确的大小为 %d2",
|
||||
"处理模块 %sq1 时遇到意外的 IFC 要求",
|
||||
null,
|
||||
"原子约束依赖于自身"
|
||||
"条件失败,行 %d,%s1: %sq2",
|
||||
"原子约束依赖于自身",
|
||||
"“noreturn”函数具有非 void 返回类型",
|
||||
"通过删除参数 %sq (在相对索引 %d 处)进行了更正",
|
||||
"不能在成员模板类之外的成员模板定义上指定默认模板参数",
|
||||
"实体重建期间遇到了无效的 IFC 标识符名称 %sq",
|
||||
"实体重建期间跳过了名为 %sq 的无效 IFC 标识符",
|
||||
"模块 %sq 排序值无效",
|
||||
"从 IFC 模块加载的函数模板被错误地分析为 %nd",
|
||||
"未能在模块 %sq 中加载 IFC 实体引用",
|
||||
"从分区 %sq 元素 %d1 (文件位置 %d2,相对位置 %d3)",
|
||||
"对于具有非平凡析构函数的类的类型,不允许使用链式指示符",
|
||||
"显式专用化声明不能是友元声明",
|
||||
"不支持 std::float128_t 类型; 将改用 std::float64_t",
|
||||
"不支持 std::bfloat16_t 类型; 将改用 std::float32_t",
|
||||
"不能为别名模板 %no 声明推导指南",
|
||||
"%n 已声明为不可用",
|
||||
"%n 已声明为不可用 (%sq)",
|
||||
"因为 'deprecated' 属性",
|
||||
"显式 Lambda 模板参数是 C++20 功能",
|
||||
"在 C23 中,已淘汰使用 '_Noreturn';请改用 '[[noreturn]]'",
|
||||
"在 C23 中,已淘汰使用 '_Alignof';请改用 'alignof'",
|
||||
"在 C23 中,已淘汰使用 '_Alignas';请改用 'alignas'",
|
||||
"在 C23 中,已淘汰使用 '_Bool';请改用 'bool'",
|
||||
"在 C23 中,已淘汰使用 '_Static_assert';请改用 'static_assert'",
|
||||
"在 C23 中,已淘汰使用 '_Thread_local';请改用 'thread_local'",
|
||||
"必须启用 Microsoft 模式才能使用模块文件 %sq (Microsoft Visual Studio IFC 模块)",
|
||||
"无法打开模块文件 %sq",
|
||||
"在模块 %sq 的模块映射中找到",
|
||||
"在 %sq 的标头单元映射中找到"
|
||||
]
|
||||
@@ -180,7 +180,7 @@
|
||||
"將 '&' 套用至陣列無效",
|
||||
"'%%' 的右運算元為零",
|
||||
"引數與型式參數不相容",
|
||||
"引數與對應的格式字串轉換不相容",
|
||||
"引數與對應的格式字串轉換不相容 (預期類型為 %t1,但引數類型是 %t2)",
|
||||
"無法開啟來源檔案 %sq (搜尋清單中沒有目錄)",
|
||||
"轉換的類型必須是整數類資料類型",
|
||||
"轉換的類型必須是算術或指標類型",
|
||||
@@ -952,7 +952,7 @@
|
||||
"'nonstd_using_decl' 選項只有在編譯 C++ 時才能使用",
|
||||
"函式 'main' 的傳回類型必須是 'int'",
|
||||
"非類型樣板參數可能沒有類別類型",
|
||||
"預設樣板引數不可在其類別以外的類別樣板成員的宣告上指定",
|
||||
"預設範本引數不可在其類別以外的類別範本成員的宣告上指定",
|
||||
"建構函式的函式 try 區塊的處理常式不能有 return 陳述式",
|
||||
"一般和擴充的指示項不能合併在初始設定指定中",
|
||||
"第二個訂閱不得小於第一個",
|
||||
@@ -1955,7 +1955,7 @@
|
||||
"最上層可見度規範需要類型定義",
|
||||
"trivial 屬性不能有參考類型",
|
||||
"trivial 屬性不能有 const 或 volatile 類型",
|
||||
"%nd 先前宣告為不同類型的列舉類型",
|
||||
"%nd 先前宣告為不同列舉類型的種類",
|
||||
"Lambda 所擷取的變數不能有 %[managed] 類別類型",
|
||||
"%[managed] 類別不能有以 covariant 傳回類型覆寫的虛擬函式",
|
||||
"不允許控制代碼陣列",
|
||||
@@ -2344,7 +2344,7 @@
|
||||
"%nd 之前是以不同的基底類型宣告",
|
||||
"這裡不能使用 'enum class' 和 'enum struct' (改成只用 'enum')",
|
||||
"在類型 %t 之物件的初始設定式上,只允許一個層級的大括號",
|
||||
"不能使用 %nd 做為列舉類型名稱",
|
||||
"不能使用 %nd 作為列舉類型名稱",
|
||||
null,
|
||||
"以大括號括住的初始設定式無法與 'new auto' 一起使用",
|
||||
"std::initializer_list 的定義不包含預期的建構函式",
|
||||
@@ -2664,7 +2664,7 @@
|
||||
"constexpr 函式中的變數未初始化",
|
||||
"已宣告為預留位置類型但沒有 '=' 且括在大括弧中的變數初始化,在大括弧內只需要一個項目。",
|
||||
"沒有任何 '%s' -- 目標組態",
|
||||
"64 位元的 x86 組態中不支援屬性",
|
||||
"屬性只在 32 位元的 x86 組態中支援",
|
||||
"'%s' 需要引數",
|
||||
"建構函式或解構函式不可為協同程式",
|
||||
"%n 不可為協同程式",
|
||||
@@ -2935,7 +2935,7 @@
|
||||
"類型 %t 在 amp 限定成員函式 %nfd 的 this 指標中不合法",
|
||||
"傳回型別 %t 在 AMP 限制涵式 %nfd 中不合法",
|
||||
"參數類型 %t 在 AMP 限制涵式 %nfd 中不合法",
|
||||
null,
|
||||
"AMP 限制涵式 %nfd 中有不合法的建構",
|
||||
"儲存類別 %s 在 AMP 限制涵式 %nfd 中不合法",
|
||||
"%s 不得出現在 AMP 限制涵式 %nfd 中",
|
||||
"AMP 限制涵式中有不合法的轉換",
|
||||
@@ -3292,7 +3292,7 @@
|
||||
"揮發性類型 %t 會防止 __builtin_bit_cast 的 constexpr 評估",
|
||||
"等位、指標或成員指標類型 %t 會防止 __builtin_bit_cast 的 constexpr 評估",
|
||||
"%npTd,透過使用宣告 %p 來繼承",
|
||||
"無法執行用於繼承建構函式的 %t 子物件建構 -- 已刪除隱含的預設建構函式",
|
||||
"無法執行用於繼承建構函式的 %t 子物件建構 -- 已刪除相關連的建構函式",
|
||||
"%n 必須傳回 void",
|
||||
"成員宣告開頭無效",
|
||||
"必須是 'auto'",
|
||||
@@ -3343,14 +3343,14 @@
|
||||
"指定了多次 '%s' 的模組檔案對應",
|
||||
"指定了多次 '%s' 的標頭單位對應",
|
||||
"未指定 '%s' 的對應",
|
||||
"'%s' 的模組檔案對應無效",
|
||||
null,
|
||||
"找不到要匯入的標頭 '%s'",
|
||||
"模組檔案清單中有多個檔案與 '%s' 相符",
|
||||
"為 '%s' 找到的模組檔案會用於其他模組",
|
||||
"任何類型的模組檔案",
|
||||
"無法讀取模組檔案",
|
||||
"因為目前的選項不支援 char8_t 類型,所以無法使用內建函式",
|
||||
"如果啟用 C++ 20 協同程式,就不能指定 --ms_await 命令列選項",
|
||||
null,
|
||||
"非標準地使用明確的建構函式 %nod 進行預設彙總元素初始化",
|
||||
"內建類 memcpy 的來源或目的地未指向物件",
|
||||
"內建類 memcpy 嘗試複製具象相異類型 %t1 與 %t2",
|
||||
@@ -3378,7 +3378,7 @@
|
||||
"模組名稱中不得包含 'module'",
|
||||
null,
|
||||
null,
|
||||
"%n 不是列舉類型",
|
||||
"%n 不是列舉類型。",
|
||||
"列舉程式 %no2 與 %n1 衝突",
|
||||
"列舉程式 %no 已於此範圍 %p 中宣告",
|
||||
"'throw()' 規格不屬於 C++20 及更新版本",
|
||||
@@ -3423,7 +3423,7 @@
|
||||
"模組 %sq1 檔案位置 %d1 (相對位置 %d2) 要求分割區 %sq2 - 在分割區開始之前",
|
||||
"模組 %sq1 檔案位置 %d1 (相對位置 %d2) 要求分割區 %sq2 - 溢出其分割區的結尾",
|
||||
"模組 %sq1 檔案位置 %d1 (相對位置 %d2) 要求分割區 %sq2 - 與其分割區元素對齊錯誤",
|
||||
"從子欄位 %sq",
|
||||
"從 subfield %sq (節點 %d 的相對位置)",
|
||||
"從分割區 %sq 元素 %d1 (檔案位置 %d2,相對位置 %d3)",
|
||||
"Lambda 屬性在此為非標準",
|
||||
"識別碼 %sq 可能會與 %p 上視覺類似的識別碼混淆",
|
||||
@@ -3452,8 +3452,8 @@
|
||||
"必須是指標對成員",
|
||||
"彈性陣列成員不能在非空白的類型中宣告",
|
||||
"必須將 'std::source_location::__impl' 定義為只有資料成員為 '_M_function_name', '_M_file_name', '_M_column', '_M_line' 的類別",
|
||||
"在初始化 'std::source_location::__impl' 時,欄位數會溢出類型為 %t 的成員 '_M_column'",
|
||||
"在初始化 'std::source_location::__impl' 時,行數會溢出類型為 %t 的成員 '_M_line'",
|
||||
"提供的資料行對 'std::source_location' 實作而言過大",
|
||||
"提供的行號對 'std::source_location' 實作而言過大",
|
||||
"UTF-16 字元常數不可佔用多個程式碼單位; 已截斷值",
|
||||
"兩個引數的類型必須相同",
|
||||
"類型 %t 對此內建的引數無效",
|
||||
@@ -3462,5 +3462,40 @@
|
||||
"向量條件 (%t1) 的元素類型大小必須與結果的元素類型相同 (%t2)",
|
||||
"浮點向量運算元類型 (%t) 沒有相符的整數向量類型",
|
||||
"尚未實作 'requires' 運算式的重整",
|
||||
"因為 'unavailable' 屬性"
|
||||
"因為 'unavailable' 屬性",
|
||||
"重复的 'asm' 限定詞",
|
||||
"具有不完整列舉類型的位欄位,或具有無效基底類型的不透明列舉",
|
||||
"已嘗試使用索引從 IFC 磁碟分割 %sq2 將元素建構到 IFC 磁碟分割 %sq",
|
||||
"磁碟分割 %sq 在需要 %d2 時將其項目大小指定為 %d1",
|
||||
"處理模組 %sq1 時發現未預期的 IFC 需求",
|
||||
"第 %d 行 (在 %s1 中) 條件失敗: %sq2",
|
||||
"不可部分完成限制式依賴其本身",
|
||||
"'noreturn' 函數具有非 void 的返回類型",
|
||||
"已置放參數 %sq (相對索引 %d) 進行修正",
|
||||
"無法在其類別外的成員範本定義上指定預設範本引數",
|
||||
"實體重建期間發現無效 IFC 識別碼名稱 %sq",
|
||||
"實體重建期間略過名稱為 %sq 的無效 IFC 識別碼",
|
||||
"模組 %sq 無效排序值",
|
||||
"從 IFC 模組載入的函數範本不正確地剖析為 %nd",
|
||||
"無法在模組 %sq 中載入 IFC 實體參考",
|
||||
"從分割區 %sq 元素 %d1 (檔案位置 %d2,相對位置 %d3)",
|
||||
"具有非屬性解構函數的類別類型不允許連結指定元",
|
||||
"明確的特殊化宣告不能是 friend 宣告",
|
||||
"不支援 std::float128_t 類型,將改用 std::float64_t",
|
||||
"不支援 std::bfloat16_t 類型,將改用 std::float32_t",
|
||||
"別名範本不可宣告扣除指南 %no",
|
||||
"已宣告 %n 無法使用",
|
||||
"已宣告 %n 無法使用 (%sq)",
|
||||
"因為 'deprecated' 屬性",
|
||||
"明確的 lambda 範本參數是 C++20 功能",
|
||||
"'_Noreturn' 的使用已在 C23 中過時; 請改用 '[[noreturn]]'",
|
||||
"'_Alignof' 的使用已在 C23 中過時; 請改用 'alignof'",
|
||||
"'_Alignas' 的使用已在 C23 中過時; 請改用 'alignas'",
|
||||
"'_Bool' 的使用已在 C23 中過時; 請改用 'bool'",
|
||||
"'_Static_assert' 的使用已在 C23 中過時; 請改用 'static_assert'",
|
||||
"'_Thread_local' 的使用已在 C23 中過時; 請改用 'thread_local'",
|
||||
"必須啟用 Microsoft 模式,才能使用模組檔案 %sq (Microsoft Visual Studio IFC 模組)",
|
||||
"無法開啟模組檔案 %sq",
|
||||
"在模組對應中找到模組 %sq",
|
||||
"在標頭單元對應中找到 %sq"
|
||||
]
|
||||
@@ -4,11 +4,11 @@
|
||||
"--microsoft",
|
||||
"--microsoft_bugs",
|
||||
"--microsoft_version",
|
||||
"1932",
|
||||
"1935",
|
||||
"--pack_alignment",
|
||||
"8",
|
||||
"-D_MSC_VER=1932",
|
||||
"-D_MSC_FULL_VER=193231326",
|
||||
"-D_MSC_VER=1935",
|
||||
"-D_MSC_FULL_VER=193532215",
|
||||
"-D_MSC_BUILD=0",
|
||||
"-D_M_ARM=7"
|
||||
],
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
"--microsoft",
|
||||
"--microsoft_bugs",
|
||||
"--microsoft_version",
|
||||
"1932",
|
||||
"1935",
|
||||
"--pack_alignment",
|
||||
"8",
|
||||
"-D_CPPUNWIND=1",
|
||||
"-D_MSC_VER=1932",
|
||||
"-D_MSC_FULL_VER=193231326",
|
||||
"-D_MSC_VER=1935",
|
||||
"-D_MSC_FULL_VER=193532215",
|
||||
"-D_MSC_BUILD=0",
|
||||
"-D_M_ARM64=1"
|
||||
],
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
"--microsoft",
|
||||
"--microsoft_bugs",
|
||||
"--microsoft_version",
|
||||
"1932",
|
||||
"1935",
|
||||
"--pack_alignment",
|
||||
"8",
|
||||
"-D_CPPUNWIND=1",
|
||||
"-D_MSC_VER=1932",
|
||||
"-D_MSC_FULL_VER=193231326",
|
||||
"-D_MSC_VER=1935",
|
||||
"-D_MSC_FULL_VER=193532215",
|
||||
"-D_MSC_BUILD=0",
|
||||
"-D_M_X64=100",
|
||||
"-D_M_AMD64=100"
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
"--microsoft",
|
||||
"--microsoft_bugs",
|
||||
"--microsoft_version",
|
||||
"1932",
|
||||
"1935",
|
||||
"--pack_alignment",
|
||||
"8",
|
||||
"-D_MSC_VER=1932",
|
||||
"-D_MSC_FULL_VER=193231326",
|
||||
"-D_MSC_VER=1935",
|
||||
"-D_MSC_FULL_VER=193532215",
|
||||
"-D_MSC_BUILD=0",
|
||||
"-D_M_IX86=600",
|
||||
"-D_M_IX86_FP=2"
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
"type": "string"
|
||||
},
|
||||
"compilerArgs": {
|
||||
"markdownDescription": "Compiler arguments to modify the includes or defines used, e.g. `-nostdinc++`, `-m32`, etc.",
|
||||
"descriptionHint": "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered.",
|
||||
"markdownDescription": "Compiler arguments to modify the includes or defines used, e.g. `-nostdinc++`, `-m32`, etc. Arguments that take additional space-delimited arguments should be entered as separate arguments in the array, e.g. for `--sysroot <arg>` use `\"--sysroot\", \"<arg>\"`.",
|
||||
"descriptionHint": "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered, except potentially the `arg` text which is a placeholder and not literal text, i.e. an abbreviation for `argument`.",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
@@ -36,10 +36,12 @@
|
||||
"c99",
|
||||
"c11",
|
||||
"c17",
|
||||
"c23",
|
||||
"gnu89",
|
||||
"gnu99",
|
||||
"gnu11",
|
||||
"gnu17",
|
||||
"gnu23",
|
||||
"${default}"
|
||||
]
|
||||
},
|
||||
@@ -78,7 +80,7 @@
|
||||
}
|
||||
},
|
||||
"macFrameworkPath": {
|
||||
"description": "A list of paths for the Intellisense engine to use while searching for included headers from Mac frameworks. Only supported on Mac configuration.",
|
||||
"description": "A list of paths for the IntelliSense engine to use while searching for included headers from Mac frameworks. Only supported on Mac configuration.",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
|
||||
+22
-21
@@ -1,24 +1,25 @@
|
||||
{
|
||||
"Registrations": [
|
||||
{
|
||||
"Component": {
|
||||
"Type": "git",
|
||||
"Git": {
|
||||
"RepositoryUrl": "https://github.com/llvm/llvm-project",
|
||||
"CommitHash": "0d44201451f03ba907cdb268ddddfc3fa38a0ebd"
|
||||
},
|
||||
"DevelopmentDependency": true
|
||||
}
|
||||
"$schema": "https://json.schemastore.org/component-detection-manifest.json",
|
||||
"Registrations": [
|
||||
{
|
||||
"Component": {
|
||||
"Type": "git",
|
||||
"Git": {
|
||||
"RepositoryUrl": "https://github.com/llvm/llvm-project",
|
||||
"CommitHash": "0d44201451f03ba907cdb268ddddfc3fa38a0ebd"
|
||||
},
|
||||
{
|
||||
"Component": {
|
||||
"Type": "git",
|
||||
"Git": {
|
||||
"RepositoryUrl": "https://github.com/lldb-tools/lldb-mi",
|
||||
"CommitHash": "2388bd74133bc21eac59b2e2bf97f2a30770a315"
|
||||
}
|
||||
}
|
||||
"DevelopmentDependency": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"Component": {
|
||||
"Type": "git",
|
||||
"Git": {
|
||||
"RepositoryUrl": "https://github.com/lldb-tools/lldb-mi",
|
||||
"CommitHash": "2388bd74133bc21eac59b2e2bf97f2a30770a315"
|
||||
}
|
||||
],
|
||||
"Version": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"Version": 1
|
||||
}
|
||||
|
||||
@@ -72,6 +72,10 @@ gulp.task('lint', function () {
|
||||
.pipe(eslint.failAfterError());
|
||||
});
|
||||
|
||||
gulp.task('copy-walkthrough-media', function () {
|
||||
return gulp.src('walkthrough/images/**/*')
|
||||
.pipe(gulp.dest('dist/walkthrough/images'));
|
||||
});
|
||||
|
||||
// ****************************
|
||||
// Command: translations-export
|
||||
|
||||
@@ -16,6 +16,6 @@
|
||||
"reinstall.extension.text5": "在 Windows 上:",
|
||||
"reinstall.extension.text6": "在 Linux 上:",
|
||||
"reinstall.extension.text7": "然后通过 VS Code 中的市场 UI 重新安装。",
|
||||
"reinstall.extension.text8": "如果 VS Code 无法部署扩展的正确版本,则可以 {0} 并使用 VS Code 中市场 UI 内 “...” 菜单下的 `从 VSIX... 安装` 选项安装系统的正确 VSIX。",
|
||||
"reinstall.extension.text8": "如果 VS Code 无法部署扩展的正确版本,则可以 {0} 并使用 VS Code 中市场 UI 内 \"...\" 菜单下的 \"从 VSIX... 安装\" 选项安装系统的正确 VSIX。",
|
||||
"download.vsix.link.title": "已从 VS Code 市场网站下载"
|
||||
}
|
||||
@@ -6,12 +6,12 @@
|
||||
{
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.name": "配置标识符。 `Mac`、`Linux` 和 `Win32` 是将在这些平台上自动选择的配置的特殊标识符,但标识符可以为任何内容。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.compilerPath": "正在使用的编译器的完整路径(例如 `/usr/bin/gcc`),以启用更准确的 IntelliSense。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.compilerArgs": "用于修改使用的包含或定义的编译器参数,例如 `-nostdinc++`、`-m32` 等。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.compilerArgs": "用于修改所使用的包含或定义的编译器参数,例如 `-nostdinc++`、`-m32` 等。采用其他空格分隔参数的参数应在数组中作为单独的参数输入,例如,对于 `--sysroot <arg>` 使用 `\"--sysroot\", \"<arg>\"`。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.cStandard": "用于 IntelliSense 的 C 语言标准的版本。注意: GNU 标准仅用于查询设置编译器以获取 GNU 定义,并且 IntelliSense 将模拟等效的 C 标准版本。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.cppStandard": "用于 IntelliSense 的 C++ 语言标准的版本。注意: GNU 标准仅用于查询设置用来获取 GNU 定义的编译器,并且 IntelliSense 将模拟等效的 C++ 标准版本。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.compileCommands": "工作区的 `compile_commands.json` 文件的完整路径。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.includePath": "搜索包含的标头时,IntelliSense 引擎要使用的路径列表。在这些路径上进行搜索为非递归搜索。指定 `**` 以指示递归搜索。例如,`${workspaceFolder}/**` 将搜索所有子目录,而 `${workspaceFolder}` 则不会。通常,此操作不应包含系统包含项;请改为设置 `C_Cpp.default.compilerPath`。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.macFrameworkPath": "Intellisense 引擎在 Mac 框架中搜索包含的标头时要使用的路径的列表。仅在 Mac 配置中受支持。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.macFrameworkPath": "IntelliSense 引擎在 Mac 框架中搜索包含的标头时要使用的路径的列表。仅在 Mac 配置中受支持。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.windowsSdkVersion": "要在 Windows 上使用的 Windows SDK 包含路径的版本,例如 `10.0.17134.0`。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.dotConfig": "Kconfig 系统创建的 .config 文件的路径。Kconfig 系统生成包含所有定义的文件以生成项目。使用 Kconfig 系统的项目示例包括 Linux 内核和 NuttX RTOS。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.defines": "分析文件时要使用的 IntelliSense 引擎的预处理器定义列表。(可选)使用 `=` 设置值,例如 `VERSION=1`。",
|
||||
|
||||
@@ -4,11 +4,21 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"c_cpp.subheaders.intelliSense.title": "IntelliSense",
|
||||
"c_cpp.subheaders.formatting.title": "格式设置",
|
||||
"c_cpp.subheaders.codeDocumentation.title": "代码文档",
|
||||
"c_cpp.subheaders.codeAnalysis.title": "代码分析",
|
||||
"c_cpp.subheaders.debugging.title": "调试",
|
||||
"c_cpp.subheaders.resourceManagement.title": "资源管理",
|
||||
"c_cpp.subheaders.miscellaneous.title": "杂项",
|
||||
"c_cpp.capabilities.untrustedWorkspaces.description": "多个设置可能导致执行工作区本地进程,例如,C_Cpp.clang_format_path、C_Cpp.codeAnalysis.clangTidy.path、C_Cpp.addNodeAddonIncludePaths、C_Cpp.default.compilerPath、C_Cpp.default.configurationProvider 和 C_Cpp.default.compileCommands,以及 c_cpp_properties.json 中的等效属性。",
|
||||
"c_cpp.command.configurationSelect.title": "选择配置...",
|
||||
"c_cpp.command.configurationProviderSelect.title": "更改配置提供程序...",
|
||||
"c_cpp.command.configurationEditJSON.title": "编辑配置(JSON)",
|
||||
"c_cpp.command.configurationEditUI.title": "编辑配置(UI)",
|
||||
"c_cpp.command.selectDefaultCompiler.title": "选择默认编译器...",
|
||||
"c_cpp.command.selectIntelliSenseConfiguration.title": "选择 IntelliSense 配置...",
|
||||
"c_cpp.command.rescanCompilers.title": "重新扫描编译器",
|
||||
"c_cpp.command.switchHeaderSource.title": "切换标头/源",
|
||||
"c_cpp.command.enableErrorSquiggles.title": "启用错误波形曲线",
|
||||
"c_cpp.command.disableErrorSquiggles.title": "禁用错误波形曲线",
|
||||
@@ -26,6 +36,7 @@
|
||||
"c_cpp.command.generateEditorConfig.title": "从 VC 格式设置生成 EditorConfig 内容",
|
||||
"c_cpp.command.GoToNextDirectiveInGroup.title": "转到条件组中的下一个预处理器指令",
|
||||
"c_cpp.command.GoToPrevDirectiveInGroup.title": "转到条件组中的上一个预处理器指令",
|
||||
"c_cpp.command.CreateDeclarationOrDefinition.title": "创建声明/定义",
|
||||
"c_cpp.command.RunCodeAnalysisOnActiveFile.title": "在活动文件上运行 Code Analysis",
|
||||
"c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "在打开的文件上运行 Code Analysis",
|
||||
"c_cpp.command.RunCodeAnalysisOnAllFiles.title": "在所有文件上运行 Code Analysis",
|
||||
@@ -34,6 +45,14 @@
|
||||
"c_cpp.command.BuildAndRunFile.title": "运行 C/C++ 文件",
|
||||
"c_cpp.command.AddDebugConfiguration.title": "添加调试配置",
|
||||
"c_cpp.command.GenerateDoxygenComment.title": "生成 Doxygen 注释",
|
||||
"c_cpp.command.addSshTarget.title": "添加 SSH 目标",
|
||||
"c_cpp.command.removeSshTarget.title": "移除 SSH 目标",
|
||||
"c_cpp.command.setActiveSshTarget.title": "将此 SSH 目标设置为活动目标",
|
||||
"c_cpp.command.selectActiveSshTarget.title": "选择活动 SSH 目标",
|
||||
"c_cpp.command.selectSshTarget.title": "选择 SSH 目标",
|
||||
"c_cpp.command.activeSshTarget.title": "获取活动 SSH 目标",
|
||||
"c_cpp.command.refreshCppSshTargetsView.title": "刷新",
|
||||
"c_cpp.command.sshTerminal.title": "在新终端中连接到此 SSH 目标",
|
||||
"c_cpp.configuration.maxConcurrentThreads.markdownDescription": "用于语言服务处理的最大并发线程数。该值是一个提示,且不能始终使用。默认值 `null` (空)使用可用的逻辑处理器数。",
|
||||
"c_cpp.configuration.maxCachedProcesses.markdownDescription": "用于语言服务处理的最大缓存进程数。默认值 `null` (空)使用可用逻辑处理器数的两倍。",
|
||||
"c_cpp.configuration.maxMemory.markdownDescription": "可用于语言服务处理的最大内存(以 MB 为单位)。超过此内存使用量后,将缓存且并发运行较少的进程。默认值 `null` (空)使用系统的空闲内存。",
|
||||
@@ -45,19 +64,19 @@
|
||||
"c_cpp.configuration.codeAnalysis.maxConcurrentThreads.markdownDescription": "用于代码分析的最大并发线程数。默认值 `null` (空)使用从 `#C_Cpp.maxConcurrentThreads#` 继承的值的一半。",
|
||||
"c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "超过此内存使用量(以 MB 为单位)后,将并发运行更少的代码分析进程。默认值 `null` (空)使用从 `#C_Cpp.maxMemory#` 继承的值。",
|
||||
"c_cpp.configuration.codeAnalysis.updateDelay.markdownDescription": "控制在 `#files.autoSave#` 为 `afterDelay` 且 `#C_Cpp.codeAnalysis.runAutomatically#` 为 `true` 时从编辑触发保存后,代码分析开始处理之前的延迟(以毫秒为单位)。",
|
||||
"c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "配置 glob 模式已排除用于代码分析的文件夹和文件。始终排除不在工作区文件夹下的文件。从 `#files.exclude#` 和 `#C_Cpp.files.exclude#` 继承值。详细了解 glob 模式 [此处](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options)。",
|
||||
"c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "配置 glob 模式以排除用于代码分析的文件夹和文件。始终排除不在工作区文件夹下的文件。从 `#files.exclude#` 和 `#C_Cpp.files.exclude#` 继承值。详细了解 glob 模式 [此处](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options)。",
|
||||
"c_cpp.configuration.codeAnalysis.excludeBoolean.markdownDescription": "要与文件路径匹配的 glob 模式。设置为 `true` 或 `false` 以启用或禁用模式。",
|
||||
"c_cpp.configuration.codeAnalysis.excludeWhen.markdownDescription": "对匹配文件同辈进行其他检查。将 `$(basename)` 用作匹配文件名变量。",
|
||||
"c_cpp.configuration.codeAnalysis.runAutomatically.markdownDescription": "如果为 `true`,则代码分析将在文件打开或保存后自动在文件上运行。",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.codeAction.showDisable.markdownDescription": "如果为`true`,`禁用'代码操作将在可用时显示(下次运行代码分析时)。使用`禁用'代码操作时,它会将警告代码添加到 `C_Cpp.codeAnalysis.clangTidy.checks.disabled`设置。",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.codeAction.showDisable.markdownDescription": "如果为 `true`,'禁用'代码操作将在可用时显示(下次运行代码分析时)。使用'禁用'代码操作时,它会将警告代码添加到 `C_Cpp.codeAnalysis.clangTidy.checks.disabled` 设置。",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.codeAction.showDocumentation.markdownDescription": "如果为 `true`,“显示文档”代码操作将在可用时显示(下次运行代码分析时)。",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.codeAction.showClear.description": "控制哪些“清除”代码分析问题代码操作选项可用。更改设置以显示更多选项可能需要重新运行代码分析。",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.codeAction.showClear.None.description": "不显示“清除”代码操作。",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.codeAction.showClear.AllOnly.description": "仅显示“全部清除”代码操作(如果只有一种类型,则显示“清除所有<type>”,如果只有一个问题,则显示“清除此项”)。",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.codeAction.showClear.AllAndAllType.description": "如果存在多个问题类型,显示“全部清除”代码操作和“清除所有 <type>”代码操作(或如果<type>只有一个问题,显示“清除此项”)",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.codeAction.showClear.AllAndAllTypeAndThis.description": "如果有多个问题类型,显示“全部清除”,如果有多个 <type> 问题,显示“清除所有 <type>”以及显示“清除此项”代码操作",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.codeAction.formatFixes.markdownDescription": "如果为 `true`,则在 `修复` 代码操作更改的行上运行格式设置。",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "如果为 `true`,则在 `#C_Cpp.codeAnalysis.runAutomatically#` 为 `true` (默认值)时,将启用并自动运行使用 `clang-tidy` 的代码分析。",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.codeAction.formatFixes.markdownDescription": "如果为 `true`,则在“修复”代码操作更改的行上运行格式设置。",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "如果为 `true`,则在 `#C_Cpp.codeAnalysis.runAutomatically#` 为 `true` (默认值)时,将启用使用 `clang-tidy` 的代码分析,并在文件打开或保存后运行它。",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.path.markdownDescription": "`clang-tidy` 可执行文件的完整路径。如果未指定,并且 `clang-tidy` 在环境路径中可用,则使用该路径。如果在环境路径中找不到,则将使用与扩展捆绑的 `clang-tidy`。",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.config.markdownDescription": "指定 YAML/JSON 格式的 `clang-tidy` 配置: `{Checks: '-*,clang-analyzer-*', CheckOptions: [{键: x, 值: y}]}`。当值为空时,`clang-tidy` 将尝试为其父目录中的每个源文件查找名为 `.clang-tidy` 的文件。",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.fallbackConfig.markdownDescription": "指定 YAML/JSON 格式的 `clang-tidy` 配置,以在未设置 `#C_Cpp.codeAnalysis.clangTidy.config#`,并且未找到 `.clang-tidy` 文件: `{Checks: '-*,clang-analyzer-*', CheckOptions: [{键: x, 值: y}]}` 时将其用作回退。",
|
||||
@@ -157,7 +176,7 @@
|
||||
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.allOneLineScopes.markdownDescription": "任何在一行中输入左大括号和右大括号的代码都会保留在一行上,不考虑任何 `C_Cpp.vcFormat.newLine.*` 设置的值。",
|
||||
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.never.markdownDescription": "代码块始终基于 `C_Cpp.vcFormat.newLine.*` 设置的值进行格式化。",
|
||||
"c_cpp.configuration.clang_format_path.markdownDescription": "`clang-format` 可执行文件的完整路径。如果未指定,则 `clang-format` 在使用的环境路径中可用。如果在环境路径中找不到,则将使用与扩展捆绑的 `clang-format`。",
|
||||
"c_cpp.configuration.clang_format_style.markdownDescription": "编码样式目前支持: `Visual Studio`、`LLVM`、 `Google`、`Chromium`、`Mozilla`、`WebKit`、 `Microsoft`、`GNU`。使用 `file` 从当前目录或父目录中的 `.clang-format` 文件加载样式。使用 `{键: 值, ...}` 以设置特定参数。例如,`Visual Studio` 样式类似于: `{ BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4, NamespaceIndentation: All, FixNamespaceComments: false }`。",
|
||||
"c_cpp.configuration.clang_format_style.markdownDescription": "编码样式目前支持: `Visual Studio`、`LLVM`、 `Google`、`Chromium`、`Mozilla`、`WebKit`、 `Microsoft`、`GNU`。使用 `file` 从当前目录或父目录中的 `.clang-format` 文件加载样式,或使用 `file:<路径>/.clang-format` 引用特定路径。使用 `{键: 值, ...}` 设置特定参数。例如,`Visual Studio` 样式类似于: `{ BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4, NamespaceIndentation: All, FixNamespaceComments: false }`。",
|
||||
"c_cpp.configuration.clang_format_fallbackStyle.markdownDescription": "用作回退的预定义样式的名称,以防使用样式 `file` 调用 `clang-format` 但找不到 `.clang-format` 文件。可能的值为 `Visual Studio`、`LLVM`、 `Google`、`Chromium`、`Mozilla`、`WebKit`、 `Microsoft`、`GNU`、`none`,或使用 `{键: 值, ...}` 以设置特定参数。例如,`Visual Studio` 样式类似于: `{ BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4, NamespaceIndentation: All, FixNamespaceComments: false }`。",
|
||||
"c_cpp.configuration.clang_format_sortIncludes.markdownDescription": "如果设置,则替换由 `SortIncludes` 参数确定的包含排序行为。",
|
||||
"c_cpp.configuration.intelliSenseEngine.description": "控制 IntelliSense 提供程序。",
|
||||
@@ -165,7 +184,7 @@
|
||||
"c_cpp.configuration.intelliSenseEngine.tagParser.description": "提供非上下文感知的“模糊”结果。",
|
||||
"c_cpp.configuration.intelliSenseEngine.disabled.description": "关闭 C/C++ 语言服务功能。",
|
||||
"c_cpp.configuration.intelliSenseEngineFallback.markdownDescription": "控制 IntelliSense 引擎是否将自动切换为包含 `#include` 错误的翻译单元的标记分析器。",
|
||||
"c_cpp.configuration.autocomplete.markdownDescription": "控制自动完成提供程序。如果“已禁用”,且你想要基于字词的补全,则还需要设置 `\"[cpp]\": {\"editor.wordBasedSuggestions\": true}`(对 `c` 和 `cuda-cpp` 语言同样执行此操作)。",
|
||||
"c_cpp.configuration.autocomplete.markdownDescription": "控制自动完成提供程序。如果 `disabled`,且你想要基于字词的补全,则还需要设置 `\"[cpp]\": {\"editor.wordBasedSuggestions\": true}`(对 `c` 和 `cuda-cpp` 语言同样执行此操作)。",
|
||||
"c_cpp.configuration.autocomplete.default.description": "使用活动的 IntelliSense 引擎。",
|
||||
"c_cpp.configuration.autocomplete.disabled.description": "使用 Visual Studio Code 提供的基于字词的补全。",
|
||||
"c_cpp.configuration.errorSquiggles.description": "控制是否将 IntelliSense 引擎检测到的可疑编译错误报告回编辑器。还控制是否报告代码分析警告(如果找不到包含)。标记分析器引擎将忽略此设置。",
|
||||
@@ -191,6 +210,7 @@
|
||||
"c_cpp.configuration.simplifyStructuredComments.markdownDescription": "如果为 `true`,则悬停和自动完成的工具提示将仅显示结构化注释的某些标签。否则,将显示所有注释。",
|
||||
"c_cpp.configuration.doxygen.generateOnType.description": "控制在键入所选注释样式后是否自动插入 Doxygen 注释。",
|
||||
"c_cpp.configuration.doxygen.generatedStyle.description": "用作 Doxygen 注释起始行的字符串。",
|
||||
"c_cpp.configuration.doxygen.sectionTags.description": "启用“简化结构化注释”设置后,选择希望在工具提示区域中悬停时显示的 Doxygen 节标记。 ",
|
||||
"c_cpp.configuration.commentContinuationPatterns.items.anyof.string.markdownDescription": "开始多行或单行注释块的模式。多行注释块的延续模式默认为 ` * `,或单行注释块默认为此字符串。",
|
||||
"c_cpp.configuration.commentContinuationPatterns.items.anyof.object.begin.description": "开启一个多行或单行注释块的模式。",
|
||||
"c_cpp.configuration.commentContinuationPatterns.items.anyof.object.continue.description": "在多行或单行注释块内按下 Enter 键时要插入到下一行的文本。",
|
||||
@@ -224,19 +244,23 @@
|
||||
"c_cpp.configuration.default.dotConfig.markdownDescription": "未指定 `dotConfig` 时要在配置中使用的值,或 `dotConfig` 中存在 `${default}` 时要插入的值。",
|
||||
"c_cpp.configuration.experimentalFeatures.description": "控制“实验性”功能是否可用。",
|
||||
"c_cpp.configuration.suggestSnippets.markdownDescription": "如果为 `true`,则由语言服务器提供片段。",
|
||||
"c_cpp.configuration.enhancedColorization.markdownDescription": "如果启用,则根据 IntelliSense 对代码进行着色。仅当 `#C_Cpp.intelliSenseEngine#` 设置为 `Default` 时,此设置才适用。",
|
||||
"c_cpp.configuration.caseSensitiveFileSupport.markdownDescription": "如果设置为 `default`,则假定工作区的文件系统在 Windows 上不区分大小写,在 macOS 或 Linux 上区分大小写。如果设置为 `enabled`,则假定工作区的文件系统在 Windows 上区分大小写。",
|
||||
"c_cpp.configuration.enhancedColorization.markdownDescription": "如果启用,则根据 IntelliSense 对代码进行着色。仅当 `#C_Cpp.intelliSenseEngine#` 设置为 `default` 时,此设置才适用。",
|
||||
"c_cpp.configuration.codeFolding.description": "如果启用,则由语言服务器提供代码折叠范围。",
|
||||
"c_cpp.configuration.hover.description": "如果禁用,则语言服务器不再提供悬停详细信息。",
|
||||
"c_cpp.configuration.vcpkg.enabled.markdownDescription": "为 [vcpkg 依存关系管理器](https://aka.ms/vcpkg/) 启用集成服务。",
|
||||
"c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "当来自 `nan` 和 `node-addon-api` 的包含路径为依赖项时,请将其添加。",
|
||||
"c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "如果为 `true`,则“重命名符号”将需要有效的 C/C++ 标识符。",
|
||||
"c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "如果为 `true`,则自动完成将在函数调用后自动添加 `(` ,在这种情况下,也可以添加 `(` ,具体取决于 `#editor.autoClosingBrackets#` 设置的值。",
|
||||
"c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "如果为 `true`,则自动完成将在函数调用后自动添加 `(` ,在这种情况下,也可以添加 `)` ,具体取决于 `#editor.autoClosingBrackets#` 设置的值。",
|
||||
"c_cpp.configuration.filesExclude.markdownDescription": "为排除文件夹(以及文件 - 如果更改了 `#C_Cpp.exclusionPolicy#`)配置 glob 模式。这些特定于 C/C++ 扩展,并且是 `#files.exclude#` 的补充,但与 `#files.exclude#` 不同,它们也适用于当前工作区文件夹之外的路径,并且不会从资源管理器视图中删除。[此处](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options)。",
|
||||
"c_cpp.configuration.filesExcludeBoolean.markdownDescription": "要与文件路径匹配的 glob 模式。设置为 `true` 或 `false` 以启用或禁用模式。",
|
||||
"c_cpp.configuration.filesExcludeWhen.markdownDescription": "对匹配文件同辈进行其他检查。将 `$(basename)` 用作匹配文件名变量。",
|
||||
"c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "如果为 `true`,则调试程序 shell 命令替换将使用过时的反引号 ``(`)``。",
|
||||
"c_cpp.configuration.legacyCompilerArgsBehavior.markdownDescription": "启用 v1.10.0 以前的行为,以了解在编译器参数设置中如何处理 shell 转义。从 v1.10.0 开始,参数数组在默认情况下不再需要或支持 shell 转义。",
|
||||
"c_cpp.configuration.legacyCompilerArgsBehavior.deprecationMessage": "此设置是临时的,用于支持转换为 v1.10.0 中更正后的行为。",
|
||||
"c_cpp.configuration.sshTargetsView.description": "控制 SSH 目标视图是否可见。默认情况下,在调用 SSH 命令时启用视图。",
|
||||
"c_cpp.contributes.views.cppReferencesView.title": "C/C++: 其他引用结果",
|
||||
"c_cpp.contributes.views.sshTargetsView.title": "Cpptools: SSH 目标",
|
||||
"c_cpp.contributes.viewsWelcome.contents": "要了解有关 launch.json 的信息,请参阅 [配置 C/C++ 调试](https://code.visualstudio.com/docs/cpp/launch-json-reference)。",
|
||||
"c_cpp.configuration.debugShortcut.description": "显示 C++ 文件编辑器标题栏中的“运行和调试”播放按钮和“添加调试配置”齿轮。",
|
||||
"c_cpp.debuggers.pipeTransport.description": "如果存在,这会指示调试程序使用其他可执行文件作为管道来连接到远程计算机,此管道将在 VS Code 和已启用 MI 的调试程序后端可执行文件(如 gdb)之间中继标准输入/输入。",
|
||||
@@ -326,10 +350,12 @@
|
||||
"c_cpp.debuggers.host.localForward.localSocket.description": "本地套接字",
|
||||
"c_cpp.debuggers.host.localForward.remoteSocket.description": "远程套接字",
|
||||
"c_cpp.debuggers.deploySteps.description": "部署应用程序所需的步骤。顺序很重要。",
|
||||
"c_cpp.debuggers.deploySteps.scp.description": "使用 SCP 复制文件。",
|
||||
"c_cpp.debuggers.deploySteps.scp.files.description": "要通过 SCP 复制的文件。支持路径模式。",
|
||||
"c_cpp.debuggers.deploySteps.scp.targetDir.description": "目标目录。",
|
||||
"c_cpp.debuggers.deploySteps.scp.scpPath.description": "SCP 的可选完整路径。假定 SCP 位于 PATH 上(如果未指定)",
|
||||
"c_cpp.debuggers.deploySteps.copyFile.description": "使用 SCP 或 rsync 复制文件。",
|
||||
"c_cpp.debuggers.deploySteps.copyFile.files.description": "要复制的文件。支持路径模式。",
|
||||
"c_cpp.debuggers.deploySteps.copyFile.targetDir.description": "目标目录。",
|
||||
"c_cpp.debuggers.deploySteps.copyFile.recursive.description": "如果为 true,则以递归方式复制文件夹。",
|
||||
"c_cpp.debuggers.deploySteps.copyFile.scpPath.description": "SCP 的可选完整路径。假定 SCP 位于 PATH 上(如果未指定)",
|
||||
"c_cpp.debuggers.deploySteps.copyFile.rsyncPath.description": "rsync 的可选完整路径。假定 rsync 在 PATH 上(如果未指定)",
|
||||
"c_cpp.debuggers.deploySteps.debug": "如果为 true,则在不调试的情况下启动时跳过。如果为 false,则在开始调试时跳过。如果未定义,则从不跳过。",
|
||||
"c_cpp.debuggers.deploySteps.ssh.description": "SSH 命令步骤。",
|
||||
"c_cpp.debuggers.deploySteps.ssh.command.description": "要通过 SSH 执行的命令。SSH 命令中 \"-c\" 后面的命令。",
|
||||
@@ -350,6 +376,7 @@
|
||||
"c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.editorPath.description": "编辑器将使用的源树的路径。",
|
||||
"c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "如果此条目仅用于堆栈帧位置映射,则为 False。如果在指定断点位置时也需要使用此条目,则为 True。",
|
||||
"c_cpp.debuggers.symbolOptions.description": "用于控制如何找到和加载符号(.pdb 文件)的选项。",
|
||||
"c_cpp.debuggers.unknownBreakpointHandling.description": "控制在命中时如何处理(通常通过原始 GDB 命令)外部设置的断点。\n允许的值为 \"throw\" (好像应用程序抛出了异常)和 \"stop\" (只会暂停调试会话)。默认值为 \"throw\"。",
|
||||
"c_cpp.debuggers.VSSymbolOptions.description": "提供用于找到符号并将其加载到调试适配器的配置。",
|
||||
"c_cpp.debuggers.VSSymbolOptions.searchPaths.description": "在其中搜索 .pdb 文件的符号服务器 URL (例如 http://MyExampleSymbolServer)或目录(例如 /build/symbols)的数组。除了默认位置,还将搜索这些目录 - 在模块以及 pdb 最初放置到的路径的旁边。",
|
||||
"c_cpp.debuggers.VSSymbolOptions.searchMicrosoftSymbolServer.description": "如果为 \"true\",则 Microsoft 符号服务器(https://msdl.microsoft.com/download/symbols)会添加到符号搜索路径。如果未指定,此选项会默认为 \"false\"。",
|
||||
@@ -375,5 +402,32 @@
|
||||
"c_cpp.semanticTokenTypes.numberLiteral.description": "C++ 用户定义文本数字的样式。",
|
||||
"c_cpp.semanticTokenTypes.stringLiteral.description": "C++ 用户定义文本字符串的样式。",
|
||||
"c_cpp.semanticTokenModifiers.global.description": "用于全局符号的样式。",
|
||||
"c_cpp.semanticTokenModifiers.local.description": "用于本地符号的样式。"
|
||||
"c_cpp.semanticTokenModifiers.local.description": "用于本地符号的样式。",
|
||||
"c_cpp.debuggers.logging.natvisDiagnostics.description": "可选标志,用于确定是否应将诊断 natvis 消息记录到调试控制台。默认为 None。",
|
||||
"c_cpp.debuggers.logging.category.verbose.description": "开发期间用于交互式调查的日志。这些日志应主要包含可用于调试的信息,并且不具有长期价值。",
|
||||
"c_cpp.debuggers.logging.category.warning.description": "突出显示应用程序流中的异常或意外事件,但不会导致应用程序执行停止的日志。",
|
||||
"c_cpp.debuggers.logging.category.error.description": "在当前执行流因失败而停止时突出显示的日志。这些应指示当前活动中的失败,而不是应用程序范围的失败。",
|
||||
"c_cpp.debuggers.logging.category.none.description": "不用于写入日志消息。指定事件日志类别不应写入任何消息。",
|
||||
"c_cpp.walkthrough.title": "C++ 开发入门",
|
||||
"c_cpp.walkthrough.description": "深入了解 VS Code 丰富的 C++ 开发体验。",
|
||||
"c_cpp.walkthrough.set.up.title": "设置 C++ 环境",
|
||||
"c_cpp.walkthrough.activating.description": "激活 C++ 扩展以确定是否已设置 C++ 环境。\n正在激活扩展...",
|
||||
"c_cpp.walkthrough.no.compilers.description": "无法在计算机上找到 C++ 编译器,这是使用 C++ 扩展所必需的。请按照右侧的说明安装一个编译器,然后单击下面的“查找我的新编译器”。\n[查找我的新编译器](command:C_Cpp.RescanCompilers?%7B%22sender%22%3A%22walkthrough%22%7D)",
|
||||
"c_cpp.walkthrough.compilers.found.description": "C++ 扩展需要与 C++ 编译器一起使用。通过单击下面的按钮从计算机上已有的编译器中选择一个。\n[选择我的默认编译器](command:C_Cpp.SelectDefaultCompiler?%7B%22sender%22%3A%22walkthrough%22%7D)",
|
||||
"c_cpp.walkthrough.compilers.found.altText": "显示在用户计算机上找到的选定默认编译器快捷检查和编译器列表的图像,其中一个已选定。",
|
||||
"c_cpp.walkthrough.create.cpp.file.title": "创建 C++ 文件",
|
||||
"c_cpp.walkthrough.create.cpp.file.description": "[打开](command:toSide:workbench.action.files.openFile)或[创建](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)一个 C++ 文件。请确保将其保存为 \".cpp\" 扩展名,例如 \"helloworld.cpp\"。\n[创建 C++ 文件](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)",
|
||||
"c_cpp.walkthrough.create.cpp.file.altText": "使用 C++ 项目打开 C++ 文件或文件夹。",
|
||||
"c_cpp.walkthrough.command.prompt.title": "从开发人员命令提示启动",
|
||||
"c_cpp.walkthrough.command.prompt.description": "使用 Microsoft Visual Studio C++ 编译器时,C++ 扩展需要从开发人员命令提示符中启动 VS Code。请按照右侧的说明重新启动。\n[重新加载窗口](command:workbench.action.reloadWindow)",
|
||||
"c_cpp.walkthrough.run.debug.title": "运行并调试 C++ 文件",
|
||||
"c_cpp.walkthrough.run.debug.mac.description": "打开你的 C++ 文件,在编辑器右上角点击播放按钮,或者在文件上按 F5。选择“clang++ - 构建和调试活动文件”以使用调试器运行。",
|
||||
"c_cpp.walkthrough.run.debug.linux.description": "打开 C++ 文件,在编辑器右上角点击播放按钮,或者在文件上按 F5。选择“g++ - 构建和调试活动文件”以使用调试器运行。",
|
||||
"c_cpp.walkthrough.run.debug.windows.description": "打开你的 C++ 文件,然后在编辑器右上角点击播放按钮,或者当你在该文件上时按下 F5。选择“cl.exe - 构建和调试活动文件”以使用调试器运行。",
|
||||
"c_cpp.walkthrough.run.debug.windows.altText": "显示 C++ 文件中的断点、f5 按钮和右上角的运行符号的图像",
|
||||
"c_cpp.walkthrough.customize.debugging.title": "自定义调试",
|
||||
"c_cpp.walkthrough.customize.debugging.mac.description": "可以通过在播放按钮右侧选择“添加调试配置”来自定义调试配置(例如,在运行时传递参数给程序)。自定义调试配置将保存在项目的 launch.json 文件中。\n[了解更多](https://code.visualstudio.com/docs/cpp/config-linux#_debug-helloworldcpp)",
|
||||
"c_cpp.walkthrough.customize.debugging.linux.description": "可以通过在播放按钮右侧选择“添加调试配置”来自定义调试配置(例如,在运行时传递参数给程序)。自定义调试配置将保存在项目的 launch.json 文件中。\n[了解更多](https://code.visualstudio.com/docs/cpp/config-msvc#_debug-helloworldcpp)",
|
||||
"c_cpp.walkthrough.customize.debugging.windows.description": "可以通过在播放按钮右侧选择“添加调试配置”来自定义调试配置(例如,在运行时传递参数给程序)。自定义的调试配置将保存在项目的 launch.json 文件中。\n[了解更多](https://code.visualstudio.com/docs/cpp/config-clang-mac#_debug-helloworldcpp)",
|
||||
"c_cpp.walkthrough.customize.debugging.altText": "显示下拉列表中“添加调试配置”的图像"
|
||||
}
|
||||
@@ -13,7 +13,9 @@
|
||||
"debugger.launchConfig": "启动配置:",
|
||||
"vs.code.1.69+.required": "\"deploySteps\" 需要 VS Code 1.69+。",
|
||||
"running.deploy.steps": "正在运行部署步骤...",
|
||||
"compiler.path.not.exists": "找不到 {0}。将忽略 {1} 任务。",
|
||||
"pre.Launch.Task": "preLaunchTask: {0}",
|
||||
"debugger.path.not.exists": "找不到 {0} 调试器。将忽略 {1} 的调试配置。",
|
||||
"build.and.debug.active.file": "生成和调试活动文件",
|
||||
"cl.exe.not.available": "仅当从 VS 开发人员命令提示符处运行 VS Code 时,{0} 生成和调试才可用。",
|
||||
"lldb.find.failed": "缺少 lldb-mi 可执行文件的依赖项“{0}”。",
|
||||
@@ -32,8 +34,8 @@
|
||||
"no.compiler.found": "未找到编译程序",
|
||||
"select.debug.configuration": "选择调试配置",
|
||||
"command.args.must.be.array": "命令部署步骤中的 \"args\" 必须为数组。",
|
||||
"missing.properties.scp": "scp 步骤中需要 \"host\"、\"files\" 和 \"targetDir\"。",
|
||||
"incorrect.files.type.scp": "\"files\" 必须为 scp 步骤中的字符串或字符串数组。",
|
||||
"missing.properties.copyFile": "{0} 步骤中需要 \"host\"、\"files\" 和 \"targetDir\"。",
|
||||
"incorrect.files.type.copyFile": "“files” 必须为 {0} 步骤中的字符串或字符串数组。",
|
||||
"missing.properties.ssh": "SSH 步骤需要 \"host\" 和 \"command\"。",
|
||||
"missing.properties.shell": "shell 步骤需要 \"command\"。",
|
||||
"deploy.step.type.not.supported": "不支持部署步骤类型 {0}。",
|
||||
|
||||
@@ -4,5 +4,15 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"add.debug.configuration.not.available.for.single.file": "添加调试配置不适用于单个文件。"
|
||||
"add.debug.configuration.not.available.for.single.file": "添加调试配置不适用于单个文件。",
|
||||
"cannot.modify.config.file": "由于分析失败“{0}”,无法修改 SSH 配置文件。",
|
||||
"no.valid.ssh.config.file": "找不到有效的 SSH 配置文件。",
|
||||
"enter.ssh.target.name": "输入 SSH 目标名称",
|
||||
"ssh.target.name.place.holder": "示例: `mySSHTarget`",
|
||||
"enter.ssh.connection.command": "输入 SSH 连接命令",
|
||||
"ssh.connection.command.place.holder": "示例: `ssh [email protected] -A`",
|
||||
"select.ssh.config.file": "选择 SSH 配置文件",
|
||||
"yes": "是",
|
||||
"no": "否",
|
||||
"ssh.target.delete.confirmation": "是否确实要永久删除“{0}”?"
|
||||
}
|
||||
@@ -4,5 +4,9 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"os.not.supported": "不支持操作系统“{0}”。"
|
||||
"os.not.supported": "不支持操作系统“{0}”。",
|
||||
"timeout.processList.spawn": "“{0}”在 {1} 秒后超时。",
|
||||
"cancel.processList.spawn": "已取消“{0}”。",
|
||||
"error.processList.spawn": "“{0}”已退出,代码为“{1}”。",
|
||||
"failed.processList.spawn": "未能生成“{0}”。"
|
||||
}
|
||||
@@ -6,13 +6,26 @@
|
||||
{
|
||||
"unable.to.start": "无法启动 C/C++ 语言服务器。IntelliSense 功能将被禁用。错误: {0}",
|
||||
"check.permissions": "EPERM: 检查“{0}”的权限",
|
||||
"select.compiler": "选择要为 IntelliSense 配置的编译器",
|
||||
"configure.intelliSense.forFolder": "你希望如何为“{0}”文件夹配置 IntelliSense?",
|
||||
"configure.intelliSense.thisFolder": "你希望如何为此文件夹配置 IntelliSense?",
|
||||
"found.string": "在 {0} 找到",
|
||||
"use.compiler": "使用 {0}",
|
||||
"configuration.providers": "配置提供程序",
|
||||
"compilers": "编译器",
|
||||
"setCompiler.message": "未配置编译器。除非设置自己的配置,否则 IntelliSense 可能无法正常工作。",
|
||||
"selectIntelliSenseConfiguration.string": "选择 IntelliSense 配置...",
|
||||
"use.provider": "使用 {0}",
|
||||
"use.compileCommands": "使用 {0}",
|
||||
"selectAnotherCompiler.string": "在我的计算机上选择另一个编译器...",
|
||||
"installCompiler.string": "帮助我安装编译器",
|
||||
"noConfig.string": "请勿适用编译器进行配置(不推荐)",
|
||||
"selectCompiler.string": "选择编译器",
|
||||
"confirmCompiler.string": "是",
|
||||
"selectCompiler.message": "已找到编译器 {0}。是否要使用此编译器配置 IntelliSense?",
|
||||
"server.crashed.restart": "语言服务器崩溃。正在重新启动...",
|
||||
"server.crashed2": "在过去 3 分钟内,语言服务器崩溃了 5 次。它不会重新启动。",
|
||||
"loggingLevel.changed": "{0} 已更改为: {1}",
|
||||
"provider.configure.folder": "{0} 想要为“{1}”文件夹配置 IntelliSense。",
|
||||
"provider.configure.this.folder": "{0} 想要为此文件夹配置 IntelliSense。",
|
||||
"allow.button": "允许",
|
||||
"dont.allow.button": "不允许",
|
||||
"ask.me.later.button": "稍后询问我",
|
||||
"dismiss.button": "消除",
|
||||
"diable.warnings.button": "禁用警告",
|
||||
"unable.to.provide.configuration": "{0} 无法为“{1}”提供 IntelliSense 配置信息。将改为使用“{2}”配置中的设置。",
|
||||
@@ -25,6 +38,11 @@
|
||||
"dont.show.again": "不再显示",
|
||||
"update.your.intellisense.settings": "更新 IntelliSense 设置或使用 Vcpkg 来安装用于帮助查找缺少的标头的库。",
|
||||
"configure.your.intellisense.settings": "配置 IntelliSense 设置以帮助查找缺少的标头。",
|
||||
"provider.configure.folder": "{0} 想要为“{1}”文件夹配置 IntelliSense。",
|
||||
"provider.configure.this.folder": "{0} 想要为此文件夹配置 IntelliSense。",
|
||||
"allow.button": "允许",
|
||||
"dont.allow.button": "不允许",
|
||||
"ask.me.later.button": "稍后询问我",
|
||||
"a.compile.commands.file": "compile_commands.json 文件",
|
||||
"auto-configure.intellisense.folder": "是否要使用 {0} 为“{1}”文件夹自动配置 IntelliSense?",
|
||||
"auto-configure.intellisense.this.folder": "是否要使用 {0} 为此文件夹自动配置 IntelliSense?",
|
||||
@@ -32,6 +50,5 @@
|
||||
"no.button": "否",
|
||||
"configurations.received": "已收到自定义配置:",
|
||||
"browse.configuration.received": "已收到自定义浏览配置: {0}",
|
||||
"no.compilers.found": "系统上未找到任何 C++ 编译器。对于你的平台,建议使用编辑器中的说明安装 {0}。",
|
||||
"compilers.found": "在你的系统上找到了以下 C++ 编译器。请在项目的 IntelliSense 配置中选择编译器。"
|
||||
"fallback.clipboard": "已复制声明/定义。"
|
||||
}
|
||||
@@ -6,10 +6,10 @@
|
||||
{
|
||||
"learn.how.to.install.a.library": "了解如何使用 vcpkg 为此标头安装库",
|
||||
"copy.vcpkg.command": "将用于安装“{0}”的 vcpkg 命令复制到剪贴板",
|
||||
"on.disabled.command": "当 `C_Cpp.intelliSenseEngine` 设置为 `Disabled` 时,无法执行与 IntelliSense 相关的命令。",
|
||||
"on.disabled.command": "当 `C_Cpp.intelliSenseEngine` 设置为 `disabled` 时,无法执行与 IntelliSense 相关的命令。",
|
||||
"client.not.found": "未找到客户端",
|
||||
"configuration.select.first": "首先打开一个文件夹以选择配置",
|
||||
"configuration.provider.select.first": "首先打开一个文件夹以选择配置提供程序",
|
||||
"configuration.select.first": "首先打开一个文件夹以选择配置。",
|
||||
"configuration.provider.select.first": "首先打开一个文件夹以选择配置提供程序。",
|
||||
"edit.configurations.open.first": "首先打开一个文件夹以编辑配置",
|
||||
"code.action.aborted": "无法应用代码分析修复程序,因为文档已更改。",
|
||||
"add.includepath.open.first": "首先打开一个要添加到 {0} 的文件夹"
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
"find.all.references": "查找所有引用",
|
||||
"peek.references": "速览引用",
|
||||
"rename": "重命名",
|
||||
"call.hierarchy": "调用层次结构",
|
||||
"confirmed.reference.upper": "已确认引用",
|
||||
"confirmation.in.progress.upper": "正在进行确认",
|
||||
"comment.reference.upper": "注释引用",
|
||||
|
||||
@@ -4,5 +4,5 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"editorconfig.default.behavior": "代码格式设置使用 .editorconfig 中的设置,而不是 .clang-format 中的设置。有关详细信息,请参阅文档了解“C_Cpp.formatting”设置的“Default”值。"
|
||||
"editorconfig.default.behavior": "代码格式设置使用 .editorconfig 中的设置,而不是 .clang-format 中的设置。有关详细信息,请参阅文档以了解 'C_Cpp.formatting' 设置的 'default' 值。"
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"c.cpp.configurations": "C/C++ 配置"
|
||||
}
|
||||
@@ -7,7 +7,10 @@
|
||||
"c.cpp.parsing.open.files.tooltip": "正在分析打开的文件",
|
||||
"click.to.preview": "单击以预览结果",
|
||||
"updating.intellisense.tooltip": "正在更新 IntelliSense",
|
||||
"c.cpp.configureIntelliSenseStatus.text": "配置 IntelliSense",
|
||||
"c.cpp.configureIntelliSenseStatus.cppText": "C/C++ 配置 IntelliSense",
|
||||
"select.command": "选择命令...",
|
||||
"select.code.analysis.command": "选择代码分析命令...",
|
||||
"c.cpp.configuration.tooltip": "C/C++ 配置",
|
||||
"c.cpp.references.statusbar": "C/C++ 引用状态",
|
||||
"c.cpp.intellisense.statusbar": "C/C++ IntelliSense 状态",
|
||||
@@ -27,7 +30,8 @@
|
||||
"select.workspace": "选择工作区文件夹…",
|
||||
"resume.parsing": "恢复工作区分析",
|
||||
"pause.parsing": "暂停工作区分析",
|
||||
"cancel.analysis": "取消 {0}",
|
||||
"resume.analysis": "恢复 {0}",
|
||||
"pause.analysis": "暂停 {0}"
|
||||
"cancel.analysis": "取消",
|
||||
"resume.analysis": "继续",
|
||||
"pause.analysis": "暂停",
|
||||
"another.analysis": "启动另一个..."
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"running.tagparser.text": "分析工作区",
|
||||
"paused.tagparser.text": "分析工作区: 已暂停",
|
||||
"complete.tagparser.text": "分析完毕",
|
||||
"initializing.tagparser.text": "正在初始化工作区",
|
||||
"indexing.tagparser.text": "正在索引工作区",
|
||||
"rescan.tagparse.text": "重新扫描工作区",
|
||||
"c.cpp.parsing.open.files.tooltip": "正在分析打开的文件",
|
||||
"click.to.preview": "单击以预览结果",
|
||||
"updating.intellisense.text": "IntelliSense: 正在更新",
|
||||
"idle.intellisense.text": "IntelliSense: 就绪",
|
||||
"absent.intellisense.text": "IntelliSense: 未配置",
|
||||
"running.analysis.text": "Code Analysis: 正在运行",
|
||||
"paused.analysis.text": "Code Analysis: 已暂停",
|
||||
"mode.analysis.prefix": "Code Analysis 模式:",
|
||||
"c.cpp.configureIntelliSenseStatus.text": "配置 IntelliSense",
|
||||
"c.cpp.configureIntelliSenseStatus.cppText": "C/C++ 配置 IntelliSense",
|
||||
"select.command": "选择命令...",
|
||||
"select.code.analysis.command": "选择代码分析命令...",
|
||||
"c.cpp.configuration.tooltip": "C/C++ 配置",
|
||||
"c.cpp.references.statusbar": "C/C++ 引用状态",
|
||||
"cpptools.status.intellisense": "C/C++ IntelliSense 状态",
|
||||
"cpptools.status.tagparser": "C/C++ 标记分析器状态",
|
||||
"cpptools.detail.tagparser": "正在初始化...",
|
||||
"cpptools.status.codeanalysis": "C/C++ Code Analysis 状态",
|
||||
"c.cpp.codeanalysis.statusbar.runNow": "立即运行",
|
||||
"tagparser.pause.text": "暂停",
|
||||
"tagparser.resume.text": "继续",
|
||||
"intellisense.select.text": "选择编译器",
|
||||
"rescan.intellisense.text": "重新扫描",
|
||||
"rescan.intellisense.tooltip": "重新扫描 IntelliSense",
|
||||
"mode.codeanalysis.status.automatic": "自动",
|
||||
"mode.codeanalysis.status.manual": "手动",
|
||||
"c.cpp.codeanalysis.statusbar.showCodeAnalysisOptions": "选项",
|
||||
"startup.codeanalysis.status": "正在启动...",
|
||||
"c.cpp.codeanalysis.statusbar.showRunNowOptions": "立即运行",
|
||||
"running.analysis.processed.tooltip": "正在运行: {0}/{1} ({2}%)",
|
||||
"select.a.configuration": "选择配置...",
|
||||
"edit.configuration.ui": "编辑配置(UI)",
|
||||
"edit.configuration.json": "编辑配置(JSON)",
|
||||
"select.configuration.provider": "选择配置提供程序...",
|
||||
"active": "活动",
|
||||
"none": "无",
|
||||
"disable.configuration.provider": "禁用活动配置提供程序(如果适用)。",
|
||||
"select.compile.commands": "选择 compile_commands.json...",
|
||||
"select.workspace": "选择工作区文件夹…",
|
||||
"resume.parsing": "恢复工作区分析",
|
||||
"pause.parsing": "暂停工作区分析",
|
||||
"cancel.analysis": "取消",
|
||||
"resume.analysis": "继续",
|
||||
"pause.analysis": "暂停",
|
||||
"another.analysis": "启动另一个...",
|
||||
"active.analysis": "在活动文件上运行 Code Analysis",
|
||||
"all.analysis": "在所有文件上运行 Code Analysis",
|
||||
"open.analysis": "在打开的文件上运行 Code Analysis"
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"no.ssh.targets": "无 SSH 目标",
|
||||
"active.ssh.target.selection.cancelled": "已取消活动 SSH 目标选择。",
|
||||
"add.new.ssh.target": "{0} 添加新的 SSH 目标...",
|
||||
"select.ssh.target": "选择 SSH 目标"
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"ssh.target.active.description": "[活动]"
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"failed.to.connect": "未能连接到 {0}"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"failed.to.parse.SSH.config": "无法分析 SSH 配置文件 {0}: {1}",
|
||||
"failed.to.read.file": "未能读取文件 {0}。",
|
||||
"failed.to.write.file": "无法写入文件 {0}。"
|
||||
}
|
||||
@@ -13,6 +13,5 @@
|
||||
"warning.file.missing": "警告: 缺少预期的文件 {0}。",
|
||||
"warning.debugging.not.tested": "警告: 尚未为此平台测试调试。",
|
||||
"reload.workspace.for.changes": "重新加载工作区以使设置更改生效。",
|
||||
"reload.string": "重新加载",
|
||||
"invalid.download.location.received": "接收的下载位置无效"
|
||||
"reload.string": "重新加载"
|
||||
}
|
||||
@@ -5,6 +5,7 @@
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"c.cpp.diagnostics": "C/C++ 诊断",
|
||||
"c.cpp.ssh.channel": "{0}: SSH",
|
||||
"c.cpp.debug.protocol": "C/C++ 调试协议",
|
||||
"c.cpp.warnings": "C/C++ 配置警告"
|
||||
}
|
||||
@@ -27,8 +27,8 @@
|
||||
"default_query_failed": "未能查询 {0} 的默认包含路径和定义。",
|
||||
"failed_call": "未能调用 {0}",
|
||||
"quick_info_failed": "快速信息操作失败: {0}",
|
||||
"create_intellisense_client_failed": "未能创建 IntelliSense 客户端。{0}",
|
||||
"intellisense_spawn_failed": "未能生成 IntelliSense 进程:",
|
||||
"create_intellisense_client_failed": "未能创建 IntelliSense 客户端: {0}",
|
||||
"intellisense_spawn_failed": "未能生成 IntelliSense 进程: {0}",
|
||||
"browse_engine_update_thread_join_failed": "调用 browse_engine_update_thread.join() 时出错: {0}",
|
||||
"already_open_different_casing": "此文件({0})已在编辑器中打开,但大小写不同。将对此文件的副本禁用 IntelliSense 功能。",
|
||||
"intellisense_client_disconnected": "IntelliSense 客户端已与服务器断开连接 - {0}",
|
||||
@@ -75,6 +75,8 @@
|
||||
"will_use_tag_parser_when_includes_dont_resolve": "当 #includes 不解析时,扩展将为 IntelliSense 使用标记分析器。",
|
||||
"autocomplete_is_enabled": "已启用自动完成。",
|
||||
"autocomplete_is_disabled": "已禁用自动完成。",
|
||||
"hover_is_enabled": "悬停已启用。",
|
||||
"hover_is_disabled": "悬停已禁用。",
|
||||
"enhanced_colorization_is_enabled": "已启用增强的着色。",
|
||||
"error_squiggles_disabled": "已禁用错误波形曲线。",
|
||||
"error_squiggles_enabled": "已启用错误波形曲线。",
|
||||
@@ -109,7 +111,6 @@
|
||||
"intellisense_client_currently_disconnected": "IntelliSense 客户端当前已断开连接",
|
||||
"request_cancelled": "已取消请求: {0}",
|
||||
"intellisense_client_not_available_go_to_definition": "IntelliSense 客户端不可用,请使用标记分析器转到定义。",
|
||||
"wsl_compiler_detected": "检测到的 WSL 编译器",
|
||||
"error_squiggle_count": "错误波形曲线计数: {0}",
|
||||
"queueing_update_intellisense": "正在为以下项的翻译单元中文件的 IntelliSense 更新进行排队: {0}",
|
||||
"formatting_document": "正在格式化文档: {0}",
|
||||
@@ -143,7 +144,6 @@
|
||||
"unable_to_start_child_process": "无法启动子进程!",
|
||||
"timed_out_attempting_to_communicate_with_process": "尝试与进程通信时超时!",
|
||||
"process_failed_to_run": "进程未能运行",
|
||||
"wsl_not_detected": "未检测到 WSL",
|
||||
"compiler_in_compilerpath_not_found": "未找到指定的编译器: {0}",
|
||||
"config_data_invalid": "配置数据无效,{0}",
|
||||
"cmake_executable_not_found": "在 {0} 找不到 CMake 可执行文件",
|
||||
@@ -167,13 +167,35 @@
|
||||
"overloads": "还有 %d 个重载",
|
||||
"specialization": "还有 1 个专业化",
|
||||
"specializations": "还有 %d 个专业化",
|
||||
"intellisense_configuration": "注意: 未完全配置 IntelliSense。使用“选择 IntelliSense 配置”命令完成配置。",
|
||||
"select_intellisense_configuration": "选择 IntelliSense 配置以查找系统标头",
|
||||
"expands_to": "扩展到:",
|
||||
"file_label": "文件:",
|
||||
"parameters_label": "参数:",
|
||||
"returns_label": "返回:",
|
||||
"attention_label": "注意:",
|
||||
"author_label": "作者:",
|
||||
"authors_label": "作者:",
|
||||
"bug_label": "Bug:",
|
||||
"copyright_label": "版权所有:",
|
||||
"deprecated_label": "已弃用:",
|
||||
"date_label": "日期:",
|
||||
"details_label": "详细信息:",
|
||||
"exceptions_label": "异常:",
|
||||
"invariant_label": "不变量:",
|
||||
"file_label": "文件:",
|
||||
"note_label": "备注:",
|
||||
"parameters_label": "参数:",
|
||||
"pre_label": "前置条件:",
|
||||
"post_label": "后置条件:",
|
||||
"remark_label": "注解:",
|
||||
"remarks_label": "注解:",
|
||||
"result_label": "结果:",
|
||||
"return_label": "返回:",
|
||||
"returns_label": "返回:",
|
||||
"since_label": "开始日期:",
|
||||
"template_parameters_label": "模板参数:",
|
||||
"test_label": "测试:",
|
||||
"todo_label": "TODO:",
|
||||
"version_label": "版本:",
|
||||
"warning_label": "警告:",
|
||||
"compiler_query_command_line": "编译器查询命令行: {0}",
|
||||
"c_compiler_from_compiler_path": "正在尝试从 \"compilerPath\" 属性中的 C 编译器获取默认值:“{0}”",
|
||||
"cpp_compiler_from_compiler_path": "正在尝试从 \"compilerPath\" 属性中的 C++ 编译器获取默认值:“{0}”",
|
||||
@@ -222,5 +244,57 @@
|
||||
"file_tag": "文件",
|
||||
"compiler_default_language_standard_version_old": "编译器返回默认语言标准版本:{0}。由于此版本是旧版本,因此将尝试使用较新版本 {1} 作为默认版本。",
|
||||
"unexpected_output_from_clang_tidy": "来自 clang-tidy 的意外输出:{0}。应为:{1}。",
|
||||
"generate_doxygen_comment": "生成 Doxygen 注释"
|
||||
"generate_doxygen_comment": "生成 Doxygen 注释",
|
||||
"offer_create_declaration": "在 {1} 中创建“{0}”声明",
|
||||
"offer_create_definition": "在 {1} 中创建“{0}”定义",
|
||||
"function_definition_not_found": "找不到“{0}”的函数定义。",
|
||||
"cm_attributes": "属性",
|
||||
"cm_bases": "基项",
|
||||
"cm_classes": "类",
|
||||
"cm_coclasses": "组件类",
|
||||
"cm_delegates": "委托",
|
||||
"cm_enums": "枚举",
|
||||
"cm_events": "活动",
|
||||
"cm_functions": "函数",
|
||||
"cm_importdirectives": "Import 指令",
|
||||
"cm_importlibstatements": "ImportLib 语句",
|
||||
"cm_importstatements": "导入语句",
|
||||
"cm_includedirectives": "Include 指令",
|
||||
"cm_interfaces": "接口",
|
||||
"cm_libraries": "库",
|
||||
"cm_macros": "宏",
|
||||
"cm_maps": "地图",
|
||||
"cm_mapentries": "映射项",
|
||||
"cm_miscellaneous": "杂项",
|
||||
"cm_namespaces": "命名空间",
|
||||
"cm_parameters": "参数",
|
||||
"cm_properties": "属性",
|
||||
"cm_structs": "结构",
|
||||
"cm_todo_insert_return": "TODO: 在此处插入 return 语句",
|
||||
"cm_typedefs": "Typedef",
|
||||
"cm_unions": "联合",
|
||||
"cm_usingaliases": "Using 别名",
|
||||
"cm_usingdirectives": "Using 指令",
|
||||
"cm_variables": "变量",
|
||||
"cm_addfunction": "自动添加函数",
|
||||
"e_com_virtual_redundant": "在与 vsCMFunctionComMethod 一起使用时,vsCMFunctionVirtual 是多余的,并且不可指定。",
|
||||
"e_static_com_method": "vsCMFunctionComMethod 不能是静态的。",
|
||||
"e_invalid_ftype": "无效的 C/C++ 文件: \"%s\"。",
|
||||
"e_fname_to_long": "文件名太长: \"%s\"。",
|
||||
"e_create_file": "无法创建文件 \"%s\"。",
|
||||
"e_access_file": "无法访问目录或文件 \"%s\" 以进行写入。",
|
||||
"e_invalid_pathname": "文件路径 \"%s\" 无效。",
|
||||
"e_cm_file_not_in_project": "找不到文件“%s”。",
|
||||
"refactor_create_declaration_definition_failed": "创建声明/定义失败: %s",
|
||||
"refactor_create_default_delete": "无法创建函数 \"%s\" 。不支持创建默认函数或已删除的函数。",
|
||||
"refactor_function_not_created": "无法创建函数'%s'。",
|
||||
"refactor_ambiguous_locations": "无法找到函数“%s”的明确位置。",
|
||||
"refactor_file_not_in_project": "找不到文件“%s”。",
|
||||
"refactor_not_class_namespace": "找不到类或命名空间'%s'。",
|
||||
"refactor_operation_unsupported": "此操作不支持“%s”。",
|
||||
"unknown_error": "未知错误。",
|
||||
"run_select_intellisense_configuration": "请运行“选择 IntelliSense 配置...”命令以定位系统标头。",
|
||||
"offer_copy_declaration": "\"{0}\" 的复制声明",
|
||||
"offer_copy_definition": "\"{0}\" 的复制定义",
|
||||
"refactor_copy_declaration_definition_failed": "将声明/定义复制到剪贴板失败: %s"
|
||||
}
|
||||
@@ -27,7 +27,7 @@
|
||||
"specify.a.compiler": "指定编译器路径或从下拉列表中选择检测到的编译器路径。",
|
||||
"no.compiler.paths.detected": "(未检测到编译器路径)",
|
||||
"compiler.args": "编译器参数",
|
||||
"compiler.arguments": "用于修改所使用的包含或定义的编译器参数,例如 {0}、{1} 等。",
|
||||
"compiler.arguments": "用于修改所使用的包含或定义的编译器参数,例如 {0}、{1} 等。采用其他空格分隔参数的参数应在数组中作为为单独的参数输入,例如,对于 {2} 使用 {3}。",
|
||||
"one.argument.per.line": "每行一个参数。",
|
||||
"intellisense.mode": "IntelliSense 模式",
|
||||
"intellisense.mode.description": "要使用的 IntelliSense 模式,该模式映射到 MSVC、gcc 或 Clang 的平台和体系结构变体。如果未设置或设置为 {0},则扩展将选择该平台的默认值。Windows 默认为 {1},Linux 默认为 {2},macOS 默认为 {3}。选择特定 IntelliSense 模式以替代 {4} 模式。仅指定 {5} 变体(例如 {6})的 IntelliSense 模式是旧模式,它们会根据主机平台自动转换为 {7} 变体。",
|
||||
@@ -47,7 +47,7 @@
|
||||
"windows.sdk.version": "Windows SDK 版本",
|
||||
"windows.sdk.version.description": "要在 Windows 上使用的 Windows SDK 包含路径版本,例如 {0}。",
|
||||
"mac.framework.path": "Mac 框架路径",
|
||||
"mac.framework.path.description": "Intellisense 引擎在 Mac 框架中搜索包含的标头时要使用的路径的列表。仅在 macOS 的配置中受支持。",
|
||||
"mac.framework.path.description": "IntelliSense 引擎在 Mac 框架中搜索包含的标头时要使用的路径的列表。仅在 macOS 的配置中受支持。",
|
||||
"one.path.per.line": "每行一个路径。",
|
||||
"forced.include": "强制包含",
|
||||
"forced.include.description": "在处理源文件中的任何其他字符之前应包含的文件的列表。按列出的顺序包含文件。",
|
||||
|
||||
+10
-10
@@ -4,15 +4,15 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"walkthrough.mac.title.run.and.debug.your.file": "在 Windows 上运行并调试 C++ 文件",
|
||||
"walkthrough.mac.run.and.debug.your.file": "要在 VS Code 中运行并调试 C++ 文件:",
|
||||
"walkthrough.mac.instructions1": "打开要运行和调试的 C++ 源文件。请确保此文件在编辑器中处于活动状态(当前已显示并选择)。",
|
||||
"walkthrough.mac.press.f5": "按 {0},或从主菜单中选择 {1}。",
|
||||
"walkthrough.mac.run": "运行",
|
||||
"walkthrough.mac.start.debugging": "开始调试",
|
||||
"walkthrough.mac.select.compiler": "选择 {0}。",
|
||||
"walkthrough.mac.choose.build.active.file": "选择 {0}。",
|
||||
"walkthrough.windows.title.run.and.debug.your.file": "在 Windows 上运行并调试 C++ 文件",
|
||||
"walkthrough.windows.run.and.debug.your.file": "要在 VS Code 中运行并调试 C++ 文件:",
|
||||
"walkthrough.windows.instructions1": "打开要运行和调试的 C++ 源文件。请确保此文件在编辑器中处于活动状态(当前已显示并选择)。",
|
||||
"walkthrough.windows.press.f5": "按 {0},或从主菜单中选择 {1}。",
|
||||
"walkthrough.windows.run": "运行",
|
||||
"walkthrough.windows.start.debugging": "开始调试",
|
||||
"walkthrough.windows.select.compiler": "选择 {0}。",
|
||||
"walkthrough.windows.choose.build.active.file": "选择 {0}。",
|
||||
"walkthrough.windows.build.and.debug.active.file": "生成和调试活动文件",
|
||||
"walkthrough.mac.after.running": "首次运行和调试 C++ 文件后,你将注意到项目 {0} 的文件夹内有两个新文件: {1} 和 {2}。",
|
||||
"walkthrough.mac.for.more.complex": "对于更复杂的生成和调试场景,可以在 {0} 和 {1} 中自定义生成任务和调试配置。例如,如果在从命令行生成时通常会将参数传递给编译器,则可以使用 {3} 属性以在 {2} 中指定这些参数。同样,可以定义要传递给程序的参数,以在 {4}中进行调试。"
|
||||
"walkthrough.windows.after.running": "首次运行和调试 C++ 文件后,你将注意到项目 {0} 的文件夹内有两个新文件: {1} 和 {2}。",
|
||||
"walkthrough.windows.for.more.complex": "对于更复杂的生成和调试场景,可以在 {0} 和 {1} 中自定义生成任务和调试配置。例如,如果在从命令行生成时通常会将参数传递给编译器,则可以使用 {3} 属性以在 {2} 中指定这些参数。同样,可以定义要传递给程序的参数,以在 {4}中进行调试。"
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"walkthrough.windows.title.open.dev.command.prompt": "使用开发人员命令提示符重新启动",
|
||||
"walkthrough.windows.background.dev.command.prompt": "正在使用带有 MSVC 编译器的 Windows 机器,因此需要从开发人员命令提示符中启动 VS Code,以便所有环境变量都能正确设置。要使用开发人员命令提示符重新启动:",
|
||||
"walkthrough.open.command.prompt": "通过在 Windows 开始菜单中键入 \"developer\" 来打开 VS 的开发人员命令提示提示。选择 VS 的开发人员命令提示提示,它将自动导航到当前打开的文件夹。",
|
||||
"walkthrough.windows.press.f5": "在命令提示符中键入 \"code\",然后按 Enter。这应该重新启动 VS Code 并将你带回此演练。"
|
||||
}
|
||||
@@ -5,6 +5,6 @@
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"walkthough.mac.install.compiler": "在 macOS 上安装 C++ 编译器",
|
||||
"walkthough.mac.text1": "如果要为 macOS 进行 C++ 开发,建议安装 Clang 编译器。只需在“终端”窗口中运行以下命令即可安装命令行开发人员工具:",
|
||||
"walkthough.mac.text1": "如果要为 macOS 进行 C++ 开发,建议安装 Clang 编译器。只需在“终端”窗口(Ctrl+Shift+ `)中运行以下命令即可安装命令行开发人员工具:",
|
||||
"walkthough.mac.text2": "然后,要验证已安装 clang,请在“终端”窗口中运行以下命令。你应该会看到一条消息,其中包含有关所使用的 Clang 版本的信息。"
|
||||
}
|
||||
+1
-1
@@ -9,7 +9,7 @@
|
||||
"walkthrough.windows.link.title1": "在 VS Code 中使用 C++ 和 适用于 Linux 的 Windows 子系统(WSL)",
|
||||
"walkthrough.windows.link.title2": "在带 MinGW 的 Windows 上安装 GCC",
|
||||
"walkthrough.windows.text2": "要安装 MSVC,请从 Visual Studio {1} 页面下载 {0}。",
|
||||
"walkthrough.windows.build.tools1": "Visual Studio 2019 生成工具",
|
||||
"walkthrough.windows.build.tools1": "Visual Studio 2022 生成工具",
|
||||
"walkthrough.windows.link.downloads": "下载",
|
||||
"walkthrough.windows.text3": "在 Visual Studio 安装程序中,检查 {0} 工作负载并选择 {1}。",
|
||||
"walkthrough.windows.build.tools2": "C++ 生成工具",
|
||||
|
||||
@@ -16,6 +16,6 @@
|
||||
"reinstall.extension.text5": "在 Windows 上:",
|
||||
"reinstall.extension.text6": "在 Linux 上:",
|
||||
"reinstall.extension.text7": "然後藉由 VS Code 中的市集 UI 重新安裝。",
|
||||
"reinstall.extension.text8": "如果 VS Code 未能部署正確版本的延伸模組,則您系統的正確 VSIX 可能是 {0},它是使用 VS Code 中市集 UI '...' 功能表下的 `從 VSIX 安裝...` 選項來進行安裝的。",
|
||||
"reinstall.extension.text8": "如果 VS Code 未能部署正確版本的延伸模組,則您系統的正確 VSIX 可能是 {0},並且是使用 VS Code 中市集 UI '...' 功能表下的 `從 VSIX 安裝...` 選項進行安裝的。",
|
||||
"download.vsix.link.title": "從 VS Code 市集網站下載"
|
||||
}
|
||||
@@ -6,12 +6,12 @@
|
||||
{
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.name": "組態識別碼。`Mac`、`Linux` 及 `Win32` 是會在這些平台上自動選取之組態的特殊識別碼,但識別碼可以是任何內容。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.compilerPath": "所用編譯器的完整路徑,例如 `/usr/bin/gcc`,讓 IntelliSense 更準確。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.compilerArgs": "用來修改所用 include 或 define 的編譯器引數,例如 `-nostdinc++`、`-m32` 等。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.compilerArgs": "用來修改所用 include 或 define 的編譯器引數,例如 `-nostdinc++`、`-m32` 等。採用其他空格分隔引數的引數應在陣列中輸入為個別的引數,例如,針對 `--sysroot <arg>` 使用 `\"--sysroot\", \"<arg>\"`。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.cStandard": "用於 IntelliSense 的 C 語言標準版本。注意: GNU 標準僅會用於查詢設定編譯器以取得 GNU 定義,而 IntelliSense 將會模擬相同的 C 標準版本。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.cppStandard": "用於 IntelliSense 的 C++ 語言標準版本。注意: GNU 標準僅會用於查詢設定編譯器以取得 GNU 定義,而 IntelliSense 將會模擬相同的 C++ 標準版本。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.compileCommands": "工作區 `compile_commands.json` 檔案的完整路徑。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.includePath": "IntelliSense 引擎在搜尋包含的標頭時使用的路徑清單。在這些路徑上的搜尋不會遞迴。請指定 `**` 以表示遞迴搜尋。例如 `${workspaceFolder}/**` 會搜尋所有子目錄,而 `${workspaceFolder}` 不會。此路徑通常不應包含系統 include; 請改為設定 `C_Cpp.default.compilerPath`。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.macFrameworkPath": "供 Intellisense 引擎在 Mac 架構中搜尋包含的標頭時使用的路徑清單。僅支援用於 Mac 組態。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.macFrameworkPath": "供 IntelliSense 引擎在 Mac 架構中搜尋包含的標頭時使用的路徑清單。僅支援 Mac 設定。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.windowsSdkVersion": "要在 Windows 上使用的 Windows SDK 包含路徑版本,例如 `10.0.17134.0`。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.dotConfig": "Kconfig 系統所建立之 .config 檔案的路徑。Kconfig 系統會產生具有建置專案之所有定義的檔案。使用 Kconfig 系統的專案範例為 Linux 核心與 NuttX RTOS。",
|
||||
"c_cpp_properties.schema.json.definitions.configurations.items.properties.defines": "剖析檔案時,IntelliSense 引擎要使用的前置處理器定義清單。您可使用 `=` 來設定值,例如 `VERSION=1`。",
|
||||
|
||||
@@ -4,11 +4,21 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"c_cpp.subheaders.intelliSense.title": "IntelliSense",
|
||||
"c_cpp.subheaders.formatting.title": "格式化",
|
||||
"c_cpp.subheaders.codeDocumentation.title": "程式碼文件",
|
||||
"c_cpp.subheaders.codeAnalysis.title": "Code Analysis",
|
||||
"c_cpp.subheaders.debugging.title": "偵錯",
|
||||
"c_cpp.subheaders.resourceManagement.title": "資源管理",
|
||||
"c_cpp.subheaders.miscellaneous.title": "雜項",
|
||||
"c_cpp.capabilities.untrustedWorkspaces.description": "多個設定可能會導致執行工作區的處理序本機,例如 C_Cpp.clang_format_path、C_Cpp.codeAnalysis.clangTidy.path、C_Cpp.addNodeAddonIncludePaths、C_Cpp.default.compilerPath、C_Cpp.default.configurationProvider、C_Cpp.default.compileCommands,以及 c_cpp_properties.json 中的對等屬性。",
|
||||
"c_cpp.command.configurationSelect.title": "選取組態...",
|
||||
"c_cpp.command.configurationProviderSelect.title": "變更組態提供者...",
|
||||
"c_cpp.command.configurationEditJSON.title": "編輯組態 (JSON)",
|
||||
"c_cpp.command.configurationEditUI.title": "編輯組態 (UI)",
|
||||
"c_cpp.command.selectDefaultCompiler.title": "選取預設編譯器...",
|
||||
"c_cpp.command.selectIntelliSenseConfiguration.title": "選取 IntelliSense 設定...",
|
||||
"c_cpp.command.rescanCompilers.title": "掃描編譯器",
|
||||
"c_cpp.command.switchHeaderSource.title": "切換標頭/來源",
|
||||
"c_cpp.command.enableErrorSquiggles.title": "啟用錯誤波浪線",
|
||||
"c_cpp.command.disableErrorSquiggles.title": "停用錯誤波浪線",
|
||||
@@ -26,6 +36,7 @@
|
||||
"c_cpp.command.generateEditorConfig.title": "從 VC 格式設定產生 EditorConfig 內容",
|
||||
"c_cpp.command.GoToNextDirectiveInGroup.title": "前往條件式群組中的下一個前置處理器指示詞",
|
||||
"c_cpp.command.GoToPrevDirectiveInGroup.title": "前往條件式群組中的上一個前置處理器指示詞",
|
||||
"c_cpp.command.CreateDeclarationOrDefinition.title": "建立宣告/定義",
|
||||
"c_cpp.command.RunCodeAnalysisOnActiveFile.title": "在使用中檔案上執行程式碼分析",
|
||||
"c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "在開啟檔案上執行程式碼分析",
|
||||
"c_cpp.command.RunCodeAnalysisOnAllFiles.title": "在所有檔案上執行程式碼分析",
|
||||
@@ -34,6 +45,14 @@
|
||||
"c_cpp.command.BuildAndRunFile.title": "執行 C/C++ 檔案",
|
||||
"c_cpp.command.AddDebugConfiguration.title": "新增偵錯設定",
|
||||
"c_cpp.command.GenerateDoxygenComment.title": "產生 Doxygen 註解",
|
||||
"c_cpp.command.addSshTarget.title": "新增 SSH 目標",
|
||||
"c_cpp.command.removeSshTarget.title": "移除 SSH 目標",
|
||||
"c_cpp.command.setActiveSshTarget.title": "將此 SSH 目標設定為使用中目標",
|
||||
"c_cpp.command.selectActiveSshTarget.title": "選取使用中的 SSH 目標",
|
||||
"c_cpp.command.selectSshTarget.title": "選取 SSH 目標",
|
||||
"c_cpp.command.activeSshTarget.title": "取得使用中的 SSH 目標",
|
||||
"c_cpp.command.refreshCppSshTargetsView.title": "重新整理",
|
||||
"c_cpp.command.sshTerminal.title": "連線至這個在新終端機中的 SSH 目標",
|
||||
"c_cpp.configuration.maxConcurrentThreads.markdownDescription": "用於語言服務處理的並行執行緒數目上限。該值是提示,且可能不會一律使用。預設的 `null` (空白) 會使用可用的邏輯處理器數目。",
|
||||
"c_cpp.configuration.maxCachedProcesses.markdownDescription": "用於語言服務處理的快取處理序數目上限。預設的 `null` (空白) 使用的邏輯處理器數目是可用邏輯處理器的兩倍。",
|
||||
"c_cpp.configuration.maxMemory.markdownDescription": "記憶體上限 (MB) 可供語言服務處理。超過此記憶體使用量之後,同時快取及執行的處理序將會減少。預設的 `null` (空白) 會使用系統的可用記憶體。",
|
||||
@@ -56,8 +75,8 @@
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.codeAction.showClear.AllOnly.description": "如果只有一種類型,則只顯示 '清除所有' 程式碼動作 (如果只有一種類型,則顯示 '清除所有 <type>,或如果只有一個問題,則顯示 '清除此')。",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.codeAction.showClear.AllAndAllType.description": "顯示 '清除所有' 程式碼動作 (如果有多種問題類型) 和 '清除所有 <type>' 程式碼動作 (如果 <type> 只有一個問題,則顯示 '清除此')",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.codeAction.showClear.AllAndAllTypeAndThis.description": "顯示 '清除所有' (如果有多個問題類型)、'清除所有 <type>' (如果 <type> 有多個問題) 和 '清除此' 程式碼動作",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.codeAction.formatFixes.markdownDescription": "如果為 `true`,格式就會在由 '修正' 程式碼動作變更的行上執行。",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "若為 `true`,則會啟用使用 `clang-tidy` 的程式碼分析,並在 `#C_Cpp.codeAnalysis.runAutomatically#` 為 `true` 時自動執行 (預設)。",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.codeAction.formatFixes.markdownDescription": "如果為 `true`,格式就會在由「修正」程式碼動作變更的行上執行。",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "若為 `true`,會啟用使用 `clang-tidy` 的程式碼分析,並會在 `#C_Cpp.codeAnalysis.runAutomatically#` 為 `true` (預設) 時,在開啟或儲存檔案後執行。",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.path.markdownDescription": "`clang-tidy` 可執行檔的完整路徑。若未指定可執行檔,且可在環境路徑中使用 `clang-tidy`,則會加以使用。若在環境路徑中找不到可執行檔,則會使用與延伸模組搭配的 `clang-tidy`。",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.config.markdownDescription": "以 YAML/JSON 格式指定 `clang-tidy` 組態: `{Checks: '-*,clang-analyzer-*', CheckOptions: [{索引鍵: x, 值: y}]}`。當值為空白時,`clang-tidy` 將會嘗試為其父目錄中的每個來源檔案尋找名為 `.clang-tidy` 的檔案。",
|
||||
"c_cpp.configuration.codeAnalysis.clangTidy.fallbackConfig.markdownDescription": "當 `#C_Cpp.codeAnalysis.clangTidy.config#` 未設定且找不到 `.clang-tidy` 檔案時,指定 YAML/JSON 格式的 `clang-tidy` 組態用作遞補: `{Checks: '-*,clang-analyzer-*', CheckOptions: [{索引鍵: x, 值: y}]}`。",
|
||||
@@ -157,15 +176,15 @@
|
||||
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.allOneLineScopes.markdownDescription": "在一行中所輸入由左大括號和右大括號括住的任何程式碼,都保留在同一行,而不考慮任何 `C_Cpp.vcFormat.newLine.*` 設定。",
|
||||
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.never.markdownDescription": "程式碼區塊一律根據 `C_Cpp.vcFormat.newLine.*` 設定的值來格式化。",
|
||||
"c_cpp.configuration.clang_format_path.markdownDescription": "此為 `clang-format` 可執行檔的完整路徑。如果未指定,且在環境路徑中可用 `clang-format`,即會使用該格式。如果在環境路徑中找不到,則會使用延伸模組所配備的 `clang-format`。",
|
||||
"c_cpp.configuration.clang_format_style.markdownDescription": "編碼樣式,目前支援: `Visual Studio`、`LLVM`、`Google`、`Chromium`、`Mozilla`、`WebKit`、`Microsoft`、`GNU`。使用 `file` 可從目前目錄或父目錄的 .clang-format 檔案載入樣式。使用 `{索引鍵: 值, ...}` 可設定特定參數。例如,`Visual Studio` 樣式類似於: `{ BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4, NamespaceIndentation: All, FixNamespaceComments: false }`。",
|
||||
"c_cpp.configuration.clang_format_fallbackStyle.markdownDescription": "當已使用樣式 `file` 叫用 `clang-format`,但找不到 `.clang-format` 檔案時,用作後援的預先定義樣式名稱。可能的值包括 `Visual Studio`、`LLVM`、`Google`、`Chromium`、`Mozilla`、`WebKit`、`Microsoft`、`GNU`、`none` 或使用 {索引鍵: 值, ...} 來設定特定參數。例如,`Visual Studio` 樣式類似於: `{ BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4, NamespaceIndentation: All, FixNamespaceComments: false }`。",
|
||||
"c_cpp.configuration.clang_format_style.markdownDescription": "編碼樣式,目前支援: `Visual Studio`、`LLVM`、`Google`、`Chromium`、`Mozilla`、`WebKit`、`Microsoft`、`GNU`。使用 `file` 可從目前目錄或父目錄的 `.clang-format` 檔案載入樣式,或使用 `file:<路徑>/.clang-format` 參照特定路徑。使用 `{索引鍵: 值, ...}` 可設定特定參數。例如,`Visual Studio` 樣式類似於: `{ BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4, NamespaceIndentation: All, FixNamespaceComments: false }`。",
|
||||
"c_cpp.configuration.clang_format_fallbackStyle.markdownDescription": "當已使用樣式 `file` 叫用 `clang-format`,但找不到 `.clang-format` 檔案時,用作後援的預先定義樣式名稱。可能的值包括 `Visual Studio`、`LLVM`、`Google`、`Chromium`、`Mozilla`、`WebKit`、`Microsoft`、`GNU`、`none` 或使用 `{索引鍵: 值, ...}` 來設定特定參數。例如,`Visual Studio` 樣式類似於: `{ BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4, NamespaceIndentation: All, FixNamespaceComments: false }`。",
|
||||
"c_cpp.configuration.clang_format_sortIncludes.markdownDescription": "若設定,會覆寫 `SortIncludes` 參數所決定的包含排序行為。",
|
||||
"c_cpp.configuration.intelliSenseEngine.description": "控制 IntelliSense 提供者。",
|
||||
"c_cpp.configuration.intelliSenseEngine.default.description": "透過單獨的 IntelliSense 處理序提供內容感知結果。",
|
||||
"c_cpp.configuration.intelliSenseEngine.tagParser.description": "提供不屬於內容意識的 `模糊` 結果。",
|
||||
"c_cpp.configuration.intelliSenseEngine.disabled.description": "關閉 C/C++ 語言服務功能。",
|
||||
"c_cpp.configuration.intelliSenseEngineFallback.markdownDescription": "控制 IntelliSense 引擎是否會自動切換到包含 `#include` 錯誤之編譯單位的標籤剖析器。",
|
||||
"c_cpp.configuration.autocomplete.markdownDescription": "控制自動完成提供者。若設為 `Disabled` 且您想要以文字方式完成,您也必須設定 `\"[cpp]\": {\"editor.wordBasedSuggestions\": true}` (與 `c` 及 `cuda-cpp` 語言類似)。",
|
||||
"c_cpp.configuration.autocomplete.markdownDescription": "控制自動完成提供者。若設為 `disabled` 且您想要以文字方式完成,您也必須設定 `\"[cpp]\": {\"editor.wordBasedSuggestions\": true}` (與 `c` 及 `cuda-cpp` 語言類似)。",
|
||||
"c_cpp.configuration.autocomplete.default.description": "使用作用中 IntelliSense 引擎。",
|
||||
"c_cpp.configuration.autocomplete.disabled.description": "使用 Visual Studio Code 所提供的文字型完成。",
|
||||
"c_cpp.configuration.errorSquiggles.description": "該設定會控制是否將 IntelliSense 引擎偵測到的可疑編譯錯誤回報給編輯器。其也會在找不到內容時,控制是否回報程式碼分析警告。標籤剖析器引擎已忽略此設定。",
|
||||
@@ -191,6 +210,7 @@
|
||||
"c_cpp.configuration.simplifyStructuredComments.markdownDescription": "若為 `true`,暫留與自動完成的工具提示只會顯示特定結構化註解標籤,否則將會顯示所有註解。",
|
||||
"c_cpp.configuration.doxygen.generateOnType.description": "控制是否在輸入選擇的註解樣式後自動插入 Doxygen 註解。",
|
||||
"c_cpp.configuration.doxygen.generatedStyle.description": "作為 Doxygen 註解起始行的字元字串。",
|
||||
"c_cpp.configuration.doxygen.sectionTags.description": "選取啟用 [簡化結構化註解] 設定時,要在於工具提示區域暫留時顯示的 [Doxygen] 區段標籤。 ",
|
||||
"c_cpp.configuration.commentContinuationPatterns.items.anyof.string.markdownDescription": "開始多行或單行註解區塊的模式。對於多行註解區塊,接續模式預設為 ` * `,或此字串表示單行註解區塊。",
|
||||
"c_cpp.configuration.commentContinuationPatterns.items.anyof.object.begin.description": "開始多行或單行註解區塊的模式。",
|
||||
"c_cpp.configuration.commentContinuationPatterns.items.anyof.object.continue.description": "在多行或單行註解區塊中按下 ENTER 時,將在下一行插入的文字。",
|
||||
@@ -224,8 +244,10 @@
|
||||
"c_cpp.configuration.default.dotConfig.markdownDescription": "當 `dotConfig` 未指定時,要在設定中使用的值,或 `dotConfig` 中有 `${default}` 時要插入的值。",
|
||||
"c_cpp.configuration.experimentalFeatures.description": "控制「實驗性」功能是否可用。",
|
||||
"c_cpp.configuration.suggestSnippets.markdownDescription": "若為 `true`,則由語言伺服器提供程式碼片段。",
|
||||
"c_cpp.configuration.enhancedColorization.markdownDescription": "若啟用,將會依據 IntelliSense 顯示彩色的程式碼。僅當 `#C_Cpp.intelliSenseEngine#` 設為 `Default` 時,才適用此設定。",
|
||||
"c_cpp.configuration.caseSensitiveFileSupport.markdownDescription": "如果設定為 `default`,則工作區的檔案系統會在 Windows 上假設為不區分大小寫,而在 macOS 或 Linux 上區分大小寫。如果設為 `enabled`,則工作區的檔案系統在 Windows 上會假設為區分大小寫。",
|
||||
"c_cpp.configuration.enhancedColorization.markdownDescription": "若啟用,將會依據 IntelliSense 顯示彩色的程式碼。僅當 `#C_Cpp.intelliSenseEngine#` 設為 `default` 時,才適用此設定。",
|
||||
"c_cpp.configuration.codeFolding.description": "若啟用,則由語言伺服器提供程式碼摺疊功能範圍。",
|
||||
"c_cpp.configuration.hover.description": "如果停用,語言伺服器將不再提供暫留詳細資料。",
|
||||
"c_cpp.configuration.vcpkg.enabled.markdownDescription": "啟用 [vcpkg 相依性管理員](https://aka.ms/vcpkg/) 的整合服務。",
|
||||
"c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "當 `nan` 和 `node-addon-api` 為相依性時,從中新增 include 路徑。",
|
||||
"c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "若為 `true`,則「重新命名符號」需要有效的 C/C++ 識別碼。",
|
||||
@@ -236,7 +258,9 @@
|
||||
"c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "若為 `true`,偵錯工具殼層命令替代將會使用已淘汰的反引號 ``(`)``。",
|
||||
"c_cpp.configuration.legacyCompilerArgsBehavior.markdownDescription": "啟用 v1.10.0 之前的行為,以了解如何在編譯器自參數設定中處理殼層逸出。自 v1.10.0 開始,引數陣列中不再預期或預設支援殼層逸出。",
|
||||
"c_cpp.configuration.legacyCompilerArgsBehavior.deprecationMessage": "此設定是暫時性的,可支援轉換至 v1.10.0 中的更正行為。",
|
||||
"c_cpp.configuration.sshTargetsView.description": "控制是否顯示 SSH 目標檢視。根據預設,在叫用 SSH 命令時會啟用該檢視。",
|
||||
"c_cpp.contributes.views.cppReferencesView.title": "C/C++: 其他參考結果",
|
||||
"c_cpp.contributes.views.sshTargetsView.title": "Cpptools: SSH 目標",
|
||||
"c_cpp.contributes.viewsWelcome.contents": "如需深入了解 launch.json,請參閱 [設定 C/C++ 偵錯](https://code.visualstudio.com/docs/cpp/launch-json-reference)。",
|
||||
"c_cpp.configuration.debugShortcut.description": "在 C++ 檔案的編輯器標題列中顯示 [執行及偵錯] 播放按鈕和 [新增偵錯設定] 齒輪。",
|
||||
"c_cpp.debuggers.pipeTransport.description": "出現時,會指示偵錯工具使用另一個可執行檔來連線至遠端電腦,該管道會在 VS Code 與 MI 啟用偵錯工具後端可執行檔之間傳送標準輸入/輸出 (例如 gdb)。",
|
||||
@@ -326,10 +350,12 @@
|
||||
"c_cpp.debuggers.host.localForward.localSocket.description": "本機通訊端",
|
||||
"c_cpp.debuggers.host.localForward.remoteSocket.description": "遠端通訊端",
|
||||
"c_cpp.debuggers.deploySteps.description": "部署應用程式所需的步驟。順序很重要。",
|
||||
"c_cpp.debuggers.deploySteps.scp.description": "使用 SCP 複製檔案。",
|
||||
"c_cpp.debuggers.deploySteps.scp.files.description": "要透過 SCP 複製的檔案。支援路徑模式。",
|
||||
"c_cpp.debuggers.deploySteps.scp.targetDir.description": "目標目錄。",
|
||||
"c_cpp.debuggers.deploySteps.scp.scpPath.description": "SCP 的選用完整路徑。如果未指定,則會假設 SCP 在 PATH 上",
|
||||
"c_cpp.debuggers.deploySteps.copyFile.description": "使用 SCP 或 rsync 複製檔案。",
|
||||
"c_cpp.debuggers.deploySteps.copyFile.files.description": "要複製的檔案。支援路徑模式。",
|
||||
"c_cpp.debuggers.deploySteps.copyFile.targetDir.description": "目標目錄。",
|
||||
"c_cpp.debuggers.deploySteps.copyFile.recursive.description": "若為 True,會以遞迴方式複製資料夾。",
|
||||
"c_cpp.debuggers.deploySteps.copyFile.scpPath.description": "SCP 的選用完整路徑。如果未指定,則會假設 SCP 在 PATH 上",
|
||||
"c_cpp.debuggers.deploySteps.copyFile.rsyncPath.description": "rsync 的選用完整路徑。如果未指定,則會假設 rsync 在 PATH 上",
|
||||
"c_cpp.debuggers.deploySteps.debug": "如果為 True,則在啟動而不偵錯的情況下略過。如果為 False,則在啟動而偵錯的情況下略過。如果未定義,則永不略過。",
|
||||
"c_cpp.debuggers.deploySteps.ssh.description": "SSH 命令步驟。",
|
||||
"c_cpp.debuggers.deploySteps.ssh.command.description": "要透過 SSH 執行的命令。SSH 命令中 '-c' 之後的命令。",
|
||||
@@ -350,6 +376,7 @@
|
||||
"c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.editorPath.description": "編輯器要使用的來源樹狀路徑。",
|
||||
"c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "若此項目只用於堆疊框架位置對應,則為 False; 若在指定中斷點位置時也應該使用此項目,則為 True。",
|
||||
"c_cpp.debuggers.symbolOptions.description": "控制如何找到並載入符號 (.pdb 檔案) 的選項。",
|
||||
"c_cpp.debuggers.unknownBreakpointHandling.description": "控制叫用時如何處理在外部設定的中斷點 (通常是透過原始 GDB 命令)。\n允許的值為 \"throw\",其作用就像應用程式擲出例外,以及 \"stop\",其只會暫停偵錯工作階段。預設值為 \"throw\"。",
|
||||
"c_cpp.debuggers.VSSymbolOptions.description": "提供將符號尋找及載入至偵錯介面卡的設定。",
|
||||
"c_cpp.debuggers.VSSymbolOptions.searchPaths.description": "符號陣列伺服器 URL (範例: http://MyExampleSymbolServer) 或目錄 (範例: /build/symbols) 搜尋 .pdb 檔案。除了預設位置 (位於模組旁和 pdb 原先放置的路徑),也會搜尋這些目錄。",
|
||||
"c_cpp.debuggers.VSSymbolOptions.searchMicrosoftSymbolServer.description": "如果是 'true',則會將 Microsoft 符號伺服器 (https://msdl.microsoft.com/download/symbols) 新增至符號搜尋路徑。若未指定,這個選項會預設為 'false'。",
|
||||
@@ -375,5 +402,32 @@
|
||||
"c_cpp.semanticTokenTypes.numberLiteral.description": "C++ 使用者定義文字編號的樣式。",
|
||||
"c_cpp.semanticTokenTypes.stringLiteral.description": "C++ 使用者定義常值字串的樣式。",
|
||||
"c_cpp.semanticTokenModifiers.global.description": "要用於全域符號的樣式。",
|
||||
"c_cpp.semanticTokenModifiers.local.description": "要用於本機符號的樣式。"
|
||||
"c_cpp.semanticTokenModifiers.local.description": "要用於本機符號的樣式。",
|
||||
"c_cpp.debuggers.logging.natvisDiagnostics.description": "選擇性旗標,用以判斷是否應將診斷 natvis 訊息記錄到偵錯主控台。預設為 None。",
|
||||
"c_cpp.debuggers.logging.category.verbose.description": "開發期間用於互動式調查的記錄。這些記錄應該主要包含有助於偵錯的資訊,而且沒有長期價值。",
|
||||
"c_cpp.debuggers.logging.category.warning.description": "在應用程式流程中醒目提示或非預期事件,但不會導致應用程式停止執行停止的記錄。",
|
||||
"c_cpp.debuggers.logging.category.error.description": "當目前的執行流程因失敗而停止時,會醒目提示記錄。這些應該表示目前活動失敗,而不是整個應用程式的失敗。",
|
||||
"c_cpp.debuggers.logging.category.none.description": "非用於寫入記錄訊息。指定記錄類別不應寫入任何訊息。",
|
||||
"c_cpp.walkthrough.title": "開始使用 C++ 開發",
|
||||
"c_cpp.walkthrough.description": "深入了解 VS Code 豐富的 C++ 開發體驗。",
|
||||
"c_cpp.walkthrough.set.up.title": "設定您的 C++ 環境",
|
||||
"c_cpp.walkthrough.activating.description": "啟用 C++ 延伸模組,以判斷是否已設定您的 C++ 環境。\n正在啟用延伸模組...",
|
||||
"c_cpp.walkthrough.no.compilers.description": "我們在您的電腦上找不到 C++ 編譯器,這是使用 C++ 延伸模組所需項目。請遵循右側的指示來安裝,然後按一下下方的 [尋找我的新編譯器]。\n[尋找我的新編譯器](command:C_Cpp.RescanCompilers?%7B%22sender%22%3A%22walkthrough%22%7D)",
|
||||
"c_cpp.walkthrough.compilers.found.description": "C++ 延伸模組可與 C++ 編譯器搭配運作。按一下下方的按鈕,從電腦上已存在的編譯器選取一個。\n[選取我的預設編譯器](command:C_Cpp.SelectDefaultCompiler?%7B%22sender%22%3A%22walkthrough%22%7D)",
|
||||
"c_cpp.walkthrough.compilers.found.altText": "影像顯示選取預設編譯器快速選取,以及在使用者電腦上找到的編譯器清單 (已選取其中一個)。",
|
||||
"c_cpp.walkthrough.create.cpp.file.title": "建立 C++ 檔案",
|
||||
"c_cpp.walkthrough.create.cpp.file.description": "[開啟](command:toSide:workbench.action.files.openFile) 或 [建立](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D) C++ 檔案。務必使用 \".cpp\" 副檔名來儲存它,例如 \"helloworld.cpp\"。\n[建立 C++ 檔案](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)",
|
||||
"c_cpp.walkthrough.create.cpp.file.altText": "使用 C++ 專案開啟 C++ 檔案或資料夾。",
|
||||
"c_cpp.walkthrough.command.prompt.title": "從開發人員命令提示字元啟動",
|
||||
"c_cpp.walkthrough.command.prompt.description": "使用 Microsoft Visual Studio C++ 編譯器時,C++ 延伸模組會要求您從開發人員命令提示字元啟動 VS Code。請遵循右側的指示來重新啟動。\n[重新載入視窗](command:workbench.action.reloadWindow)",
|
||||
"c_cpp.walkthrough.run.debug.title": "執行和偵錯您的 C++ 檔案",
|
||||
"c_cpp.walkthrough.run.debug.mac.description": "開啟您的 C++ 檔案,然後按一下編輯器右上角的執行按鈕,或在開啟檔案上時按 F5。選取 [clang++ - 建置及偵錯使用中的檔案] 以使用偵錯工具執行。",
|
||||
"c_cpp.walkthrough.run.debug.linux.description": "開啟您的 C++ 檔案,然後按一下編輯器右上角的執行按鈕,或在開啟檔案上時按 F5。選取 [g++ - 建置及偵錯使用中的檔案] 以使用偵錯工具執行。",
|
||||
"c_cpp.walkthrough.run.debug.windows.description": "開啟您的 C++ 檔案,然後按一下編輯器右上角的播放按鈕,或在開啟檔案上時按 F5。選取 [cl.exe - 建置及偵錯使用中的檔案] 以使用偵錯工具執行。",
|
||||
"c_cpp.walkthrough.run.debug.windows.altText": "影像顯示 C++ 檔案中的中斷點、F5 按鈕,以及右上方的執行符號",
|
||||
"c_cpp.walkthrough.customize.debugging.title": "自訂偵錯",
|
||||
"c_cpp.walkthrough.customize.debugging.mac.description": "您可以選取播放按鈕右側的 [新增偵錯設定],以自訂您的偵錯設定 (例如,在執行階段將引數傳遞至程式)。自訂偵錯設定會儲存於專案的 launch.json 檔案中。\n[深入了解](https://code.visualstudio.com/docs/cpp/config-linux#_debug-helloworldcpp)",
|
||||
"c_cpp.walkthrough.customize.debugging.linux.description": "您可以選取播放按鈕右側的 [新增偵錯設定],以自訂您的偵錯設定 (例如,在執行階段將引數傳遞至程式)。自訂偵錯設定會儲存於專案的 launch.json 檔案中。\n[深入了解](https://code.visualstudio.com/docs/cpp/config-msvc#_debug-helloworldcpp)",
|
||||
"c_cpp.walkthrough.customize.debugging.windows.description": "您可以選取播放按鈕右邊的 [新增偵錯設定],以自訂您的偵錯設定 (例如,在執行階段將引數傳遞至程式)。自訂偵錯設定會儲存於專案的 launch.json 檔案中。\n[深入了解](https://code.visualstudio.com/docs/cpp/config-clang-mac#_debug-helloworldcpp)",
|
||||
"c_cpp.walkthrough.customize.debugging.altText": "影像顯示下拉式清單中 [新增偵錯設定]"
|
||||
}
|
||||
@@ -13,7 +13,9 @@
|
||||
"debugger.launchConfig": "啟動設定:",
|
||||
"vs.code.1.69+.required": "'deploySteps' 需要 VS Code 1.69+。",
|
||||
"running.deploy.steps": "正在執行部署步驟...",
|
||||
"compiler.path.not.exists": "找不到 {0}。已略過 {1} 工作。",
|
||||
"pre.Launch.Task": "preLaunchTask: {0}",
|
||||
"debugger.path.not.exists": "找不到 {0} 偵錯工具。已略過 {1} 的偵錯設定。",
|
||||
"build.and.debug.active.file": "建置及偵錯使用中的檔案",
|
||||
"cl.exe.not.available": "只有從 VS 的開發人員命令提示字元執行 VS Code 時,才可使用 {0} 組建和偵錯。",
|
||||
"lldb.find.failed": "缺少 lldb-mi 可執行檔的相依性 '{0}'。",
|
||||
@@ -32,8 +34,8 @@
|
||||
"no.compiler.found": "找不到任何編譯器",
|
||||
"select.debug.configuration": "選取偵錯設定",
|
||||
"command.args.must.be.array": "命令部署步驟中的 \"args\" 必須是陣列。",
|
||||
"missing.properties.scp": "scp 步驟中需要 \"host\"、\"files\" 和 \"targetDir\"。",
|
||||
"incorrect.files.type.scp": "\"files\" 必須是 scp 步驟中的字串或字串陣列。",
|
||||
"missing.properties.copyFile": "{0} 步驟中需要 \"host\"、\"files\" 和 \"targetDir\"。",
|
||||
"incorrect.files.type.copyFile": "\"files\" 必須是 {0} 步驟中的字串或字串陣列。",
|
||||
"missing.properties.ssh": "ssh 步驟中需要 \"host\" 和 \"command\"。",
|
||||
"missing.properties.shell": "殼層步驟需要 \"command\"。",
|
||||
"deploy.step.type.not.supported": "不支援部署步驟類型 {0}。",
|
||||
|
||||
@@ -4,5 +4,15 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"add.debug.configuration.not.available.for.single.file": "新增偵錯設定無法用於單一檔案。"
|
||||
"add.debug.configuration.not.available.for.single.file": "新增偵錯設定無法用於單一檔案。",
|
||||
"cannot.modify.config.file": "無法修改 SSH 設定檔,因為剖析失敗「{0}」。",
|
||||
"no.valid.ssh.config.file": "找不到有效的 SSH 設定檔。",
|
||||
"enter.ssh.target.name": "輸入 SSH 目標名稱",
|
||||
"ssh.target.name.place.holder": "範例: `mySSHTarget`",
|
||||
"enter.ssh.connection.command": "輸入 SSH 連線命令",
|
||||
"ssh.connection.command.place.holder": "範例: `ssh [email protected] -A`",
|
||||
"select.ssh.config.file": "選取 SSH 設定檔",
|
||||
"yes": "是",
|
||||
"no": "否",
|
||||
"ssh.target.delete.confirmation": "確定要永久刪除 \"{0}\" 嗎?"
|
||||
}
|
||||
@@ -4,5 +4,9 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"os.not.supported": "不支援作業系統 \"{0}\"。"
|
||||
"os.not.supported": "不支援作業系統 \"{0}\"。",
|
||||
"timeout.processList.spawn": "\"{0}\" 在 {1} 秒後逾時。",
|
||||
"cancel.processList.spawn": "\"{0}\" 已取消。",
|
||||
"error.processList.spawn": "\"{0}\" 已結束,出現代碼: {1}。",
|
||||
"failed.processList.spawn": "無法繁衍 \"{0}\"。"
|
||||
}
|
||||
@@ -6,13 +6,26 @@
|
||||
{
|
||||
"unable.to.start": "無法啟動 C/C + + 語言伺服器。將停用 IntelliSense 功能。錯誤: {0}",
|
||||
"check.permissions": "EPERM: 檢查 '{0}' 的權限",
|
||||
"select.compiler": "選取要設定 IntelliSense 的編譯器",
|
||||
"configure.intelliSense.forFolder": "想如何為 '{0}' 資料夾設定 IntelliSense。",
|
||||
"configure.intelliSense.thisFolder": "想如何為此資料夾設定 IntelliSense。",
|
||||
"found.string": "在 {0} 找到",
|
||||
"use.compiler": "使用 {0}",
|
||||
"configuration.providers": "設定提供者",
|
||||
"compilers": "編譯器",
|
||||
"setCompiler.message": "您尚未設定 IntelliSense。除非您自行加以設定,否則 IntelliSense 可能無法運作。",
|
||||
"selectIntelliSenseConfiguration.string": "選取 IntelliSense 設定...",
|
||||
"use.provider": "使用 {0}",
|
||||
"use.compileCommands": "使用 {0}",
|
||||
"selectAnotherCompiler.string": "在我的機器上選取另一個編譯器...",
|
||||
"installCompiler.string": "協助我安裝編譯器",
|
||||
"noConfig.string": "不要設定編譯器 (不建議)",
|
||||
"selectCompiler.string": "選取編譯器",
|
||||
"confirmCompiler.string": "是",
|
||||
"selectCompiler.message": "找到編譯器 {0}。您要使用此編譯器來設定 IntelliSense 嗎?",
|
||||
"server.crashed.restart": "語言伺服器當機。正在重新啟動...",
|
||||
"server.crashed2": "語言伺服器在過去 3 分鐘內發生 5 次故障。將不會重新啟動。",
|
||||
"loggingLevel.changed": "{0} 已變更為: {1}",
|
||||
"provider.configure.folder": "{0} 想要為 '{1}' 資料夾設定 IntelliSense。",
|
||||
"provider.configure.this.folder": "{0} 想要為此資料夾設定 IntelliSense。",
|
||||
"allow.button": "允許",
|
||||
"dont.allow.button": "不允許",
|
||||
"ask.me.later.button": "稍後詢問我",
|
||||
"dismiss.button": "關閉",
|
||||
"diable.warnings.button": "停用警告",
|
||||
"unable.to.provide.configuration": "{0} 無法提供 '{1}' 的 IntelliSense 組態資訊。將改用來自 '{2}' 組態的設定。",
|
||||
@@ -25,6 +38,11 @@
|
||||
"dont.show.again": "不要再顯示",
|
||||
"update.your.intellisense.settings": "更新您的 IntelliSense 設定或使用 Vcpkg 安裝程式庫,以協助找出缺少的標頭。",
|
||||
"configure.your.intellisense.settings": "設定您的 IntelliSense 設定,以協助找出缺少的標頭。",
|
||||
"provider.configure.folder": "{0} 想要為 '{1}' 資料夾設定 IntelliSense。",
|
||||
"provider.configure.this.folder": "{0} 想要為此資料夾設定 IntelliSense。",
|
||||
"allow.button": "允許",
|
||||
"dont.allow.button": "不允許",
|
||||
"ask.me.later.button": "稍後詢問我",
|
||||
"a.compile.commands.file": "compile_commands.json 檔案",
|
||||
"auto-configure.intellisense.folder": "是否要使用 {0} 自動設定 '{1}' 資料夾的 IntelliSense?",
|
||||
"auto-configure.intellisense.this.folder": "是否要使用 {0} 自動設定此資料夾的 IntelliSense?",
|
||||
@@ -32,6 +50,5 @@
|
||||
"no.button": "否",
|
||||
"configurations.received": "收到的自訂組態:",
|
||||
"browse.configuration.received": "收到的自訂瀏覽組態: {0}",
|
||||
"no.compilers.found": "在您的系統 C++ 上找不到編譯器。針對您的平台,建議您使用編輯器中的指示來安裝 {0}。",
|
||||
"compilers.found": "我們在您的系統上找到下列 C++ 編譯器。在專案的 IntelliSense 設定中選擇編譯器。"
|
||||
"fallback.clipboard": "已複製宣告/定義。"
|
||||
}
|
||||
@@ -6,10 +6,10 @@
|
||||
{
|
||||
"learn.how.to.install.a.library": "了解如何使用 vcpkg 安裝此標頭的程式庫",
|
||||
"copy.vcpkg.command": "將用於安裝 '{0}' 的 vcpkg 命令複製到剪貼簿",
|
||||
"on.disabled.command": "當 `C_Cpp.intelliSenseEngine` 設為 `Disabled` 時,無法執行 IntelliSense 的相關命令。",
|
||||
"on.disabled.command": "當 `C_Cpp.intelliSenseEngine` 設為 `disabled` 時,無法執行IntelliSense 的相關命令。",
|
||||
"client.not.found": "找不到用戶端",
|
||||
"configuration.select.first": "先開啟資料夾以選取組態",
|
||||
"configuration.provider.select.first": "先開啟資料夾以選取組態提供者",
|
||||
"configuration.select.first": "先開啟資料夾以選取設定。",
|
||||
"configuration.provider.select.first": "先開啟資料夾以選取設定提供者。",
|
||||
"edit.configurations.open.first": "先開啟資料夾以編輯組態",
|
||||
"code.action.aborted": "無法套用程式碼分析修正,因為文件已變更。",
|
||||
"add.includepath.open.first": "先開啟資料夾以新增至 {0}"
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
"find.all.references": "尋找所有參考",
|
||||
"peek.references": "瞄核參考",
|
||||
"rename": "重新命名",
|
||||
"call.hierarchy": "呼叫階層圖",
|
||||
"confirmed.reference.upper": "已確認參考",
|
||||
"confirmation.in.progress.upper": "正在確認",
|
||||
"comment.reference.upper": "註解參考",
|
||||
|
||||
@@ -4,5 +4,5 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"editorconfig.default.behavior": "程式碼格式設定使用來自 .editorconfig 的設定,而不是 .clang-format 格式。如需詳細資訊,請參閱 'C_Cpp.formatting' 設定之 'Default' 值的文件。"
|
||||
"editorconfig.default.behavior": "程式碼格式設定使用來自 .editorconfig 的設定,而不是 .clang-format 格式。如需詳細資訊,請參閱 'C_Cpp.formatting' 設定之 'default' 值的文件。"
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"c.cpp.configurations": "C/C++ 設定"
|
||||
}
|
||||
@@ -7,7 +7,10 @@
|
||||
"c.cpp.parsing.open.files.tooltip": "正在剖析開啟的檔案",
|
||||
"click.to.preview": "按一下以預覽結果",
|
||||
"updating.intellisense.tooltip": "正在更新 IntelliSense...",
|
||||
"c.cpp.configureIntelliSenseStatus.text": "設定 IntelliSense",
|
||||
"c.cpp.configureIntelliSenseStatus.cppText": "C/C++ 設定 IntelliSense",
|
||||
"select.command": "選取命令...",
|
||||
"select.code.analysis.command": "選取程式碼分析命令...",
|
||||
"c.cpp.configuration.tooltip": "C/C++ 組態",
|
||||
"c.cpp.references.statusbar": "C/C++ 參考狀態",
|
||||
"c.cpp.intellisense.statusbar": "C/C++ IntelliSense 狀態",
|
||||
@@ -27,7 +30,8 @@
|
||||
"select.workspace": "選取工作區資料夾...",
|
||||
"resume.parsing": "繼續工作區剖析",
|
||||
"pause.parsing": "暫停工作區剖析",
|
||||
"cancel.analysis": "取消 {0}",
|
||||
"resume.analysis": "繼續 {0}",
|
||||
"pause.analysis": "暫停 {0}"
|
||||
"cancel.analysis": "取消",
|
||||
"resume.analysis": "繼續",
|
||||
"pause.analysis": "暫停",
|
||||
"another.analysis": "啟動另一個..."
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"running.tagparser.text": "剖析工作區",
|
||||
"paused.tagparser.text": "剖析工作區: 已暫停",
|
||||
"complete.tagparser.text": "剖析完成",
|
||||
"initializing.tagparser.text": "正在初始化工作區",
|
||||
"indexing.tagparser.text": "索引工作區",
|
||||
"rescan.tagparse.text": "重新掃描工作區",
|
||||
"c.cpp.parsing.open.files.tooltip": "剖析開啟的檔案",
|
||||
"click.to.preview": "按一下以預覽結果",
|
||||
"updating.intellisense.text": "IntelliSense: 更新中",
|
||||
"idle.intellisense.text": "IntelliSense: 就緒",
|
||||
"absent.intellisense.text": "IntelliSense: 未設定",
|
||||
"running.analysis.text": "Code Analysis: 執行中",
|
||||
"paused.analysis.text": "Code Analysis: 已暫停",
|
||||
"mode.analysis.prefix": "Code Analysis 模式: ",
|
||||
"c.cpp.configureIntelliSenseStatus.text": "設定 IntelliSense",
|
||||
"c.cpp.configureIntelliSenseStatus.cppText": "C/C++ 設定 IntelliSense",
|
||||
"select.command": "選取命令...",
|
||||
"select.code.analysis.command": "選取程式碼分析命令...",
|
||||
"c.cpp.configuration.tooltip": "C/C++ 組態",
|
||||
"c.cpp.references.statusbar": "C/C++ 參考狀態",
|
||||
"cpptools.status.intellisense": "C/C++ IntelliSense 狀態",
|
||||
"cpptools.status.tagparser": "C/C++ 標記剖析器狀態",
|
||||
"cpptools.detail.tagparser": "正在初始化...",
|
||||
"cpptools.status.codeanalysis": "C/C++ Code Analysis 狀態",
|
||||
"c.cpp.codeanalysis.statusbar.runNow": "立即執行",
|
||||
"tagparser.pause.text": "暫停",
|
||||
"tagparser.resume.text": "繼續",
|
||||
"intellisense.select.text": "選取編譯器",
|
||||
"rescan.intellisense.text": "重新掃描",
|
||||
"rescan.intellisense.tooltip": "重新掃描 IntelliSense",
|
||||
"mode.codeanalysis.status.automatic": "自動",
|
||||
"mode.codeanalysis.status.manual": "手動",
|
||||
"c.cpp.codeanalysis.statusbar.showCodeAnalysisOptions": "選項",
|
||||
"startup.codeanalysis.status": "正在啟動...",
|
||||
"c.cpp.codeanalysis.statusbar.showRunNowOptions": "立即執行",
|
||||
"running.analysis.processed.tooltip": "正在執行: {0} / {1} ({2}%)",
|
||||
"select.a.configuration": "選取設定...",
|
||||
"edit.configuration.ui": "編輯設定 (UI)",
|
||||
"edit.configuration.json": "編輯設定 (JSON)",
|
||||
"select.configuration.provider": "選取組態提供者...",
|
||||
"active": "使用中",
|
||||
"none": "無",
|
||||
"disable.configuration.provider": "如果適用,停用現有組態提供者。",
|
||||
"select.compile.commands": "選取 compile_commands.json...",
|
||||
"select.workspace": "選取工作區資料夾...",
|
||||
"resume.parsing": "繼續工作區剖析",
|
||||
"pause.parsing": "暫停工作區剖析",
|
||||
"cancel.analysis": "取消",
|
||||
"resume.analysis": "繼續",
|
||||
"pause.analysis": "暫停",
|
||||
"another.analysis": "啟動另一個...",
|
||||
"active.analysis": "在使用中檔案上執行程式碼分析",
|
||||
"all.analysis": "在所有檔案上執行程式碼分析",
|
||||
"open.analysis": "在開啟檔案上執行程式碼分析"
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user