Compare commits

..
Author SHA1 Message Date
Andrew Wang 8ed800ed14 Memory Window Test 2021-01-27 15:03:36 -08:00
Andrew Wang 1dddce718c Add command to open Memory Window 2020-08-17 17:48:43 -07:00
310 changed files with 3450 additions and 12588 deletions
-3
View File
@@ -1,3 +0,0 @@
# ignore dependency packages
node_modules
*.js.map
-43
View File
@@ -1,43 +0,0 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.Locker = void 0;
const utils_1 = require("../common/utils");
const ActionBase_1 = require("../common/ActionBase");
class Locker extends ActionBase_1.ActionBase {
constructor(github, daysSinceClose, daysSinceUpdate, labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes) {
super(labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes);
this.github = github;
this.daysSinceClose = daysSinceClose;
this.daysSinceUpdate = daysSinceUpdate;
}
async run() {
const closedTimestamp = utils_1.daysAgoToHumanReadbleDate(this.daysSinceClose);
const updatedTimestamp = 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) => {
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();
}
else {
if (hydrated.locked) {
console.log(`Issue ${hydrated.number} is already locked. Ignoring`);
}
else if (hydrated.open) {
console.log(`Issue ${hydrated.number} is open. Ignoring`);
}
}
}));
}
}
}
exports.Locker = Locker;
//# sourceMappingURL=Locker.js.map
-55
View File
@@ -1,55 +0,0 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* 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'
export class Locker extends ActionBase {
constructor(
private github: GitHub,
private daysSinceClose: number,
private daysSinceUpdate: number,
labels?: string,
milestoneName?: string,
milestoneId?: string,
ignoreLabels?: string,
ignoreMilestoneNames?: string,
ignoreMilestoneIds?: string,
minimumVotes?: number,
maximumVotes?: number
)
{
super(labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes);
}
async run() {
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()
if (!hydrated.locked && hydrated.open === false && this.validateIssue(hydrated)
// TODO: Verify closed and updated timestamps
) {
console.log(`Locking issue ${hydrated.number}`)
await issue.lockIssue()
} else {
if (hydrated.locked) {
console.log(`Issue ${hydrated.number} is already locked. Ignoring`)
} else if (hydrated.open) {
console.log(`Issue ${hydrated.number} is open. Ignoring`)
}
}
}),
)
}
}
}
-33
View File
@@ -1,33 +0,0 @@
name: Locker
description: Lock closed issues and PRs after some time has passed
inputs:
token:
description: GitHub token with issue, comment, and label read/write permissions
default: ${{ github.token }}
daysSinceClose:
description: Days to wait since closing before locking the item
required: true
daysSinceUpdate:
description: days to wait since the last interaction before locking the item
required: true
milestoneName:
description: items with these milestones will be considered (name only, must match ID)
milestoneId:
description: items with these milestones will be considered (id only, must match name)
labels:
description: items with these labels will not be considered. May be "*".
ignoreMilestoneNames:
description: items with these milestones will not be considered (names only, must match IDs). May be "*".
ignoreMilestoneIds:
description: items with these milestones will not be considered (IDs only, must match names)
ignoreLabels:
description: items with these labels will not be considered
minimumVotes:
descriptions: Only issues with at least this many votes will be considered.
maximumVotes:
descriptions: Only issues fewer or equal to this many votes will be considered.
readonly:
description: If true, changes are not applied.
runs:
using: 'node12'
main: 'index.js'
-20
View File
@@ -1,20 +0,0 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("../common/utils");
const Locker_1 = require("./Locker");
const Action_1 = require("../common/Action");
class LockerAction extends Action_1.Action {
constructor() {
super(...arguments);
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();
}
}
new LockerAction().run(); // eslint-disable-line
//# sourceMappingURL=index.js.map
-31
View File
@@ -1,31 +0,0 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* 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'
class LockerAction extends Action {
id = 'Locker'
async onTriggered(github: OctoKit) {
await new Locker(
github,
+getRequiredInput('daysSinceClose'),
+getRequiredInput('daysSinceUpdate'),
getInput('labels') || undefined,
getInput('milestoneName') || undefined,
getInput('milestoneId') || undefined,
getInput('ignoreLabels') || undefined,
getInput('ignoreMilestoneNames') || undefined,
getInput('ignoreMilestoneIds') || undefined,
+(getInput('minimumVotes') || 0),
+(getInput('maximumVotes') || 9999999)
).run()
}
}
new LockerAction().run() // eslint-disable-line
-72
View File
@@ -1,72 +0,0 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.Reopener = void 0;
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) {
super(labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes);
this.github = github;
this.alsoApplyToOpenIssues = alsoApplyToOpenIssues;
this.addLabels = addLabels;
this.removeLabels = removeLabels;
this.reopenComment = reopenComment;
this.setMilestoneId = setMilestoneId;
}
async run() {
const addLabelsSet = this.addLabels ? this.addLabels.split(',') : [];
const removeLabelsSet = this.removeLabels ? this.removeLabels.split(',') : [];
console.log(`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();
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();
}
if (this.setMilestoneId != undefined) {
console.log(`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);
}
}
}
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);
}
}
}
if (this.reopenComment) {
console.log(`Posting comment to issue ${hydrated.number}.`);
await issue.postComment(this.reopenComment);
}
}
else {
if (hydrated.locked) {
console.log(`Issue ${hydrated.number} is locked. Ignoring`);
}
else if (!this.alsoApplyToOpenIssues && hydrated.open) {
console.log(`Issue ${hydrated.number} is open. Ignoring`);
}
}
}));
}
}
}
exports.Reopener = Reopener;
//# sourceMappingURL=Reopener.js.map
-84
View File
@@ -1,84 +0,0 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* 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'
export class Reopener extends ActionBase {
constructor(
private github: GitHub,
private alsoApplyToOpenIssues: boolean,
private addLabels?: string,
private removeLabels?: string,
private reopenComment?: string,
private setMilestoneId?: string,
labels?: string,
milestoneName?: string,
milestoneId?: string,
ignoreLabels?: string,
ignoreMilestoneNames?: string,
ignoreMilestoneIds?: string,
minimumVotes?: number,
maximumVotes?: number
)
{
super(labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes);
}
async run() {
const addLabelsSet = this.addLabels ? this.addLabels.split(',') : [];
const removeLabelsSet = this.removeLabels ? this.removeLabels.split(',') : [];
console.log(`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()
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()
}
if (this.setMilestoneId != undefined) {
console.log(`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)
}
}
}
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)
}
}
}
if (this.reopenComment) {
console.log(`Posting comment to issue ${hydrated.number}.`)
await issue.postComment(this.reopenComment)
}
} else {
if (hydrated.locked) {
console.log(`Issue ${hydrated.number} is locked. Ignoring`)
} else if (!this.alsoApplyToOpenIssues && hydrated.open) {
console.log(`Issue ${hydrated.number} is open. Ignoring`)
}
}
}),
)
}
}
}
-37
View File
@@ -1,37 +0,0 @@
name: Locker
description: Lock closed issues and PRs after some time has passed
inputs:
token:
description: GitHub token with issue, comment, and label read/write permissions
default: ${{ github.token }}
alsoApplyToOpenIssues:
description: If true, applies to issues that are already opened (to add/remove labels, etc., but not reopen).
addLabels:
description: Labels to add to issue as it is reopend.
reopenComment:
description: Comment to add upon reopening the issue.
setMilestoneId:
description: Milestone to set reopened issue to.
removeLabels:
description: Labels to remove from issue as it is reopened.
milestoneName:
description: items with these milestones will be considered (name only, must match ID)
milestoneId:
description: items with these milestones will be considered (id only, must match name)
labels:
description: items with these labels will not be considered. May be "*".
ignoreMilestoneNames:
description: items with these milestones will not be considered (names only, must match IDs). May be "*".
ignoreMilestoneIds:
description: items with these milestones will not be considered (IDs only, must match names)
ignoreLabels:
description: items with these labels will not be considered
minimumVotes:
descriptions: Only issues with at least this many votes will be considered.
maximumVotes:
descriptions: Only issues fewer or equal to this many votes will be considered.
readonly:
description: If true, changes are not applied.
runs:
using: 'node12'
main: 'index.js'
-21
View File
@@ -1,21 +0,0 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("../common/utils");
const Reopener_1 = require("./Reopener");
const Action_1 = require("../common/Action");
class ReopenerAction extends Action_1.Action {
constructor() {
super(...arguments);
this.id = 'Locker';
}
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();
}
}
new ReopenerAction().run(); // eslint-disable-line
//# sourceMappingURL=index.js.map
-35
View File
@@ -1,35 +0,0 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* 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'
class ReopenerAction extends Action {
id = 'Locker'
async onTriggered(github: OctoKit) {
const alsoApplyToOpenIssues: string | undefined = getInput('alsoApplyToOpenIssues');
await new Reopener(
github,
alsoApplyToOpenIssues != undefined && alsoApplyToOpenIssues.toLowerCase() == 'true',
getInput('addLabels') || undefined,
getInput('removeLabels') || undefined,
getInput('reopenComment') || '',
getInput('setMilestoneId') || undefined,
getInput('labels') || undefined,
getInput('milestoneName') || undefined,
getInput('milestoneId') || undefined,
getInput('ignoreLabels') || undefined,
getInput('ignoreMilestoneNames') || undefined,
getInput('ignoreMilestoneIds') || undefined,
+(getInput('minimumVotes') || 0),
+(getInput('maximumVotes') || 9999999)
).run()
}
}
new ReopenerAction().run() // eslint-disable-line
-106
View File
@@ -1,106 +0,0 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.StaleCloser = void 0;
const ActionBase_1 = require("../common/ActionBase");
const utils_1 = require("../common/utils");
class StaleCloser extends ActionBase_1.ActionBase {
constructor(github, closeDays, labels, closeComment, pingDays, pingComment, additionalTeam, addLabels, removeLabels, setMilestoneId, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes, involves) {
super(labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes, involves);
this.github = github;
this.closeDays = closeDays;
this.closeComment = closeComment;
this.pingDays = pingDays;
this.pingComment = pingComment;
this.additionalTeam = additionalTeam;
this.addLabels = addLabels;
this.removeLabels = removeLabels;
this.setMilestoneId = setMilestoneId;
}
async run() {
const updatedTimestamp = utils_1.daysAgoToHumanReadbleDate(this.closeDays);
const pingTimestamp = this.pingDays ? 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(',') : [];
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();
if (lastCommentIterator.done) {
throw Error('Unexpected comment data');
}
const lastComment = lastCommentIterator.value[0];
if (hydrated.open && this.validateIssue(hydrated)
// TODO: Verify updated timestamp
) {
if (!lastComment ||
lastComment.author.isGitHubApp ||
pingTimestamp == undefined ||
// TODO: List the collaborators once per go rather than checking a single user each issue
this.additionalTeam.includes(lastComment.author.name) ||
await issue.hasWriteAccess(lastComment.author)) {
if (pingTimestamp != undefined) {
if (lastComment) {
console.log(`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Closing.`);
}
else {
console.log(`No comments on issue ${hydrated.number}. Closing.`);
}
}
if (this.closeComment) {
console.log(`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);
}
}
}
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);
}
}
}
await issue.closeIssue();
if (this.setMilestoneId != undefined) {
console.log(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`);
await issue.setMilestone(+this.setMilestoneId);
}
console.log(`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}`);
if (this.pingComment) {
await issue.postComment(this.pingComment
.replace('${assignee}', hydrated.assignee)
.replace('${author}', hydrated.author.name));
}
}
else {
console.log(`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`);
}
}
}
}
}
}
exports.StaleCloser = StaleCloser;
//# sourceMappingURL=StaleCloser.js.map
-128
View File
@@ -1,128 +0,0 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* 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'
export class StaleCloser extends ActionBase {
constructor(
private github: GitHub,
private closeDays: number,
labels: string,
private closeComment: string,
private pingDays: number,
private pingComment: string,
private additionalTeam: string[],
private addLabels?: string,
private removeLabels?: string,
private setMilestoneId?: string,
milestoneName?: string,
milestoneId?: string,
ignoreLabels?: string,
ignoreMilestoneNames?: string,
ignoreMilestoneIds?: string,
minimumVotes?: number,
maximumVotes?: number,
involves?: string
)
{
super(labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes, involves);
}
async run() {
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");
const addLabelsSet = this.addLabels ? this.addLabels.split(',') : [];
const removeLabelsSet = this.removeLabels ? this.removeLabels.split(',') : [];
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()
if (lastCommentIterator.done) {
throw Error('Unexpected comment data')
}
const lastComment = lastCommentIterator.value[0]
if (hydrated.open && this.validateIssue(hydrated)
// TODO: Verify updated timestamp
) {
if (
!lastComment ||
lastComment.author.isGitHubApp ||
pingTimestamp == undefined ||
// TODO: List the collaborators once per go rather than checking a single user each issue
this.additionalTeam.includes(lastComment.author.name) ||
await issue.hasWriteAccess(lastComment.author)
) {
if (pingTimestamp != undefined) {
if (lastComment) {
console.log(
`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Closing.`,
)
} else {
console.log(`No comments on issue ${hydrated.number}. Closing.`)
}
}
if (this.closeComment) {
console.log(`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)
}
}
}
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)
}
}
}
await issue.closeIssue()
if (this.setMilestoneId != undefined) {
console.log(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`)
await issue.setMilestone(+this.setMilestoneId)
}
console.log(`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}`,
)
if (this.pingComment) {
await issue.postComment(
this.pingComment
.replace('${assignee}', hydrated.assignee)
.replace('${author}', hydrated.author.name),
)
}
} else {
console.log(
`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`)
}
}
}
}
}
}
-47
View File
@@ -1,47 +0,0 @@
name: Stale Issue Closer
description: Close issues that are marked with a specified label and were last interacted with by a contributor or bot
inputs:
token:
description: GitHub token with issue, comment, and label read/write permissions
default: ${{ github.token }}
closeDays:
description: Days to wait before closing the issue
required: true
closeComment:
description: Comment to add upon closing the issue
pingDays:
description: Days to wait before pinging the assignee, if any. If set, issue is not closed if there is an assignee.
additionalTeam:
description: Pipe-separated list of additional users to treat as team members
pingComment:
description: Comment to add when pinging assignee. ${assignee} and ${author} are replaced.
milestoneName:
description: items with these milestones will be considered (name only, must match ID)
milestoneId:
description: items with these milestones will be considered (id only, must match name)
labels:
description: items with these labels will not be considered. May be "*".
required: true
ignoreMilestoneNames:
description: items with these milestones will not be considered (names only, must match IDs). May be "*".
ignoreMilestoneIds:
description: items with these milestones will not be considered (IDs only, must match names)
ignoreLabels:
description: items with these labels will not be considered
addLabels:
description: Labels to add to issue as it is closed.
removeLabels:
description: Labels to remove from issue as it is closed.
setMilestoneId:
description: Milestone to set closed issue to.
minimumVotes:
descriptions: Only issues with at least this many votes will be considered.
maximumVotes:
descriptions: Only issues fewer or equal to this many votes will be considered.
involves:
descriptions: Qualifier to find issues that in some way involve a certain user either as an author, assignee, or mentions.
readonly:
description: If true, changes are not applied.
runs:
using: 'node12'
main: 'index.js'
-21
View File
@@ -1,21 +0,0 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("../common/utils");
const StaleCloser_1 = require("./StaleCloser");
const Action_1 = require("../common/Action");
class StaleCloserAction extends Action_1.Action {
constructor() {
super(...arguments);
this.id = 'StaleCloser';
}
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();
}
}
new StaleCloserAction().run(); // eslint-disable-line
//# sourceMappingURL=index.js.map
-38
View File
@@ -1,38 +0,0 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* 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 { StaleCloser } from './StaleCloser'
import { Action } from '../common/Action'
class StaleCloserAction extends Action {
id = 'StaleCloser'
async onTriggered(github: OctoKit) {
await new StaleCloser(
github,
+getRequiredInput('closeDays'),
getRequiredInput('labels'),
getInput('closeComment') || '',
+(getInput('pingDays') || 0),
getInput('pingComment') || '',
(getInput('additionalTeam') ?? '').split(','),
getInput('addLabels') || undefined,
getInput('removeLabels') || undefined,
getInput('setMilestoneId') || undefined,
getInput('milestoneName') || undefined,
getInput('milestoneId') || undefined,
getInput('ignoreLabels') || undefined,
getInput('ignoreMilestoneNames') || undefined,
getInput('ignoreMilestoneIds') || undefined,
+(getInput('minimumVotes') || 0),
+(getInput('maximumVotes') || 9999999),
getInput('involves') || undefined
).run()
}
}
new StaleCloserAction().run() // eslint-disable-line
-7
View File
@@ -1,7 +0,0 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=api.js.map
-100
View File
@@ -1,100 +0,0 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
export interface GitHub {
query(query: Query): AsyncIterableIterator<GitHubIssue[]>
hasWriteAccess(user: User): Promise<boolean>
repoHasLabel(label: string): Promise<boolean>
createLabel(label: string, color: string, description: string): Promise<void>
deleteLabel(label: string): Promise<void>
readConfig(path: string): Promise<any>
dispatch(title: string): Promise<void>
createIssue(owner: string, repo: string, title: string, body: string): Promise<void>
releaseContainsCommit(release: string, commit: string): Promise<'yes' | 'no' | 'unknown'>
}
export interface GitHubIssue extends GitHub {
getIssue(): Promise<Issue>
postComment(body: string): Promise<void>
deleteComment(id: number): Promise<void>
getComments(last?: boolean): AsyncIterableIterator<Comment[]>
closeIssue(): Promise<void>
lockIssue(): Promise<void>
reopenIssue(): Promise<void>
setMilestone(milestoneId: number): Promise<void>
addLabel(label: string): Promise<void>
removeLabel(label: string): Promise<void>
addAssignee(assignee: string): Promise<void>
removeAssignee(assignee: string): Promise<void>
getClosingInfo(): Promise<{ hash: string | undefined; timestamp: number } | undefined>
}
type SortVar =
| 'comments'
| 'reactions'
| 'reactions-+1'
| 'reactions--1'
| 'reactions-smile'
| 'reactions-thinking_face'
| 'reactions-heart'
| 'reactions-tada'
| 'interactions'
| 'created'
| 'updated'
type SortOrder = 'asc' | 'desc'
export type Reactions = {
'+1': number
'-1': number
laugh: number
hooray: number
confused: number
heart: number
rocket: number
eyes: number
}
export interface User {
name: string
isGitHubApp?: boolean
}
export interface Comment {
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
}
export interface Query {
q: string
sort?: SortVar
order?: SortOrder
}
-405
View File
@@ -1,405 +0,0 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
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");
let numRequests = 0;
exports.getNumRequests = () => numRequests;
class OctoKit {
constructor(token, params, options = { readonly: false }) {
this.token = token;
this.params = params;
this.options = options;
// 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);
}
get octokit() {
numRequests++;
return this._octokit;
}
// 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({
...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));
}
else {
await new Promise((resolve) => setTimeout(resolve, 30000));
}
};
for await (const pageResponse of this.octokit.paginate.iterator(options)) {
await timeout();
numRequests++;
const page = pageResponse.data;
console.log(`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}`);
if (!this.options.readonly)
await this.octokit.issues.create({ owner, repo, title, body });
}
octokitIssueToIssue(issue) {
var _a, _b, _c, _d, _e, _f;
return {
author: { name: issue.user.login, isGitHubApp: issue.user.type === 'Bot' },
body: issue.body,
number: issue.number,
title: issue.title,
labels: issue.labels.map((label) => label.name),
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,
createdAt: +new Date(issue.created_at),
updatedAt: +new Date(issue.updated_at),
closedAt: issue.closed_at ? +new Date(issue.closed_at) : undefined,
};
}
async hasWriteAccess(user) {
if (user.name in this.writeAccessCache) {
core_1.debug('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({
...this.params,
username: user.name,
})).data.permission;
return (this.writeAccessCache[user.name] = permissions === 'admin' || permissions === 'write');
}
async repoHasLabel(name) {
try {
await this.octokit.issues.getLabel({ ...this.params, name });
return true;
}
catch (err) {
if (err.status === 404) {
return this.options.readonly && this.mockLabels.has(name);
}
throw err;
}
}
async createLabel(name, color, description) {
core_1.debug('Creating label ' + name);
if (!this.options.readonly)
await this.octokit.issues.createLabel({ ...this.params, color, description, name });
else
this.mockLabels.add(name);
}
async deleteLabel(name) {
core_1.debug('Deleting label ' + name);
try {
if (!this.options.readonly)
await this.octokit.issues.deleteLabel({ ...this.params, name });
}
catch (err) {
if (err.status === 404) {
return;
}
throw err;
}
}
async readConfig(path) {
core_1.debug('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') {
if (data.encoding === 'base64' && data.content) {
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('Found directory at config path when expecting file' + JSON.stringify(data));
}
catch (e) {
throw Error('Error with config file at ' + repoPath + ': ' + JSON.stringify(e));
}
}
async releaseContainsCommit(release, commit) {
return new Promise((resolve, reject) => child_process_1.exec(`git -C ./repo merge-base --is-ancestor ${commit} ${release}`, (err) => {
if (!err || err.code === 1) {
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');
}
else if (err.message.includes(`Not a valid commit name ${commit}`)) {
// commit is probably in a different repo.
resolve('unknown');
}
else {
reject(err);
}
}));
}
async dispatch(title) {
core_1.debug('Dispatching ' + title);
if (!this.options.readonly)
await this.octokit.repos.createDispatchEvent({ ...this.params, event_type: title });
}
}
exports.OctoKit = OctoKit;
class OctoKitIssue extends OctoKit {
constructor(token, params, issueData, options = { readonly: false }) {
super(token, params, options);
this.params = params;
this.issueData = issueData;
console.log('running bot on issue', issueData.number);
}
async addAssignee(assignee) {
core_1.debug('Adding assignee ' + assignee + ' to ' + this.issueData.number);
if (!this.options.readonly) {
await this.octokit.issues.addAssignees({
...this.params,
issue_number: this.issueData.number,
assignees: [assignee],
});
}
}
async removeAssignee(assignee) {
core_1.debug('Removing assignee ' + assignee + ' to ' + this.issueData.number);
if (!this.options.readonly) {
await this.octokit.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({
...this.params,
issue_number: this.issueData.number,
state: 'closed',
});
}
async reopenIssue() {
core_1.debug('Reopening issue ' + this.issueData.number);
if (!this.options.readonly)
await this.octokit.issues.update({
...this.params,
issue_number: this.issueData.number,
state: 'open',
});
}
async lockIssue() {
core_1.debug('Locking issue ' + this.issueData.number);
if (!this.options.readonly)
await this.octokit.issues.lock({ ...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);
return this.issueData;
}
console.log('Fetching issue ' + this.issueData.number);
const issue = (await this.octokit.issues.get({
...this.params,
issue_number: this.issueData.number,
mediaType: { previews: ['squirrel-girl'] },
})).data;
return (this.issueData = this.octokitIssueToIssue(issue));
}
async postComment(body) {
core_1.debug(`Posting comment ${body} on ${this.issueData.number}`);
if (!this.options.readonly)
await this.octokit.issues.createComment({
...this.params,
issue_number: this.issueData.number,
body,
});
}
async deleteComment(id) {
core_1.debug(`Deleting comment ${id} on ${this.issueData.number}`);
if (!this.options.readonly)
await this.octokit.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}`);
if (!this.options.readonly)
await this.octokit.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({
...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),
}));
}
}
async addLabel(name) {
core_1.debug(`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({
...this.params,
issue_number: this.issueData.number,
labels: [name],
});
}
async getAssigner(assignee) {
const options = this.octokit.issues.listEventsForTimeline.endpoint.merge({
...this.params,
issue_number: this.issueData.number,
});
let assigner;
for await (const event of this.octokit.paginate.iterator(options)) {
numRequests++;
const timelineEvents = event.data;
for (const timelineEvent of timelineEvents) {
if (timelineEvent.event === 'assigned' &&
timelineEvent.assignee.login === assignee) {
assigner = timelineEvent.actor.login;
}
}
}
if (!assigner) {
throw Error('Expected to find ' + assignee + ' in issue timeline but did not.');
}
return assigner;
}
async removeLabel(name) {
core_1.debug(`Removing label ${name} from ${this.issueData.number}`);
try {
if (!this.options.readonly)
await this.octokit.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;
}
throw err;
}
}
async getClosingInfo(alreadyChecked = []) {
var _a, _b, _c, _d, _e, _f, _g;
if (alreadyChecked.includes(this.issueData.number)) {
return undefined;
}
alreadyChecked.push(this.issueData.number);
if ((await this.getIssue()).open) {
return;
}
const closingHashComment = /(?:\\|\/)closedWith (\S*)/;
const options = this.octokit.issues.listEventsForTimeline.endpoint.merge({
...this.params,
issue_number: this.issueData.number,
});
let closingCommit;
const crossReferencing = [];
for await (const event of this.octokit.paginate.iterator(options)) {
numRequests++;
const timelineEvents = event.data;
for (const timelineEvent of timelineEvents) {
if ((timelineEvent.event === 'closed' || timelineEvent.event === 'merged') &&
timelineEvent.commit_id &&
timelineEvent.commit_url
.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;
}
if (timelineEvent.event === 'commented' &&
!((_a = timelineEvent.body) === null || _a === void 0 ? void 0 : _a.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()))) {
crossReferencing.push(timelineEvent.source.issue.number);
}
}
}
// If we dont have any closing info, try to get it from linked issues (PRs).
// If there's a linked issue that was closed at almost the same time, guess it was a PR that closed this.
if (!closingCommit) {
for (const id of crossReferencing.reverse()) {
const closed = await new OctoKitIssue(this.token, this.params, {
number: id,
}, this.options).getClosingInfo(alreadyChecked);
if (closed) {
if (Math.abs(closed.timestamp - ((_g = (await this.getIssue()).closedAt) !== null && _g !== void 0 ? _g : 0)) < 5000) {
closingCommit = closed;
break;
}
}
}
}
console.log(`Got ${JSON.stringify(closingCommit)} as closing commit of ${this.issueData.number}`);
return closingCommit;
}
}
exports.OctoKitIssue = OctoKitIssue;
function isIssue(object) {
const isIssue = 'author' in object &&
'body' in object &&
'title' in object &&
'labels' in object &&
'open' in object &&
'locked' in object &&
'number' in object &&
'numComments' in object &&
'reactions' in object &&
'milestoneId' in object;
return isIssue;
}
//# sourceMappingURL=octokit.js.map
-470
View File
@@ -1,470 +0,0 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* 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'
let numRequests = 0
export const getNumRequests = () => numRequests
export class OctoKit implements GitHub {
private _octokit: GitHubAPI
protected get octokit(): GitHubAPI {
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()
constructor(
protected token: string,
protected params: { repo: string; owner: string },
protected options: { readonly: boolean } = { readonly: false },
) {
this._octokit = new GitHubAPI(token)
}
// 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 options = this.octokit.search.issuesAndPullRequests.endpoint.merge({
...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))
} else {
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(' ')}`)
yield page.map(
(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 })
}
protected octokitIssueToIssue(
issue: Octokit.IssuesGetResponse | Octokit.SearchIssuesAndPullRequestsResponseItemsItem,
): Issue {
return {
author: { name: issue.user.login, isGitHubApp: issue.user.type === 'Bot' },
body: issue.body,
number: issue.number,
title: issue.title,
labels: (issue.labels as Octokit.IssuesGetLabelResponse[]).map((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,
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,
}
}
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]
}
debug('Fetching permissions for ' + user)
const permissions = (
await this.octokit.repos.getCollaboratorPermissionLevel({
...this.params,
username: user.name,
})
).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
} catch (err) {
if (err.status === 404) {
return this.options.readonly && this.mockLabels.has(name)
}
throw err
}
}
async createLabel(name: string, color: string, description: string): Promise<void> {
debug('Creating label ' + name)
if (!this.options.readonly)
await this.octokit.issues.createLabel({ ...this.params, color, description, name })
else this.mockLabels.add(name)
}
async deleteLabel(name: string): Promise<void> {
debug('Deleting label ' + name)
try {
if (!this.options.readonly) await this.octokit.issues.deleteLabel({ ...this.params, name })
} catch (err) {
if (err.status === 404) {
return
}
throw err
}
}
async readConfig(path: string): Promise<any> {
debug('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') {
if (data.encoding === 'base64' && data.content) {
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('Found directory at config path when expecting file' + JSON.stringify(data))
} catch (e) {
throw Error('Error with config file at ' + repoPath + ': ' + JSON.stringify(e))
}
}
async releaseContainsCommit(release: string, commit: string): Promise<'yes' | 'no' | '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')
} else if (err.message.includes(`Not a valid commit name ${release}`)) {
// release branch is forked. Probably in endgame. Not released.
resolve('no')
} else if (err.message.includes(`Not a valid commit name ${commit}`)) {
// commit is probably in a different repo.
resolve('unknown')
} else {
reject(err)
}
}),
)
}
async dispatch(title: string): Promise<void> {
debug('Dispatching ' + title)
if (!this.options.readonly)
await this.octokit.repos.createDispatchEvent({ ...this.params, event_type: title })
}
}
export class OctoKitIssue extends OctoKit implements GitHubIssue {
constructor(
token: string,
protected params: { repo: string; owner: string },
private issueData: { number: number } | Issue,
options: { readonly: boolean } = { readonly: false },
) {
super(token, params, options)
console.log('running bot on issue', issueData.number)
}
async addAssignee(assignee: string): Promise<void> {
debug('Adding assignee ' + assignee + ' to ' + this.issueData.number)
if (!this.options.readonly) {
await this.octokit.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)
if (!this.options.readonly) {
await this.octokit.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({
...this.params,
issue_number: this.issueData.number,
state: 'closed',
})
}
async reopenIssue(): Promise<void> {
debug('Reopening issue ' + this.issueData.number)
if (!this.options.readonly)
await this.octokit.issues.update({
...this.params,
issue_number: this.issueData.number,
state: 'open',
})
}
async lockIssue(): Promise<void> {
debug('Locking issue ' + this.issueData.number)
if (!this.options.readonly)
await this.octokit.issues.lock({ ...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
}
console.log('Fetching issue ' + this.issueData.number)
const issue = (
await this.octokit.issues.get({
...this.params,
issue_number: this.issueData.number,
mediaType: { previews: ['squirrel-girl'] },
})
).data
return (this.issueData = this.octokitIssueToIssue(issue))
}
async postComment(body: string): Promise<void> {
debug(`Posting comment ${body} on ${this.issueData.number}`)
if (!this.options.readonly)
await this.octokit.issues.createComment({
...this.params,
issue_number: this.issueData.number,
body,
})
}
async deleteComment(id: number): Promise<void> {
debug(`Deleting comment ${id} on ${this.issueData.number}`)
if (!this.options.readonly)
await this.octokit.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}`)
if (!this.options.readonly)
await this.octokit.issues.update({
...this.params,
issue_number: this.issueData.number,
milestone: milestoneId,
})
}
async *getComments(last?: boolean): AsyncIterableIterator<Comment[]> {
debug('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 } : {}),
}),
)
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,
id: comment.id,
timestamp: +new Date(comment.created_at),
}))
}
}
async addLabel(name: string): Promise<void> {
debug(`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({
...this.params,
issue_number: this.issueData.number,
labels: [name],
})
}
async getAssigner(assignee: string): Promise<string> {
const options = this.octokit.issues.listEventsForTimeline.endpoint.merge({
...this.params,
issue_number: this.issueData.number,
})
let assigner: string | undefined
for await (const event of this.octokit.paginate.iterator(options)) {
numRequests++
const timelineEvents = event.data as Octokit.IssuesListEventsForTimelineResponseItem[]
for (const timelineEvent of timelineEvents) {
if (
timelineEvent.event === 'assigned' &&
(timelineEvent as any).assignee.login === assignee
) {
assigner = timelineEvent.actor.login
}
}
}
if (!assigner) {
throw Error('Expected to find ' + assignee + ' in issue timeline but did not.')
}
return assigner
}
async removeLabel(name: string): Promise<void> {
debug(`Removing label ${name} from ${this.issueData.number}`)
try {
if (!this.options.readonly)
await this.octokit.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
}
throw err
}
}
async getClosingInfo(
alreadyChecked: number[] = [],
): Promise<{ hash: string | undefined; timestamp: number } | undefined> {
if (alreadyChecked.includes(this.issueData.number)) {
return undefined
}
alreadyChecked.push(this.issueData.number)
if ((await this.getIssue()).open) {
return
}
const closingHashComment = /(?:\\|\/)closedWith (\S*)/
const options = this.octokit.issues.listEventsForTimeline.endpoint.merge({
...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++
const timelineEvents = event.data as Octokit.IssuesListEventsForTimelineResponseItem[]
for (const timelineEvent of timelineEvents) {
if (
(timelineEvent.event === 'closed' || timelineEvent.event === 'merged') &&
timelineEvent.commit_id &&
timelineEvent.commit_url
.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
}
if (
timelineEvent.event === 'commented' &&
!((timelineEvent as any).body as string)?.includes('UNABLE_TO_LOCATE_COMMIT_MESSAGE') &&
closingHashComment.test((timelineEvent as any).body)
) {
closingCommit = {
hash: closingHashComment.exec((timelineEvent as any).body)![1],
timestamp: +new Date(timelineEvent.created_at),
}
}
if (
timelineEvent.event === 'cross-referenced' &&
(timelineEvent as any).source?.issue?.number &&
(timelineEvent as any).source?.issue?.pull_request?.url.includes(
`/${this.params.owner}/${this.params.repo}/`.toLowerCase(),
)
) {
crossReferencing.push((timelineEvent as any).source.issue.number)
}
}
}
// If we dont have any closing info, try to get it from linked issues (PRs).
// If there's a linked issue that was closed at almost the same time, guess it was a PR that closed this.
if (!closingCommit) {
for (const id of crossReferencing.reverse()) {
const closed = await new OctoKitIssue(this.token, this.params, {
number: id,
}, this.options).getClosingInfo(alreadyChecked)
if (closed) {
if (Math.abs(closed.timestamp - ((await this.getIssue()).closedAt ?? 0)) < 5000) {
closingCommit = closed
break
}
}
}
}
console.log(`Got ${JSON.stringify(closingCommit)} as closing commit of ${this.issueData.number}`)
return closingCommit
}
}
function isIssue(object: any): object is Issue {
const isIssue =
'author' in object &&
'body' in object &&
'title' in object &&
'labels' in object &&
'open' in object &&
'locked' in object &&
'number' in object &&
'numComments' in object &&
'reactions' in object &&
'milestoneId' in object
return isIssue
}
-129
View File
@@ -1,129 +0,0 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.Action = void 0;
const octokit_1 = require("../api/octokit");
const github_1 = require("@actions/github");
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);
}
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,
},
});
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');
}
}
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;
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);
}
else if (github_1.context.eventName === 'issues') {
switch (github_1.context.payload.action) {
case 'opened':
await this.onOpened(octokit);
break;
case 'reopened':
await this.onReopened(octokit);
break;
case 'closed':
await this.onClosed(octokit);
break;
case 'labeled':
await this.onLabeled(octokit, github_1.context.payload.label.name);
break;
case 'unassigned':
await this.onUnassigned(octokit, github_1.context.payload.assignee.login);
break;
case 'edited':
await this.onEdited(octokit);
break;
case 'milestoned':
await this.onMilestoned(octokit);
break;
default:
throw Error('Unexpected action: ' + github_1.context.payload.action);
}
}
}
else {
await this.onTriggered(new octokit_1.OctoKit(token, github_1.context.repo, { readonly }));
}
}
catch (e) {
await this.error(e);
}
const usage = await utils_1.getRateLimit(this.token);
}
async error(error) {
const details = {
message: `${error.message}\n${error.stack}`,
id: this.id,
user: await this.username,
};
if (github_1.context.issue.number)
details.issue = github_1.context.issue.number;
const rendered = `
Message: ${details.message}
Actor: ${details.user}
ID: ${details.id}
`;
await utils_1.logErrorToIssue(rendered, true, this.token);
core_1.setFailed(error.message);
}
async onTriggered(_octokit) {
throw Error('not implemented');
}
async onEdited(_issue) {
throw Error('not implemented');
}
async onLabeled(_issue, _label) {
throw Error('not implemented');
}
async onUnassigned(_issue, _label) {
throw Error('not implemented');
}
async onOpened(_issue) {
throw Error('not implemented');
}
async onReopened(_issue) {
throw Error('not implemented');
}
async onClosed(_issue) {
throw Error('not implemented');
}
async onMilestoned(_issue) {
throw Error('not implemented');
}
async onCommented(_issue, _comment, _actor) {
throw Error('not implemented');
}
}
exports.Action = Action;
//# sourceMappingURL=Action.js.map
-137
View File
@@ -1,137 +0,0 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* 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'
export abstract class Action {
abstract id: string
private username: Promise<string>
private token = getRequiredInput('token')
constructor() {
this.username = new GitHub(this.token).users.getAuthenticated().then((v) => v.data.name)
}
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
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')
}
}
try {
const token = getRequiredInput('token')
const readonly = !!getInput('readonly')
const issue = context?.issue?.number
if (issue) {
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') {
switch (context.payload.action) {
case 'opened':
await this.onOpened(octokit)
break
case 'reopened':
await this.onReopened(octokit)
break
case 'closed':
await this.onClosed(octokit)
break
case 'labeled':
await this.onLabeled(octokit, context.payload.label.name)
break
case 'unassigned':
await this.onUnassigned(octokit, context.payload.assignee.login)
break
case 'edited':
await this.onEdited(octokit)
break
case 'milestoned':
await this.onMilestoned(octokit)
break
default:
throw Error('Unexpected action: ' + context.payload.action)
}
}
} else {
await this.onTriggered(new OctoKit(token, context.repo, { readonly }))
}
} catch (e) {
await this.error(e)
}
const usage = await getRateLimit(this.token)
}
private async error(error: Error) {
const details: any = {
message: `${error.message}\n${error.stack}`,
id: this.id,
user: await this.username,
}
if (context.issue.number) details.issue = context.issue.number
const rendered = `
Message: ${details.message}
Actor: ${details.user}
ID: ${details.id}
`
await logErrorToIssue(rendered, true, this.token)
setFailed(error.message)
}
protected async onTriggered(_octokit: OctoKit): Promise<void> {
throw Error('not implemented')
}
protected async onEdited(_issue: OctoKitIssue): Promise<void> {
throw Error('not implemented')
}
protected async onLabeled(_issue: OctoKitIssue, _label: string): Promise<void> {
throw Error('not implemented')
}
protected async onUnassigned(_issue: OctoKitIssue, _label: string): Promise<void> {
throw Error('not implemented')
}
protected async onOpened(_issue: OctoKitIssue): Promise<void> {
throw Error('not implemented')
}
protected async onReopened(_issue: OctoKitIssue): Promise<void> {
throw Error('not implemented')
}
protected async onClosed(_issue: OctoKitIssue): Promise<void> {
throw Error('not implemented')
}
protected async onMilestoned(_issue: OctoKitIssue): Promise<void> {
throw Error('not implemented')
}
protected async onCommented(_issue: OctoKitIssue, _comment: string, _actor: string): Promise<void> {
throw Error('not implemented')
}
}
-181
View File
@@ -1,181 +0,0 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.ActionBase = void 0;
class ActionBase {
constructor(labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes, involves) {
this.labels = labels;
this.milestoneName = milestoneName;
this.milestoneId = milestoneId;
this.ignoreLabels = ignoreLabels;
this.ignoreMilestoneNames = ignoreMilestoneNames;
this.ignoreMilestoneIds = ignoreMilestoneIds;
this.minimumVotes = minimumVotes;
this.maximumVotes = maximumVotes;
this.involves = involves;
this.labelsSet = [];
this.ignoreLabelsSet = [];
this.ignoreMilestoneNamesSet = [];
this.ignoreMilestoneIdsSet = [];
this.ignoreAllWithLabels = false;
this.ignoreAllWithMilestones = false;
this.involvesSet = [];
}
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}`);
// 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.
// TODO: Figure out a way to convert either from milestone name to ID, or vice versa.
// If label inclusion and exclusion are mixed, exclusion will take precedence.
// For example, an issue with both labels A and B will not match if B is excluded, even if A is included.
// If a milestoneName/milestoneId are set, ignoreMilenameName/ignoreMilestoneIds are ignored.
// GitHub does not appear to support searching for all issues with milestones (not lacking a milestone). "-no:milestone" does not work.
// GitHub does not appear to support searching for all issues with labels (not lacking a label). "-no:label" does not work.
// All indicated labels must be present
if (this.labels) {
if (((_a = this.labels) === null || _a === void 0 ? void 0 : _a.length) > 2 && ((_b = this.labels) === null || _b === void 0 ? void 0 : _b.startsWith('"')) && ((_c = this.labels) === null || _c === void 0 ? void 0 : _c.endsWith('"'))) {
this.labels = this.labels.substring(1, this.labels.length - 2);
}
this.labelsSet = (_d = this.labels) === null || _d === void 0 ? void 0 : _d.split(',');
for (const str of this.labelsSet) {
if (str != "") {
query = query.concat(` label:"${str}"`);
}
}
}
// The "involves" qualifier to find issues that in some way involve a certain user.
// It is a logical OR between the author, assignee, and mentions.
if (this.involves) {
this.involvesSet = (_e = this.involves) === null || _e === void 0 ? void 0 : _e.split(',');
for (const str of this.involvesSet) {
if (str != "") {
query = query.concat(` involves:"${str}"`);
}
}
}
if (this.ignoreLabels) {
if (this.ignoreLabels == "*" && !this.labels) { // only if unlabeled
query = query.concat(` no:label`);
this.ignoreAllWithLabels = true;
}
else {
this.ignoreLabelsSet = (_f = this.ignoreLabels) === null || _f === void 0 ? void 0 : _f.split(',');
for (const str of this.ignoreLabelsSet) {
if (str != "") {
query = query.concat(` -label:"${str}"`);
}
}
}
}
if (this.milestoneName) {
query = query.concat(` milestone:"${this.milestoneName}"`);
}
else if (this.ignoreMilestoneNames) {
if (this.ignoreMilestoneNames == "*") {
query = query.concat(` no:milestone`);
this.ignoreAllWithMilestones = true;
}
else if (this.ignoreMilestoneIds) {
this.ignoreMilestoneNamesSet = this.ignoreMilestoneNames.split(',');
this.ignoreMilestoneIdsSet = this.ignoreMilestoneIds.split(',');
for (const str of this.ignoreMilestoneNamesSet) {
if (str != "") {
query = query.concat(` -milestone:"${str}"`);
}
}
}
}
return query;
}
// This is necessary because GitHub sometimes returns incorrect results,
// and because issues may get modified while we are processing them.
validateIssue(issue) {
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.`);
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.`);
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.`);
return false;
}
}
// Make sure no labels we wanted to ignore are present.
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}`);
return false;
}
}
}
}
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.`);
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}`);
return false;
}
// Make sure a milestones we wanted to ignore is not present.
if (issue.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.`);
return false;
}
}
}
}
// Verify the issue has a sufficient number of upvotes
let upvotes = 0;
if (issue.reactions) {
upvotes = issue.reactions['+1'];
}
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}`);
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}`);
return false;
}
}
return true;
}
}
exports.ActionBase = ActionBase;
//# sourceMappingURL=ActionBase.js.map
-187
View File
@@ -1,187 +0,0 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Issue } from '../api/api'
export class ActionBase {
constructor(
private labels?: string,
private milestoneName?: string,
private milestoneId?: string,
private ignoreLabels?: string,
private ignoreMilestoneNames?: string,
private ignoreMilestoneIds?: string,
private minimumVotes?: number,
private maximumVotes?: number,
private involves?: string,
) {}
private labelsSet: string[] = [];
private ignoreLabelsSet: string[] = [];
private ignoreMilestoneNamesSet: string[] = [];
private ignoreMilestoneIdsSet: string[] = [];
private ignoreAllWithLabels: boolean = false;
private ignoreAllWithMilestones: boolean = false;
private involvesSet: string[] = [];
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}`);
// 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.
// TODO: Figure out a way to convert either from milestone name to ID, or vice versa.
// If label inclusion and exclusion are mixed, exclusion will take precedence.
// For example, an issue with both labels A and B will not match if B is excluded, even if A is included.
// If a milestoneName/milestoneId are set, ignoreMilenameName/ignoreMilestoneIds are ignored.
// GitHub does not appear to support searching for all issues with milestones (not lacking a milestone). "-no:milestone" does not work.
// GitHub does not appear to support searching for all issues with labels (not lacking a label). "-no:label" does not work.
// All indicated labels must be present
if (this.labels) {
if (this.labels?.length > 2 && this.labels?.startsWith('"') && this.labels?.endsWith('"')) {
this.labels = this.labels.substring(1, this.labels.length - 2);
}
this.labelsSet = this.labels?.split(',');
for (const str of this.labelsSet) {
if (str != "") {
query = query.concat(` label:"${str}"`);
}
}
}
// The "involves" qualifier to find issues that in some way involve a certain user.
// It is a logical OR between the author, assignee, and mentions.
if (this.involves) {
this.involvesSet = this.involves?.split(',');
for (const str of this.involvesSet) {
if (str != "") {
query = query.concat(` involves:"${str}"`)
}
}
}
if (this.ignoreLabels) {
if (this.ignoreLabels == "*" && !this.labels) { // only if unlabeled
query = query.concat(` no:label`)
this.ignoreAllWithLabels = true;
} else {
this.ignoreLabelsSet = this.ignoreLabels?.split(',');
for (const str of this.ignoreLabelsSet) {
if (str != "") {
query = query.concat(` -label:"${str}"`)
}
}
}
}
if (this.milestoneName) {
query = query.concat(` milestone:"${this.milestoneName}"`)
}
else if (this.ignoreMilestoneNames) {
if (this.ignoreMilestoneNames == "*") {
query = query.concat(` no:milestone`)
this.ignoreAllWithMilestones = true;
} else if (this.ignoreMilestoneIds) {
this.ignoreMilestoneNamesSet = this.ignoreMilestoneNames.split(',');
this.ignoreMilestoneIdsSet = this.ignoreMilestoneIds.split(',');
for (const str of this.ignoreMilestoneNamesSet) {
if (str != "") {
query = query.concat(` -milestone:"${str}"`)
}
}
}
}
return query;
}
// This is necessary because GitHub sometimes returns incorrect results,
// and because issues may get modified while we are processing them.
validateIssue(issue: Issue): boolean {
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.`);
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.`);
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.`);
return false;
}
}
// Make sure no labels we wanted to ignore are present.
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}`);
return false;
}
}
}
}
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.`);
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}`);
return false;
}
// Make sure a milestones we wanted to ignore is not present.
if (issue.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.`);
return false;
}
}
}
}
// Verify the issue has a sufficient number of upvotes
let upvotes = 0;
if (issue.reactions) {
upvotes = issue.reactions['+1'];
}
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}`);
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}`);
return false;
}
}
return true;
}
}
-99
View File
@@ -1,99 +0,0 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* 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;
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) => {
let { body, title } = issue;
body = body !== null && body !== void 0 ? body : '';
title = title !== null && title !== void 0 ? 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);
const cleanse = (str) => {
let out = str
.toLowerCase()
.replace(/<!--.*-->/gu, '')
.replace(/.* version: .*/gu, '')
.replace(/issue type: .*/gu, '')
.replace(/vs ?code/gu, '')
.replace(/we have written.*please paste./gu, '')
.replace(/steps to reproduce:/gu, '')
.replace(/does this issue occur when all extensions are disabled.*/gu, '')
.replace(/!?\[[^\]]*\]\([^)]*\)/gu, '')
.replace(/\s+/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);
}
return out;
};
return {
body: cleanse(body),
title: cleanse(title),
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;
const usage = {};
['core', 'graphql', 'search'].forEach(async (category) => {
usage[category] = 1 - usageData[category].remaining / usageData[category].limit;
});
return usage;
};
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 };
}
else if (exports.getInput('errorLogIssueNumber')) {
return { ...github_1.context.repo, issue: +exports.getRequiredInput('errorLogIssueNumber') };
}
else {
return undefined;
}
}
catch (e) {
console.error(e);
return undefined;
}
})();
exports.logErrorToIssue = async (message, ping, token) => {
// 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') })
.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}
Repo: ${github_1.context.repo.owner}/${github_1.context.repo.repo}
<!-- Context:
${JSON.stringify(github_1.context, null, 2)
.replace(/<!--/gu, '<@--')
.replace(/-->/gu, '--@>')
.replace(/\/|\\/gu, 'slash-')}
-->
`);
};
//# sourceMappingURL=utils.js.map
-119
View File
@@ -1,119 +0,0 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* 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'
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; 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)
const isFeatureRequest =
body.includes('feature_request_template') || /Issue Type:.*Feature Request.*/.test(body)
const cleanse = (str: string) => {
let out = str
.toLowerCase()
.replace(/<!--.*-->/gu, '')
.replace(/.* version: .*/gu, '')
.replace(/issue type: .*/gu, '')
.replace(/vs ?code/gu, '')
.replace(/we have written.*please paste./gu, '')
.replace(/steps to reproduce:/gu, '')
.replace(/does this issue occur when all extensions are disabled.*/gu, '')
.replace(/!?\[[^\]]*\]\([^)]*\)/gu, '')
.replace(/\s+/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)
}
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
}
export const loadLatestRelease = async (quality: 'stable' | 'insider'): Promise<Release | undefined> =>
(await axios.get(`https://vscode-update.azurewebsites.net/api/update/darwin/${quality}/latest`)).data
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$/, '')
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
}
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 }
} else if (getInput('errorLogIssueNumber')) {
return { ...context.repo, issue: +getRequiredInput('errorLogIssueNumber') }
} else {
return undefined
}
} catch (e) {
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)
return new OctoKitIssue(token, { owner: dest.owner, repo: dest.repo }, { number: dest.issue }, { readonly: !!getInput('readonly') })
.postComment(`
Workflow: ${context.workflow}
Error: ${message}
Issue: ${ping ? `${context.repo.owner}/${context.repo.repo}#` : ''}${context.issue.number}
Repo: ${context.repo.owner}/${context.repo.repo}
<!-- Context:
${JSON.stringify(context, null, 2)
.replace(/<!--/gu, '<@--')
.replace(/-->/gu, '--@>')
.replace(/\/|\\/gu, 'slash-')}
-->
`)
}
-1437
View File
File diff suppressed because it is too large Load Diff
-21
View File
@@ -1,21 +0,0 @@
{
"name": "vscode-cpptools-github-triage-actions",
"version": "1.0.0",
"description": "GitHub Actions used by VS Code cpptools for triaging issues",
"scripts": {
"build": "tsc",
"lint": "eslint -c .eslintrc --fix --ext .ts .",
"watch": "tsc --watch"
},
"keywords": [],
"author": "",
"dependencies": {
"@actions/core": "^1.2.6",
"@actions/github": "^2.1.1",
"axios": "^0.21.1"
},
"devDependencies": {
"eslint": "^6.8.0",
"typescript": "^3.8.3"
}
}
-18
View File
@@ -1,18 +0,0 @@
{
"compilerOptions": {
"target": "es2019",
"strict": true,
"module": "commonjs",
"moduleResolution": "node",
"removeComments": false,
"resolveJsonModule": true,
"sourceMap": true,
"lib": [
"es2020"
]
},
"exclude": [
"**/*.test.ts",
"**/vm-filesystem/**"
]
}
@@ -1,26 +0,0 @@
name: By Design closer - debugger
on:
schedule:
- cron: 10 11 * * * # Run at 11:10 AM UTC (3:10 AM PST, 4:10 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Stale Closer
uses: ./.github/actions/StaleCloser
with:
readonly: ${{ github.event.inputs.readonly }}
labels: by design,debugger
ignoreLabels: language service,internal
closeDays: 0
closeComment: "This issue has been closed automatically because it's labeled as 'by design'."
-28
View File
@@ -1,28 +0,0 @@
name: By Design Closer
on:
schedule:
- cron: 0 12 * * * # Run at 12:00 PM UTC (4:00 AM PST, 5:00 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Stale Closer
uses: ./.github/actions/StaleCloser
with:
readonly: ${{ github.event.inputs.readonly }}
labels: by design
ignoreLabels: debugger,Feature Request,more info needed,internal
closeDays: 60
closeComment: "This issue has been closed automatically because it's labeled as 'by design' and has not had recent activity."
pingDays: 80
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if it is no longer relevant."
-55
View File
@@ -1,55 +0,0 @@
name: CI (Linux)
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js 10.16.x
uses: actions/setup-node@v1
with:
node-version: 10.16.x
- name: Install Dependencies
run: yarn install
working-directory: Extension
- name: Generate hashes for runtime dependency packages
run: yarn run generatePackageHashes
working-directory: Extension
- name: Compile Sources
run: yarn run compile
working-directory: Extension
- name: Validate Extension/package.json
run: yarn run pr-check
working-directory: Extension
- name: Run Linter
run: yarn run lint
working-directory: Extension
- name: Compile Test Sources
run: yarn run pretest
working-directory: Extension
- name: Run unit tests
uses: GabrielBB/[email protected]
with:
run: yarn run unitTests
working-directory: Extension
- name: Run languageServer integration tests
uses: GabrielBB/[email protected]
with:
run: yarn run integrationTests
working-directory: Extension
-55
View File
@@ -1,55 +0,0 @@
name: CI (Mac)
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js 10.16.x
uses: actions/setup-node@v1
with:
node-version: 10.16.x
- name: Install Dependencies
run: yarn install
working-directory: Extension
- name: Generate hashes for runtime dependency packages
run: yarn run generatePackageHashes
working-directory: Extension
- name: Compile Sources
run: yarn run compile
working-directory: Extension
- name: Validate Extension/package.json
run: yarn run pr-check
working-directory: Extension
- name: Run Linter
run: yarn run lint
working-directory: Extension
- name: Compile Test Sources
run: yarn run pretest
working-directory: Extension
- name: Run unit tests
uses: GabrielBB/[email protected]
with:
run: yarn run unitTests
working-directory: Extension
- name: Run languageServer integration tests
uses: GabrielBB/[email protected]
with:
run: yarn run integrationTests
working-directory: Extension
-51
View File
@@ -1,51 +0,0 @@
name: CI (Windows)
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js 10.16.x
uses: actions/setup-node@v1
with:
node-version: 10.16.x
- name: Install Dependencies
run: yarn install
working-directory: Extension
- name: Generate hashes for runtime dependency packages
run: yarn run generatePackageHashes
working-directory: Extension
- name: Compile Sources
run: yarn run compile
working-directory: Extension
- name: Validate Extension/package.json
run: yarn run pr-check
working-directory: Extension
- name: Run Linter
run: yarn run lint
working-directory: Extension
- name: Compile Test Sources
run: yarn run pretest
working-directory: Extension
- name: Run unit tests
run: yarn run unitTests
working-directory: Extension
- name: Run languageServer integration tests
run: yarn run integrationTests
working-directory: Extension
-28
View File
@@ -1,28 +0,0 @@
name: Duplicate Closer
on:
schedule:
- cron: 10 12 * * * # Run at 12:10 PM UTC (4:10 AM PST, 5:10 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Stale Closer
uses: ./.github/actions/StaleCloser
with:
readonly: ${{ github.event.inputs.readonly }}
labels: duplicate
ignoreLabels: debugger,Feature Request,more info needed,by design,internal
closeDays: 60
closeComment: "This issue has been closed automatically because it's labeled as a 'duplicate' and has not had recent activity."
pingDays: 80
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if it is no longer relevant."
@@ -1,26 +0,0 @@
name: External closer - debugger
on:
schedule:
- cron: 10 11 * * * # Run at 11:10 AM UTC (3:10 AM PST, 4:10 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Stale Closer
uses: ./.github/actions/StaleCloser
with:
readonly: ${{ github.event.inputs.readonly }}
labels: external,debugger
ignoreLabels: language service,internal
closeDays: 0
closeComment: "This issue has been closed automatically because it's labeled as 'external'."
@@ -1,30 +0,0 @@
name: Feature Request Closer (no milestone)
on:
schedule:
- cron: 50 11 * * * # Run at 11:50 AM UTC (3:50 AM PST, 4:50 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Stale Closer
uses: ./.github/actions/StaleCloser
with:
readonly: ${{ github.event.inputs.readonly }}
labels: Feature Request
ignoreLabels: debugger,internal
addLabels: more votes needed
closeDays: 60
maximumVotes: 2
closeComment: "This feature request is being closed due to insufficient upvotes. When enough upvotes are received, this issue will be eligible for our backlog."
setMilestoneId: 30
ignoreMilestoneNames: "*"
@@ -1,30 +0,0 @@
name: Feature Request Closer (Triage)
on:
schedule:
- cron: 40 11 * * * # Run at 11:40 AM UTC (3:40 AM PST, 4:40 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Stale Closer
uses: ./.github/actions/StaleCloser
with:
readonly: ${{ github.event.inputs.readonly }}
labels: Feature Request
ignoreLabels: debugger,internal
addLabels: more votes needed
closeDays: 60
maximumVotes: 2
closeComment: "This feature request is being closed due to insufficient upvotes. When enough upvotes are received, this issue will be eligible for our backlog."
milestoneName: Triage
milestoneId: 30
@@ -1,31 +0,0 @@
name: Feature Request Reopener
on:
schedule:
- cron: 20 12 * * * # Run at 12:20 PM UTC (4:20 AM PST, 5:20 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Run Reopener
uses: ./.github/actions/Reopener
with:
readonly: ${{ github.event.inputs.readonly }}
alsoApplyToOpenIssues: true
reopenComment: This feature request has received enough votes to be added to our backlog.
labels: Feature Request
minimumVotes: 3
ignoreLabels: debugger,internal
milestoneId: 30
milestoneName: Triage
setMilestoneId: 28
removeLabels: more votes needed
@@ -1,26 +0,0 @@
name: Investigate closer - debugger
on:
schedule:
- cron: 10 11 * * * # Run at 11:10 AM UTC (3:10 AM PST, 4:10 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Stale Closer
uses: ./.github/actions/StaleCloser
with:
readonly: ${{ github.event.inputs.readonly }}
labels: investigate,debugger
ignoreLabels: language service,internal
closeDays: 180
closeComment: "This issue has been closed automatically because it has not had recent activity."
@@ -1,26 +0,0 @@
name: Investigate Costing closer - debugger
on:
schedule:
- cron: 10 11 * * * # Run at 11:10 AM UTC (3:10 AM PST, 4:10 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Stale Closer
uses: ./.github/actions/StaleCloser
with:
readonly: ${{ github.event.inputs.readonly }}
labels: "investigate: costing,debugger"
ignoreLabels: language service,internal
closeDays: 180
closeComment: "This issue has been closed automatically because it has not had recent activity."
-25
View File
@@ -1,25 +0,0 @@
name: Locker
on:
schedule:
- cron: 30 11 * * * # Run at 11:30 AM UTC (3:30 AM PST, 4:30 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Run Locker
uses: ./.github/actions/Locker
with:
readonly: ${{ github.event.inputs.readonly }}
daysSinceClose: 45
daysSinceUpdate: 3
ignoreLabels: more votes needed,debugger,internal
@@ -1,29 +0,0 @@
name: More Info Needed Closer - debugger
on:
schedule:
- cron: 10 11 * * * # Run at 11:10 AM UTC (3:10 AM PST, 4:10 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Stale Closer
uses: ./.github/actions/StaleCloser
with:
readonly: ${{ github.event.inputs.readonly }}
labels: more info needed,debugger
ignoreLabels: language service,internal
involves: wardengnaw,pieandcakes,calgagi
closeDays: 14
closeComment: "This issue has been closed automatically because it needs more information and has not had recent activity."
pingDays: 7
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if the problem no longer exists, or adding more information."
@@ -1,28 +0,0 @@
name: More Info Needed Closer
on:
schedule:
- cron: 10 11 * * * # Run at 11:10 AM UTC (3:10 AM PST, 4:10 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Stale Closer
uses: ./.github/actions/StaleCloser
with:
readonly: ${{ github.event.inputs.readonly }}
labels: more info needed
ignoreLabels: debugger,internal
closeDays: 60
closeComment: "This issue has been closed automatically because it needs more information and has not had recent activity."
pingDays: 80
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if the problem no longer exists, or adding more information."
@@ -1,29 +0,0 @@
name: Question Closer - debugger
on:
schedule:
- cron: 20 11 * * * # Run at 11:20 AM UTC (3:20 AM PST, 4:20 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Stale Closer
uses: ./.github/actions/StaleCloser
with:
readonly: ${{ github.event.inputs.readonly }}
labels: question,debugger
ignoreLabels: language service,internal
involves: wardengnaw,pieandcakes,calgagi
closeDays: 14
closeComment: "This issue has been closed automatically because it's labeled as a 'question' and has not had recent activity."
pingDays: 7
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if the question has been answered."
-28
View File
@@ -1,28 +0,0 @@
name: Question Closer
on:
schedule:
- cron: 20 11 * * * # Run at 11:20 AM UTC (3:20 AM PST, 4:20 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Stale Closer
uses: ./.github/actions/StaleCloser
with:
readonly: ${{ github.event.inputs.readonly }}
labels: question
ignoreLabels: debugger,internal
closeDays: 60
closeComment: "This issue has been closed automatically because it's labeled as a 'question' and has not had recent activity."
pingDays: 80
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if the question has been answered."
+1 -1
View File
@@ -6,7 +6,7 @@ variables:
llvm_additional_parameters: "-DLLDB_RELOCATABLE_PYTHON=1 -DLLDB_INCLUDE_TESTS=OFF -DLLDB_BUILD_FRAMEWORK=1"
# TODO: fix lldb_mi_repo and lldb_mi_branch (https://github.com/lldb-tools/lldb-mi/pull/37 and https://github.com/lldb-tools/lldb-mi/pull/39)
lldb_mi_repo: https://github.com/WardenGnaw/lldb-mi # TODO: Change to lldb-tools
lldb_mi_branch: release/cpptools # TODO: Change to main
lldb_mi_branch: release/cpptools # TODO: Change to master
lldb_mi_additional_parameters: "-DUSE_LLDB_FRAMEWORK=1"
jobs:
+2 -2
View File
@@ -6,14 +6,14 @@
* File an [issue](https://github.com/Microsoft/vscode-cpptools/issues) and a [pull request](https://github.com/Microsoft/vscode-cpptools/pulls) with the change and we will review it.
* If the change affects functionality, add a line describing the change to [**CHANGELOG.md**](Extension/CHANGELOG.md).
* Try and add a test in [**test/extension.test.ts**](Extension/test/unitTests/extension.test.ts).
* Run tests via opening the [**Extension**](https://github.com/Microsoft/vscode-cpptools/tree/main/Extension) folder in Visual Studio Code, selecting the "Launch Tests" configuration in the Debug pane, and choosing "Start Debugging".
* Run tests via opening the [**Extension**](https://github.com/Microsoft/vscode-cpptools/tree/master/Extension) folder in Visual Studio Code, selecting the "Launch Tests" configuration in the Debug pane, and choosing "Start Debugging".
## About the Code
* Execution starts in the `activate` method in [**main.ts**](Extension/src/main.ts).
* `processRuntimeDependencies` handles the downloading and installation of the OS-dependent files. Downloading code exists in [**packageManager.ts**](Extension/src/packageManager.ts).
* `downloadCpptoolsJsonPkg` handles the **cpptools.json**, which can be used to enable changes to occur mid-update, such as turning the `intelliSenseEngine` to `"Default"` for a certain percentage of users.
* The debugger code is in the [**Debugger**](https://github.com/Microsoft/vscode-cpptools/tree/main/Extension/src/Debugger) folder.
* The debugger code is in the [**Debugger**](https://github.com/Microsoft/vscode-cpptools/tree/master/Extension/src/Debugger) folder.
* [**LanguageServer/client.ts**](Extension/src/LanguageServer/client.ts) handles various language server functionality.
* [**LanguageServer/configurations.ts**](Extension/src/LanguageServer/configurations.ts) handles functionality related to **c_cpp_properties.json**.
* [**telemetry.ts**](Extension/src/telemetry.ts): Telemetry data gets sent to either `logLanguageServerEvent` or `logDebuggerEvent`.
+1 -1
View File
@@ -1,4 +1,4 @@
*.js
gulpfile.js
test/**/index.ts
test/**/runTest.ts
tools/prepublish.js
+1 -1
View File
@@ -71,7 +71,7 @@ module.exports = {
"no-fallthrough": "error",
"no-invalid-this": "error",
"no-irregular-whitespace": "error",
"no-multiple-empty-lines": ["error", { "max": 1, "maxEOF": 1, "maxBOF": 0}],
"no-multiple-empty-lines": "error",
"no-new-wrappers": "error",
"no-redeclare": "error",
"no-return-await": "error",
-1
View File
@@ -12,7 +12,6 @@ LLVM
bin/cpptools*
bin/*.dll
bin/.vs
bin/LICENSE.txt
# ignore lock files
install.lock
-3
View File
@@ -41,6 +41,3 @@ translations_auto_pr.js
# ignore i18n language files
i18n/**
# ignore node_modules
node_modules/
+14 -199
View File
@@ -1,216 +1,33 @@
# C/C++ for Visual Studio Code Change Log
## Version 1.2.0-insiders2: January 20, 2021
### Enhancement
* Add new "console" launch config for cppvsdbg. [PR #6794](https://github.com/microsoft/vscode-cpptools/pull/6794)
## Version 0.30.0-insiders2: August 11, 2020
### Bug Fixes
* Fix autocomplete not working with `for` loop variables with C code. [#2946](https://github.com/microsoft/vscode-cpptools/issues/2946)
* Fix an entry not found error for files in `compile_commands.json` that didn't initially exist. [#6311](https://github.com/microsoft/vscode-cpptools/issues/6311)
* Fix IntelliSense errors with C++20 std::ranges in gcc/clang modes. [#6342](https://github.com/microsoft/vscode-cpptools/issues/6342)
* Fix `compile_commands.json` not working correctly for `*.C` files. [#6497](https://github.com/microsoft/vscode-cpptools/issues/6497)
* Fix IntelliSense errors when "module" is used as a variable name with C++20. [#6719](https://github.com/microsoft/vscode-cpptools/issues/6719)
* Fix a runtime failure on macOS 10.13 or older. [#6787](https://github.com/microsoft/vscode-cpptools/issues/6787)
* Fix `Go to Symbol in Workspace`. [#6793](https://github.com/microsoft/vscode-cpptools/issues/6793)
* Fix vcFormat setting default values. [#5907](https://github.com/microsoft/vscode-cpptools/issues/5907)
* Fix vcFormat formatting causing multi-byte character document corruption. [#5914](https://github.com/microsoft/vscode-cpptools/issues/5914)
* Fix an IntelliSense crash (regression) when using the IntelliSense cache with a standalone header. [#5923](https://github.com/microsoft/vscode-cpptools/issues/5923)
* Change `clangFormat` and `Default` formatting modes that use the `Visual Studio` style (or fallback style) to use the clang-format implementation instead of vcFormat.
* Restore fallback to the base configuration if a custom configuration provider does not provide a configuration for a file and does not provide compiler info in a custom browse configuration.
## Version 1.2.0-insiders: January 14, 2021
## Version 0.30.0-insiders: August 4, 2020
### New Features
* Add support for cross-compilation configurations for IntelliSense. For example, `intelliSenseMode` value "linux-gcc-x64" could be used on a Mac host machine. [#1083](https://github.com/microsoft/vscode-cpptools/issues/1083)
* Add `C_Cpp.addNodeAddonIncludePaths` setting to add include paths from `nan` and `node-addon-api` when they're dependencies. [#4854](https://github.com/microsoft/vscode-cpptools/issues/4854)
* Bruce MacNaughton (@bmacnaughton) [PR #67331](https://github.com/microsoft/vscode-cpptools/pull/6731)
### Enhancements
* Show configuration squiggles when configurations with the same name exist. [#3412](https://github.com/microsoft/vscode-cpptools/issues/3412)
* Add command `Generate EditorConfig contents from VC Format settings`. [#6018](https://github.com/microsoft/vscode-cpptools/issues/6018)
* Update to clang-format 11.1. [#6326](https://github.com/microsoft/vscode-cpptools/issues/6326)
* Add clang-format built for Windows ARM64. [#6494](https://github.com/microsoft/vscode-cpptools/issues/6494)
* Add support for the `/await` flag with msvc IntelliSense. [#6596](https://github.com/microsoft/vscode-cpptools/issues/6596)
* Increase document/workspace symbol limit from 1000 to 10000. [#6766](https://github.com/microsoft/vscode-cpptools/issues/6766)
### Bug Fixes
* Fix handling of `--sysroot` and `-isysroot` with `compileCommands`. [#1575](https://github.com/microsoft/vscode-cpptools/issues/1575)
* Fix IntelliSense not updating if a non-opened header is changed. [#1780](https://github.com/microsoft/vscode-cpptools/issues/1780)
* Fix IntelliSense involving overflow for unsigned int values. [#2202](https://github.com/microsoft/vscode-cpptools/issues/2202)
* Fix IntelliSense not switching the language mode after changing C versus C++ `files.associations`. [#2557](https://github.com/microsoft/vscode-cpptools/issues/2557)
* Fix Switch Header/Source not switching to an existing file in another column if it's not visible. [#2667](https://github.com/microsoft/vscode-cpptools/issues/2667), [#6749](https://github.com/microsoft/vscode-cpptools/issues/6749)
* Fix `#include` completion not sorting _ last. [#3465](https://github.com/microsoft/vscode-cpptools/issues/3465)
* Fix completion not working for templates in gcc/clang mode. [#3501](https://github.com/microsoft/vscode-cpptools/issues/3501)
* Fix crash when certain JavaScript files are parsed as C++. [#3858](https://github.com/microsoft/vscode-cpptools/issues/3858)
* Fix IntelliSense squiggle about not being able to assign to an object of its own type. [#3883](https://github.com/microsoft/vscode-cpptools/issues/3883)
* Fix hover and Find All References for template function overloads. [#4044](https://github.com/microsoft/vscode-cpptools/issues/4044), [#4249](https://github.com/microsoft/vscode-cpptools/issues/4249)
* Fix the Outline view for nested namespaces. [#4456](https://github.com/microsoft/vscode-cpptools/issues/4456)
* Fix some IntelliSense parsing errors. [#4595](https://github.com/microsoft/vscode-cpptools/issues/4595), [#6362](https://github.com/microsoft/vscode-cpptools/issues/6362), [#6685](https://github.com/microsoft/vscode-cpptools/issues/6685)
* Fix Outline view with`"**/.*"` in `files.exclude`. [#4602](https://github.com/microsoft/vscode-cpptools/issues/4602)
* Fix the Outline view for nested structs/classes. [#4781](https://github.com/microsoft/vscode-cpptools/issues/4871)
* Fix `files.exclude` not applying to watched files handlers. [#5141](https://github.com/microsoft/vscode-cpptools/issues/5141)
* Fix code folding incorrectly matching an inactive `}`. [#5429](https://github.com/microsoft/vscode-cpptools/issues/5429)
* Fix IntelliSense Clang version for Apple Clang. [#5500](https://github.com/microsoft/vscode-cpptools/issues/5500)
* Fix `#include` completion to include results for non-standard header file extensions. [#5698](https://github.com/microsoft/vscode-cpptools/issues/5698)
* Fix clang-format failing due to missing libtinfo5 on Linux ARM/ARM64. [#6774](https://github.com/microsoft/vscode-cpptools/pull/6774)
* Automatically configure to use a custom configuration provider if available and no other configuration exists. [#6150](https://github.com/microsoft/vscode-cpptools/issues/6150)
* Fix not being able to attach to cpptools on Mac (to get crash call stacks). [#6151](https://github.com/microsoft/vscode-cpptools/issues/6151)
* Fix IntelliSense crashing with cl.exe with C++20 and span. [#6251](https://github.com/microsoft/vscode-cpptools/issues/6251)
* Stop querying unsupported compilers. [#6314](https://github.com/microsoft/vscode-cpptools/issues/6314)
* Add a workaround for a missing compiler path for the `compile_commands.json` generated by Unreal Engine. [#6358](https://github.com/microsoft/vscode-cpptools/issues/6358)
* Fix IntelliSense crash with coroutines. [#6363](https://github.com/microsoft/vscode-cpptools/issues/6363)
* Add localized strings for `cppbuild` tasks. [#6436](https://github.com/microsoft/vscode-cpptools/issues/6436)
* Fix IntelliSense squiggle with C++20 non-type templates. [#6462](https://github.com/microsoft/vscode-cpptools/issues/6462)
* Fix `compilerArgs` processing with `-MF` and other multi-arg arguments. [#6478](https://github.com/microsoft/vscode-cpptools/issues/6478)
* Fix bug causing `Unable to read process.env.HOME`. [#6468](https://github.com/microsoft/vscode-cpptools/issues/6468)
* Fix gcc problem matcher when the column is missing.
* @guntern [PR #6490](https://github.com/microsoft/vscode-cpptools/pull/6490)
* Disable Insiders prompt for Codespaces. [#6491](https://github.com/microsoft/vscode-cpptools/issues/6491)
* Show an error message when gdb can't be found when generating a `launch.json` (instead of using an invalid `miDebuggerPath`). [#6511](https://github.com/microsoft/vscode-cpptools/issues/6511)
* Fix IntelliSense crash with a parenthesized type followed by an initializer list. [#6554](https://github.com/microsoft/vscode-cpptools/issues/6554), [#6624](https://github.com/microsoft/vscode-cpptools/issues/6624)
* Fix IntelliSense updating after pasting multi-line code. [#6565](https://github.com/microsoft/vscode-cpptools/issues/6565)
* Use "method" instead of "member" for semantic tokens. [#6569](https://github.com/microsoft/vscode-cpptools/issues/6569)
* Fix `__builtin_coro_*` methods not recognized by IntelliSense in gcc mode with `-fcoroutines`. [#6575](https://github.com/microsoft/vscode-cpptools/issues/6575)
* Fix the `else` snippet interfering with entering one line `else` statements. [#6582](https://github.com/microsoft/vscode-cpptools/issues/6582)
* Fix hover doc comments not working if there's a selection. [#6583](https://github.com/microsoft/vscode-cpptools/issues/6583)
* Stop showing an "unknown error" message after canceling the creation of a `launch.json`. [#6608](https://github.com/microsoft/vscode-cpptools/issues/6608)
* Fix the executed command not appearing with cppbuild tasks. [#6647](https://github.com/microsoft/vscode-cpptools/issues/6647)
* Fix `_Debug` not being defined when `/MDd` or `/MTd` are used. [#6690](https://github.com/microsoft/vscode-cpptools/issues/6690)
* Fix infinite IntelliSense processing when C++20, gcc mode, and `-fcoroutines` and used. [#6709](https://github.com/microsoft/vscode-cpptools/issues/6709)
* Allow the extension to run on M1 Macs. [#6713](https://github.com/microsoft/vscode-cpptools/issues/6713)
* Xiangyi Meng (@xymeng16) [PR #6601](https://github.com/microsoft/vscode-cpptools/pull/6601)
* Fix `.` to `->` completion with multiple cursors. [#6720](https://github.com/microsoft/vscode-cpptools/issues/6720)
* Fix bug with configured cl.exe path not being used to choose appropriate system include paths, or cl.exe not being used at all if it's not also installed via the VS Installer. [#6746](https://github.com/microsoft/vscode-cpptools/issues/6746)
* Fix bugs with parsing of quotes and escape sequences in compiler args. [#6761](https://github.com/microsoft/vscode-cpptools/issues/6761)
* Fix the configuration not showing in the status bar when `c_cpp_properties.json` is active. [#6765](https://github.com/microsoft/vscode-cpptools/issues/6765)
* Fix "D" command line warnings not appearing with cl.exe cppbuild build tasks.
* Fix cl.exe cppbuild tasks when `/nologo` is used (and make /nologo a default arg).
* Fix a cpptools crash and multiple deadlocks.
## Version 1.1.3: December 3, 2020
### Bug Fixes
* Disable the "join Insiders" prompt for Linux CodeSpaces. [#6491](https://github.com/microsoft/vscode-cpptools/issues/6491)
* Fix "shell" tasks giving error "Cannot read property `includes` of undefined". [#6538](https://github.com/microsoft/vscode-cpptools/issues/6538)
* Fix various task variables not getting resolved with `cppbuild` tasks. [#6538](https://github.com/microsoft/vscode-cpptools/issues/6538)
* Fix warnings not appearing with `cppbuild` tasks. [#6556](https://github.com/microsoft/vscode-cpptools/issues/6556)
* Fix endless CPU/memory usage if the cpptools process crashes. [#6603](https://github.com/microsoft/vscode-cpptools/issues/6603)
* Fix the default `cwd` for `cppbuild` tasks. [#6618](https://github.com/microsoft/vscode-cpptools/issues/6618)
## Version 1.1.2: November 17, 2020
### Bug Fix
* Fix resolution of `${fileDirname}` with `cppbuild` tasks. [#6386](https://github.com/microsoft/vscode-cpptools/issues/6386)
## Version 1.1.1: November 9, 2020
### Bug Fixes
* Fix cpptools binaries sometimes not getting installed on Windows. [#6453](https://github.com/microsoft/vscode-cpptools/issues/6453)
## Version 1.1.0: November 5, 2020
### New Features
* Add language server support for Windows ARM64 (no debugging yet). [#5583](https://github.com/microsoft/vscode-cpptools/issues/5583)
* [cppdbg] Debugger Protocol Updates:
* ReadMemoryRequest [PR MIEngine#1028](https://github.com/microsoft/MIEngine/pull/1028)
* ModulesRequest and ModuleEvent [PR MIEngine#1054](https://github.com/microsoft/MIEngine/pull/1054)
* [cppdbg] Support new SourceFileMap schema [PR #6319](https://github.com/microsoft/vscode-cpptools/pull/6319)
### Enhancements
* Add support to run c/cpp build tasks. [#3674](https://github.com/microsoft/vscode-cpptools/issues/3674), [#5270](https://github.com/microsoft/vscode-cpptools/issues/5270), [#5285](https://github.com/microsoft/vscode-cpptools/issues/5285)
* Tasks: Configure Task
* Tasks: Run Build Task
* C/C++: Build and debug active file.
* Add logging around compiler querying, and the "C/C++ Configuration Warnings" output channel. [#5259](https://github.com/microsoft/vscode-cpptools/issues/5259)
* Add compile commands info to Log Diagnostics. [#5761](https://github.com/microsoft/vscode-cpptools/issues/5761)
* Add `intelliSenseUpdateDelay` setting. [#6142](https://github.com/microsoft/vscode-cpptools/issues/6142)
* YuTengjing (@tjx666) [PR #6344](https://github.com/microsoft/vscode-cpptools/pull/6344)
* Enable support for specifying a compiler by only the filename if it's in the environment path. [#6179](https://github.com/microsoft/vscode-cpptools/issues/6179)
* Restart the IntelliSense process if its memory usage exceeds the `C_Cpp.intelliSenseMemoryLimit` setting. [#6230](https://github.com/microsoft/vscode-cpptools/issues/6230)
* [cppdbg] Stepping out of a function will display '$ReturnValue'.
* @Trass3r [PR MIEngine#1036](https://github.com/microsoft/MIEngine/pull/1036)
* [cppdbg] Support composite expressions in natvis ArrayItems
* @Trass3r [PR MIEngine#1044](https://github.com/microsoft/MIEngine/pull/1044)
* Add handling of the "-ansi" compiler arg when querying gcc/clang compilers.
* Add support for inferring the IntelliSenseMode based on the "--target" compiler arg.
* Add support for inferring the C standard based on new c11/c17 language standard args for cl.exe.
* Allow custom config providers to omit IntelliSenseMode and C/C++ language standard, enabling them to be inferred from the `compilerPath` and `compilerArgs`.
### Bug Fixes
* Change macOS Framework searching to only parse the "Current" framework folder when the "Headers" folder is not found. [#2046](https://github.com/microsoft/vscode-cpptools/issues/2046)
* Show the compiler path in the `Build and Debug Active File` dropdown. [#4278](https://github.com/microsoft/vscode-cpptools/issues/4278)
* Fix incorrect signature help active argument with multiple template parameters. [#4786](https://github.com/microsoft/vscode-cpptools/issues/4786)
* Fix bug with directories not getting created for browse.databaseFilename. [#5181](https://github.com/microsoft/vscode-cpptools/issues/5181)
* Allow the debug configuration to wait for the preLaunchTask to complete before continuing on and resolving environment variables or processes that may have been set in the 'tasks.json'. [#5287](https://github.com/microsoft/vscode-cpptools/issues/5287)
* Change the Windows SDK detection to require the shared, ucrt, and um folders. [#5817](https://github.com/microsoft/vscode-cpptools/issues/5817)
* Fix issues with IntelliSense for clang-cl.exe. [#6075](https://github.com/microsoft/vscode-cpptools/issues/6075)
* Fix "Comments are not permitted in JSON" error when `c_cpp_properties.json` is open but not active. [#6132](https://github.com/microsoft/vscode-cpptools/issues/6132)
* Rename the C language standard setting values from c18 and gnu18 to c17 and gnu17. [#6105](https://github.com/microsoft/vscode-cpptools/issues/6105)
* Add more IntelliSense support for std ranges, concepts, and modules exports (__cpp_lib_concepts is now enabled). [#6173](https://github.com/microsoft/vscode-cpptools/issues/6173)
* Add "-fnoblocks" when querying clang on Mac, as IntelliSense does not currently support blocks. [#6189](https://github.com/microsoft/vscode-cpptools/issues/6189)
* Fix clang-format on 32-bit Windows. [#6195](https://github.com/microsoft/vscode-cpptools/issues/6195)
* Fix incorrect formatting results when clang-format removes duplicate includes. [#6205](https://github.com/microsoft/vscode-cpptools/issues/6205)
* Fix a case where the main process could get stuck. [#6207](https://github.com/microsoft/vscode-cpptools/issues/6207)
* Fix C files being treated as C++ files with compile_commands.json. [#6279](https://github.com/microsoft/vscode-cpptools/issues/6279)
* 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. [6359](https://github.com/microsoft/vscode-cpptools/issues/6356)
* Fix multiroot 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)
* Fix the handling of various compiler arg pairs when querying compilers.
* Avoid parsing entries in compile_commands.json for file types that we do not support.
* Fixed an issue in which only C or C++ system headers were added to the browse path, rather than both.
* Fix issue causing some localized messages to be displayed incorrectly.
* Fixed issue with shipping an older version of vsdbg in offline packages.
### Other Contributions
* Refactoring provider classes.
* Abhishek Pal (@devabhishekpal) [PR #5998](https://github.com/microsoft/vscode-cpptools/pull/5998)
## Version 1.0.1: September 21, 2020
### Bug Fixes
* Fix "No IL available" IntelliSense error on Linux/macOS when `#error` directives are present in the source code. [#6009](https://github.com/microsoft/vscode-cpptools/issues/6009), [#6114](https://github.com/microsoft/vscode-cpptools/issues/6114)
* Fix issue on Windows with the language server not shutting down properly which causes the IntelliSense database to become corrupted. [PR #6141](https://github.com/microsoft/vscode-cpptools/issues/6141)
* Fix "No IL available" IntelliSense error when predefined macros are undefined. [#6147](https://github.com/microsoft/vscode-cpptools/issues/6147)
* Fix infinite loop IntelliSense regression. [#6166](https://github.com/microsoft/vscode-cpptools/issues/6166)
## Version 1.0.0: September 14, 2020
### New Features
* Support non-UTF-8 file encodings (GBK, UTF-16, etc.), excluding `files.autoGuessEncoding` support. [#414](https://github.com/microsoft/vscode-cpptools/issues/414)
* Support for running the extension on Linux ARM devices (armhf/armv7l and aarch64/arm64), using remoting. [#429](https://github.com/microsoft/vscode-cpptools/issues/429), [#2506](https://github.com/microsoft/vscode-cpptools/issues/2506)
* Support for running the extension on Linux ARM devices, using remoting (arm64/aarch64 not supported yet). [#429](https://github.com/microsoft/vscode-cpptools/issues/429)
* Add the `vcFormat` option to `C_Cpp.formatting` (with `C_Cpp.vcFormat.*` options) to enable VS-style formatting (instead of clang-format formatting). [#657](https://github.com/microsoft/vscode-cpptools/issues/657)
* Add support for vcFormat settings in `.editorconfig` files. [PR #5932](https://github.com/microsoft/vscode-cpptools/pull/5932)
### Enhancements
* Improve the download and installation progress bar. [#1961](https://github.com/microsoft/vscode-cpptools/issues/1961)
* Add error codes and the "C/C++" source to IntelliSense errors. [#2345](https://github.com/microsoft/vscode-cpptools/issues/2345)
* Add support for `/Zc:__cplusplus` in `compilerArgs` for cl.exe. [#2595](https://github.com/microsoft/vscode-cpptools/issues/2595)
* Search for `compilerPath` in the PATH environment variable. [#3078](https://github.com/microsoft/vscode-cpptools/issues/3078), [#5908](https://github.com/microsoft/vscode-cpptools/issues/5908)
* Validate crypto signatures of binaries we download. [#5268](https://github.com/microsoft/vscode-cpptools/issues/5268)
* Add link to the documentation in the configuration UI. [#5875](https://github.com/microsoft/vscode-cpptools/issues/5875)
* Abhishek Pal (@devabhishekpal) [PR #5991](https://github.com/microsoft/vscode-cpptools/pull/5991)
* Allow comments, trailing commas, etc. in `c_cpp_properties.json` [#5885](https://github.com/microsoft/vscode-cpptools/issues/5885)
* Prevent comments from being removed from json files when the extension modifies them.
* @dan-shaw [PR #5954](https://github.com/microsoft/vscode-cpptools/pull/5954)
* Add diagnostics on potentially conflicting recursive includes to `C/C++: Log Diagnostics`, i.e. if a workspace uses files with the same name as system headers. [#6009](https://github.com/microsoft/vscode-cpptools/issues/6009)
* Add workspace parsing diagnostics. [#6048](https://github.com/microsoft/vscode-cpptools/issues/6048)
* Add `wmain` snippet on Windows. [#6064](https://github.com/microsoft/vscode-cpptools/issues/6064)
* More C++20 support.
* Use `jsonc` parser to load `c_cpp_properties.json` to allow comments, trailing commas, etc. [#5885](https://github.com/microsoft/vscode-cpptools/issues/5885)
### Bug Fixes
* Fix member completion in C code after an operator is used in an expression. [#2184](https://github.com/microsoft/vscode-cpptools/issues/2184)
* Fix extension not creating `tasks.json` if the `.vscode` folder doesnt exist. [#4280](https://github.com/microsoft/vscode-cpptools/issues/4280)
* Fix installation of clang-format 10 with the online vsix. [#5194](https://github.com/microsoft/vscode-cpptools/issues/5194)
* Get the compiler type to determine if it's Clang when querying for default compiler so that the correct default `intelliSenseMode` is set. [#5352](https://github.com/microsoft/vscode-cpptools/issues/5352)
* Get the default language standard of the compiler and use that std version if no version is specified. [#5579](https://github.com/microsoft/vscode-cpptools/issues/5579)
* Fix `configuration.includePath` to only add the `defaultFolder` when the default `includePath` is set. [#5621](https://github.com/microsoft/vscode-cpptools/issues/5621)
* Fix an incorrect IntelliSense error squiggle. [#5783](https://github.com/microsoft/vscode-cpptools/issues/5783)
* Fix an IntelliSense crash when using C++20 on Linux. [#5727](https://github.com/microsoft/vscode-cpptools/issues/5727)
* 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 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)
* Fix compiler querying when relative paths are used in `compile_commands.json`. [#5848](https://github.com/microsoft/vscode-cpptools/issues/5848)
* Fix the compile commands compiler not being used if `C_Cpp.default.compilerPath` is set. [#5848](https://github.com/microsoft/vscode-cpptools/issues/5848)
* Fix Doxygen comment to escape markdown characters. [#5904](https://github.com/microsoft/vscode-cpptools/issues/5904)
* Remove keyword completion of C identifiers that are defined in headers and aren't keywords (e.g. `alignas`). [#6022](https://github.com/microsoft/vscode-cpptools/issues/6022)
* Fix error message with `Build and Debug Active File`. [#6071](https://github.com/microsoft/vscode-cpptools/issues/6071)
* Restore fallback to the base configuration if a custom configuration provider does not provide a configuration for a file and does not provide compiler info in a custom browse configuration.
* Fix compile commands compiler not being used if `C_Cpp.default.compilerPath` is set. [#5848](https://github.com/microsoft/vscode-cpptools/issues/5848)
* Fix a bug that could cause the extension to delay processing a newly opened file until any outstanding IntelliSense operations are complete, if using a custom configuration provider.
* Fix a bug with incorrect configuration of a file when using a custom configuration provider and no custom configuration is available for that file. This now falls back to the compiler info received from the configuration provider with the browse configuration.
* Fix a bug in which making a modification to `c_cpp_properties.json` could result in custom configurations for currently open files being discarded and not re-requested.
@@ -218,11 +35,9 @@
### Potentially Breaking Changes
* Settings `commentContinuationPatterns`, `enhancedColorization`, and `codeFolding` are no longer available in per-Folder settings (only Workspace or higher settings). [PR #5830](https://github.com/microsoft/vscode-cpptools/pull/5830)
* Fix compile command arguments not being used when `compilerPath` is set (so the compile command arguments need to be compatible now).
* Default formatting results may be different if the "Visual Studio" style is used -- use the "Emulated Visual Studio" style to get the previous behavior. For example, see [#5901](https://github.com/microsoft/vscode-cpptools/issues/5901)
* If a non-matching `intelliSenseMode` was being used, such as clang-x64 with a gcc ARM compiler, then we may auto-fix it internally, which may cause changes to IntelliSense behavior.
### Known Issues
* Using `clang-format` on ARM may require installing libtinfo5. [#5958](https://github.com/microsoft/vscode-cpptools/issues/5958)
## Version 0.29.0: July 15, 2020
### New Features
* Add Doxygen comment support (to tooltip display of hover, completion, and signature help). [#658](https://github.com/microsoft/vscode-cpptools/issues/658)
@@ -298,7 +113,7 @@
## Version 0.28.0: May 12, 2020
### New Features
* Add C/C++ language-aware code folding. [#407](https://github.com/microsoft/vscode-cpptools/issues/407)
* Add GNU (and C17) language standard options. [#2782](https://github.com/microsoft/vscode-cpptools/issues/2782)
* Add GNU (and C18) language standard options. [#2782](https://github.com/microsoft/vscode-cpptools/issues/2782)
* Add ARM and ARM64 IntelliSense modes. [#4271](https://github.com/microsoft/vscode-cpptools/issues/4271), [PR #5250](https://github.com/microsoft/vscode-cpptools/pull/5250)
### Enhancements
@@ -539,7 +354,7 @@
## Version 0.24.0: July 3, 2019
### New Features
* Semantic colorization [Documentation](https://github.com/microsoft/vscode-cpptools/blob/main/Documentation/LanguageServer/colorization.md) [#230](https://github.com/microsoft/vscode-cpptools/issues/230)
* Semantic colorization [Documentation](https://github.com/microsoft/vscode-cpptools/blob/master/Documentation/LanguageServer/colorization.md) [#230](https://github.com/microsoft/vscode-cpptools/issues/230)
* Add `Rescan Workspace` command. [microsoft/vscode-cpptools-api#11](https://github.com/microsoft/vscode-cpptools-api/issues/11)
### Enhancements
+203
View File
@@ -0,0 +1,203 @@
MICROSOFT PRE-RELEASE SOFTWARE LICENSE TERMS
MICROSOFT C/C++ EXTENSION FOR VISUAL STUDIO CODE
These license terms are an agreement between Microsoft Corporation (or
based on where you live, one of its affiliates) and you. They apply to
the pre-release software named above. The terms also apply to any
Microsoft services or updates for the software, except to the extent
those have additional terms.
IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE RIGHTS BELOW.
1. INSTALLATION AND USE RIGHTS. You may only use the C/C++ Extension
for Visual Studio Code with Visual Studio Code, Visual Studio or
Xamarin Studio software to help you develop and test your
applications.
2. TERMS FOR SPECIFIC COMPONENTS
a. Third Party Components. The software may include third party
components with separate legal notices or governed by other
agreements, as may be described in the ThirdPartyNotices file(s)
accompanying the software.
b. Package Managers. The software may include package managers, like
Nuget, that give you the option to download other Microsoft and third
party software packages to use with your application. Those packages
are under their own licenses, and not this agreement. Microsoft does
not distribute, license or provide any warranties for any of the third
party packages.
3. DATA.
a. Data Collection. The software may collect information about you and
your use of the software, and send that to Microsoft. Microsoft may
use this information to provide services and improve our products and
services. You may opt-out of many of these scenarios, but not all, as
described in the product documentation. There are also some features
in the software that may enable you and Microsoft to collect data from
users of your applications. If you use these features, you must comply
with applicable law, including providing appropriate notices to users
of your applications together with a copy of Microsofts privacy
statement. Our privacy statement is located at
https://go.microsoft.com/fwlink/?LinkID=824704. You can learn more
about data collection and use in the help documentation and our
privacy statement. Your use of the software operates as your consent
to these practices.
b. Processing of Personal Data. To the extent Microsoft is a processor
or subprocessor of personal data in connection with the software,
Microsoft makes the commitments in the European Union General Data
Protection Regulation Terms of the Online Services Terms to all
customers effective May 25, 2018, at
http://go.microsoft.com/?linkid=9840733.
4. PRE-RELEASE SOFTWARE. This software is a pre-release version. It
may not work the way a final version of the software will. We may
change it for the final, commercial version. We also may not release a
commercial version.
5. FEEDBACK. If you give feedback about the software to Microsoft, you
give to Microsoft, without charge, the right to use, share and
commercialize your feedback in any way and for any purpose. You will
not give feedback that is subject to a license that requires Microsoft
to license its software or documentation to third parties because we
include your feedback in them. These rights survive this agreement.
6. SCOPE OF LICENSE. The software is licensed, not sold. This
agreement only gives you some rights to use the software. Microsoft
reserves all other rights. Unless applicable law gives you more rights
despite this limitation, you may use the software only as expressly
permitted in this agreement. In doing so, you must comply with any
technical limitations in the software that only allow you to use it in
certain ways. You may not
* work around any technical limitations in the software;
* reverse engineer, decompile or disassemble the software, or attempt
to derive the source code for the software, except and to the extent
required by third party licensing terms governing use of certain open
source components that may be included with the software;
* remove, minimize, block or modify any notices of Microsoft or its
suppliers in the software;
* use the software in any way that is against the law; or
* share, publish, rent, or lease the software, or provide the software
as a stand-alone hosted solution for others to use.
7. EXPORT RESTRICTIONS. You must comply with all domestic and
international export laws and regulations that apply to the software,
which include restrictions on destinations, end users and end use.
For further information on export restrictions, visit
(aka.ms/exporting).
8. SUPPORT SERVICES. Because this software is “as is,” we may not
provide support services for it.
9. ENTIRE AGREEMENT. This agreement, and the terms for supplements,
updates, Internet-based services and support services that you use,
are the entire agreement for the software and support services.
10. APPLICABLE LAW. If you acquired the software in the United
States, Washington law applies to interpretation of and claims for
breach of this agreement, and the laws of the state where you live
apply to all other claims. If you acquired the software in any other
country, its laws apply.
11. CONSUMER RIGHTS; REGIONAL VARIATIONS. This agreement describes
certain legal rights. You may have other rights, including consumer
rights, under the laws of your state or country. Separate and apart
from your relationship with Microsoft, you may also have rights with
respect to the party from which you acquired the software. This
agreement does not change those other rights if the laws of your state
or country do not permit it to do so. For example, if you acquired the
software in one of the below regions, or mandatory country law
applies, then the following provisions apply to you:
a. Australia. You have statutory guarantees under the Australian
Consumer Law and nothing in this agreement is intended to affect those
rights.
b. Canada. If you acquired this software in Canada, you may stop
receiving updates by turning off the automatic update feature,
disconnecting your device from the Internet (if and when you re-
connect to the Internet, however, the software will resume checking
for and installing updates), or uninstalling the software. The product
documentation, if any, may also specify how to turn off updates for
your specific device or software.
c. Germany and Austria.
(i) Warranty. The properly licensed software will perform
substantially as described in any Microsoft materials that accompany
the software. However, Microsoft gives no contractual guarantee in
relation to the licensed software.
(ii) Limitation of Liability. In case of intentional conduct, gross
negligence, claims based on the Product Liability Act, as well as, in
case of death or personal or physical injury, Microsoft is liable
according to the statutory law.
Subject to the foregoing clause (ii), Microsoft will only be liable
for slight negligence if Microsoft is in breach of such material
contractual obligations, the fulfillment of which facilitate the due
performance of this agreement, the breach of which would endanger the
purpose of this agreement and the compliance with which a party may
constantly trust in (so-called "cardinal obligations"). In other cases
of slight negligence, Microsoft will not be liable for slight
negligence.
12. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS-IS.” YOU
BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES,
GUARANTEES OR CONDITIONS. TO THE EXTENT PERMITTED UNDER YOUR LOCAL
LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
13. LIMITATION ON AND EXCLUSION OF DAMAGES. YOU CAN RECOVER FROM
MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU
CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST
PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES.
This limitation applies to (a) anything related to the software,
services, content (including code) on third party Internet sites, or
third party applications; and (b) claims for breach of contract,
breach of warranty, guarantee or condition, strict liability,
negligence, or other tort to the extent permitted by applicable law.
It also applies even if Microsoft knew or should have known about the
possibility of the damages. The above limitation or exclusion may not
apply to you because your country may not allow the exclusion or
limitation of incidental, consequential or other damages.
Please note: As this software is distributed in Quebec, Canada, some
of the clauses in this agreement are provided below in French.
Remarque : Ce logiciel étant distribué au Québec, Canada, certaines
des clauses dans ce contrat sont fournies ci-dessous en français.
EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert
« tel quel ». Toute utilisation de ce logiciel est à votre seule
risque et péril. Microsoft naccorde aucune autre garantie
expresse. Vous pouvez bénéficier de droits additionnels en vertu du
droit local sur la protection des consommateurs, que ce contrat ne
peut modifier. La ou elles sont permises par le droit locale, les
garanties implicites de qualité marchande, dadéquation à un
usage particulier et dabsence de contrefaçon sont exclues.
LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ
POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses
fournisseurs une indemnisation en cas de dommages directs uniquement
à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune
indemnisation pour les autres dommages, y compris les dommages
spéciaux, indirects ou accessoires et pertes de bénéfices.
Cette limitation concerne:
* tout ce qui est relié au logiciel, aux services ou au contenu (y
compris le code) figurant sur des sites Internet tiers ou dans des
programmes tiers ; et
* les réclamations au titre de violation de contrat ou de garantie,
ou au titre de responsabilité stricte, de négligence ou dune
autre faute dans la limite autorisée par la loi en vigueur.
Elle sapplique également, même si Microsoft connaissait ou
devrait connaître l’éventualité dun tel dommage. Si votre pays
nautorise pas lexclusion ou la limitation de responsabilité
pour les dommages indirects, accessoires ou de quelque nature que ce
soit, il se peut que la limitation ou lexclusion ci-dessus ne
sappliquera pas à votre égard.
EFFET JURIDIQUE. Le présent contrat décrit certains droits
juridiques. Vous pourriez avoir dautres droits prévus par les lois
de votre pays. Le présent contrat ne modifie pas les droits que vous
confèrent les lois de votre pays si celles-ci ne le permettent pas.
+3 -4
View File
@@ -1,10 +1,10 @@
# C/C++ for Visual Studio Code
#### [Repository](https://github.com/microsoft/vscode-cpptools)&nbsp;&nbsp;|&nbsp;&nbsp;[Issues](https://github.com/microsoft/vscode-cpptools/issues)&nbsp;&nbsp;|&nbsp;&nbsp;[Documentation](https://code.visualstudio.com/docs/languages/cpp)&nbsp;&nbsp;|&nbsp;&nbsp;[Code Samples](https://github.com/microsoft/vscode-cpptools/tree/main/Code%20Samples)&nbsp;&nbsp;|&nbsp;&nbsp;[Offline Installers](https://github.com/microsoft/vscode-cpptools/releases)
#### [Repository](https://github.com/microsoft/vscode-cpptools)&nbsp;&nbsp;|&nbsp;&nbsp;[Issues](https://github.com/microsoft/vscode-cpptools/issues)&nbsp;&nbsp;|&nbsp;&nbsp;[Documentation](https://code.visualstudio.com/docs/languages/cpp)&nbsp;&nbsp;|&nbsp;&nbsp;[Code Samples](https://github.com/microsoft/vscode-cpptools/tree/master/Code%20Samples)&nbsp;&nbsp;|&nbsp;&nbsp;[Offline Installers](https://github.com/microsoft/vscode-cpptools/releases)
[![Badge](https://aka.ms/vsls-badge)](https://aka.ms/vsls)
The C/C++ extension adds language support for C/C++ to Visual Studio Code, including features such as IntelliSense and debugging.
This preview release of the C/C++ extension adds language support for C/C++ to Visual Studio Code, including features such as IntelliSense and debugging.
## Overview and tutorials
* [C/C++ extension overview](https://code.visualstudio.com/docs/languages/cpp)
@@ -52,11 +52,10 @@ The extension has platform-specific binary dependencies, therefore installation
Package | Platform
:--- | :---
`cpptools-linux.vsix` | Linux 64-bit
`cpptools-linux-armhf.vsix` | Linux ARM 32-bit
`cpptools-linux-armhf.vsix` | Linux ARM
`cpptools-linux-aarch64.vsix` | Linux ARM 64-bit
`cpptools-osx.vsix` | macOS
`cpptools-win32.vsix` | Windows 64-bit & 32-bit
`cpptools-win-arm64.vsix` | Windows ARM64
`cpptools-linux32.vsix` | Linux 32-bit ([available up to version 0.27.0](https://github.com/microsoft/vscode-cpptools/issues/5346))
## Contribution
File diff suppressed because it is too large Load Diff
-33
View File
@@ -1,33 +0,0 @@
{
"defaults": [
"cpfe",
"--wchar_t_keyword",
"--no_warnings",
"--rtti",
"--edge",
"--exceptions",
"--error_limit",
"25000",
"-D_EDG_COMPILER",
"-D_USE_DECLSPECS_FOR_SAL=1"
],
"source_file_format": "-f %s",
"expressions": [
{
"match": "^/I(.*)",
"replace": "-I\n$1"
},
{
"match": "^/D(.*)",
"replace": "-D$1"
},
{
"match": "^/AI(.*)",
"replace": "--using_directory\n$1"
},
{
"match": "^/dE--header_only_fallback",
"replace": "--header_only_fallback"
}
]
}
-15
View File
@@ -1,15 +0,0 @@
{
"defaults": [
"--pack_alignment",
"8",
"-Dunix=1",
"-D__unix__=1",
"-D__linux__=1",
"-D__arm__=1",
"-D__ARM_32BIT_STATE=1",
"-D__PTRDIFF_TYPE__=int",
"-D__SIZE_TYPE__=unsigned int",
"-D__WCHAR_TYPE__=long int"
],
"defaults_op" : "merge"
}
-15
View File
@@ -1,15 +0,0 @@
{
"defaults": [
"--pack_alignment",
"8",
"-Dunix=1",
"-D__unix__=1",
"-D__linux__=1",
"-D__aarch64__=1",
"-D__ARM_64BIT_STATE=1",
"-D__PTRDIFF_TYPE__=long int",
"-D__SIZE_TYPE__=long unsigned int",
"-D__WCHAR_TYPE__=int"
],
"defaults_op" : "merge"
}
-15
View File
@@ -1,15 +0,0 @@
{
"defaults": [
"--pack_alignment",
"8",
"-Dunix=1",
"-D__unix__=1",
"-D__linux__=1",
"-D__x86_64=1",
"-D__x86_64__=1",
"-D__PTRDIFF_TYPE__=long int",
"-D__SIZE_TYPE__=long unsigned int",
"-D__WCHAR_TYPE__=int"
],
"defaults_op" : "merge"
}
-15
View File
@@ -1,15 +0,0 @@
{
"defaults": [
"--pack_alignment",
"8",
"-Dunix=1",
"-D__unix__=1",
"-D__linux__=1",
"-D__i386=1",
"-D__i386__=1",
"-D__PTRDIFF_TYPE__=int",
"-D__SIZE_TYPE__=unsigned int",
"-D__WCHAR_TYPE__=long int"
],
"defaults_op" : "merge"
}
-15
View File
@@ -1,15 +0,0 @@
{
"defaults": [
"--pack_alignment",
"8",
"-Dunix=1",
"-D__unix__=1",
"-D__linux__=1",
"-D__arm__=1",
"-D__ARM_32BIT_STATE=1",
"-D__PTRDIFF_TYPE__=int",
"-D__SIZE_TYPE__=unsigned int",
"-D__WCHAR_TYPE__=long int"
],
"defaults_op" : "merge"
}
-15
View File
@@ -1,15 +0,0 @@
{
"defaults": [
"--pack_alignment",
"8",
"-Dunix=1",
"-D__unix__=1",
"-D__linux__=1",
"-D__aarch64__=1",
"-D__ARM_64BIT_STATE=1",
"-D__PTRDIFF_TYPE__=long int",
"-D__SIZE_TYPE__=long unsigned int",
"-D__WCHAR_TYPE__=int"
],
"defaults_op" : "merge"
}
-15
View File
@@ -1,15 +0,0 @@
{
"defaults": [
"--pack_alignment",
"8",
"-Dunix=1",
"-D__unix__=1",
"-D__linux__=1",
"-D__x86_64=1",
"-D__x86_64__=1",
"-D__PTRDIFF_TYPE__=long int",
"-D__SIZE_TYPE__=long unsigned int",
"-D__WCHAR_TYPE__=int"
],
"defaults_op" : "merge"
}
-15
View File
@@ -1,15 +0,0 @@
{
"defaults": [
"--pack_alignment",
"8",
"-Dunix=1",
"-D__unix__=1",
"-D__linux__=1",
"-D__i386=1",
"-D__i386__=1",
"-D__PTRDIFF_TYPE__=int",
"-D__SIZE_TYPE__=unsigned int",
"-D__WCHAR_TYPE__=long int"
],
"defaults_op" : "merge"
}
-14
View File
@@ -1,14 +0,0 @@
{
"defaults": [
"--pack_alignment",
"8",
"-D__APPLE__=1",
"-D__MACH__=1",
"-D__arm__=1",
"-D__ARM_32BIT_STATE=1",
"-D__PTRDIFF_TYPE__=int",
"-D__SIZE_TYPE__=unsigned int",
"-D__WCHAR_TYPE__=long int"
],
"defaults_op" : "merge"
}
-14
View File
@@ -1,14 +0,0 @@
{
"defaults": [
"--pack_alignment",
"8",
"-D__APPLE__=1",
"-D__MACH__=1",
"-D__aarch64__=1",
"-D__ARM_64BIT_STATE=1",
"-D__PTRDIFF_TYPE__=long int",
"-D__SIZE_TYPE__=long unsigned int",
"-D__WCHAR_TYPE__=int"
],
"defaults_op" : "merge"
}
-14
View File
@@ -1,14 +0,0 @@
{
"defaults": [
"--pack_alignment",
"8",
"-D__APPLE__=1",
"-D__MACH__=1",
"-D__x86_64=1",
"-D__x86_64__=1",
"-D__PTRDIFF_TYPE__=long int",
"-D__SIZE_TYPE__=long unsigned int",
"-D__WCHAR_TYPE__=int"
],
"defaults_op" : "merge"
}
-14
View File
@@ -1,14 +0,0 @@
{
"defaults": [
"--pack_alignment",
"8",
"-D__APPLE__=1",
"-D__MACH__=1",
"-D__i386=1",
"-D__i386__=1",
"-D__PTRDIFF_TYPE__=int",
"-D__SIZE_TYPE__=unsigned int",
"-D__WCHAR_TYPE__=long int"
],
"defaults_op" : "merge"
}
-14
View File
@@ -1,14 +0,0 @@
{
"defaults": [
"--pack_alignment",
"8",
"-D__APPLE__=1",
"-D__MACH__=1",
"-D__arm__=1",
"-D__ARM_32BIT_STATE=1",
"-D__PTRDIFF_TYPE__=int",
"-D__SIZE_TYPE__=unsigned int",
"-D__WCHAR_TYPE__=long int"
],
"defaults_op" : "merge"
}
-14
View File
@@ -1,14 +0,0 @@
{
"defaults": [
"--pack_alignment",
"8",
"-D__APPLE__=1",
"-D__MACH__=1",
"-D__aarch64__=1",
"-D__ARM_64BIT_STATE=1",
"-D__PTRDIFF_TYPE__=long int",
"-D__SIZE_TYPE__=long unsigned int",
"-D__WCHAR_TYPE__=int"
],
"defaults_op" : "merge"
}
-14
View File
@@ -1,14 +0,0 @@
{
"defaults": [
"--pack_alignment",
"8",
"-D__APPLE__=1",
"-D__MACH__=1",
"-D__x86_64=1",
"-D__x86_64__=1",
"-D__PTRDIFF_TYPE__=long int",
"-D__SIZE_TYPE__=long unsigned int",
"-D__WCHAR_TYPE__=int"
],
"defaults_op" : "merge"
}
-14
View File
@@ -1,14 +0,0 @@
{
"defaults": [
"--pack_alignment",
"8",
"-D__APPLE__=1",
"-D__MACH__=1",
"-D__i386=1",
"-D__i386__=1",
"-D__PTRDIFF_TYPE__=int",
"-D__SIZE_TYPE__=unsigned int",
"-D__WCHAR_TYPE__=long int"
],
"defaults_op" : "merge"
}
+16 -52
View File
@@ -171,7 +171,7 @@
"Očekávala se deklarace.",
"Ukazatel ukazuje mimo podkladový objekt.",
"neplatný typ konverze",
"konflikt externího/interního propojení s předchozí deklarací %p",
"konflikt externího/interního propojení s předchozí deklarací",
"Hodnota s plovoucí desetinnou čárkou se nevejde do požadovaného integrálního typu.",
"Výraz nemá žádný účinek.",
"Dolní index je mimo rozsah.",
@@ -420,9 +420,9 @@
"Použije se víc než jedna funkce pro převod z %t na předdefinovaný typ:",
"Konstanta %n",
"Odkaz %n",
"%npTd",
"%npT",
"předdefinovaný operátor %sq",
"%nod, nejednoznačné kvůli dědičnosti",
"%no (zděděná dvojznačnost)",
"Adresa konstruktoru nebo destruktoru se pravděpodobně nepřevzala.",
null,
"Pro původní hodnotu odkazu na nekonstantní typ se použilo temporary (anachronizmus).",
@@ -1361,7 +1361,7 @@
"Proměnné atributy vyskytující se po inicializátoru v závorkách se ignorují.",
"Výsledek tohoto přetypování se nedá použít jako l-hodnota.",
"negace hodnoty s pevnou desetinnou čárkou bez znaménka",
null,
"Tento operátor není v tuto chvíli povolený, použijte závorky.",
null,
"Názvy registru se můžou použít jenom pro proměnné registru.",
"Proměnné pojmenovaného registru nemůžou být typu void.",
@@ -2354,7 +2354,7 @@
"Před použitím std::initializer_list je potřeba zadat #include <seznam_inicializátorů>, včetně implicitního použití.",
"Klíčové slovo inline se u deklarace aliasu oboru názvů nedá použít.",
"Předchozí deklarace %n nebyla deklarovaná jako inline.",
"%n se dříve deklarovalo jako vložené.",
"Změna deklarace modifikátoru inline %n musí být deklarova jako inline.",
"Prvním argumentem musí být celočíselná konstanta.",
"Specifikátor se nedá použít s neagregačním typem %t.",
"Specifikátor člena anonymního sjednocení se dá zadat jenom uvnitř závorek, které odpovídají tomuto anonymnímu sjednocení.",
@@ -2435,7 +2435,7 @@
"Konstruktor constexpr musí inicializovat přímou základní třídu %t.",
"Je pravděpodobné, že vytvoření objektu std::initializer_list v inicializátoru pole nebude fungovat podle očekávání, protože podkladové pole se na konci úplného výrazu zničí.",
"V konstantním výrazu se this nedá použít.",
null,
"Prázdný inicializátor není pro tento typ union platný. (Je nejednoznačné, který člen by se měl inicializovat.)",
"U explicitní direktivy vytváření instancí není povolený modifikátor constexpr.",
"Kvůli cyklické závislosti se nedá určit specifikace výjimky výchozího konstruktoru.",
"%p definované anonymním sjednocením",
@@ -2474,7 +2474,7 @@
"neplatný kvalifikátor pro %t (odvozená třída tady není povolená)",
"Atribut always_inline se u funkcí, které nejsou vložené, ignoruje.",
"Dědící konstruktory musí být zděděné od přímé základní třídy.",
null,
"%np už zdědil od %t.",
"Očekávalo se návěstí.",
"Po %%l se očekávalo číslo operandu.",
"Číslo operandu pro %%l neodkazuje na platný argument návěstí.",
@@ -2515,7 +2515,7 @@
"Odstraněné funkce jsou funkcí C++11.",
"Funkce nastavené na výchozí hodnotu jsou funkcí C++11.",
"Třída úložiště není u explicitní specializace povolená.",
null,
"%t není třída nebo vymezený výčet.",
"Nevymezený výčet musí být neprůhledný, aby mohl být specializovaný.",
"Deklarace šablony výčtu musí odkazovat na dříve deklarovaný člen šablony třídy.",
"Očekává se vektorový operand.",
@@ -2790,7 +2790,7 @@
"typ elementu vektoru musí být integrál, výčet nebo reálné číslo s plovoucí desetinnou čárkou",
"předdefinovaná funkce není dostupná, protože 128bitová celá čísla nejsou podporovaná",
"předdefinovaná funkce není dostupná, protože vektorové typy nejsou podporované",
"Dma levými hranatými závorkami za sebou vždy začíná seznam atributů, ale tady se seznam atributů nemůže nacházet.",
"d po sobě jdoucí levé hranaté závorky můžou uvozovat jenom seznam atributů",
"nerozpoznaný atribut target znemožňuje, aby tuto rutinu použila rutina překladače",
"%t není vektorový typ",
"vektorové typy %t1 a %t2 musí mít stejnou délku",
@@ -3176,7 +3176,7 @@
"return_void deklarovalo %p.",
"Chybí příkaz co_return, přestože %t nemá na konci %n žádné return_void.",
"Pro přidělení stavu korutiny se nenašla žádná varianta nothrow globálního operator new.",
"Pro zrušení přidělení stavu korutiny se nenašel žádný vhodný operator delete.",
"Pro uvolnění stavu korutiny se nenašel žádný vhodný operator delete.",
"Funkce constexpr nemůže být korutina.",
"Operand tohoto výrazu %s se překládá na typ %t, který není třída.",
"Výraz co_await se ve statickém inicializátoru nepovoluje.",
@@ -3224,7 +3224,7 @@
"new-expression volající funkci přidělení specifickou pro třídu se nedá vyhodnotit jako konstanta",
"výraz s umístěním new se nedá vyhodnotit podle konstanty",
"odstranění přes ukazatel na podobjekt vyžaduje virtuální destruktor",
"%npTd s obrácenými argumenty",
"%npT (s obrácenými argumenty)",
"operand __INTADDR__ musí být odsazený od nulového ukazatele",
"_Obecný konstruktor odpovídá více typům",
"druhá shoda je %t",
@@ -3246,8 +3246,8 @@
"Omezení šablony není splněné.",
"V tomto oboru se definice konceptu nemůže vyskytovat.",
"Neplatná změna deklarace %nd",
"Nepovedlo se nahradit argumenty %T pro concept-id.",
"Pro argumenty %T je koncept false.",
"Nepodařilo se nahradit argumenty pro concept-id.",
"Koncept je false.",
"Klauzule requires tady není povolena (nejedná se o funkci se šablonami).",
"Šablona konceptu",
"Klauzule requires není kompatibilní s %nfd.",
@@ -3291,7 +3291,7 @@
"Nestatický datový člen typu odkazu %t brání vyhodnocování constexpr v __builtin_bit_cast.",
"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",
"%npT (zděděno prostřednictvím decl %p)",
"Podobjekt %t pro dědící konstruktory se nedá vytvořit -- implicitní výchozí konstruktor se odstranil.",
"%n musí vracet void.",
"Neplatný začátek deklarace členu",
@@ -3300,7 +3300,7 @@
"Neplatné použití konceptu",
"Výchozí operátor porovnání členů nemůže být kvalifikovaný jako &&.",
"Výchozí funkce pro porovnání constexpr volá funkci %nd, která constexpr není.",
"Porovnání paměti constexpr se podporuje jen pro celé číslo nebo objekty polí celých čísel.",
"Porovnání paměti constexpr se podporuje jen pro celé číslo nejvyšší úrovně nebo objekty polí celých čísel.",
"Šablona konceptu nemůže mít přidružená omezení.",
"export se nepovoluje.",
"Export jednotlivých členů třídy se nepodporuje.",
@@ -3321,41 +3321,5 @@
"Ukazatel na člen neúplného typu %t se nepovoluje.",
"Rozšíření balíčku v init-capture se v tomto režimu nepodporuje.",
"Rozšíření balíčku v init-capture je funkce jazyka C++20.",
"Operátor porovnání v definici třídy nastavený jako výchozí musí být první deklarace daného operátoru porovnání (%nd).",
"Rozšíření balíčku v init-capture se dá použít jen ve variadické šabloně.",
"Omezení typu používá %nd, které není konceptem typu (tj. šablona konceptu, jejíž první parametr je parametr typu).",
"Odvozený typ zástupného symbolu %t nesplnil omezení typu.",
"Výchozí konstruktor pro %t není oprávněný.",
"Destruktor pro %t je nejednoznačný kvůli neuspořádaným omezením.",
"Destruktor pro %t není oprávněný kvůli neúspěšným omezením.",
"Kandidát nejednoznačného destruktoru",
"Virtuální funkce nemůže mít na konci klauzuli requires.",
"%nd nesplňuje svá omezení.",
"Výsledek kvalifikátoru decltype %t není třída ani výčet.",
"Porovnání je ve standardním C++20 nejednoznačné, protože implikovaný operátor porovnání se zaměněnými parametry je stejně dobrá shoda -- příčinou je obvykle chybějící kvalifikátor const u operátoru porovnání. Podívejte se na %nod.",
"Neplatné concept-id",
"Nepovedlo se nahradit argumenty %T pro klauzuli requires.",
"Omezení pro %nd se nesplnila.",
"typ proměnné %t ve funkci constexpr má virtuální základní třídy",
"konstantní výraz nemůže přidělit virtuální základní podobjekt (pro typ %t)",
"parametr šablony typu třídy musí být typu strukturální třídy",
"podpora pro literály UTF-8 vyžaduje podporu literálů u-literal.",
"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é",
"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",
"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",
"vnitřní funkce memcpy-like se pokouší o kopírování netriviálně kopírovatelného typu %t",
"vnitřní funkce memcpy-like se pokouší o kopírování částečného objektu",
"vnitřní funkce memcpy-like se pokouší o kopírování hranice za polem",
"vnitřní funkce memcpy-like se pokouší o kopírování překrývajících se bajtových rozsahů (místo toho se použije odpovídající operace memmove)"
"Operátor porovnání v definici třídy nastavený jako výchozí musí být první deklarace daného operátoru porovnání (%nd)."
]
+22 -58
View File
@@ -171,7 +171,7 @@
"Es wurde eine Deklaration erwartet.",
"Der Zeiger zeigt auf eine Stelle außerhalb des zugrunde liegenden Objekts.",
"Ungültige Typkonvertierung.",
"Konflikt für externe/interne Bindung mit vorheriger Deklaration %p",
"Konflikt für externe/interne Bindung mit vorheriger Deklaration.",
"Der Gleitkommawert passt nicht in den erforderlichen integralen Typ.",
"Der Ausdruck hat keinen Effekt.",
"Index außerhalb des definierten Bereichs.",
@@ -352,8 +352,8 @@
"Mehr als ein %sq-Operator stimmt mit diesen Operanden überein:",
"Der erste Parameter der Speicherbelegungsfunktion muss vom Typ \"size_t\" sein.",
"Die Speicherbelegungsfunktion erfordert den Rückgabetyp \"void *\".",
"Die Funktion zur Belegungsfreigabe erfordert den Rückgabetyp \"void\".",
"Der erste Parameter der Funktion zur Belegungsfreigabe muss vom Typ \"void *\" sein.",
"Die Funktion zum Aufheben der Zuordnung erfordert den Rückgabetyp \"void\".",
"Der erste Parameter der Funktion zum Aufheben der Zuordnung muss vom Typ \"void *\" sein.",
null,
"Der Typ muss ein Objekttyp sein.",
"Die Basisklasse \"%t\" wurde bereits initialisiert.",
@@ -420,9 +420,9 @@
"Es gilt mehr als eine Konvertierungsfunktion von \"%t\" in einen integrierten Typ:",
"Konstante \"%n\"",
"Verweis \"%n\"",
"%npTd",
"%npT",
"Integrierter %sq-Operator",
"%nod, mehrdeutig durch Vererbung",
"%no (mehrdeutig durch Vererbung)",
"Die Adresse eines Konstruktors oder Destruktors darf nicht verwendet werden.",
null,
"Es wurde ein temporärer Wert für den Anfangswert des Verweises auf die Nicht-Konstante verwendet (Anachronismus).",
@@ -732,7 +732,7 @@
"%n ist keine Klassenvorlage.",
"Ein Array mit unvollständigem Elementtyp entspricht nicht dem Standard.",
"Ein Speicherbelegungsoperator darf nicht in einem Namespace deklariert werden.",
"Ein Operator zur Belegungsfreigabe darf nicht in einem Namespace deklariert werden.",
"Ein Operator zum Aufheben der Zuordnung darf nicht in einem Namespace deklariert werden.",
"\"%np1\" steht mit der using-Deklaration von \"%np2\" in Konflikt.",
"Die using-Deklaration von \"%np1\" steht mit \"%npd2\" in Konflikt.",
"Die namespaces-Option kann nur beim Kompilieren von C++ verwendet werden.",
@@ -1361,7 +1361,7 @@
"Variablenattribute nach einem in Klammern gesetzten Initialisierer werden ignoriert.",
"Das Ergebnis dieser Umwandlung kann nicht als lvalue verwendet werden.",
"Negation eines nicht signierten Festkommawerts.",
null,
"Dieser Operator ist an dieser Stelle nicht zulässig; verwenden Sie Klammern.",
null,
"Registrierungsnamen können nur für Registrierungswerte verwendet werden.",
"Variablen mit benannter Registrierung können nicht den Typ \"void\" aufweisen.",
@@ -2354,7 +2354,7 @@
"\"#include <initializer_list>\" ist vor der Verwendung von \"std::initializer_list\" erforderlich, einschließlich einer impliziten Verwendung.",
"Das 'inline'-Schlüsselwort darf nicht in einer Namespacealiasdeklaration verwendet werden.",
"Die vorherige Deklaration von \"%n\" wurde nicht inline deklariert.",
"%n wurde zuvor als Inline deklariert.",
"Eine Neudeklaration von \"%n\" (inline) muss inline deklariert werden.",
"Das erste Argument muss eine ganzzahlige Konstante sein.",
"Ein Kennzeichner darf nicht mit einem Nicht-Aggregattyp %t verwendet werden.",
"Ein Kennzeichner für einen anonymen Union-Member darf nur innerhalb geschweifter Klammern auftreten, die zu dieser anonymen Union gehören.",
@@ -2435,7 +2435,7 @@
"Der constexpr-Konstruktor muss die direkte Basisklasse %t initialisieren.",
"Das Erstellen eines \"std::initializer_list\"-Objekts in einem Feldinitialisierer funktioniert wahrscheinlich nicht wie erwartet, da das zugrunde liegende Array am Ende des vollständigen Ausdrucks zerstört wird.",
"'this' kann nicht in einem konstanten Ausdruck verwendet werden.",
null,
"Ein leerer Initialisierer ist für diesen Union-Typ nicht gültig (der zu initialisierende Member ist nicht eindeutig).",
"'constexpr' ist in einer expliziten Instanziierungsdirektive nicht zulässig.",
"Die Ausnahmespezifikation des Standardkonstruktors kann aufgrund einer Ringabhängigkeit nicht bestimmt werden.",
"Anonyme Union definiert als %p",
@@ -2474,7 +2474,7 @@
"Ungültiger Qualifizierer für \"%t\" (eine abgeleitete Klasse ist an dieser Stelle nicht zulässig).",
"Das Attribut \"always_inline\" wird für Nicht-Inlinefunktionen ignoriert.",
"Erbende Konstruktoren müssen von einer direkten Basisklasse geerbt werden.",
null,
"\"%np\" hat bereits von \"%t\" geerbt.",
"Bezeichnung erwartet",
"Operandennummer nach \"%%l\" erwartet",
"Operandennummer für '%%l' verweist nicht auf ein gültiges Bezeichnungsargument.",
@@ -2515,7 +2515,7 @@
"Gelöschte Funktionen sind eine C++11-Funktion.",
"Standardfunktionen sind eine C++11-Funktion.",
"Eine Speicherklasse ist in einer expliziten Spezialisierung nicht zulässig.",
null,
"\"%t\" ist keine Klasse oder Enumeration mit eigenem Gültigkeitsbereich.",
"Eine Enumeration ohne eigenen Gültigkeitsbereich muss undurchsichtig sein, um spezialisiert werden zu können.",
"Eine Enumerationsvorlagendeklaration muss auf einen zuvor deklarierten Member einer Klassenvorlage verweisen.",
"Es wurde ein Vektoroperand erwartet.",
@@ -2790,7 +2790,7 @@
"Der Vektorelementtyp muss eine Ganzzahl, eine Enumeration oder ein echter Gleitkommatyp sein.",
"Die integrierte Funktion ist nicht verfügbar, da 128-Bit-Ganzzahlen nicht unterstützt werden.",
"Die integrierte Funktion ist nicht verfügbar, da Vektortypen nicht unterstützt werden.",
"Zwei aufeinanderfolgende öffnende eckige Klammern leiten immer eine Attributliste ein, aber eine Attributliste darf an dieser Stelle nicht vorkommen.",
"Zwei aufeinanderfolgende linke eckige Klammern können nur eine Attributliste einleiten.",
"Ein nicht erkanntes Zielattribut schließt diese Routine von der Verwendung durch eine Resolverroutine aus.",
"\"%t\" ist kein Vektortyp.",
"Die Vektortypen %t1 und %t2 müssen gleich lang sein.",
@@ -3190,10 +3190,10 @@
"Kein statisches constexpr-Datenmember \"%sq\" in \"%t\" gefunden.",
"Die Anzahl der Elemente (%d) ist zu groß für die dynamische Zuordnung.",
"Die Anforderung für die dynamische constexpr-Zuordnung ist zu groß.",
"Belegungsfreigabe für nicht dynamisch zugeordneten Speicher",
"Die Größe der Belegungsfreigabe (%d1) entspricht nicht der Größe der Speicherbelegung (%d2).",
"Die Zuordnung des nicht dynamisch zugeordneten Speichers wird aufgehoben.",
"Die Größe der Zuordnungsaufhebung (%d1) entspricht nicht der Zuordnungsgröße (%d2).",
"Zuordnung hier erfolgt",
"Der Typ der Belegungsfreigabe (%t1) entspricht nicht dem Typ der Speicherbelegung (%t2).",
"Der Typ der Zuordnungsaufhebung (%t1) entspricht nicht dem Zuordnungstyp (%t2).",
"Einige dynamische Zuordnungen (Gesamtzahl = %d) wurden nicht aufgehoben.",
"%n (systemintern) mit unerwarteter Signatur deklariert (Typ \"%t\").",
">> Ausgabe von std::__report_constexpr_value",
@@ -3224,7 +3224,7 @@
"Ein new-expression mit Aufruf einer klassenspezifischen Zuteilungsfunktion kann nicht in einem konstanten Ausdruck ausgewertet werden.",
"Ein new-expression mit Platzierung kann nicht in einem konstanten Ausdruck ausgewertet werden.",
"Das Löschen über einen Teilobjektzeiger erfordert einen virtuellen Destruktor.",
"%npTd, mit umgekehrten Argumenten",
"%npT (mit umgekehrten Argumenten)",
"Der Operand von __INTADDR__ muss ein Offset vom NULL-Zeiger aufweisen.",
"_Generic-Konstrukt stimmt mit mehreren Typen überein.",
"Die andere Übereinstimmung lautet \"%t\".",
@@ -3246,8 +3246,8 @@
"Die Vorlageneinschränkung wurde nicht erfüllt.",
"Die Konzeptdefinition kann in diesem Bereich nicht verwendet werden.",
"Ungültige Neudeklaration von \"%nd\".",
"Fehler beim Ersetzen von Argumenten \"%T\" für \"concept-id\".",
"Das Konzept für die Argumente \"%T\" ist FALSE.",
"Fehler beim Ersetzen von Argumenten für \"concept-id\".",
"Das Konzept ist falsch.",
"Eine requires-Klausel ist hier nicht zulässig (keine Funktion mit Vorlagen).",
"Konzeptvorlage",
"Die requires-Klausel ist nicht mit \"%nfd\" kompatibel.",
@@ -3291,7 +3291,7 @@
"Ein nicht statischer Datenmember vom Verweistyp \"%t\" verhindert die constexpr-Auswertung von \"__builtin_bit_cast\".",
"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",
"%npT (geerbt per Verwendung von \"decl %p\")",
"Die Teilobjekterstellung von \"%t\" für erbende Konstruktoren kann nicht durchgeführt werden der implizite Standardkonstruktor wurde gelöscht.",
"\"%n\" muss \"void\" zurückgeben.",
"Ungültiger Beginn der Memberdeklaration.",
@@ -3300,7 +3300,7 @@
"Ungültige Verwendung von \"concept\".",
"Ein standardmäßiger Membervergleichsoperator kann nicht &&-qualifiziert sein.",
"Die constexpr-Standardvergleichsfunktion ruft die Nicht-constexpr-Funktion \"%nd\" auf.",
"Der constexpr-Speichervergleich wird nur für integer-Objekte oder array-of-integer-Objekte unterstützt.",
"Der constexpr-Speichervergleich wird nur für integer-Objekte oder array-of-integer-Objekte oberster Ebene unterstützt.",
"Einer Konzeptvorlage können keine Einschränkungen zugeordnet sein.",
"\"export\" ist nicht zulässig.",
"Das Exportieren einzelner Klassenmember ist nicht zulässig.",
@@ -3315,47 +3315,11 @@
"\"constinit\" ist hier nicht gültig.",
"\"constinit\" ist nur für Deklarationen von Variablen mit Speicherdauer \"static\" oder \"thread\" gültig.",
"Die constinit-Variable erfordert eine dynamische Initialisierung.",
"Die Variable wurde zuvor mit \"constinit\" %p deklariert.",
"Die Variable wurde zuvor mit \"constinit\" deklariert: %p",
"Verwendung eines Funktionsdeklarators ohne Prototyp ",
"Das Argument darf keinen const-qualifizierten Typ aufweisen.",
"Eine Pointer-to-Member-Funktion eines unvollständigen Typs \"%t\" ist nicht zulässig.",
"Die Paketerweiterung in \"init-capture\" ist in diesem Modus nicht aktiviert.",
"Die Paketerweiterung in \"init-capture\" ist ein C++ 20-Feature.",
"Ein auf den Standardwert festgelegter Vergleichsoperator in einer Klassendefinition muss als erste Deklaration dieses Vergleichsoperators (%nd) aufgeführt sein.",
"Eine Paketerweiterung in \"init-capture\" kann nur in einer variadischen Vorlage verwendet werden.",
"Die Typeinschränkung verwendet \"%nd\". Dies ist kein Typkonzept (d. h. eine Konzeptvorlage, deren erster Parameter ein Typparameter ist).",
"Fehler bei der Typeinschränkung aufgrund des hergeleiteten Platzhaltertyps \"%t\".",
"Der Standardkonstruktor für \"%t\" ist nicht gültig.",
"Der Destruktor für \"%t\" ist aufgrund ungeordneter Einschränkungen mehrdeutig.",
"Der Destruktor für \"%t\" ist aufgrund fehlerhafter Einschränkungen nicht gültig.",
"Mehrdeutiger Destruktorkandidat",
"Eine virtuelle Funktion darf keine nachfolgende requires-Klausel aufweisen.",
"\"%nd\" erfüllt nicht die Einschränkungen.",
"Das Ergebnis des decltype-Qualifizierers \"%t\" ist keine Klasse oder Enumeration.",
"Der Vergleich ist in standardmäßigem C++20 mehrdeutig, weil der implizite Vergleichsoperator mit umgekehrten Parametern eine gleichwertige Übereinstimmung darstellt. Dies wird normalerweise durch einen fehlenden const-Qualifizierer für den Vergleichsoperator ausgelöst. Siehe \"%nod\".",
"Ungültige concept-id",
"Fehler beim Ersetzen von Argumenten \"%T\" für requires-Klausel.",
"Einschränkungen für \"%nd\" sind nicht erfüllt.",
"Der Variablentyp \"%t\" in der constexpr-Funktion weist virtuelle Basisklassen auf.",
"Ein konstanter Ausdruck kann kein virtuelles Basisteilobjekt zuordnen (für den Typ \"%t\").",
"Ein Vorlagenparameter des Klassentyps muss einen strukturellen Klassentyp aufweisen.",
"Die Unterstützung für UTF-8-Literale erfordert Unterstützung für u-Literale.",
"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.",
"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.",
"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.",
"Ein memcpy-ähnliches systeminternes Objekt versucht, den nicht trivial kopierbaren Typ %t zu kopieren.",
"Ein memcpy-ähnliches systeminternes Objekt versucht, ein Teilobjekt zu kopieren.",
"Ein memcpy-ähnliches systeminternes Objekt versucht, einen Kopiervorgang über die Arraygrenze hinaus durchzuführen.",
"Ein memcpy-ähnliches systeminternes Objekt versucht, überlappende Bytebereiche (stattdessen mithilfe eines entsprechenden memmove-Vorgangs) zu kopieren."
"Ein auf den Standardwert festgelegter Vergleichsoperator in einer Klassendefinition muss als erste Deklaration dieses Vergleichsoperators (%nd) aufgeführt sein."
]
+15 -51
View File
@@ -171,7 +171,7 @@
"se esperaba una declaración",
"el puntero señala fuera del objeto subyacente",
"conversión de tipo no válida",
"conflicto de vinculación externa o interna con la declaración anterior %p",
"conflicto de vinculación externa o interna con la declaración anterior",
"el valor de punto flotante no incluye el tipo entero requerido",
"la expresión no tiene efecto",
"el subíndice está fuera del intervalo",
@@ -420,9 +420,9 @@
"se aplica más de una función de conversión de %t a un tipo integrado:",
"const %n",
"referencia %n",
"%npTd",
"%npT",
"operador integrado %sq",
"%nod, ambiguo por herencia",
"%no (ambiguo por herencia)",
"no se puede tomar la dirección de un constructor o destructor",
null,
"elemento temporal usado para el valor inicial de referencia a un elemento que no es const (anacronismo)",
@@ -1361,7 +1361,7 @@
"los atributos de variable que aparecen después de un inicializador entre paréntesis se omiten",
"el resultado de esta conversión no se puede usar como valor L",
"negación de un valor de punto fijo sin signo",
null,
"este operador no está permitido en este punto; use paréntesis",
null,
"los nombres de registro solo se pueden usar para las variables de registro",
"las variables de registro con nombre no pueden tener el tipo void",
@@ -2354,7 +2354,7 @@
"es necesario #include <lista_de_inicializadores> antes de usar std::initializer_list, incluido un uso implícito",
"la palabra clave 'inline' no se puede usar en una declaración de alias de espacio de nombres",
"la declaración de %n anterior no se declaró como inline",
"%n se declaró anteriormente como inline",
"una nueva declaración de %n inline debe declararse como inline",
"el primer argumento debe ser una constante de tipo entero",
"un designador no se puede usar con un tipo %t no agregado",
"Un designador de un miembro de unión anónima solo puede aparecer entre las llaves correspondientes a esa unión anónima",
@@ -2435,7 +2435,7 @@
"el constructor constexpr debe inicializar la clase base directa %t",
"es probable que la creación de un objeto std::initializer_list en un inicializador de campo no funcione según lo esperado porque la matriz subyacente se destruirá al final de la expresión completa",
"'this' no se puede usar en una expresión constante",
null,
"un inicializador vacío no es válido para este tipo de unión (la elección del miembro que debe inicializarse es ambigua)",
"\"constexpr\" no se permite en una directiva de creación de una instancia explícita",
"no se puede determinar la especificación de excepción del constructor predeterminado debido a una dependencia circular",
"la unión anónima definió %p",
@@ -2474,7 +2474,7 @@
"calificador no válido para %t (no se permite aquí una clase derivada)",
"el atributo \"always_inline\" se omite en funciones no insertadas",
"los constructores de herencia deben heredarse de una clase base directa",
null,
"%np ya se ha heredado de %t",
"se esperaba una etiqueta",
"se esperaba un número de operando después de \"%%l\"",
"el número de operando de \"%%l\" no hace referencia a un argumento de etiqueta válido",
@@ -2515,7 +2515,7 @@
"las funciones eliminadas son una característica de C++11",
"las funciones con valores predeterminados son una característica de C++11",
"no se permite una clase de almacenamiento en una especialización explícita",
null,
"%t no es una clase o una enumeración con ámbito",
"Una enumeración sin ámbito debe ser opaca para que pueda especializarse",
"una declaración de plantilla de enumeración debe hacer referencia a un miembro anteriormente declarado de una plantilla de clase",
"se esperaba un operando vectorial",
@@ -2790,7 +2790,7 @@
"el tipo de elemento de vector debe ser integral, enumeración o punto flotante real",
"la función builtin no está disponible porque no se admiten enteros de 128 bits",
"la función builtin no está disponible porque no se admiten tipos de vectores",
"dos corchetes izquierdos consecutivos siempre introducen una lista de atributos, pero aquí no puede aparecer una lista de ese tipo",
"dos corchetes izquierdos consecutivos solo pueden introducir una lista de atributos",
"el atributo \"target\" no reconocido descalifica esta rutina para su uso por la rutina de resolución",
"%t no es un tipo de vector",
"los tipos de vector %t1 y %t2 deben tener la misma longitud",
@@ -3224,7 +3224,7 @@
"una expresión \"new\" que llama a una función de asignación específica de clase no se puede evaluar como constante",
"una expresión de colocación \"new\" no se puede evaluar como constante",
"la eliminación mediante un puntero de subobjeto requiere un destructor virtual",
"%npTd, con argumentos inversos",
"%npT (con argumentos revertidos)",
"el operando de __INTADDR__ debe estar desplazado respecto al puntero nulo",
"La construcción _Generic coincide con varios tipos",
"la otra coincidencia es %t",
@@ -3246,8 +3246,8 @@
"la restricción de plantilla no se cumple",
"la definición de concepto no puede aparecer en este ámbito",
"nueva declaración de %nd no válida",
"error de sustitución de los argumentos %T para concept-id",
"el concepto es false para los argumentos %T",
"error de sustitución de los argumentos para concept-id",
"el concepto es false",
"no se permite una cláusula requires aquí (no es una función basada en plantilla)",
"plantilla de concepto",
"la cláusula requires es incompatible con %nfd",
@@ -3291,7 +3291,7 @@
"un miembro de datos no estático del tipo de referencia %t impide la evaluación constexpr de __builtin_bit_cast",
"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",
"%npT (heredado mediante la declaración using %p)",
"no se puede realizar la construcción de subobjetos de %t para los constructores de herencia; se elimina el constructor predeterminado implícito",
"%n debe devolver void",
"inicio de declaración de miembro no válido",
@@ -3300,7 +3300,7 @@
"uso no válido del concepto",
"un operador de comparación de miembros con valores predeterminados no puede estar calificado con \"&&\"",
"la función de comparación constexpr predeterminada llama a una función %nd que no es constexpr",
"la comparación de memoria de constexpr solo se admite para objetos de matriz de enteros o enteros",
"la comparación de memoria de constexpr solo se admite para objetos de matriz de enteros o enteros de nivel superior",
"una plantilla de concepto no puede tener restricciones asociadas",
"no se permite \"export\"",
"no se permite la exportación de miembros de clases individuales",
@@ -3321,41 +3321,5 @@
"no se permite un puntero a miembro de un tipo %t incompleto",
"la expansión del paquete en la captura de inicialización no está habilitada en este modo",
"la expansión del paquete en la captura de inicialización es una característica de C++20",
"un operador de comparación con valor predeterminado en una definición de clase debe ser la primera declaración de ese operador de comparación (%nd)",
"una expansión del paquete en una captura de inicialización solo se puede usar en una plantilla variádica",
"la restricción de tipo usa %nd, que no es un concepto de tipo (es decir, una plantilla de concepto cuyo primer parámetro es un parámetro de tipo)",
"el tipo de marcador de posición %t deducido generó un error en la restricción de tipo",
"el constructor predeterminado de %t no es elegible",
"el destructor de %t es ambiguo debido a restricciones desordenadas",
"el destructor de %t no es elegible debido a restricciones con errores",
"candidato destructor ambiguo",
"una función virtual no puede tener una cláusula requires final",
"%nd no cumple sus restricciones",
"el resultado del calificador decltype %t no es una clase ni una enumeración",
"la comparación es ambigua en C++ 20 estándar porque el operador de comparación implicado con los parámetros inversos es una coincidencia igualmente buena. Esto suele deberse a que falta un calificador \"const\" en el operador de comparación; vea %nod",
"identificador de concepto no válido",
"error de sustitución de los argumentos %T para la cláusula requires",
"no se cumplen las restricciones de %nd",
"el tipo de variable %t de la función constexpr tiene clases base virtuales",
"una expresión constante no puede asignar un subobjeto base virtual (para el tipo %t)",
"un parámetro de plantilla de tipo de clase debe ser un tipo de clase estructural",
"la compatibilidad con los literales UTF-8 requiere compatibilidad con u-literal.",
"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",
"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",
"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",
"intentos intrínsecos de tipo memcpy para copiar el tipo %t que no se puede copiar de forma trivial",
"intentos intrínsecos de tipo memcpy para copiar el objeto parcial",
"intentos intrínsecos de tipo memcpy para copiar más allá del límite de matriz",
"intentos intrínsecos de tipo memcpy para copiar los intervalos de bytes solapados (con la operación memmove correspondiente en su lugar)"
"un operador de comparación con valor predeterminado en una definición de clase debe ser la primera declaración de ese operador de comparación (%nd)"
]
+20 -56
View File
@@ -171,7 +171,7 @@
"déclaration attendue",
"le pointeur pointe en dehors de l'objet sous-jacent",
"conversion de type non valide",
"conflit entre la liaison externe/interne et la déclaration précédente %p",
"conflit entre la liaison externe/interne et la déclaration précédente",
"la valeur à virgule flottante ne peut pas être contenue dans le type intégral requis",
"Expression sans effet",
"Indice hors limites",
@@ -420,9 +420,9 @@
"plusieurs fonctions de conversion de %t en type intégré s'appliquent :",
"const %n",
"référence %n",
"%npTd",
"%npT",
"opérateur intégré %sq",
"%nod, ambigu par héritage",
"%no (ambigu par héritage)",
"impossible de prendre l'adresse d'un constructeur ou d'un destructeur",
null,
"utilisation temporaire pour la valeur initiale d'une référence à une non-constante (anachronisme)",
@@ -1361,7 +1361,7 @@
"plusieurs variables apparaissant après un initialiseur entre parenthèses sont ignorées",
"impossible d'utiliser le résultat de ce cast comme une lvalue",
"négation d'une valeur à virgule fixe non signée",
null,
"cet opérateur n'est pas autorisé actuellement ; utilisez des parenthèses",
null,
"les noms de registre peuvent uniquement être utilisés pour les variables de registre",
"les variables de registre nommées ne peuvent pas avoir le type void",
@@ -1739,7 +1739,7 @@
"impossible de capturer une variable locale en dehors de la portée de la fonction active",
"impossible de faire référence à la fonction englobante 'this' dans le corps d'une expression lambda, sauf si elle figure dans la liste de capture",
null,
"impossible de copier la variable capturée lambda de type %t1 dans le champ closure class de type %t2",
"impossible de copier la variable de capture lambda de type %t1 dans le champ closure class de type %t2",
"répertoire de modèles non valide : %s",
"erreur",
"erreurs",
@@ -2354,7 +2354,7 @@
"#include <initializer_list> est nécessaire avant l'utilisation de std::initializer_list, dont une utilisation implicite",
"Le mot clé 'inline' ne peut pas être utilisé sur une déclaration d'alias d'espace de noms",
"la déclaration précédente de %n n'était pas déclarée inline",
"%n a déjà été déclaré Inline",
"une redéclaration de %n inline doit être déclarée inline",
"le premier argument doit être une constante entière",
"impossible d'utiliser un désignateur avec un type différent d'un agrégat %t",
"un désignateur pour un membre d'union anonyme peut uniquement apparaître entre des accolades qui correspondent à cette union anonyme",
@@ -2435,7 +2435,7 @@
"le constructeur constexpr doit initialiser la classe de base directe %t",
"la création d'un objet std::initializer_list dans un initialiseur de champ ne fonctionne généralement pas comme il le devrait, car le tableau sous-jacent est détruit à la fin de l'expression complète",
"Impossible d'utiliser 'this' dans une expression constante",
null,
"initialiseur vide non valide pour ce type d'union (ambiguïté quant au membre à initialiser)",
"'constexpr' n'est pas autorisé sur une directive d'instanciation explicite",
"impossible de déterminer la spécification d'exception du constructeur par défaut en raison d'une dépendance circulaire",
"union anonyme définie %p",
@@ -2474,7 +2474,7 @@
"qualificateur non valide pour %t (classe dérivée non autorisée ici)",
"l'attribut 'always_inline' est ignoré dans les fonctions non inline",
"les constructeurs d'héritage doivent être hérités d'une classe de base directe",
null,
"%np déjà hérité de %t",
"étiquette attendue",
"nombre d'opérande attendu après '%%l'",
"le nombre d'opérande pour '%%l' ne fait pas référence à un argument d'étiquette valide",
@@ -2515,7 +2515,7 @@
"les fonctions supprimées sont une fonctionnalité C++11",
"les fonctions par défaut sont une fonctionnalité C++11",
"impossible d'utiliser une classe de stockage dans une spécialisation explicite",
null,
"%t n'est pas une classe ni une énumération délimitée",
"une énumération non délimitée doit être opaque pour être spécialisée",
"une déclaration de modèle d'énumération doit faire référence à un membre précédemment déclaré d'un modèle de classe",
"opérande de vecteur attendu",
@@ -2790,7 +2790,7 @@
"le type d'élément de vecteur doit être intégral, enum ou un type à virgule flottante réel",
"la fonction intégrée n'est pas disponible car les entiers 128 bits ne sont pas pris en charge",
"la fonction intégrée n'est pas disponible car les types de vecteur ne sont pas pris en charge",
"deux crochets gauches successifs introduisent toujours une liste d'attributs, mais aucune liste d'attributs ne peut apparaître ici",
"deux crochets gauches consécutifs peuvent uniquement introduire une liste d'attributs",
"un attribut 'target' non reconnu empêche cette routine d'être utilisée par la routine de résolution",
"%t n'est pas un type de vecteur",
"les types de vecteur %t1 et %t2 doivent avoir la même longueur",
@@ -3176,7 +3176,7 @@
"'return_void' déclaré %p",
"instruction co_return manquante alors que %t n'a aucun 'return_void' à la fin de %n",
"variante nothrow de la fonction globale 'operator new' introuvable pour l'allocation d'état de la coroutine",
"'operator delete' viable introuvable pour la désallocation d'état de la coroutine",
"'operator delete' viable introuvable pour la libération d'état de la coroutine",
"une fonction constexpr ne peut pas être une coroutine",
"l'opérande de cette expression %s est résolu en un %t qui n'est pas une classe",
"une expression co_await n'est pas autorisée dans un initialiseur statique",
@@ -3190,10 +3190,10 @@
"membre de données statique constexpr %sq introuvable dans %t",
"nombre d'éléments (%d) trop grand pour une allocation dynamique",
"demande d'allocation dynamique constexpr trop grande",
"désallocation de stockage non alloué dynamiquement",
"la taille de désallocation (%d1) ne correspond pas à la taille allouée (%d2)",
"libération de stockage non alloué dynamiquement",
"la taille de libération (%d1) ne correspond pas à la taille allouée (%d2)",
"une allocation s'est produite ici",
"le type de désallocation (%t1) ne correspond pas au type d'allocation (%t2)",
"le type de libération (%t1) ne correspond pas au type d'allocation (%t2)",
"certaines allocations dynamiques (nombre total = %d) n'ont pas été libérées",
"%n intrinsèque déclaré avec une signature inattendue (type %t)",
">> sortie de std::__report_constexpr_value",
@@ -3224,7 +3224,7 @@
"une expression new qui appelle une fonction d'allocation spécifique à une classe ne peut pas être évaluée en tant que constante",
"une expression new de placement ne peut pas être évaluée en tant que constante",
"une suppression via un pointeur de sous-objet nécessite un destructeur virtuel",
"%npTd, avec des arguments inversés",
"%npT (avec arguments inversés)",
"l'opérande de __INTADDR__ doit être décalé par rapport au pointeur null",
"La construction _Generic correspond à plusieurs types",
"l'autre correspondance est %t",
@@ -3246,8 +3246,8 @@
"contrainte de modèle non satisfaite",
"la définition de concept ne peut pas apparaître dans cette étendue",
"redéclaration non valide de %nd",
"échec de la substitution des arguments %T pour l'ID de concept",
"le concept est faux pour les arguments %T",
"échec de la substitution des arguments pour l'ID de concept",
"le concept a la valeur false",
"une clause requires n'est pas autorisée ici (il ne s'agit pas d'une fonction basée sur un modèle)",
"modèle de concept",
"clause requires incompatible avec %nfd",
@@ -3291,7 +3291,7 @@
"un membre de données non statique de type référence %t empêche l'évaluation de constexpr de __builtin_bit_cast",
"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",
"%npT (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é",
"%n doit retourner void",
"début de déclaration de membre non valide",
@@ -3300,7 +3300,7 @@
"utilisation non valide du concept",
"un opérateur de comparaison de membres par défaut ne peut pas être qualifié en tant que '&&'",
"la fonction de comparaison constexpr par défaut appelle la fonction non constexpr %nd",
"la comparaison de mémoire constexpr est prise en charge uniquement pour les objets d'entiers ou les objets de tableaux d'entiers",
"la comparaison de mémoire constexpr est prise en charge uniquement pour les objets d'entiers de niveau supérieur ou les objets de tableaux d'entiers",
"un modèle de concept ne peut pas avoir de contraintes associées",
"'export' n'est pas autorisé",
"l'exportation de membres de classe individuels n'est pas autorisée",
@@ -3321,41 +3321,5 @@
"un pointeur vers membre de type incomplet %t n'est pas autorisé",
"l'expansion de pack dans init-capture n'est pas activée dans ce mode",
"l'expansion de pack dans init-capture est une fonctionnalité C++20",
"un opérateur de comparaison par défaut dans une définition de classe doit être la première déclaration de cet opérateur de comparaison (%nd)",
"une expansion de pack dans une capture d'initialisation peut uniquement être utilisée dans un modèle variadique",
"la contrainte de type utilise %nd qui n'est pas un concept de type (c'est-à-dire un modèle de concept dont le premier paramètre est un paramètre de type)",
"échec de la contrainte de type pour le type d'espace réservé déduit %t",
"le constructeur par défaut pour %t n'est pas éligible",
"le destructeur pour %t est ambigu en raison de contraintes non ordonnées",
"le destructeur pour %t est inéligible en raison de l'échec de contraintes",
"candidat destructeur ambigu",
"une fonction virtuelle ne peut pas avoir de clause requires de fin",
"%nd ne respecte pas ses contraintes",
"le résultat du qualificateur decltype %t n'est pas une classe ou une énumération",
"la comparaison est ambiguë dans la norme C++20, car l'opérateur de comparaison implicite avec des paramètres inversés représente une correspondance tout aussi appropriée (cela est généralement dû à un qualificateur 'const' manquant sur l'opérateur de comparaison) ; consultez %nod",
"ID de concept non valide",
"échec de la substitution des arguments %T pour la clause requires",
"les contraintes pour %nd ne sont pas satisfaites",
"le type de variable %t dans la fonction constexpr a des classes de base virtuelles",
"une expression constante ne peut pas allouer un sous-objet de base virtuel (pour le type %t)",
"un paramètre de modèle de type classe doit être de type classe structurelle",
"la prise en charge des littéraux UTF-8 nécessite une prise en charge du littéral u.",
"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",
"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",
"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",
"l'intrinsèque de type memcpy tente de copier le type non trivialement copiable %t",
"l'intrinsèque de type memcpy tente de copier un objet partiel",
"l'intrinsèque de type memcpy tente de copier au-delà de la limite du tableau",
"l'intrinsèque de type memcpy tente de copier des plages d'octets qui se chevauchent (en utilisant plutôt l'opération memmove correspondante)"
"un opérateur de comparaison par défaut dans une définition de classe doit être la première déclaration de cet opérateur de comparaison (%nd)"
]
+18 -54
View File
@@ -171,7 +171,7 @@
"prevista una dichiarazione",
"il puntatore punta all'esterno dell'oggetto sottostante",
"conversione di tipo non valida",
"conflitto tra collegamenti esterni/interni con la dichiarazione precedente %p",
"conflitto tra collegamenti esterni/interni con la dichiarazione precedente",
"il valore a virgola mobile non rientra nel tipo integrale richiesto",
"l'espressione non ha effetto",
"indice non incluso nell'intervallo",
@@ -420,9 +420,9 @@
"è disponibile più di una funzione di conversione da %t a un tipo incorporato:",
"costante %n",
"riferimento %n",
"%npTd",
"%npT",
"operatore predefinito %sq",
"%nod, ambiguo per ereditarietà",
"%no (ambiguo per ereditarietà)",
"un costruttore o un distruttore non può accettare il relativo indirizzo",
null,
"memoria temporanea utilizzata per il valore iniziale del riferimento a non const (anacronismo)",
@@ -732,7 +732,7 @@
"%n non è un modello di classe",
"matrice con tipo di elementi incompleto non conforme allo standard",
"impossibile dichiarare un operatore di allocazione in uno spazio dei nomi",
"non è possibile dichiarare un operatore di deallocazione in uno spazio dei nomi",
"impossibile dichiarare un operatore di deallocazione in uno spazio dei nomi",
"conflitto tra %np1 e la dichiarazione using di %np2",
"conflitto tra la dichiarazione using di %np1 e %npd2",
"è possibile utilizzare l'opzione namespaces solo quando si esegue la compilazione nel linguaggio C++",
@@ -1361,7 +1361,7 @@
"gli attributi di variabile inseriti dopo un inizializzatore tra parentesi vengono ignorati",
"impossibile utilizzare il risultato di questo cast come lvalue",
"negazione di un valore a virgola fissa senza segno",
null,
"operatore non consentito in questo punto. Usare le parentesi",
null,
"i nomi di registro possono essere utilizzati solo per le variabili register",
"il tipo delle variabili denominato nel registro non può essere void",
@@ -1739,7 +1739,7 @@
"impossibile acquisire una variabile locale all'esterno dell'ambito di funzione corrente",
"impossibile fare riferimento alla funzione contenitore 'this' nel corpo di un'espressione lambda a meno che non sia inclusa nell'elenco di acquisizione",
null,
"non è possibile copiare la variabile catturata di tipo %t1 dell'espressione lambda nel campo closure class di tipo %t2",
"impossibile copiare la variabile acquisita di tipo %t1 dell'espressione lambda nel campo closure class di tipo %t2",
"directory del modello non valida: %s",
"errore",
"errori",
@@ -2354,7 +2354,7 @@
"#include <initializer_list> è necessario prima di utilizzare std::initializer_list, compreso un utilizzo implicito",
"impossibile utilizzare la parola chiave 'inline' in una dichiarazione di alias dello spazio dei nomi",
"la dichiarazione precedente di %n non è stata dichiarata inline",
"%n è stato dichiarato in precedenza come inline",
"una ridichiarazione di inline %n deve essere dichiarata inline",
"il primo argomento deve essere una costante integer",
"non è possibile usare un indicatore con un tipo non aggregato %t",
"un indicatore per un membro di unione anonima può essere presente solo all'interno delle parentesi graffe corrispondenti a tale unione anonima",
@@ -2435,7 +2435,7 @@
"il costruttore constexpr deve inizializzare la classe base diretta %t",
"è improbabile che la creazione di un oggetto std::initializer_list in un inizializzatore di campo funzioni come previsto perché la matrice sottostante verrà distrutta alla fine dell'espressione completa",
"impossibile utilizzare 'this' in un'espressione costante",
null,
"un inizializzatore vuoto non è valido per questo tipo di unione (il membro da inizializzare è ambiguo)",
"'constexpr' non è consentito in una direttiva di creazione esplicita di un'istanza",
"impossibile determinare la specificazione dell'espressione del costruttore predefinito a causa di una dipendenza circolare",
"%p definito da unione anonima",
@@ -2474,7 +2474,7 @@
"il qualificatore per %t non è valido. In questo punto non sono consentite classi derivate.",
"l'attributo 'always_inline' viene ignorato in funzioni non inline",
"i costruttori che ereditano devono essere ereditati da una classe base diretta",
null,
"%np è già ereditato da %t",
"è prevista un'etichetta",
"è previsto un numero operando dopo '%%l'",
"il numero operando per '%%l' non fa riferimento a un argomento di etichetta valido",
@@ -2515,7 +2515,7 @@
"le funzioni eliminate sono una funzionalità di C++11",
"le funzioni impostate come predefinite sono una funzionalità di C++11",
"una classe di archiviazione non è consentita in una specializzazione esplicita",
null,
"%t non è una classe o un'enumerazione con ambito",
"un'enumerazione senza ambito deve essere opaca per essere specializzata",
"una dichiarazione di modello dell'enumerazione deve fare riferimento a un membro precedentemente dichiarato di un modello di classe",
"è previsto un operando vettore",
@@ -2790,7 +2790,7 @@
"il tipo di elemento di vettore deve essere integrale, enumerazione o reale a virgola mobile",
"la funzione predefinita non è disponibile perché gli interi a 128 bit non sono supportati",
"la funzione predefinita non è disponibile perché i tipi di vettore non sono supportati",
"due parentesi quadre aperte consecutive introducono sempre un elenco di attributi, ma in questo punto non è possibile specificare un elenco di attributi",
"due parentesi quadre aperte consecutive possono solo introdurre un elenco di attributi",
"l'attributo 'target' non è riconosciuto, di conseguenza questa routine non può essere usata dalla routine del resolver",
"%t non è un tipo di vettore",
"i tipi di vettore %t1 e %t2 devono avere la stessa lunghezza",
@@ -3224,7 +3224,7 @@
"un'espressione expr.new che chiama una funzione di allocazione specifica della classe non può essere valutata in un'espressione costante",
"un'espressione new di posizionamento non può essere valutata in un'espressione costante",
"per l'eliminazione tramite un puntatore a sotto-oggetto è richiesto un distruttore virtuale",
"%npTd, con argomenti invertiti",
"%npT (con argomenti invertiti)",
"l'operando di __INTADDR__ deve essere scostato dal puntatore Null",
"Il costrutto _generico corrisponde a più tipi",
"l'altra corrispondenza è %t",
@@ -3246,8 +3246,8 @@
"il vincolo del modello non è soddisfatto",
"la definizione del concetto non può essere presente in questo ambito",
"la ridichiarazione di %nd non è valida",
"la sostituzione degli argomenti %T per l'ID concetto non è riuscita",
"il concetto è false per gli argomenti %T",
"la sostituzione degli argomenti per l'ID concetto non è riuscita",
"il concetto è false",
"in questo punto non sono consentite clausole requires (non è una funzione basata su modelli)",
"modello di concetto",
"la clausola requires non è compatibile con %nfd",
@@ -3291,7 +3291,7 @@
"il membro dati non statico del tipo riferimento %t impedisce la valutazione constexpr di __builtin_bit_cast",
"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",
"%npT (ereditato tramite l'uso di decl %p)",
"non è possibile costruire oggetti secondari di %t per ereditare costruttori. Il costruttore predefinito implicito è stato eliminato",
"%n deve restituire void",
"l'inizio della dichiarazione di membro non è valido",
@@ -3300,7 +3300,7 @@
"uso del concetto non valido",
"un operatore di confronto membri impostato come predefinito non può essere qualificato con '&&'",
"la funzione di confronto constexpr predefinita chiama la funzione non constexpr %nd",
"il confronto di memoria constexpr è supportato solo per gli oggetti intero o matrice di interi",
"il confronto di memoria constexpr è supportato solo per gli oggetti intero o matrice di intero di primo livello",
"un modello di concetto non può avere vincoli associati",
"'export' non è consentito",
"l'esportazione di singoli membri di classe non è consentita",
@@ -3315,47 +3315,11 @@
"'constinit' non è valida in questo punto",
"'constinit' è valida solo per dichiarazioni con durata di archiviazione del thread o statica",
"con la variabile constinit è richiesta l'inizializzazione dinamica",
"la variabile è stata dichiarata in precedenza con 'constinit' alla posizione %p",
"la variabile è stata dichiarata in precedenza con 'constinit' %p",
"uso del dichiaratore di funzione non prototipo",
"l'argomento non può avere un tipo qualificato da const",
"non è consentito un puntatore a membro di un tipo incompleto %t",
"l'espansione del pacchetto in init-capture non è abilitata in questa modalità",
"l'espansione del pacchetto in init-capture è una funzionalità di C++20",
"un operatore di confronto impostato come predefinito in una definizione di classe deve essere la prima dichiarazione di tale operatore di confronto (%nd)",
"un'espansione di pacchetto in init-capture può essere usata solo in un modello variadic",
"il vincolo di tipo usa %nd che non è un concetto di tipo, ad esempio un modello di concetto il cui primo parametro è un parametro di tipo",
"il tipo di segnaposto dedotto %t non soddisfa il vincolo di tipo",
"il costruttore predefinito per %t non è idoneo",
"il distruttore per %t è ambiguo a causa di vincoli non ordinati",
"il distruttore per %t non è idoneo a causa di vincoli non soddisfatti",
"candidato di distruttore ambiguo",
"una funzione virtuale non può includere una clausola requires finale",
"%nd non soddisfa i vincoli",
"il risultato del qualificatore decltype %t non è una classe o un'enumerazione",
"il confronto è ambiguo in C++20 standard perché l'operatore di confronto implicito con parametri invertiti è una corrispondenza altrettanto valida. In genere questo problema dipende dalla mancanza di un qualificatore 'const' nell'operatore di confronto. Vedere %nod",
"ID concetto non valido",
"la sostituzione degli argomenti %T per la clausola requires non è riuscita",
"i vincoli per %nd non sono soddisfatti",
"il tipo di variabile %t nella funzione constexpr contiene classi di base virtuali",
"un'espressione costante non può allocare un sotto-oggetto di base virtuale (per il tipo %t)",
"un parametro di modello di tipo classe deve essere un tipo classe strutturale",
"per il supporto dei valori letterali UTF-8 è richiesto il supporto di valori letterali u",
"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",
"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",
"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",
"l'intrinseco simile a memcpy prova a copiare il tipo non facilmente copiabile %t",
"l'intrinseco simile a memcpy prova a copiare l'oggetto parziale",
"l'intrinseco simile a memcpy prova a copiare oltre il limite della matrice",
"l'intrinseco simile a memcpy prova a copiare intervalli di byte sovrapposti (usando invece l'operazione memmove corrispondente)"
"un operatore di confronto impostato come predefinito in una definizione di classe deve essere la prima dichiarazione di tale operatore di confronto (%nd)"
]
+18 -54
View File
@@ -171,7 +171,7 @@
"宣言が必要です",
"ポインターが基になるオブジェクトの外部を指しています",
"無効な型変換です",
"外部または内部リンケージが以前の宣言 %p と競合しています",
"外部/内部リンケージが以前の宣言と競合しています",
"浮動小数点値が必要な整数型では不適切です",
"式が無効です",
"添字が有効範囲にありません",
@@ -352,8 +352,8 @@
"複数の演算子 %sq がこれらのオペランドと一致します:",
"割り当て関数の最初のパラメーターは型 'size_t' である必要があります",
"割り当て関数には 'void *' 戻り値の型が必要です",
"割り当て解除関数には 'void' 戻り値の型が必要です",
"割り当て解除関数の最初のパラメーターは型 'void *' である必要があります",
"解放関数には 'void' 戻り値の型が必要です",
"解放関数の最初のパラメーターは型 'void *' である必要があります",
null,
"型はオブジェクト型である必要があります",
"基底クラス %t は既に初期化されています",
@@ -420,9 +420,9 @@
"%t から組み込み型への変換関数が複数適用されます:",
"const %n",
"参照 %n",
"%npTd",
"%npT",
"組み込み演算子 %sq",
"%nod (継承によりあいまいです)",
"%no (継承によりあいまいです)",
"コンストラクターまたはデストラクターのアドレスは取得できません",
null,
"非 const への参照の初期値用に一時的に使用されます (旧形式)",
@@ -1361,7 +1361,7 @@
"かっこで囲まれた初期化子の後にある変数属性は無視されます",
"このキャストの結果は左辺値として使用できません",
"符号なし固定小数点値の否定です",
null,
"この演算子はこの位置では使用できません (かっこを使用してください)",
null,
"レジスタ名はレジスタ変数に対してのみ使用できます",
"名前付きレジスタ変数に void 型を使用することはできません",
@@ -1739,7 +1739,7 @@
"現在の関数スコープ外のローカル変数はキャプチャできません",
"外側の関数の 'this' は、キャプチャ リストに含まれていない限り、ラムダ本体で参照できません",
null,
"ラムダでキャプチャた型 %t1 の変数を型 %t2 の closure class フィールドにコピーできません",
"ラムダでキャプチャされた型 %t1 の変数を型 %t2 の closure class フィールドにコピーできません",
"無効なテンプレート ディレクトリ: %s",
"エラー",
"件のエラー",
@@ -2354,7 +2354,7 @@
"std::initializer_list を使用する (暗黙的な使用を含む) 前に #include <initializer_list> が必要です",
"'inline' キーワードは、名前空間のエイリアス宣言では使用できません",
"%n の前の宣言は、インラインで宣言されていませんでした",
"%n は、以前にインラインで宣言されました",
"インライン %n の再宣言はインラインで宣言する必要があります",
"最初の引数は整数の定数である必要があります",
"指定子と非集約型 %t は同時に使用できません",
"匿名共用体メンバーの指定子は、その匿名共用体に対応する中かっこ内でのみ使用できます",
@@ -2435,7 +2435,7 @@
"constexpr コンストラクターは、直接的な基底クラス %t を初期化する必要があります",
"フィールド初期化子に std::initializer_list オブジェクトを作成すると、正しく動作しない可能性があります。基になる配列が式全体の最後で破棄されます。",
"'this' は定数式では使用できません",
null,
"この共用体型では空の初期化子は無効です (初期化する必要があるメンバーがあいまいです)",
"明示的なインスタンス化ディレクティブでは 'constexpr' を使用できません",
"循環依存の関係が原因で、既定のコンストラクターの例外指定を特定できません",
"無名共用体で %p が定義されました",
@@ -2474,7 +2474,7 @@
"%t に対する修飾子が無効です (ここでは派生クラスを使用できません)",
"'always_inline' 属性は、非インライン関数では無視されます",
"継承しているコンストラクターは、直接基底クラスから継承される必要があります",
null,
"%np が既に %t から継承されています",
"ラベルが必要です",
"'%%l' の後にオペランド番号が必要です",
"'%%l' のオペランド番号は、有効なラベルの引数を参照していません",
@@ -2515,7 +2515,7 @@
"削除された関数は C++11 の機能です",
"既定値にされた関数は C++11 の機能です",
"ストレージ クラスは明示的特殊化では許可されません ",
null,
"%t はクラスまたはスコープを持つ列挙型ではありません",
"スコープを持たない列挙型が特殊化になるには、あいまいである必要があります",
"列挙テンプレート宣言は、クラス テンプレートの以前宣言されたメンバーを参照している必要があります",
"ベクトル オペランドが必要です",
@@ -2790,7 +2790,7 @@
"ベクトル要素の型は、整数型、列挙型、または実数の浮動小数点型である必要があります",
"128 ビットの整数がサポートされていないので、ビルトイン関数を使用できません",
"ベクトル型がサポートされていないので、ビルトイン関数を使用できません",
"2 つの連続した左角かっこは常に属性リストを導入するために使用されますが、こちらには属性リストを表示できません",
"2 つの連続した左角かっこは属性リストを導入するためにのみ使用できま",
"認識されていない 'ターゲット' 属性は、リゾルバー ルーチンがこのルーチンを使用できないようにします",
"%t はベクトル型ではありません",
"ベクトル型 %t1 と %t2 の長さは同じでなければなりません",
@@ -3224,7 +3224,7 @@
"クラス固有の割り当て関数を呼び出す new-expression を定数評価することはできません",
"配置 new の式を定数評価することはできません",
"サブオブジェクト ポインターを使用して削除するには仮想デストラクターが必要です",
"%npTd (逆引数が含まれます)",
"%npT (逆引数を含む)",
"__INTADDR__ のオペランドは null ポインターからのオフセットでなければなりません",
"ジェネリック コンストラクトが複数の型と一致する(_G)",
"もう一方の一致は %t です",
@@ -3246,8 +3246,8 @@
"テンプレート制約が満たされていません",
"このスコープにコンセプトの定義を指定することはできません",
"%nd の再宣言が無効です",
"概念 ID の引数 %Tの置換に失敗しました",
"引数 %T の概念は false です",
"コンセプト ID の引数の置換に失敗しました",
"コンセプトが false です",
"こちらでは requires 句は許可されていません (テンプレート関数ではありません)",
"コンセプト テンプレート",
"requires 句は %nfd と互換性がありません",
@@ -3291,7 +3291,7 @@
"参照型 %t の静的でないデータ メンバーは、__builtin_bit_cast の constexpr 評価を妨げます",
"volatile 型 %t は、__builtin_bit_cast の constexpr 評価を妨げます",
"UNION、ポインター、またはメンバーへのポインター型 %t は、__builtin_bit_cast の constexpr 評価を妨げます",
"%npTd (宣言 %p を使用して継承されています)",
"%npT (宣言 %p を使用して継承)",
"コンストラクターを継承するための %t のサブオブジェクト構築は実行できません。暗黙の既定のコンストラクターは削除されます",
"%n は void を返す必要があります",
"メンバー宣言の先頭が無効です",
@@ -3300,7 +3300,7 @@
"概念が正しく使用されていません",
"既定のメンバー比較演算子を '&&' で修飾することはできません",
"既定の constexpr 比較関数は、constexpr ではない関数 %nd を呼び出します",
"constexpr のメモリ比較は、整数または整数の配列オブジェクトでのみサポートされています",
"constexpr のメモリ比較は、トップレベルの整数または整数の配列オブジェクトでのみサポートされています",
"概念テンプレートに関連する制約を持たせることはできません",
"[エクスポート] は許可されていません",
"個別のクラス メンバーのエクスポートは許可されていません",
@@ -3321,41 +3321,5 @@
"不完全な型 %t のメンバーへのポインターは使用できません",
"初期化キャプチャのパック展開はこのモードでは有効ではありません",
"初期化キャプチャのパック展開は C++20 の機能です",
"クラス定義で既定値にされた比較演算子は、その比較演算子の最初の宣言でなければなりません (%nd)",
"初期化キャプチャのパック展開は、可変個引数テンプレートでのみ使用できます",
"型制約は型概念ではない %nd を使用します (例: 最初のパラメーターが型パラメーターである概念テンプレート)",
"推測されるプレースホルダーの型 %t が型制約に失敗しました",
"%t の既定のコンストラクターは適切ではありません",
"制約の順序が指定されていないため、%t のデストラクターがあいまいです",
"制約が失敗したため、%t のデストラクターは適切ではありません",
"あいまいなデストラクター候補",
"仮想関数では後続の Requires 句は使用できません",
"%nd は制約を満たしていません",
"decltype 修飾子 %t の結果はクラスまたは列挙ではありません",
"標準 C++ 20 では、パラメーターが反転した暗黙的な比較演算子が同程度に適合するため、比較はあいまいです。これは通常、比較演算子の 'const' 修飾子がない場合に発生します。%nod を参照してください",
"無効な概念 ID",
"Requires 句の引数 %T の置換に失敗しました",
"%nd の制約が満たされていません",
"constexpr 関数の変数の型 %t に仮想基底クラスが含まれています",
"定数式では、仮想ベースのサブオブジェクト (型 %t) の割り当てを行うことはできません",
"クラス型のテンプレート パラメーターは、構造クラス型である必要があります",
"UTF-8 リテラルのサポートには、u リテラルのサポートが必要です。",
"'%s' のモジュール ファイル マッピングが 2 回以上指定されました",
"'%s' のヘッダー単位のマッピングが 2 回以上指定されました",
"'%s' にマッピングが指定されていません",
"'%s' のモジュール ファイル マッピングが無効です",
"インポートするヘッダー '%s' が見つかりません",
"モジュール ファイル リスト内の複数のファイルが '%s' と一致しています",
"'%s' に対して見つかったモジュール ファイルは別のモジュール用です",
"あらゆる種類のモジュール ファイル",
"モジュール ファイルを読み取れません",
"現在のオプションで char8_t 型がサポートされていないので、ビルトイン関数を使用できません",
"--ms_await コマンド ライン オプションは、C++20 コルーチンが有効になっている場合は指定できません",
"既定の集約要素の初期化における明示的なコンストラクター %nod の非標準的な使用",
"memcpy に似た組み込み関数のソースやターゲットでオブジェクトが指定されていません",
"memcpy に似た組み込み関数により、表現上個別の型である %t1 と %t2 のコピーが試行されます",
"memcpy に似た組み込み関数により、普通にコピーすることができない型 %t のコピーが試行されます",
"memcpy に似た組み込み関数により、部分的なオブジェクトのコピーが試行されます",
"memcpy に似た組み込み関数により、配列の境界を越えたコピーが試行されます",
"memcpy に似た組み込み関数により、重複しているバイト範囲のコピーが (対応する memmove 操作を代わりに使用して) 試行されます"
"クラス定義で既定値にされた比較演算子は、その比較演算子の最初の宣言でなければなりません (%nd)"
]
+17 -53
View File
@@ -171,7 +171,7 @@
"선언이 필요합니다.",
"포인터가 내부 개체를 벗어난 범위를 가리킵니다.",
"잘못된 형식 변환입니다.",
"외부/내부 연결이 이전 선언 %p과(와) 충돌함",
"외부/내부 연결이 이전 선언과 충돌합니다.",
"부동 소수점 값이 필요한 정수 계열 형식에 맞지 않습니다.",
"의미 없는 식입니다.",
"첨자가 범위를 벗어났습니다.",
@@ -420,9 +420,9 @@
"%t에서 기본 제공 형식으로 적용되는 변환 함수가 두 개 이상입니다.",
"상수 %n",
"참조 %n",
"%npTd",
"%npT",
"기본 제공 연산자 %sq",
"%nod, 상속에 의해 모호함",
"%no(상속에 의해 모호함)",
"생성자 또는 소멸자가 해당 주소를 가져올 수 없습니다.",
null,
"비const 참조에 대한 초기 값으로 임시 사용(오래된 구문)",
@@ -1361,7 +1361,7 @@
"괄호로 묶인 이니셜라이저 다음에 나타나는 변수 특성은 무시됩니다.",
"이 캐스트의 결과를 lvalue로 사용할 수 없습니다.",
"부호 없는 고정 소수점 값의 부정",
null,
"이 지점에 이 연산자를 사용할 수 없습니다. 괄호를 사용하십시오.",
null,
"레지스터 이름은 레지스터 변수에만 사용할 수 있습니다.",
"명명된 레지스터 변수에는 void 형식을 사용할 수 없습니다.",
@@ -1739,7 +1739,7 @@
"현재 함수 범위 바깥쪽에 있는 지역 변수를 캡처할 수 없습니다.",
"바깥쪽 함수 'this'는 캡처 목록에 있지 않는 한 람다 본문에서 참조할 수 없습니다.",
null,
"%t1 형식의 람다 캡처 변수를 %t2 형식의 closure class 필드로 복사할 수 없습니다.",
"%t1 형식의 람다 캡처 변수를 %t2 형식의 closure class 필드로 복사할 수 없습니다.",
"잘못된 템플릿 디렉터리: %s",
"오류",
"오류",
@@ -2354,7 +2354,7 @@
"#include <initializer_list>는 std::initializer_list의 사용(암시적 사용 포함) 전에 필요합니다.",
"'inline' 키워드는 네임스페이스 별칭 선언에 사용할 수 없습니다.",
"%n의 이전 선언이 인라인으로 선언되지 않았습니다.",
"%n이(가) 이전에 인라인으로 선언",
"인라인 %n의 재선언은 인라인으로 선언되어야 합니다.",
"첫 번째 인수는 정수 상수여야 합니다.",
"지정자는 비집계 형식 %t과(와) 함께 사용할 수 없습니다.",
"익명 공용 구조체 멤버의 지정자는 익명 공용 구조체에 해당하는 중괄호 내에만 표시될 수 있습니다.",
@@ -2435,7 +2435,7 @@
"constexpr 생성자는 직접 기본 클래스 %t을(를) 초기화해야 합니다.",
"기본 배열이 전체 식의 끝에서 삭제되므로 필드 이니셜라이저에서 std::initializer_list 개체 만들기가 올바르게 작동하지 않을 가능성이 있습니다.",
"'this'는 상수 식에 사용할 수 없습니다.",
null,
"이 공용 구조체 형식에는 빈 이니셜라이저를 사용할 수 없습니다(초기화해야 하는 멤버가 모호함).",
"'constexpr'은 명시적 인스턴스화 지시문에서 사용할 수 없습니다.",
"순환 종속성으로 인해 기본 생성자의 예외 사양을 확인할 수 없습니다.",
"익명 공용 구조체 정의 %p",
@@ -2474,7 +2474,7 @@
"%t에 대한 한정자가 잘못되었습니다(여기에는 파생 클래스를 사용할 수 없음).",
"'always_inline' 특성이 인라인 함수가 아닌 함수에서 무시되었습니다.",
"상속 생성자는 직접 기본 클래스에서 상속되어야 합니다.",
null,
"%np이(가) 이미 %t에서 상속되었습니다.",
"레이블이 필요합니다.",
"'%%l' 다음에는 피연산자 숫자가 필요합니다.",
"'%%l'의 피연산자 숫자가 올바른 레이블 인수를 참조하지 않습니다.",
@@ -2515,7 +2515,7 @@
"삭제된 함수는 C++11 기능입니다.",
"기본값으로 설정된 함수는 C++11 기능입니다.",
"스토리지 클래스는 명시적 특수화에 사용할 수 없습니다.",
null,
"%t은(는) 클래스 또는 범위가 지정된 열거형이 아닙니다.",
"특수화하려면 범위가 지정되지 않은 열거형이 불투명해야 합니다.",
"열거형 템플릿 선언은 이전에 선언된 클래스 템플릿의 멤버를 참조해야 합니다.",
"벡터 피연산자가 필요합니다.",
@@ -2790,7 +2790,7 @@
"벡터 요소 형식은 정수, 열거형 또는 실수 부동 소수점 형식이어야 합니다.",
"128비트 정수가 지원되지 않으므로 기본 제공 함수를 사용할 수 없습니다.",
"벡터 형식이 지원되지 않으므로 기본 제공 함수를 사용할 수 없습니다.",
"연속하는 두 개의 왼쪽 대괄호에는 항상 특성 목록이 들어가지만 특성 목록을 여기에 표시할 수 없음",
"연속하는 두 개의 왼쪽 대괄호에는 특성 목록만 넣을 수 있습니다.",
"인식할 수 없는 '대상' 특성은 확인자 루틴에서 사용하지 못하도록 이 루틴의 자격을 취소합니다.",
"%t은(는) 벡터 형식이 아닙니다.",
"벡터 형식 %t1 및 %t2의 길이가 같아야 합니다.",
@@ -3224,7 +3224,7 @@
"클래스 관련 할당 함수를 호출하는 new-expression은 상수로 계산할 수 없습니다.",
"배치 new-expression은 상수를 계산할 수 없습니다.",
"하위 개체 포인터를 통해 삭제하려면 가상 소멸자가 필요합니다.",
"%npTd, 역 인수 포함",
"%npT(역 인수 포함)",
"__INTADDR__의 피연산자는 Null 포인터에서 오프셋되어야 합니다.",
"_Generic 구문이 여러 형식과 일치합니다.",
"다른 일치 항목은 %t입니다.",
@@ -3246,8 +3246,8 @@
"템플릿 제약 조건이 충족되지 않습니다.",
"이 범위에는 개념 정의가 표시될 수 없습니다.",
"%nd의 재선언이 잘못되었습니다.",
"개념 ID의 %T 인수를 대체하지 못했습니다.",
"%T 인수의 개념이 false입니다.",
"개념 ID의 인수를 대체하지 못했습니다.",
"개념이 false입니다.",
"requires 절은 여기에서 허용되지 않습니다(템플릿 기반 함수가 아님).",
"개념 템플릿",
"requires 절이 %nfd과(와) 호환되지 않습니다.",
@@ -3291,7 +3291,7 @@
"참조 형식 %t의 비정적 데이터 멤버는 __builtin_bit_cast의 constexpr 평가를 차단합니다.",
"volatile 형식 %t은(는) __builtin_bit_cast의 constexpr 평가를 차단합니다.",
"공용 구조체, 포인터 또는 멤버 포인터 형식 %t은(는) __builtin_bit_cast의 constexpr 평가를 차단합니다.",
"%npTd, decl %p 사용을 통해 상속됨",
"%npT(%p decl을 통해 상속됨)",
"생성자를 상속하기 위해 %t의 하위 개체를 생성할 수 없습니다. 암시적 기본 생성자가 삭제됩니다.",
"%n은(는) void를 반환해야 합니다.",
"잘못된 멤버 선언 시작",
@@ -3300,7 +3300,7 @@
"잘못된 개념 사용",
"기본 멤버 비교 연산자는 '&&'-qualified일 수 없습니다.",
"기본 constexpr 비교 함수에서 비 constexpr 함수 %nd 호출",
"constexpr 메모리 비교는 정수 또는 정수 배열 개체에 대해서만 지원됩니다.",
"constexpr 메모리 비교는 최상위 정수 또는 정수 배열 개체에 대해서만 지원됩니다.",
"개념 템플릿에는 관련된 제약 조건이 있을 수 없습니다.",
"'export'는 허용되지 않습니다.",
"개별 클래스 멤버를 내보낼 수 없습니다.",
@@ -3315,47 +3315,11 @@
"'constinit'는 여기에 유효하지 않습니다.",
"'constinit'는 정적 또는 스레드 저장 기간을 사용하는 변수 선언에만 유효합니다.",
"constinit 변수에는 동적 초기화가 필요합니다.",
"변수가 이전에 'constinit'(%p)로 선언되었습니다.",
"변수가 이전에 'constinit' %p(으)로 선언되었습니다.",
"프로토타입 함수가 아닌 함수 선언자를 사용합니다.",
"인수에는 const 한정 형식을 사용할 수 없습니다.",
"불완전한 형식 %t의 멤버 포인터는 사용할 수 없습니다.",
"init-capture의 팩 확장은 이 모드에서 사용할 수 없습니다.",
"init-capture의 팩 확장은 C++20 기능입니다.",
"클래스 정의의 기본 비교 연산자는 해당 비교 연산자(%nd)의 첫 번째 선언이어야 합니다.",
"init-capture의 팩 확장은 가변 인자 템플릿에서만 사용할 수 있습니다.",
"형식 제약 조건이 형식 개념(즉, 첫 번째 매개 변수가 형식 매개 변수인 개념 템플릿)이 아닌 %nd를 사용합니다.",
"추론된 자리 표시자 형식 %t이(가) 형식 제약 조건에 실패했습니다.",
"%t의 기본 생성자가 적합하지 않습니다.",
"순서가 지정되지 않은 제약 조건으로 인해 %t의 소멸자가 모호합니다.",
"실패한 제약 조건으로 인해 %t의 소멸자가 부적합합니다.",
"모호한 소멸자 후보",
"가상 함수에는 후행 requires 절을 사용할 수 없습니다.",
"%nd이(가) 해당 제약 조건을 충족하지 않습니다.",
"decltype 한정자 %t의 결과가 클래스 또는 열거형이 아닙니다.",
"역 매개 변수를 사용하는 암시적 비교 연산자는 동일하게 적절한 일치 항목이므로 표준 C++20에서 비교는 모호합니다. 이 문제는 일반적으로 비교 연산자에 'const' 한정자가 없어서 발생합니다. %nod를 참조하세요.",
"잘못된 개념 ID",
"requires 절의 %T 인수를 대체하지 못했습니다.",
"%nd에 대한 제약 조건을 충족하지 않습니다.",
"constexpr 함수의 변수 형식 %t에는 가상 기본 클래스가 있습니다.",
"상수 식은 가상 기본 하위 개체(%t 형식)를 할당할 수 없습니다.",
"클래스 형식의 템플릿 매개 변수는 구조적 클래스 형식이어야 합니다.",
"UTF-8 리터럴에 대한 지원에는 u-리터럴 지원이 필요합니다.",
"'%s'에 대한 모듈 파일 매핑이 두 번 이상 지정되었습니다.",
"'%s'에 대한 헤더 단위 매핑이 두 번 이상 지정되었습니다.",
"'%s'에 대한 매핑이 지정되지 않았습니다.",
"'%s'에 대한 모듈 파일 매핑이 잘못되었습니다.",
"가져올 '%s' 헤더를 찾을 수 없습니다.",
"모듈 파일 목록에 있는 두 개 이상의 파일이 '%s'과(와) 일치합니다.",
"'%s'에 대해 찾은 모듈 파일이 다른 모듈에 대한 것입니다.",
"모든 종류의 모듈 파일",
"모듈 파일을 읽을 수 없음",
"char8_t 형식이 현재 옵션에서 지원되지 않기 때문에 기본 제공 함수를 사용할 수 없습니다.",
"C++20 코루틴을 사용하도록 설정한 경우 --ms_await 명령줄 옵션을 지정할 수 없습니다.",
"기본 집계 요소 초기화에 명시적 생성자 %nod의 비표준 사용",
"memcpy 유사 내장의 소스 또는 대상이 개체를 가리키지 않음",
"memcpy 유사 내장이 대표적으로 차별화된 형식 %t1 및 %t2을(를) 복사하려고 시도함",
"memcpy 유사 내장이 중요하게 복사 가능한 형식 %t을(를) 복사하려고 시도함",
"memcpy 유사 내장이 부분 개체를 복사하려고 시도함",
"memcpy 유사 내장이 과거 배열 경계를 복사하려고 시도함",
"memcpy 유사 내장이 겹치는 바이트 범위를 복사하려고 시도함(대신 해당 memmove 작업 사용)"
"클래스 정의의 기본 비교 연산자는 해당 비교 연산자(%nd)의 첫 번째 선언이어야 합니다."
]
+21 -57
View File
@@ -171,7 +171,7 @@
"oczekiwano deklaracji",
"wskaźnik wskazuje poza obiekt podstawowy",
"nieprawidłowa konwersja typu",
"konflikt zewnętrznego/wewnętrznego wiązania z poprzednią deklaracją %p",
"konflikt zewnętrznego/wewnętrznego wiązania z poprzednią deklaracją",
"wartość zmiennoprzecinkowa nie mieści się w wymaganym typie całkowitym",
"wyrażenie nie ma żadnego efektu",
"indeks poza zakresem",
@@ -352,8 +352,8 @@
"więcej niż jeden operator %sq pasuje do tych argumentów operacji:",
"pierwszy parametr funkcji alokacji musi mieć typ „size_t”",
"funkcja alokacji musi zwracać typ „void *”",
"funkcja cofania alokacji musi zwracać typ „void”",
"pierwszy parametr funkcji cofania alokacji musi mieć typ „void *”",
"funkcja dezalokacji musi zwracać typ „void”",
"pierwszy parametr funkcji dezalokacji musi mieć typ „void *”",
null,
"typ musi być typem obiektu",
"klasa bazowa %t jest już zainicjowana",
@@ -420,9 +420,9 @@
"więcej niż jedna funkcja konwersji umożliwia konwertowanie elementu %t na typ wbudowany:",
"wartość stała %n",
"odwołanie do %n",
"%npTd",
"%npT",
"wbudowany operator %sq",
"%nod, niejednoznaczność przez dziedziczenie",
"%no (niejednoznaczne dziedziczenie)",
"nie można pobrać adresu konstruktora lub destruktora",
null,
"użyto wartości tymczasowej jako wartości początkowej odwołania do elementu niebędącego stałą (anachronizm)",
@@ -732,7 +732,7 @@
"%n to nie jest szablon klasy",
"tablica z niekompletnym typem elementu jest niestandardowa",
"operatora alokacji nie można zadeklarować w przestrzeni nazw",
"operatora cofania alokacji nie można zadeklarować w przestrzeni nazw",
"operatora dezalokacji nie można zadeklarować w przestrzeni nazw",
"wystąpił konflikt elementu %np1 z deklaracją using elementu %np2",
"wystąpił konflikt elementu %np1 używającego deklaracji using z elementem %npd2",
"opcji przestrzeni nazw można użyć tylko w przypadku kompilowania kodu C++",
@@ -1361,7 +1361,7 @@
"atrybuty zmiennej pojawiające się po inicjatorze w nawiasach są ignorowane",
"wynik tego rzutowania nie może być używany jako l-wartość",
"negacja wartości stałoprzecinkowej bez znaku",
null,
"ten operator jest niedozwolony w tym miejscu. Użyj nawiasów.",
null,
"nazwy rejestru mogą być używane tylko dla zmiennych rejestru",
"zmienne nazwanego rejestru nie mogą mieć typu void",
@@ -2354,7 +2354,7 @@
"dyrektywa #include <lista_inicjatorów> jest potrzebna przed użyciem obiektu std::initializer_list, z uwzględnieniem użycia niejawnego",
"nie można użyć słowa kluczowego „inline” w deklaracji aliasu przestrzeni nazw",
"poprzednia deklaracja elementu %n nie była zadeklarowana śródwierszowo",
"Element %n był wcześniej zadeklarowany śródwierszowo",
"ponowna deklaracja wbudowanego elementu %n musi być zadeklarowana śródwierszowo",
"pierwszy argument musi być całkowitą wartością stałą",
"desygnator nie może być używany z niezagregowanym typem %t",
"desygnator dla anonimowej składowej unii może występować tylko w nawiasach klamrowych odpowiadających tej anonimowej unii",
@@ -2435,7 +2435,7 @@
"konstruktor constexpr musi inicjować bezpośrednią klasę bazową %t",
"tworzenie obiektu std::initializer_list w inicjatorze pola prawdopodobnie nie będzie działać zgodnie z oczekiwaniami, ponieważ tablica bazowa zostanie zniszczona na koniec pełnego wyrażenia",
"słowo kluczowe „this” nie może być używane w wyrażeniu stałej",
null,
"pusty inicjator nie jest prawidłowy dla tego typu unii (to, która składowa powinna być inicjowana, jest niejednoznaczne)",
"słowo kluczowe „constexpr” nie jest dozwolone dla jawnej dyrektywy tworzenia wystąpienia",
"nie można ustalić specyfikacji wyjątku konstruktora domyślnego z powodu zależności cyklicznej",
"element %p zdefiniowany przez unię anonimową",
@@ -2474,7 +2474,7 @@
"nieprawidłowy kwalifikator dla elementu %t (klasa pochodna jest w tym miejscu niedozwolona)",
"atrybut „always_inline” jest ignorowany w przypadku funkcji innych niż inline",
"konstruktory dziedziczące muszą być dziedziczone po bezpośredniej klasie bazowej",
null,
"element %np dziedziczył już po elemencie %t",
"oczekiwano etykiety",
"oczekiwano numeru argumentu operacji za „%%l”",
"liczba argumentu operacji dla elementu „%%l” nie odwołuje się do prawidłowego argumentu etykiety",
@@ -2515,7 +2515,7 @@
"funkcje usunięte są funkcją języka C++11",
"funkcje domyślne są funkcją języka C++11",
"klasa magazynu nie jest dozwolona w jawnej specjalizacji",
null,
"element %t nie jest klasą ani wyliczeniem z zakresem",
"wyliczenie bez zakresu musi być nieprzezroczyste, aby było specjalizowane",
"deklaracja szablonu wyliczenia musi odwoływać się do wcześniej zadeklarowanej składowej szablonu klasy",
"oczekiwano wektora jako argumentu operacji",
@@ -2790,7 +2790,7 @@
"typ elementu wektora musi być typem integralnym, wyliczeniem lub rzeczywistą liczbą zmiennoprzecinkową",
"wbudowana funkcja jest niedostępna, ponieważ 128-bitowe liczby całkowite nie są obsługiwane",
"wbudowana funkcja jest niedostępna, ponieważ typy wektorów nie są obsługiwane",
"dwa kolejne lewe nawiasy kwadratowe zawsze wprowadzają listę atrybutów, ale lista atrybutów nie może znajdować się w tym miejscu",
"dwa kolejne lewe nawiasy kwadratowe mogą wprowadzać tylko listę atrybutów",
"nierozpoznany atrybut „target” dyskwalifikuje tę procedurę z użycia przez procedurę programu rozpoznawania nazw",
"%t nie jest typem wektora",
"typy wektorów %t1 i %t2 muszą mieć tę samą długość",
@@ -3190,10 +3190,10 @@
"nie znaleziono statycznego elementu członkowskiego danych constexpr %sq w %t",
"liczba elementów (%d) jest zbyt duża na potrzeby dynamicznej alokacji",
"żądanie dynamicznej alokacji wyrażenia constexpr jest zbyt duże",
"cofnięcie alokacji magazynu, który nie został dynamicznie przydzielony",
"rozmiar cofania alokacji (%d1) nie odpowiada przydzielonemu rozmiarowi (%d2)",
"cofnięcie przydziału magazynu, który nie został dynamicznie przydzielony",
"rozmiar dezalokacji (%d1) nie odpowiada przydzielonemu rozmiarowi (%d2)",
"tutaj wystąpił przydział",
"typ cofania alokacji (%t1) nie jest zgodny z typem alokacji (%t2)",
"typ dezalokacji (%t1) nie jest zgodny z typem alokacji (%t2)",
"nie cofnięto przydziału niektórych dynamicznych alokacji (łączna liczba: %d)",
"wewnętrzny element %n zadeklarowany z nieoczekiwanym podpisem (typ %t)",
">> dane wyjściowe z elementu std::__report_constexpr_value",
@@ -3224,7 +3224,7 @@
"wyrażenie new-expression wywołujące funkcję alokacji specyficzną dla klasy nie może być obliczane jako stała",
"wyrażenie new umieszczania nie może dawać wartości stałej",
"usuwanie za pomocą wskaźnika podobiektu wymaga destruktora wirtualnego",
"%npTd, z odwróconymi argumentami",
"%npT (z odwróconymi argumentami)",
"argument operacji __INTADDR__ musi być odsunięty od wskaźnika o wartości null",
"Konstrukcja _Generic dopasowuje wiele typów",
"inne dopasowanie jest %t",
@@ -3246,8 +3246,8 @@
"ograniczenie szablonu nie zostało spełnione",
"definicja koncepcji nie może znajdować się w tym zakresie",
"nieprawidłowa ponowna deklaracja elementu %nd",
"podstawianie argumentów %T dla identyfikatora koncepcji nie powiodło się",
"koncepcja jest fałszywa dla argumentów %T",
"podstawianie argumentów za identyfikator concept-id nie powiodło się",
"koncepcja ma wartość false",
"klauzula requires nie jest dozwolona w tym miejscu (nie jest to funkcja z szablonem)",
"szablon koncepcji",
"klauzula requires jest niezgodna z elementem %nfd",
@@ -3291,7 +3291,7 @@
"niestatyczna składowa danych typu referencyjnego %t uniemożliwia ocenę wyrażenia constexpr dla elementu __builtin_bit_cast",
"typ nietrwały %t uniemożliwia ocenę wyrażenia constexpr dla elementu __builtin_bit_cast",
"typ unii, wskaźnika lub wskaźnika do składowej %t uniemożliwia ocenę wyrażenia constexpr dla elementu __builtin_bit_cast",
"%npTd, odziedziczone za pomocą deklaracji %p",
"%npT (odziedziczone za pomocą deklaracji %p)",
"nie można wykonać konstrukcji podobiektu %t na potrzeby dziedziczenia konstruktorów — niejawny konstruktor domyślny został usunięty",
"Element %n musi zwracać wartość void",
"nieprawidłowy początek deklaracji członkowskiej",
@@ -3300,7 +3300,7 @@
"nieprawidłowe użycie koncepcji",
"domyślny operator porównania elementu członkowskiego nie może być kwalifikowany przez element „&&”",
"domyślna funkcja porównywania constexpr wywołuje funkcję non-constexpr %nd",
"Porównywanie pamięci constexpr jest obsługiwane tylko w przypadku obiektów będących liczbami całkowitymi lub tablicami liczb całkowitych",
"Porównywanie pamięci constexpr jest obsługiwane tylko w przypadku obiektów najwyższego poziomu w postaci liczby całkowitej lub obiektów typu tablica liczb całkowitych",
"z szablonem koncepcji nie mogą być skojarzone ograniczenia",
"Polecenie „export” jest niedozwolone",
"eksportowanie pojedynczych elementów członkowskich klasy jest niedozwolone",
@@ -3321,41 +3321,5 @@
"wskaźnik do składowej niepełnego typu %t jest niedozwolony",
"rozszerzenie pakietu w funkcji init-capture nie jest włączone w tym trybie",
"rozszerzenie pakietu w funkcji init-capture to funkcja języka C++20",
"operator porównania przyjęty domyślnie w definicji klasy musi być pierwszą deklaracją tego operatora porównania (%nd)",
"rozszerzenie pakietu w elemencie init-capture może być używane tylko w szablonie wariadycznym",
"ograniczenie typu używa elementu %nd, który nie jest koncepcją typu (tj. szablonem koncepcji, którego pierwszym parametrem jest parametr typu)",
"wywnioskowany typ symbolu zastępczego %t nie spełniał ograniczenia typu",
"domyślny konstruktor dla elementu %t nie kwalifikuje się",
"destruktor dla %t jest niejednoznaczny z powodu nieuporządkowanych ograniczeń",
"destruktor %t dla nie kwalifikuje się z powodu niepowodzenia ograniczeń",
"niejednoznaczny kandydat destruktora",
"funkcja wirtualna nie może mieć końcowej klauzuli requires",
"%nd nie spełnia swoich ograniczeń",
"wynik %t kwalifikatora decltype nie jest klasą ani wyliczeniem",
"porównanie jest niejednoznaczne w standardowym języku C++20, ponieważ implikowany operator porównania z odwróconymi parametrami jest równie dobrym dopasowaniem — jest to zwykle spowodowane brakującym kwalifikatorem „const” w operatorze porównania; zobacz %nod",
"nieprawidłowy identyfikator koncepcji",
"podstawianie argumentów %T dla klauzuli requires nie powiodło się",
"ograniczenia dla %nd nie są spełnione",
"typ zmiennej %t w funkcji constexpr ma wirtualne klasy podstawowe",
"wyrażenie stałe nie może przydzielić wirtualnego podobiektu podstawowego (dla typu %t)",
"parametr szablonu typu klasy musi być typu klasy strukturalnej",
"obsługa literałów UTF-8 wymaga obsługi literału z prefiksem u.",
"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",
"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",
"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",
"Funkcja wewnętrzna podobna do memcpy próbuje skopiować typ %t, którego nie można skopiować w sposób trywialny",
"Funkcja wewnętrzna podobna do memcpy próbuje skopiować częściowy obiekt",
"Funkcja wewnętrzna podobna do memcpy próbuje skopiować dane spoza granicy tablicy",
"Funkcja wewnętrzna podobna do memcpy próbuje skopiować nakładające się na siebie zakresy bajtów (zamiast tego zostanie użyta odpowiednia operacja memmove)"
"operator porównania przyjęty domyślnie w definicji klasy musi być pierwszą deklaracją tego operatora porównania (%nd)"
]
+15 -51
View File
@@ -171,7 +171,7 @@
"esperado uma declaração",
"ponteiro aponta para fora do objeto considerado",
"conversão de tipo inválida",
"conflito de vínculo interno/externo com a declaração anterior %p",
"conflito de vínculo interno/externo com declaração anterior",
"valor de ponto flutuante não cabe no tipo integral requerido",
"a expressão não possui efeito",
"subscrito fora do intervalo",
@@ -420,9 +420,9 @@
"é possível aplicar mais de uma função de conversão de %t para um tipo embutido:",
"constante %n",
"referência %n",
"%npTd",
"%npT",
"operador embutido %sq",
"%nod, ambíguo por herança",
"%no (ambíguo por herança)",
"um construtor or destrutor pode não ter seu endereço capturado",
null,
"variável temporária utilizada para valor inicial de referência de uma não constante (anacronismo)",
@@ -1361,7 +1361,7 @@
"os atributos variáveis que são exibidos depois de um inicializador entre parênteses são ignorados",
"o resultado dessa conversão não pode ser usado como um lvalue",
"negação de um valor de ponto fixo não atribuído",
null,
"esse operador não é permitido nesse ponto; use parênteses",
null,
"os nomes de registro somente podem ser usados para variáveis de registro",
"as variáveis de registro nomeado não pode ter tipo void",
@@ -2354,7 +2354,7 @@
"um #include <lista_de_inicializadores> é necessário antes do uso de um std::initializer_list, incluindo um uso implícito",
"a palavra-chave 'inline' não pode ser usada na declaração de um alias de namespace",
"a declaração anterior de %n não foi declarada em linha",
"O %n foi declarado embutido anteriormente",
"a redeclaração de inline %n deve ser declarada em linha",
"o primeiro argumento deve ser uma constante inteira",
"um designador não pode ser usado com um tipo de não agregação %t",
"um designador para um membro de união anônima só pode aparecer entre chaves correspondentes àquela união anônima",
@@ -2435,7 +2435,7 @@
"o construtor constexpr deve inicializar a classe base direta %t",
"é improvável que a criação de um objeto std::initializer_list em um inicializador de campo funcione como esperado porque a matriz subjacente será destruída ao final da expressão completa",
"'this' não pode ser usado em uma expressão constante",
null,
"um inicializador vazio não é válido para este tipo de união (qual membro deve ser inicializado fica ambíguo)",
"'constexpr' não é permitido em uma diretiva explícita de instanciação",
"não é possível determinar a especificação de exceção do construtor padrão devido a uma dependência circular",
"%p definido por união anônima",
@@ -2474,7 +2474,7 @@
"qualificador inválido para %t (uma classe derivada não é permitida aqui)",
"o atributo 'always_inline' é ignorado em funções não embutidas",
"construtores de herança devem ser herdados de uma classe base direta",
null,
"%np já herdado de %t",
"espera-se um rótulo",
"espera-se um número de operando depois de '%%l'",
"o número de operando para '%%l' não se refere a um argumento de rótulo válido",
@@ -2515,7 +2515,7 @@
"funções excluídas são um recurso do C++11",
"funções padrão são um recurso do C++11",
"uma classe de armazenamento não é permitida em uma especialização explícita",
null,
"%t não é uma classe ou enumeração com escopo",
"uma enumeração sem escopo definido deve ser opaco para ser especializada",
"uma declaração de modelo enumeração deve fazer referência a um membro anteriormente declarado de um modelo de classe",
"espera-se um operando de vetor",
@@ -2790,7 +2790,7 @@
"o tipo de elemento do vetor deve ser integral, de enumeração ou do tipo de ponto flutuante real",
"a função interna não está disponível porque não há suporte para 128 bits inteiros",
"a função interna não está disponível porque não há suporte para os tipos de vetores",
"dois colchetes à esquerda consecutivos sempre introduzem uma lista de atributos, mas uma lista de atributos não pode aparecer aqui",
"dois colchetes à esquerda e consecutivos só podem apresentar uma lista de atributos",
"o atributo 'de destino' não reconhecido desqualifica essa rotina de ser usada pela rotina do resolvedor",
"%t não é um tipo de vetor",
"os tipos de vetor %t1 e %t2 devem ter o mesmo comprimento",
@@ -3224,7 +3224,7 @@
"uma nova expressão que chama uma função de alocação específica da classe não pode ser avaliada como constante",
"uma nova expressão de posicionamento não pode ser avaliada como constante",
"excluir por meio de um ponteiro de subobjeto exige um destruidor virtual",
"%npTd, com argumentos revertidos",
"%npT (com argumentos invertidos)",
"o operando de __INTADDR__ precisa ser deslocado do ponteiro nulo",
"O constructo _genérico corresponde a vários tipos",
"a outra correspondência é %t",
@@ -3246,8 +3246,8 @@
"restrição de modelo não satisfeita",
"a definição do conceito não pode aparecer neste escopo",
"redeclaração inválida de %nd",
"falha na substituição de argumentos %T da ID do conceito",
"o conceito é falso para argumentos %T",
"falha na substituição de argumentos para o conceito de ID",
"o conceito é false",
"uma cláusula requires não é permitida aqui (não é uma função de modelo)",
"modelo de conceito",
"cláusula requires incompatível com %nfd",
@@ -3291,7 +3291,7 @@
"o membro de dados não estático do tipo de referência %t impede a avaliação constexpr de __builtin_bit_cast",
"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",
"%npT (herdado pelo 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",
"%n precisa retornar nulo",
"declaração de início de membro inválida",
@@ -3300,7 +3300,7 @@
"uso inválido do conceito",
"um operador de comparação de membros usado como padrão não pode ser qualificado por '&&'",
"a função de comparação constexpr padrão chama a função não constexpr %nd",
"Só há suporte para a comparação de memória constexpr para os objetos inteiros ou matriz de inteiro",
"só há suporte para a comparação de memória constexpr para os objetos inteiros de nível superior ou matriz de inteiro",
"um modelo de conceito não pode ter restrições associadas",
"'export' não é permitido",
"a exportação de membros de classe individuais não é permitida",
@@ -3321,41 +3321,5 @@
"um ponteiro para membro de um tipo incompleto %t não é permitido",
"a expansão de pacote em init-capture não está habilitada neste modo",
"a expansão de pacote em init-capture é um recurso do C++20",
"um operador de comparação usado como padrão em uma definição de classe precisa ser a primeira declaração desse operador de comparação (%nd)",
"uma expansão de pacote em um init-capture pode ser usada somente em um modelo variádico",
"a restrição de tipo usa %nd, que não é um conceito de tipo (ou seja, um modelo de conceito cujo primeiro parâmetro é um parâmetro de tipo)",
"falha do tipo de espaço reservado deduzido %t na restrição de tipo",
"o construtor padrão de %t não é qualificado",
"o destruidor de %t é ambíguo devido a restrições não ordenadas",
"o destruidor de %t é inelegível devido a falhas de restrições",
"candidato a destruidor ambíguo",
"uma função virtual não pode ter uma cláusula requires à direita",
"%nd não satisfaz as respectivas restrições",
"o resultado do qualificador decltype %t não é uma classe nem uma enumeração",
"a comparação é ambígua no padrão de C++20 porque o operador de comparação implícito com parâmetros invertidos é uma correspondência igualmente boa. Isso geralmente é causado por um qualificador 'const' ausente no operador de comparação. Confira %nod",
"ID do conceito inválida",
"falha na substituição de argumentos %T da cláusula requires",
"as restrições de %nd não estão satisfeitas",
"o tipo de variável %t na função constexpr tem classes base virtuais",
"uma expressão de constante não pode alocar um subobjeto base virtual (para o tipo %t)",
"um parâmetro de modelo de tipo de classe precisa ser do tipo de classe estrutural",
"o suporte para literais UTF-8 exige o suporte para o literal u.",
"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",
"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",
"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",
"tentativas intrínsecas similares a memcpy de copiar o tipo não trivialmente copiável %t",
"tentativas intrínsecas similares a memcpy de copiar objetos parciais",
"tentativas intrínsecas similares a memcpy de copiar o limite de matriz passado",
"tentativas intrínsecas similares a memcpy de copiar intervalos de bytes sobrepostos (usando a operação de memmove correspondente, em vez disso)"
"um operador de comparação usado como padrão em uma definição de classe precisa ser a primeira declaração desse operador de comparação (%nd)"
]
+24 -60
View File
@@ -171,7 +171,7 @@
"требуется объявление",
"указатель указывает на элемент вне базового объекта",
"недопустимое преобразование типа",
"конфликт внешнего или внутреннего связывания с предыдущим объявлением %p",
"внешнее или внутреннее связывание конфликтует с предыдущим объявлением",
"значение с плавающей запятой не помещается в необходимом целом типе",
"выражение не имеет силы",
"индекс вне диапазона",
@@ -352,8 +352,8 @@
"существует несколько операторов %sq, соответствующих этим операндам:",
"первый параметр функции выделения должен иметь тип \"size_t\"",
"функции выделения требуется тип возвращаемого значения \"void *\"",
"функции освобождения требуется тип возвращаемого значения \"void\"",
"первый параметр функции освобождения должен иметь тип \"void *\"",
"функции изъятия требуется тип возвращаемого значения \"void\"",
"первый параметр функции изъятия должен иметь тип \"void *\"",
null,
"необходимо использовать тип объекта",
"базовый класс %t инициализирован",
@@ -420,9 +420,9 @@
"применяется несколько функций преобразования из %t во встроенный тип:",
"константа %n",
"ссылка %n",
"%npTd",
"%npT",
"встроенный оператор %sq",
"%nod, неоднозначный по наследованию",
"%no (неоднозначное наследование)",
"получение адреса конструктора или деструктора не допускается",
null,
"временно используется в качестве начального значения для ссылки на неконстантный параметр (устаревший элемент)",
@@ -732,7 +732,7 @@
"%n не является шаблоном класса",
"нестандартный массив с неполным типом элементов",
"оператор выделения нельзя объявить в пространстве имен",
"оператор освобождения нельзя объявить в пространстве имен",
"оператор изъятия нельзя объявить в пространстве имен",
"%np1 конфликтует с объявлением using для %np2",
"объявление using для %np1 конфликтует с %npd2",
"параметр namespaces можно использовать только при компиляции C++",
@@ -1361,7 +1361,7 @@
"атрибуты переменной, появляющиеся после инициализатора в круглых скобках, пропущены",
"результат этого приведения не может использоваться в качестве левостороннего значения",
"отрицание значения с фиксированной запятой без знака",
null,
"использование данного оператора в этом месте не допускается; используйте круглые скобки",
null,
"имена регистра можно использовать только для регистровых переменных",
"переменные named-register не могут иметь тип void",
@@ -1739,7 +1739,7 @@
"локальная переменная вне текущей функции не может быть записана",
"на вложенную функцию \"this\" нельзя ссылаться внутри тела лямбды, если она не находится в списке записей",
null,
"зафиксированная лямбдой переменная типа %t1 не может быть скопирована в поле показатели класса типа %t2",
"записанная лямбдой переменная типа %t1 не может быть скопирована в поле показатели класса типа %t2",
"недопустимый каталог шаблона: %s",
"ошибка",
"ошибки",
@@ -2354,7 +2354,7 @@
"параметр #include <список_инициализатора> необходимо использовать перед std::initializer_list, включая неявное использование",
"невозможно использовать ключевое слово inline в объявлении псевдонима пространства имен",
"предыдущее объявление %n не было выполнено в строке",
"%n ранее был объявлен как встроенный",
"повторное объявление встроенного параметра %n должно выполняться в строке",
"первым аргументом должна являться целочисленная константа",
"Указатель не может использоваться с неагрегатным типом %t.",
"Указатель элемента анонимного объединения может быть только в фигурных скобках, соответствующих этому анонимному объединению.",
@@ -2435,7 +2435,7 @@
"конструктор constexpr должен инициализировать прямой базовый класс %t",
"создание объекта std::initializer_list в инициализаторе полей, вероятно, не будет работать, как ожидается, потому что базовый массив будет разрушен в конце полного выражения",
"выражение \"this\" не может использоваться в константном выражении",
null,
"пустой инициализатор для этого типа объединения не допускается (непонятно, какой из членов должен инициализироваться)",
"\"constexpr\" не допускается в директиве явного создания экземпляра",
"не удается определить спецификацию исключения конструктора по умолчанию из-за кольцевой зависимости",
"определенный анонимным объединением %p",
@@ -2474,7 +2474,7 @@
"недопустимый квалификатор для %t (использование производного класса не допускается)",
"атрибут always_inline пропускается в функциях, не являющихся встраиваемыми",
"наследуемые конструкторы должны наследоваться от прямого базового класса",
null,
"%np уже наследуется от %t",
"ожидается метка",
"после \"%%l\" ожидается номер операнда",
"номер операнда для \"%%l\" не указывает на допустимый аргумент метки",
@@ -2515,7 +2515,7 @@
"удаленные функции — это функция C++ 11",
"функции по умолчанию — это функция C++ 11",
"класс хранения недопустим в явной специализации",
null,
"%t не является классом или ограниченным перечислением.",
"чтобы быть специализированным, неограниченное перечисление должно быть непрозрачным",
"объявление шаблона перечисления должно ссылаться на ранее объявленный член шаблона класса",
"требуется векторный операнд",
@@ -2790,7 +2790,7 @@
"тип элемента вектора должен быть целым числом, перечислением или действительным числом с плавающей запятой",
"встроенная функция недоступна, так как 128-разрядные целые числа не поддерживаются",
"встроенная функция недоступна, так как векторные типы не поддерживаются",
"две последовательных левых квадратных скобки всегда вводят список атрибутов, но список атрибутов не может быть указан здесь",
"две левые квадратные скобки подряд могут представлять только список атрибутов",
"нераспознанный атрибут target блокирует использование этой процедуры процедурой сопоставителя",
"%t не является векторным типом",
"векторные типы %t1 и %t2 должны иметь одинаковую длину",
@@ -3176,7 +3176,7 @@
"\"return_void\" было объявлено как %p",
"Отсутствует оператор co_return, хотя %t не содержит \"return_void\" в конце %n.",
"Для распределения состояния сопрограммы не обнаружено ни одного nothrow-варианта глобального \"operator new\".",
"Для освобождения выделения состояния сопрограммы не обнаружено подходящего \"operator delete\".",
"Для отмены выделения состояния сопрограммы не обнаружено подходящего \"operator delete\".",
"Функция constexpr не может быть сопрограммой.",
"операнд для этого выражения %s разрешается в %t, не являющийся классом",
"выражение co_await не допускается в статическом инициализаторе",
@@ -3190,10 +3190,10 @@
"в %t не найдено ни одного элемента статических данных constexpr %sq",
"слишком большое число элементов (%d) для динамического распределения",
"слишком большой запрос динамического выделения constexpr",
"освобождение хранилища, которое не было распределено динамически",
"размер освобождения распределения (%d1) не соответствует выделенному размеру (%d2)",
"отмена распределения хранилища, которое не было распределено динамически",
"размер отмены распределения (%d1) не соответствует выделенному размеру (%d2)",
"место распределения",
"тип освобождения (%t1) не соответствует типу распределения (%t2)",
"тип отмены распределения (%t1) не соответствует типу распределения (%t2)",
"не удалось отменить некоторые динамические распределения (общее число: %d)",
"встроенный %n объявлен с непредвиденной сигнатурой (тип %t)",
">> вывод из std::__report_constexpr_value",
@@ -3224,7 +3224,7 @@
"new-expression, вызывающее функцию выделения для конкретного класса, не может быть вычислено в константном выражении",
"Выражение placement new не может быть вычислено как константное.",
"для удаления через указатель на подобъект требуется виртуальный деструктор",
"%npTd с аргументами в обратном порядке",
"%npT (с обратными аргументами)",
"операнд __INTADDR__ должен содержать смещение от нулевого указателя",
"Конструкция _Generic соответствует нескольким типам",
"другое совпадение — %t",
@@ -3246,8 +3246,8 @@
"Ограничение шаблона не соблюдено",
"Определение концепции не может находиться в этой области",
"Недопустимое повторное объявление %nd",
"не удалось подставить аргументы %T для идентификатора концепции",
"концепция имеет значение false для аргументов %T",
"Не удалось подставить аргументы для идентификатора концепции",
"концепция имеет значение false",
"Использование здесь предложения requires запрещено (не шаблонная функция)",
"шаблон концепции",
"Предложение requires несовместимо с %nfd",
@@ -3276,7 +3276,7 @@
"файл модуля",
"не удалось найти файл модуля для модуля %sq",
"не удалось импортировать файл модуля %sq",
"ожидалось %s1, но было найдено %s2",
"ожидалось \"%s1\", но было использовано \"%s2\"",
"При открытии файла модуля %sq",
"Неизвестное имя раздела %sq",
"неизвестный файл модуля",
@@ -3291,7 +3291,7 @@
"нестатические элементы данных ссылочного типа %t не позволяют выполнять вычисление constexpr для __builtin_bit_cast.",
"непостоянный тип %t не позволяет выполнять вычисление constexpr для __builtin_bit_cast",
"тип %t объединения, указателя или указателя на элемент не позволяет выполнять вычисление constexpr для __builtin_bit_cast.",
"%npTd, унаследованный с помощью decl %p",
"%npT (наследуется с помощью объявления %p)",
"невозможно выполнить конструирование подобъекта %t для наследования конструкторов — неявный конструктор по умолчанию удален.",
"%n требует возврата void.",
"недопустимое начало объявления элемента",
@@ -3300,7 +3300,7 @@
"недопустимое использование концепции",
"оператор сравнения элемента по умолчанию не может быть квалифицирован как \"&&\"",
"функция сравнения constexpr по умолчанию вызывает функцию %nd, не являющуюся constexpr",
"сравнение памяти с помощью constexpr поддерживается только для целых чисел и для массивов целых чисел",
"Сравнение памяти с помощью constexpr поддерживается только для целочисленных объектов верхнего уровня или массивов целых чисел",
"шаблон концепции не может иметь связанные ограничения",
"использование \"export\" запрещено",
"экспорт отдельных членов класса запрещен",
@@ -3321,41 +3321,5 @@
"недопустимый указатель на член неполного типа %t",
"расширение пакета в init-capture не включено в этом режиме",
"расширение пакета в init-capture — это функция C++ 20",
"оператор сравнения по умолчанию в определении класса должен быть первым объявлением этого оператора сравнения (%nd)",
"расширение пакета в init-capture может быть использовано только в шаблоне с переменным числом аргументов",
"ограничение типа использует %nd, не являющийся концепцией типа (например, шаблон концепции, первый параметр которого является параметром типа)",
"выведенный тип заполнителя %t не отвечает ограничению типа",
"конструктор по умолчанию для %t не соответствует требованиям",
"деструктор для %t является неоднозначным из-за неупорядоченных ограничений",
"деструктор для %t не соответствует требованиям из-за несоблюденных ограничений",
"неоднозначный кандидат деструктора",
"виртуальная функция не может иметь завершающее предложение requires",
"%nd не удовлетворяет его ограничениям",
"результат квалификатора decltype %t не является классом или перечислением",
"cравнение является неоднозначным в стандартном C++ 20, поскольку подразумеваемый оператор сравнения с обратными параметрами является в той же степени подходящим соответствием — как правило, это вызвано отсутствием квалификатора \"const\" в операторе сравнения; см. %nod",
"недопустимый идентификатор концепции",
"не удалось подставить аргументы %T для предложения requires",
"ограничения для %nd не удовлетворены",
"тип переменной %t в функции constexpr содержит виртуальные базовые классы",
"константное выражение не может выделить виртуальный базовый подобъект (для типа %t)",
"параметр шаблона для типа класса должен иметь тип структурного класса",
"для поддержки литералов UTF-8 требуется поддержка u-literal.",
"сопоставление файла модуля для \"%s\" указано несколько раз",
"сопоставление блока заголовка для \"%s\" указано несколько раз",
"сопоставление для \"%s\" не указано",
"сопоставление файла модуля для \"%s\" является недопустимым",
"не удается найти заголовок \"%s\" для импорта",
"несколько файлов в списке файлов модулей соответствуют \"%s\"",
"файл модуля, обнаруженный для \"%s\", относится к другому модулю",
"любой тип файла модуля",
"не удалось прочитать файл модуля",
"встроенная функция недоступна, так как тип char8_t не поддерживается с текущими параметрами.",
"невозможно указать параметр командной строки --ms_await, если включены сопрограммы C++20.",
"нестандартное использование явного конструктора %nod для агрегатной инициализации элементов по умолчанию.",
"источник или назначение встроенной функции, похожей на memcpy, не указывает на объект",
"Встроенная функция, похожая на memcpy, пытается скопировать различные с точки зрения представления типы %t1 и %t2",
"Встроенная функция, похожая на memcpy, пытается скопировать нетривиально копируемый тип %t",
"Встроенная функция, похожая на memcpy, пытается скопировать частичный объект",
"Встроенная функция, похожая на memcpy, пытается выполнить копирование за границей массива",
"Встроенная функция, похожая на memcpy, пытается скопировать перекрывающиеся диапазоны байтов (вместо использования соответствующей операции memmove)"
"оператор сравнения по умолчанию в определении класса должен быть первым объявлением этого оператора сравнения (%nd)"
]
+20 -56
View File
@@ -171,7 +171,7 @@
"bir bildirim bekleniyor",
"işaretçi, alttaki nesnenin dışına işaret ediyor",
"geçersiz tür dönüşümü",
"önceki %p bildirimi ile dış/iç bağlantı çakışması",
"önceki bildirim ile dış/iç bağlantı çakışması",
"kayan nokta değeri gerekli tam sayı türüne uymuyor",
"ifadenin bir etkisi yok",
"indis aralık dışında",
@@ -352,8 +352,8 @@
"bu işlenenlerle eşleşen birden fazla %sq işleç var:",
"ayırma işlevinin ilk parametresi 'size_t' türünde olmalı",
"ayırma işlevi 'void *' dönüş türü gerektiriyor",
"serbest bırakma işlevi 'void' dönüş türü gerektiriyor",
"serbest bırakma işlevinin ilk parametresi 'void *' türünde olmalı",
"ayırmayı kaldırma işlevi 'void' dönüş türü gerektiriyor",
"ayırmayı kaldırma işlevinin ilk parametresi 'void *' türünde olmalı",
null,
"tür, bir nesne türü olmalı",
"%t taban sınıfı önceden başlatılmış",
@@ -420,9 +420,9 @@
"%t türünden yerleşik bir türe dönüşüm yapan birden çok dönüştürme işlevi geçerli:",
"%n const bir öğe",
"%n başvurusu",
"%npTd",
"%npT",
"%sq yerleşik işleci",
"%nod, belirsiz olarak devralındı",
"%no (devralma yoluyla belirsiz)",
"bir oluşturucu ya da yıkıcının adresi alınamaz",
null,
"const olmayan bir değere başvurunun ilk değeri için geçici değer kullanıldı (anakronizm)",
@@ -732,7 +732,7 @@
"%n bir sınıf şablonu değil",
"tamamlanmamış öğe türüne sahip bir dizi standart değil",
"ayırma işleci bir ad uzayı içinde bildirilemez",
"serbest bırakma işleci bir isim uzayı içinde bildirilemez",
"ayırmayı kaldırma işleci bir ad uzayı içinde bildirilemez",
"%np1, %np2 öğesinin using bildirimi ile çakışıyor",
"%np1 öğesinin using bildirimi %npd2 ile çakışıyor",
"ad uzayı seçeneği yalnızca C++ derlenirken kullanılabilir",
@@ -1361,7 +1361,7 @@
"parantez içine alınmış bir başlatıcıdan sonra gelen değişken öznitelikleri yoksayılıyor",
"bu tür dönüştürmenin sonucu bir lvalue olarak kullanılamaz",
"işaretsiz sabit noktalı bir değer değilleniyor",
null,
"bu aşamada bu operatöre izin verilmiyor; parantez kullanın",
null,
"yazmaç adları yalnızca yazmaç değişkenleri için kullanılabilir",
"adlandırılmış yazmaç değişkenleri void türünde olamaz",
@@ -2354,7 +2354,7 @@
"Örtük kullanım dahil olmak üzere std::initializer_list kullanımından önce #include <initializer_list> gereklidir",
"Ad alanı diğer ad bildiriminde 'inline' anahtar sözcüğü kullanılamaz",
"Önceki %n bildirimi satır içi olarak bildirilmedi",
"%n daha önce satır içi olarak bildirildi",
"Satır içi %n yeniden bildirimi satır içi olarak bildirilmelidir",
"İlk bağımsız değişken bir tam sayı sabiti olmalıdır",
"Belirleyici, küme olmayan tür %t ile kullanılamaz",
"Anonim birleşim üyesine yönelik belirleyici, yalnızca ilgili anonim birleşime karşılık gelen küme ayraçları içinde görünebilir",
@@ -2435,7 +2435,7 @@
"constexpr oluşturucusu %t doğrudan temel sınıfını başlatmalıdır",
"Temel alınan dizi tam ifadenin sonunda yok edileceği için, bir alan başlatıcısındaki std::initializer_list nesnesinin oluşturulması büyük olasılıkla beklenen şekilde çalışmaz",
"Sabit bir ifadede 'this' kullanılamaz",
null,
"Bu birleşim türü için boş başlatıcı geçerli değildir (hangi üyenin başlatılması gerektiği belirsizdir)",
"Açık örnek oluşturma yönergesinde 'constexpr'ye izin verilmez",
"Döngüsel bağımlılık nedeniyle varsayılan oluşturucunun özel durum belirtimi belirlenemiyor",
"Anonim birleşim tanımlı %p",
@@ -2474,7 +2474,7 @@
"%t için geçersiz niteleyici (burada türetilen bir sınıfa izin verilmiyor)",
"'always_inline' özniteliği satır içi olmayan işlevlerde yoksayılır",
"Devralınan oluşturucular doğrudan temel sınıftan devralınmalıdır",
null,
"%np zaten %t üzerinden devraldı",
"etiket bekleniyordu",
"'%%l' sonrasında bir işlenen numarası bekleniyordu",
"'%%l' işlenen numarası geçerli bir etiket bağımsız değişkenine başvurmaz",
@@ -2515,7 +2515,7 @@
"silinen işlevler bir C++11 özelliğidir",
"varsayılan olarak ayarlanan işlevler bir C++11 özelliğidir",
"Açık özelleştirmede depolama sınıfına izin verilmez",
null,
"%t bir sınıf veya kapsamlı sabit listesi değildir",
"Kapsamsız sabit listesi, özelleştirilmek için genel olmamalıdır",
"Sabit listesi şablonu bildirimi, sınıf şablonunun önceden bildirilmiş üyesine başvurmalıdır",
"vektör işlenen bekleniyordu",
@@ -2790,7 +2790,7 @@
"vektör öğe türü, tam sayı, sabit listesi veya gerçek kayan nokta türünde olmalıdır",
"128 bit tamsayılar desteklenmediği için yerleşik işlev kullanılamıyor",
"vektör türleri desteklenmediği için yerleşik işlev kullanılamıyor",
"arka arkaya iki köşeli parantez her zaman bir öznitelik listesi belirtir ancak öznitelik listesi burada görünmez",
"iki ardışık sol köşeli ayraç yalnızca bir öznitelik listesini tanımlayabilir",
"tanınmayan 'target' özniteliğinden dolayı bu yordam, çözümleyici yordamı tarafından kullanılmak için uygun değil",
"%t bir vektör türü değil",
"%t1 ve %t2 vektör türleri aynı uzunlukta olmalıdır",
@@ -3176,7 +3176,7 @@
"'return_void' tarafından bildirilen %p",
"%t, %n sonunda 'return_void' öğesine sahip olmadığından, co_return deyimi eksik",
"eş yordam durum ayırma için genel 'operator new' öğesinin nothrow çeşidi bulunamadı",
"eş yordam durum serbest bırakması için uygun bir 'operator delete' bulunamadı",
"eş yordam durum ayırmasının kaldırılması için uygun bir 'operator delete' bulunamadı",
"constexpr işlevi eş yordam olamaz",
"Bu %s ifadesinin işleneni, sınıf olmayan %t öğesine çözümleniyor",
"co_await ifadesine statik başlatıcıda izin verilmez",
@@ -3190,7 +3190,7 @@
"%t içinde %sq constexpr statik veri üyesi bulunamadı",
"dinamik ayırma için öğe sayısı (%d) çok büyük",
"constexpr dinamik ayırma isteği çok büyük",
"dinamik olarak ayrılmamış depolama alanının serbest bırakılması",
"dinamik olarak ayrılmamış depolama alanı ayırmayı kaldırma",
"serbest bırakma boyutu (%d1), ayrılan boyuta (%d2) karşılık gelmiyor",
"ayırma burada oluştu",
"serbest bırakma türü (%t1), ayırma türüne (%t2) karşılık gelmiyor",
@@ -3224,7 +3224,7 @@
"sınıfa özgü ayırma işlevini çağıran yeni bir ifade sabit değer olarak değerlendirilemez",
"yerleşim new ifadesi sabit değer olarak değerlendirilemez",
"alt nesne işaretçisi aracılığıyla silme işlemi, sanal yıkıcı gerektirir",
"%npTd, tersine çevrilmiş bağımsız değişkenlere sahip",
"%npT (tersine çevrilmiş bağımsız değişkenlerle)",
"__INTADDR__ işleneni null işaretçisinden mahsup edilmelidir",
"_Generic yapısı birden çok türle eşleşiyor",
"diğer eşleşme %t",
@@ -3246,8 +3246,8 @@
"şablon kısıtlaması karşılanmadı",
"bu kapsamda kavram tanımı görünemez",
"%nd için yeniden bildirim geçersiz",
"kavram kimliği için %T bağımsız değişkenleri değiştirilemedi",
"%T bağımsız değişkenleri için kavram false",
"kavram kimliği bağımsız değişkenleri değiştirilemedi",
"kavram false",
"burada bir requires yan tümcesine izin verilmiyor (şablonlu bir işlev değil)",
"kavram şablonu",
"requires yan tümcesi %nfd ile uyumsuz",
@@ -3291,7 +3291,7 @@
"başvuru türündeki statik olmayan veri üyesi __builtin_bit_cast %t constexpr değerlendirmesi yapılmasını engelliyor",
"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ı",
"%npT (decl %p kullanılarak devralındı)",
"devralma oluşturucuları için %t alt nesne oluşturma gerçekleştirilemiyor; örtük varsayılan Oluşturucu silindi",
"%n void döndürmesi gerekir",
"üye bildiriminin başlangıcı geçersiz",
@@ -3300,7 +3300,7 @@
"kavram kullanımı geçersiz",
"varsayılan olarak ayarlanan üye karşılaştırma işleci tam '&&' ile nitelenemez",
"varsayılan constexpr karşılaştırma işlevi constexpr olmayan %nd işlevini çağırıyor",
"constexpr bellek karşılaştırması yalnızca tamsayı veya tamsayı dizisi nesneleri için desteklenir",
"constexpr bellek karşılaştırması yalnızca üst düzey tamsayı veya tamsayı dizisi nesneleri için desteklenir",
"kavram şablonunda ilişkili kısıtlamalar olamaz",
"'export'a izin verilmiyor",
"sınıf üyelerini tek tek dışarı aktarmaya izin verilmiyor",
@@ -3321,41 +3321,5 @@
"eksik tür %t için işaretçiden üyeye öğesine izin verilmez",
"init-capture içinde paket genişletme bu modda etkin değil",
"init-capture özelliğindeki paket genişletme bir C++ 20 özelliğidir",
"sınıf tanımında varsayılan olarak kullanılan bir karşılaştırma işleci, ilgili karşılaştırma işlecinin ilk bildirimi olmalıdır (%nd)",
"init-capture içindeki bir paket genişletmesi yalnızca değişen sayıda bağımsız değişken içeren bir şablonda kullanılabilir",
"tür kısıtlaması, bir tür kavramı (yani, ilk parametresi tür parametresi olan bir kavram şablonu) olmayan %nd kullanıyor",
"%t çıkarsanan yer tutucu türüne yönelik tür kısıtlaması başarısız oldu",
"%t için varsayılan oluşturucu uygun değil",
"sıralanmamış kısıtlamalar nedeniyle %t için yıkıcı belirsiz",
"başarısız kısıtlamalar nedeniyle %t için yıkıcı uygun değil",
"belirsiz yıkıcı adayı",
"bir sanal işlevin sonunda requires yan tümcesi olamaz",
"%nd kısıtlamalarını karşılamıyor",
"%t decltype niteleyicisinin sonucu bir sınıf veya sabit listesi değil",
"ters çevrilmiş parametrelere sahip örtük karşılaştırma işleci eşit olarak iyi bir eşleşme olduğundan karşılaştırma, standart C++20'de belirsizdir; bu genellikle karşılaştırma işlecinde eksik 'const' niteleyicisinden kaynaklanır; bkz. %nod",
"kavram kimliği geçersiz",
"requires yan tümcesi için %T bağımsız değişkenleri değiştirilemedi",
"%nd için kısıtlamalar karşılanmadı",
"constexpr işlevindeki %t değişken türü, sanal temel sınıflara sahip",
"sabit ifade bir sanal temel alt nesneyi ayıramaz (%t türü için)",
"sınıf türündeki bir şablon parametresi yapısal sınıf türünde olmalıdır",
"UTF-8 sabit değerleri desteği için u-literal desteği gerekir.",
"'%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",
"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",
"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",
"memcpy benzeri iç öğe, önemsiz olarak kopyalanabilir %t türünü kopyalamaya çalışıyor",
"memcpy benzeri iç öğe, kısmi nesneyi kopyalamaya çalışıyor",
"memcpy benzeri iç öğe, geçmiş dizi sınırını kopyalamaya çalışıyor",
"memcpy benzeri iç öğe, çakışan bayt aralıklarını kopyalamaya çalışıyor (bunun yerine karşılık gelen memmove işlemini kullanarak)"
"sınıf tanımında varsayılan olarak kullanılan bir karşılaştırma işleci, ilgili karşılaştırma işlecinin ilk bildirimi olmalıdır (%nd)"
]
@@ -171,7 +171,7 @@
"应输入声明",
"指针指向基础对象之外",
"类型转换无效",
"外部/内部链接与前的声明 %p 冲突",
"外部/内部链接与前的声明冲突",
"浮点值不适合于所需的整型",
"表达式不起任何作用",
"下标超出范围",
@@ -352,8 +352,8 @@
"有多个运算符 %sq 与这些操作数匹配:",
"分配函数的第一个参数必须是“size_t”类型",
"分配函数需要“void *”返回类型",
"解除分配函数需要“void”返回类型",
"解除分配函数的第一个参数必须是“void *”类型",
"释放函数需要“void”返回类型",
"释放函数的第一个参数必须是“void *”类型",
null,
"类型必须是对象类型",
"基类 %t 已初始化",
@@ -420,9 +420,9 @@
"应用了多个从 %t 到内置类型的转换函数:",
"常量 %n",
"引用 %n",
"%npTd",
"%npT",
"内置运算符 %sq",
"%nod,通过继承但含义不明确",
"%no (继承不明确)",
"构造函数或析构函数不能提取其自身的地址",
null,
"临时用于非常量引用的初始值(计时错误)",
@@ -732,7 +732,7 @@
"%n 不是类模板",
"具有不完整元素类型的数组是非标准的",
"不能在命名空间中声明分配运算符",
"不能在命名空间中声明解除分配运算符",
"不能在命名空间中声明释放运算符",
"%np1 与 %np2 的 using 声明冲突",
"%np1 的 using 声明与 %npd2 冲突",
"namespaces 选项只能在编译 C++ 时使用",
@@ -1361,7 +1361,7 @@
"已忽略出现在带圆括号的初始值设定项之后的变量特性",
"此强制转换的结构不能用作左值",
"求反无符号定点值",
null,
"该点不允许此操作;请使用括号",
null,
"寄存器名只能用于寄存器变量",
"已命名的寄存器变量不能包含 void 类型",
@@ -2354,7 +2354,7 @@
"需要先加入 #include <initializer_list>,然后才能使用 std::initializer_list,其中包括隐式使用",
"不能在命名空间别名声明中使用“inline”关键字",
"以前的 %n 声明不是以内联方式声明的",
"%n 之前声明为内联",
"必须以内联方式声明内联 %n 的重新声明",
"第一个参数必须为整数常量",
"指示符不能与非聚合类型 %t 配合使用",
"匿名联合成员的指示符只能出现在与该匿名联合对应的大括号中",
@@ -2435,7 +2435,7 @@
"constexpr 构造函数必须初始化直接基类 %t",
"字段初始值设定项中的 std::initializer_list 对象的创建可能无法发挥预期的作用,因为在整个表达式的结尾将销毁基础数组",
"“this”不能在常量表达式中使用",
null,
"空初始值设定项对此联合类型无效(应初始化的成员不明确)",
"不允许对显式实例化指令使用“constexpr”",
"无法确定默认构造函数的异常规范,因为存在循环依赖",
"匿名联合定义的 %p",
@@ -2474,7 +2474,7 @@
"%t 的无效限定符(此处不允许使用派生类)",
"\"always_inline\" 属性在非内联函数中被忽略",
"继承构造函数时,必须从直接基类进行继承",
null,
"%np 已从 %t 继承",
"应有一个标签",
"\"%%l\" 应后接一个操作数",
"“%%l”的操作数编号未引用有效的 label 参数",
@@ -2515,7 +2515,7 @@
"删除函数是一项 C++11 特性",
"默认函数是一项 C++11 特性",
"不允许在显式专用化中使用存储类",
null,
"%t 不是一个类或区分范围的枚举",
"未区分范围的枚举不得透明,以进行专用化",
"枚举模板声明必须引用以前声明的类模板成员",
"应为矢量操作数",
@@ -2790,7 +2790,7 @@
"矢量元素类型必须是整型、枚举或真浮点类型",
"内置函数无法使用,因为不支持 128 位整数",
"内置函数无法使用,因为不支持矢量类型",
"两个连续的左方括号必然会引入一个属性列表,但此处不能出现属性列表",
"两个连续的左方括号只能引入特性列表",
"无法识别的 \"target\" 特性将使解析程序例程无法使用此例程",
"%t 不是矢量类型",
"适量类型 %t1 和 %t2 长度必须相同",
@@ -3224,7 +3224,7 @@
"无法对调用类专属分配函数的 new-expression 进行常量计算",
"无法对 placement new 表达式进行常量计算",
"需使用虚拟析构函数才能通过子对象指针删除",
"%npTd带逆参数",
"%npT (带逆参数)",
"__INTADDR__ 的操作数必须是从空指针算起的偏移量",
"泛型构造与多个类型相匹配(_G)",
"另一匹配是 %t",
@@ -3246,8 +3246,8 @@
"不满足模板约束",
"概念定义不能出现在此范围内",
"%nd 的重新声明无效",
"concept-id 的参数 %T 替换失败",
"参数 %T 的概念为 false",
"concept-id 的参数替换失败",
"概念为 false",
"此处不允许使用 requires 子句(不是模板化函数)",
"概念模板",
"requires 子句与 %nfd 不兼容",
@@ -3291,7 +3291,7 @@
"引用类型 %t 的非静态数据成员阻止对 __builtin_bit_cast 进行 constexpr 计算",
"易失类型 %t 阻止对 __builtin_bit_cast 进行 constexpr 计算",
"联合类型、指针类型或指向成员的指针类型 %t 阻止对 __builtin_bit_cast 进行 constexpr 计算",
"%npTd,已通过使用 decl %p 继承",
"%npT (通过使用 decl %p 继承)",
"无法为继承构造函数执行 %t 的子对象构造 -- 已删除隐式默认构造函数",
"%n 必须返回 void",
"成员声明的开头无效",
@@ -3300,7 +3300,7 @@
"概念的使用无效",
"默认成员比较运算符不能是 \"&&\" 限定",
"默认的 constexpr 比较函数会调用非 constexpr 函数 %nd",
"只有整数或数组整数对象支持 constexpr 内存比较",
"只有顶级整数或数组整数对象支持 constexpr 内存比较",
"概念模板不能具有关联约束",
"不允许使用 \"export\"",
"不允许导出单个类成员",
@@ -3321,41 +3321,5 @@
"不允许使用不完整类型 %t 的指向成员的指针",
"此模式下未启用 init-capture 中的包扩展",
"init-capture 中的包扩展是 C++ 20 功能",
"类定义中默认的比较运算符必须是该比较运算符的第一个声明(%nd)",
"init-capture 中的包扩展只能在可变参数模板中使用",
"类型约束使用不是类型概念的 %nd (即,第一个参数为类型参数的概念模板)",
"推导出的占位符类型 %t 未能通过类型约束",
"%t 的默认构造函数不合格",
"%t 的析构函数不明确,因为存在未排序的约束",
"由于约束失败,%t 的析构函数不合格",
"析构函数候选项不明确",
"虚函数不能有尾随 requires 子句",
"%nd 不满足其约束",
"decltype 限定符的结果 %t 不是类或枚举",
"标准 C++20 中的比较不明确,因为连接反向参数的隐式比较运算符的比较结果表示了同等好的匹配--这通常是由于比较运算符中缺少 \"const\" 限定符造成的; 请参阅 %nod",
"concept-id 无效",
"requires-clause 的参数 %T 替换失败",
"不满足 %nd 的约束",
"constexpr 函数中变量类型 %t 具有虚拟基类",
"常数表达式无法为类型 %t 分配虚拟基子对象",
"类类型的模板参数必须是结构类类型",
"对 UTF-8 文本的支持需要 u 文本支持。",
"多次为“%s”指定了模块文件映射",
"多次为“%s”指定了标头单元映射",
"未为“%s”指定映射",
"“%s”的模块文件映射无效",
"找不到要导入的标头“%s”",
"模块文件列表中有多个文件与“%s”匹配",
"为“%s”找到的模块文件用于其他模块",
"任何类型的模块文件",
"无法读取模块文件",
"内置函数不可用,因为当前选项不支持 char8_t 类型",
"如果启用了 C++20 协同程序,则无法指定 --ms_await 命令行选项",
"对默认聚合元素初始化使用显式构造函数 %nod 不是标准做法",
"与 memcpy 类似的固有项的源或目标不指向对象",
"与 memcpy 类似的固有项尝试复制在表达上不同的类型 %t1 和 %t2",
"与 memcpy 类似的固有项尝试复制非平凡可复制类型 %t",
"与 memcpy 类似的固有项尝试复制部分对象",
"与 memcpy 类似的固有项尝试复制过去的数组边界",
"与 memcpy 类似的固有项尝试复制重叠的字节范围(改为使用相应的 memmove 操作)"
"类定义中默认的比较运算符必须是该比较运算符的第一个声明(%nd)"
]
@@ -171,7 +171,7 @@
"必須是宣告",
"指標指向基礎物件之外",
"無效的類型轉換",
"外部/內部連結與上一個宣告衝突 %p",
"外部/內部連結與上一個宣告衝突",
"浮點值不適合必要的整數類資料類型",
"運算式無效",
"訂閱超出範圍",
@@ -420,9 +420,9 @@
"%t 與內建類型之間有一個以上合適的轉換函式: ",
"常數 %n",
"參考 %n",
"%npTd",
"%npT",
"內建運算子 %sq",
"%nod因繼承而模稜兩可",
"%no (因繼承而模稜兩可)",
"建構函式或解構函式不能使用自己的位址",
null,
"暫存區用於非常數參考的初始值 (過時用法)",
@@ -1361,7 +1361,7 @@
"已忽略出現在小括號內的初始設定式之後的變數屬性",
"此轉換的結果不能做為左值",
"否定不帶正負號的定點值",
null,
"目前不能有這個運算子; 請使用括號",
null,
"暫存器名稱只能用於暫存器變數",
"具名暫存器變數不能有 void 類型",
@@ -2354,7 +2354,7 @@
"必須有 #include <initializer_list> 才能使用 std::initializer_list,表示要隱含使用",
"無法針對命名空間別名宣告使用 'inline' 關鍵字",
"%n 的上一個宣告並未宣告為 inline",
"%n 先前宣告為內嵌",
"重新宣告 inline %n 時,必須宣告為 inline",
"第一個引數必須是整數常數",
"指示項不能與非彙總類型 %t 一起使用",
"匿名等位成員的指示項只能出現在與該匿名等位對應的大括號中",
@@ -2435,7 +2435,7 @@
"constexpr 建構函式必須初始化直接基底類別 %t",
"在欄位初始設定式中建立 std::initializer_list 物件不太可能如預期般運作,因為基礎陣列將於完整運算式的結尾被終結",
"常數運算式中不能使用 'this'",
null,
"空的初始設定式對這個等位類型而言無效 (應該初始化哪個成員模稜兩可) ",
"明確具現化指示詞中不允許 'constexpr'",
"因為循環相依性,導致無法判定預設建構函式的例外狀況規格",
"匿名等位定義的 %p",
@@ -2474,7 +2474,7 @@
"%t 的限定詞無效 (這裡不允許使用衍生類別)",
"非內嵌函式會忽略 'always_inline' 屬性",
"inheriting 建構函式必須從直接基底類別繼承",
null,
"%np 已從 %t 繼承",
"必須有標籤",
"'%%l' 之後必須有運算元數字",
"'%%l' 的運算元數字未參考有效的標籤引數",
@@ -2515,7 +2515,7 @@
"deleted 函式是 C++11 功能",
"defaulted 函式是 C++11 功能",
"明確特製化中不允許儲存類別",
null,
"%t 不是類別或有限範圍列舉",
"不限範圍列舉必須是 opaque,才能特製化",
"列舉樣板宣告必須參考類別樣板先前宣告的成員",
"必須是向量運算元",
@@ -2790,7 +2790,7 @@
"向量元素類型必須是整數、列舉或實數浮點類型",
"因為不支援 128 位元整數,所以無法使用內建函式",
"因為不支援向量類型,所以無法使用內建函式",
"兩個連續的左括弧會一律引進屬性清單,但此處不能出現屬性清單",
"兩個連續的左括弧只能產生屬性清單",
"無法辨識的 'target' 屬性會導致解析程式常式無法使用此常式",
"%t 不是向量類型",
"向量類型 %t1 與 %t2 的長度必須相同",
@@ -3224,7 +3224,7 @@
"呼叫類別專屬配置函式的 new-expression 不能進行常數評估",
"placement new 運算式不能進行常數評估",
"需要有虛擬解構函式才能透過子物件指標刪除",
"%npTd具有反轉引數",
"%npT (具有反轉引數)",
"__INTADDR__ 的運算元必須從 null 指標位移",
"_Generic 建構符合多種類型",
"另一個相符項目為 %t",
@@ -3246,8 +3246,8 @@
"未滿足範本限制式",
"概念定義不能出現在此範圍中",
"%nd 的重新宣告無效",
"概念識別碼的引數 %T 替代失敗",
"引數 %T 的概念為 False",
"概念識別碼的引數替代失敗",
"概念為 False",
"此處不允許使用 requires 子句 (非樣板化函式)",
"概念範本",
"requires 子句與 %nfd 不相容",
@@ -3291,7 +3291,7 @@
"參考類型 %t 的非靜態資料成員會防止 __builtin_bit_cast 的 constexpr 評估",
"揮發性類型 %t 會防止 __builtin_bit_cast 的 constexpr 評估",
"等位、指標或成員指標類型 %t 會防止 __builtin_bit_cast 的 constexpr 評估",
"%npTd透過使用宣告 %p 繼承",
"%npT (透過使用 decl %p 繼承)",
"無法執行用於繼承建構函式的 %t 子物件建構 -- 已刪除隱含的預設建構函式",
"%n 必須傳回 void",
"成員宣告開頭無效",
@@ -3300,7 +3300,7 @@
"概念使用無效",
"預設的成員比較運算子不可限定為 '&&'",
"預設 constexpr 比較函式會呼叫非 constexpr 函式 %nd",
"只有整數或整數陣列物件支援 constexpr 記憶體比較",
"只有最上層整數或整數陣列物件支援 constexpr 記憶體比較",
"概念範本不能具有已建立關聯的條件約束",
"不允許 'export'",
"不允許匯出個別類別成員",
@@ -3321,41 +3321,5 @@
"不允許使用不完整類型 %t 的成員指標",
"此模式未啟用 init-capture 中的參數序列展開式",
"init-capture 中的參數序列展開式是 C++20 功能",
"類別定義中預設的比較運算子,必須為該比較運算子的第一個宣告 (%nd)",
"Init-capture 中的套件展開只能用於可變參數範本",
"類型條件約束使用非類型概念的 %nd (例如: 第一個參數是型別參數的概念範本)",
"推算的預留位置類型 %t 未通過類型條件約束",
"%t 的預設建構函式不符合資格",
"%t 的解構函式因未排序的條件約束而模稜兩可",
"%t 的解構函式因條件約束失敗而不符合資格",
"模稜兩可的解構函式候選項",
"虛擬函式不能有尾端 Requires 子句",
"%nd 不符合其條件約束",
"decltype 限定詞 %t 的結果不是類別或列舉",
"因為具有反轉參數的隱含比較運算子為均等相符,所以標準 C++20 中的比較會模稜兩可。這通常是比較運算子中遺漏 'const' 限定詞所致; 請參閱 %nod",
"概念識別碼無效",
"Requires 子句的引數 %T 替代失敗",
"未滿足 %nd 的條件約束",
"constexpr 函式中的變數型別 %t 具有虛擬基底類別",
"常數運算式無法配置虛擬基底子物件 (針對型別 %t )",
"類別型別的範本參數必須為結構類別型別",
"UTF-8 常值的支援需要 u-literal 支援。",
"指定了多次 '%s' 的模組檔案對應",
"指定了多次 '%s' 的標頭單位對應",
"未指定 '%s' 的對應",
"'%s' 的模組檔案對應無效",
"找不到要匯入的標頭 '%s'",
"模組檔案清單中有多個檔案與 '%s' 相符",
"為 '%s' 找到的模組檔案會用於其他模組",
"任何類型的模組檔案",
"無法讀取模組檔案",
"因為目前的選項不支援 char8_t 類型,所以無法使用內建函式",
"如果啟用 C++ 20 協同程式,就不能指定 --ms_await 命令列選項",
"非標準地使用明確的建構函式 %nod 進行預設彙總元素初始化",
"內建類 memcpy 的來源或目的地未指向物件",
"內建類 memcpy 嘗試複製具象相異類型 %t1 與 %t2",
"內建類 memcpy 嘗試複製非一般可複製類型 %t",
"內建類 memcpy 嘗試複製部分物件",
"內建類 memcpy 嘗試複製過去陣列邊界",
"內建類 memcpy 嘗試複製重疊位元組範圍 (改用對應的 memmove 作業)"
"類別定義中預設的比較運算子,必須為該比較運算子的第一個宣告 (%nd)"
]
@@ -4,11 +4,11 @@
"--microsoft",
"--microsoft_bugs",
"--microsoft_version",
"1928",
"1926",
"--pack_alignment",
"8",
"-D_MSC_VER=1928",
"-D_MSC_FULL_VER=192829507",
"-D_MSC_VER=1926",
"-D_MSC_FULL_VER=192628619",
"-D_MSC_BUILD=0",
"-D_M_ARM=7"
],
@@ -4,12 +4,12 @@
"--microsoft",
"--microsoft_bugs",
"--microsoft_version",
"1928",
"1926",
"--pack_alignment",
"8",
"-D_CPPUNWIND=1",
"-D_MSC_VER=1928",
"-D_MSC_FULL_VER=192829507",
"-D_MSC_VER=1926",
"-D_MSC_FULL_VER=192628619",
"-D_MSC_BUILD=0",
"-D_M_ARM64=1"
],
+33
View File
@@ -0,0 +1,33 @@
{
"defaults": [
"cpfe",
"--wchar_t_keyword",
"--no_warnings",
"--rtti",
"--edge",
"--exceptions",
"--error_limit",
"25000",
"-D_EDG_COMPILER",
"-D_USE_DECLSPECS_FOR_SAL=1"
],
"source_file_format": "-f %s",
"expressions": [
{
"match": "^/I(.*)",
"replace": "-I\n$1"
},
{
"match": "^/D(.*)",
"replace": "-D$1"
},
{
"match": "^/AI(.*)",
"replace": "--using_directory\n$1"
},
{
"match": "^/dE--header_only_fallback",
"replace": "--header_only_fallback"
}
]
}
+7
View File
@@ -0,0 +1,7 @@
{
"defaults": [
"--pack_alignment",
"8"
],
"defaults_op" : "merge"
}
+7
View File
@@ -0,0 +1,7 @@
{
"defaults": [
"--pack_alignment",
"8"
],
"defaults_op" : "merge"
}
@@ -4,12 +4,12 @@
"--microsoft",
"--microsoft_bugs",
"--microsoft_version",
"1928",
"1926",
"--pack_alignment",
"8",
"-D_CPPUNWIND=1",
"-D_MSC_VER=1928",
"-D_MSC_FULL_VER=192829507",
"-D_MSC_VER=1926",
"-D_MSC_FULL_VER=192628619",
"-D_MSC_BUILD=0",
"-D_M_X64=100",
"-D_M_AMD64=100"
+7
View File
@@ -0,0 +1,7 @@
{
"defaults": [
"--pack_alignment",
"8"
],
"defaults_op" : "merge"
}
+7
View File
@@ -0,0 +1,7 @@
{
"defaults": [
"--pack_alignment",
"8"
],
"defaults_op" : "merge"
}
@@ -4,11 +4,11 @@
"--microsoft",
"--microsoft_bugs",
"--microsoft_version",
"1928",
"1926",
"--pack_alignment",
"8",
"-D_MSC_VER=1928",
"-D_MSC_FULL_VER=192829507",
"-D_MSC_VER=1926",
"-D_MSC_FULL_VER=192628619",
"-D_MSC_BUILD=0",
"-D_M_IX86=600",
"-D_M_IX86_FP=2"
-7
View File
@@ -1,7 +0,0 @@
{
"defaults": [
"--pack_alignment",
"8"
],
"defaults_op": "merge"
}

Some files were not shown because too many files have changed in this diff Show More