aboutsummaryrefslogtreecommitdiff
path: root/editors/code
diff options
context:
space:
mode:
authorAlexander Andreev <[email protected]>2019-09-30 10:07:26 +0100
committerAlexander Andreev <[email protected]>2019-09-30 10:07:26 +0100
commit81efd696ccb369d6c4813bad1107bfd9e270385b (patch)
treef91b652c3ee8e4503c146bf4f76f129fb9ef1428 /editors/code
parentfdbd6bb11a0c47bf9ba1428e6bd432cd2ce72045 (diff)
parent733f1d8b709788225bd06f8c0aee1819db92620b (diff)
Merge branch 'master' into feature/issue/1856
# Conflicts: # crates/ra_assists/src/ast_editor.rs
Diffstat (limited to 'editors/code')
-rw-r--r--editors/code/src/test/utils/diagnotics/rust.test.ts8
-rw-r--r--editors/code/src/utils/diagnostics/rust.ts18
2 files changed, 21 insertions, 5 deletions
diff --git a/editors/code/src/test/utils/diagnotics/rust.test.ts b/editors/code/src/test/utils/diagnotics/rust.test.ts
index 7fb003fe2..327d15046 100644
--- a/editors/code/src/test/utils/diagnotics/rust.test.ts
+++ b/editors/code/src/test/utils/diagnotics/rust.test.ts
@@ -50,7 +50,7 @@ describe('mapRustDiagnosticToVsCode', () => {
50 ].join('\n') 50 ].join('\n')
51 ); 51 );
52 assert.strictEqual(diagnostic.code, 'E0053'); 52 assert.strictEqual(diagnostic.code, 'E0053');
53 assert.strictEqual(diagnostic.tags, undefined); 53 assert.deepStrictEqual(diagnostic.tags, []);
54 54
55 // No related information 55 // No related information
56 assert.deepStrictEqual(diagnostic.relatedInformation, []); 56 assert.deepStrictEqual(diagnostic.relatedInformation, []);
@@ -115,7 +115,7 @@ describe('mapRustDiagnosticToVsCode', () => {
115 ); 115 );
116 assert.strictEqual(diagnostic.code, 'E0061'); 116 assert.strictEqual(diagnostic.code, 'E0061');
117 assert.strictEqual(diagnostic.source, 'rustc'); 117 assert.strictEqual(diagnostic.source, 'rustc');
118 assert.strictEqual(diagnostic.tags, undefined); 118 assert.deepStrictEqual(diagnostic.tags, []);
119 119
120 // One related information for the original definition 120 // One related information for the original definition
121 const relatedInformation = diagnostic.relatedInformation; 121 const relatedInformation = diagnostic.relatedInformation;
@@ -149,7 +149,7 @@ describe('mapRustDiagnosticToVsCode', () => {
149 ].join('\n') 149 ].join('\n')
150 ); 150 );
151 assert.strictEqual(diagnostic.code, 'trivially_copy_pass_by_ref'); 151 assert.strictEqual(diagnostic.code, 'trivially_copy_pass_by_ref');
152 assert.strictEqual(diagnostic.tags, undefined); 152 assert.deepStrictEqual(diagnostic.tags, []);
153 153
154 // One related information for the lint definition 154 // One related information for the lint definition
155 const relatedInformation = diagnostic.relatedInformation; 155 const relatedInformation = diagnostic.relatedInformation;
@@ -189,7 +189,7 @@ describe('mapRustDiagnosticToVsCode', () => {
189 ); 189 );
190 assert.strictEqual(diagnostic.code, 'E0308'); 190 assert.strictEqual(diagnostic.code, 'E0308');
191 assert.strictEqual(diagnostic.source, 'rustc'); 191 assert.strictEqual(diagnostic.source, 'rustc');
192 assert.strictEqual(diagnostic.tags, undefined); 192 assert.deepStrictEqual(diagnostic.tags, []);
193 193
194 // No related information 194 // No related information
195 assert.deepStrictEqual(diagnostic.relatedInformation, []); 195 assert.deepStrictEqual(diagnostic.relatedInformation, []);
diff --git a/editors/code/src/utils/diagnostics/rust.ts b/editors/code/src/utils/diagnostics/rust.ts
index 1fb1f7b6d..0550d0372 100644
--- a/editors/code/src/utils/diagnostics/rust.ts
+++ b/editors/code/src/utils/diagnostics/rust.ts
@@ -112,6 +112,17 @@ function isUnusedOrUnnecessary(rd: RustDiagnostic): boolean {
112} 112}
113 113
114/** 114/**
115 * Determines if diagnostic is related to deprecated code
116 */
117function isDeprecated(rd: RustDiagnostic): boolean {
118 if (!rd.code) {
119 return false;
120 }
121
122 return ['deprecated'].includes(rd.code.code);
123}
124
125/**
115 * Converts a Rust child diagnostic to a VsCode related information 126 * Converts a Rust child diagnostic to a VsCode related information
116 * 127 *
117 * This can have three outcomes: 128 * This can have three outcomes:
@@ -200,6 +211,7 @@ export function mapRustDiagnosticToVsCode(
200 vd.source = source; 211 vd.source = source;
201 vd.code = code; 212 vd.code = code;
202 vd.relatedInformation = []; 213 vd.relatedInformation = [];
214 vd.tags = [];
203 215
204 for (const secondarySpan of secondarySpans) { 216 for (const secondarySpan of secondarySpans) {
205 const related = mapSecondarySpanToRelated(secondarySpan); 217 const related = mapSecondarySpanToRelated(secondarySpan);
@@ -234,7 +246,11 @@ export function mapRustDiagnosticToVsCode(
234 } 246 }
235 247
236 if (isUnusedOrUnnecessary(rd)) { 248 if (isUnusedOrUnnecessary(rd)) {
237 vd.tags = [vscode.DiagnosticTag.Unnecessary]; 249 vd.tags.push(vscode.DiagnosticTag.Unnecessary);
250 }
251
252 if (isDeprecated(rd)) {
253 vd.tags.push(vscode.DiagnosticTag.Deprecated);
238 } 254 }
239 255
240 return { 256 return {