Merge #1931
1931: Support the new deprecated tag r=matklad a=arsdragonfly Which is rendered as a strike-through line. Fixes #1671 . ![深度截图_选择区域_20190927162008](https://user-images.githubusercontent.com/4067473/65799714-ccb4c180-e142-11e9-8e45-ab18964605f3.png) Co-authored-by: arsdragonfly <arsdragonfly@gmail.com>
This commit is contained in:
commit
dbdf0e24d5
@ -50,7 +50,7 @@ describe('mapRustDiagnosticToVsCode', () => {
|
|||||||
].join('\n')
|
].join('\n')
|
||||||
);
|
);
|
||||||
assert.strictEqual(diagnostic.code, 'E0053');
|
assert.strictEqual(diagnostic.code, 'E0053');
|
||||||
assert.strictEqual(diagnostic.tags, undefined);
|
assert.deepStrictEqual(diagnostic.tags, []);
|
||||||
|
|
||||||
// No related information
|
// No related information
|
||||||
assert.deepStrictEqual(diagnostic.relatedInformation, []);
|
assert.deepStrictEqual(diagnostic.relatedInformation, []);
|
||||||
@ -115,7 +115,7 @@ describe('mapRustDiagnosticToVsCode', () => {
|
|||||||
);
|
);
|
||||||
assert.strictEqual(diagnostic.code, 'E0061');
|
assert.strictEqual(diagnostic.code, 'E0061');
|
||||||
assert.strictEqual(diagnostic.source, 'rustc');
|
assert.strictEqual(diagnostic.source, 'rustc');
|
||||||
assert.strictEqual(diagnostic.tags, undefined);
|
assert.deepStrictEqual(diagnostic.tags, []);
|
||||||
|
|
||||||
// One related information for the original definition
|
// One related information for the original definition
|
||||||
const relatedInformation = diagnostic.relatedInformation;
|
const relatedInformation = diagnostic.relatedInformation;
|
||||||
@ -149,7 +149,7 @@ describe('mapRustDiagnosticToVsCode', () => {
|
|||||||
].join('\n')
|
].join('\n')
|
||||||
);
|
);
|
||||||
assert.strictEqual(diagnostic.code, 'trivially_copy_pass_by_ref');
|
assert.strictEqual(diagnostic.code, 'trivially_copy_pass_by_ref');
|
||||||
assert.strictEqual(diagnostic.tags, undefined);
|
assert.deepStrictEqual(diagnostic.tags, []);
|
||||||
|
|
||||||
// One related information for the lint definition
|
// One related information for the lint definition
|
||||||
const relatedInformation = diagnostic.relatedInformation;
|
const relatedInformation = diagnostic.relatedInformation;
|
||||||
@ -189,7 +189,7 @@ describe('mapRustDiagnosticToVsCode', () => {
|
|||||||
);
|
);
|
||||||
assert.strictEqual(diagnostic.code, 'E0308');
|
assert.strictEqual(diagnostic.code, 'E0308');
|
||||||
assert.strictEqual(diagnostic.source, 'rustc');
|
assert.strictEqual(diagnostic.source, 'rustc');
|
||||||
assert.strictEqual(diagnostic.tags, undefined);
|
assert.deepStrictEqual(diagnostic.tags, []);
|
||||||
|
|
||||||
// No related information
|
// No related information
|
||||||
assert.deepStrictEqual(diagnostic.relatedInformation, []);
|
assert.deepStrictEqual(diagnostic.relatedInformation, []);
|
||||||
|
@ -111,6 +111,17 @@ function isUnusedOrUnnecessary(rd: RustDiagnostic): boolean {
|
|||||||
].includes(rd.code.code);
|
].includes(rd.code.code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines if diagnostic is related to deprecated code
|
||||||
|
*/
|
||||||
|
function isDeprecated(rd: RustDiagnostic): boolean {
|
||||||
|
if (!rd.code) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ['deprecated'].includes(rd.code.code);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts a Rust child diagnostic to a VsCode related information
|
* Converts a Rust child diagnostic to a VsCode related information
|
||||||
*
|
*
|
||||||
@ -200,6 +211,7 @@ export function mapRustDiagnosticToVsCode(
|
|||||||
vd.source = source;
|
vd.source = source;
|
||||||
vd.code = code;
|
vd.code = code;
|
||||||
vd.relatedInformation = [];
|
vd.relatedInformation = [];
|
||||||
|
vd.tags = [];
|
||||||
|
|
||||||
for (const secondarySpan of secondarySpans) {
|
for (const secondarySpan of secondarySpans) {
|
||||||
const related = mapSecondarySpanToRelated(secondarySpan);
|
const related = mapSecondarySpanToRelated(secondarySpan);
|
||||||
@ -234,7 +246,11 @@ export function mapRustDiagnosticToVsCode(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isUnusedOrUnnecessary(rd)) {
|
if (isUnusedOrUnnecessary(rd)) {
|
||||||
vd.tags = [vscode.DiagnosticTag.Unnecessary];
|
vd.tags.push(vscode.DiagnosticTag.Unnecessary);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isDeprecated(rd)) {
|
||||||
|
vd.tags.push(vscode.DiagnosticTag.Deprecated);
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user