Skip to content

Commit 556a801

Browse files
author
Andy
authored
Fix bug: ensure 'reportsUnnecessary' is actually sent by tsserver (microsoft#23293)
1 parent 8248075 commit 556a801

File tree

9 files changed

+26
-20
lines changed

9 files changed

+26
-20
lines changed

scripts/processDiagnosticMessages.ts

+6-4
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
interface DiagnosticDetails {
55
category: string;
66
code: number;
7+
reportsUnnecessary?: {};
78
isEarly?: boolean;
89
}
910

@@ -59,14 +60,15 @@ function buildInfoFileOutput(messageTable: InputDiagnosticMessageTable, inputFil
5960
"/// <reference path=\"types.ts\" />\r\n" +
6061
"/* @internal */\r\n" +
6162
"namespace ts {\r\n" +
62-
" function diag(code: number, category: DiagnosticCategory, key: string, message: string): DiagnosticMessage {\r\n" +
63-
" return { code, category, key, message };\r\n" +
63+
" function diag(code: number, category: DiagnosticCategory, key: string, message: string, reportsUnnecessary?: {}): DiagnosticMessage {\r\n" +
64+
" return { code, category, key, message, reportsUnnecessary };\r\n" +
6465
" }\r\n" +
6566
" // tslint:disable-next-line variable-name\r\n" +
6667
" export const Diagnostics = {\r\n";
67-
messageTable.forEach(({ code, category }, name) => {
68+
messageTable.forEach(({ code, category, reportsUnnecessary }, name) => {
6869
const propName = convertPropertyName(name);
69-
result += ` ${propName}: diag(${code}, DiagnosticCategory.${category}, "${createKey(propName, code)}", ${JSON.stringify(name)}),\r\n`;
70+
const argReportsUnnecessary = reportsUnnecessary ? `, /*reportsUnnecessary*/ ${reportsUnnecessary}` : "";
71+
result += ` ${propName}: diag(${code}, DiagnosticCategory.${category}, "${createKey(propName, code)}", ${JSON.stringify(name)}${argReportsUnnecessary}),\r\n`;
7072
});
7173

7274
result += " };\r\n}";

src/compiler/core.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1606,7 +1606,7 @@ namespace ts {
16061606
messageText: text,
16071607
category: message.category,
16081608
code: message.code,
1609-
reportsUnnecessary: message.unused,
1609+
reportsUnnecessary: message.reportsUnnecessary,
16101610
};
16111611
}
16121612

@@ -1637,7 +1637,7 @@ namespace ts {
16371637
messageText: text,
16381638
category: message.category,
16391639
code: message.code,
1640-
reportsUnnecessary: message.unused,
1640+
reportsUnnecessary: message.reportsUnnecessary,
16411641
};
16421642
}
16431643

src/compiler/diagnosticMessages.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -3286,7 +3286,7 @@
32863286
"'{0}' is declared but its value is never read.": {
32873287
"category": "Error",
32883288
"code": 6133,
3289-
"unused": true
3289+
"reportsUnnecessary": true
32903290
},
32913291
"Report errors on unused locals.": {
32923292
"category": "Message",
@@ -3307,7 +3307,7 @@
33073307
"Property '{0}' is declared but its value is never read.": {
33083308
"category": "Error",
33093309
"code": 6138,
3310-
"unused": true
3310+
"reportsUnnecessary": true
33113311
},
33123312
"Import emit helpers from 'tslib'.": {
33133313
"category": "Message",
@@ -3520,7 +3520,7 @@
35203520
"All imports in import declaration are unused.": {
35213521
"category": "Error",
35223522
"code": 6192,
3523-
"unused": true
3523+
"reportsUnnecessary": true
35243524
},
35253525
"Found 1 error.": {
35263526
"category": "Message",
@@ -3609,7 +3609,7 @@
36093609
"Unused label.": {
36103610
"category": "Error",
36113611
"code": 7028,
3612-
"unused": true
3612+
"reportsUnnecessary": true
36133613
},
36143614
"Fallthrough case in switch.": {
36153615
"category": "Error",

src/compiler/types.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -4076,7 +4076,7 @@ namespace ts {
40764076
category: DiagnosticCategory;
40774077
code: number;
40784078
message: string;
4079-
unused?: {};
4079+
reportsUnnecessary?: {};
40804080
}
40814081

40824082
/**

src/harness/unittests/tsserverProjectSystem.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -4131,10 +4131,10 @@ namespace ts.projectSystem {
41314131
checkErrorMessage(session, "semanticDiag", { file: file1.path, diagnostics: [] });
41324132
});
41334133

4134-
it("info diagnostics", () => {
4134+
it("suggestion diagnostics", () => {
41354135
const file: FileOrFolder = {
41364136
path: "/a.js",
4137-
content: 'require("b")',
4137+
content: "function f(p) {}",
41384138
};
41394139

41404140
const host = createServerHost([file]);
@@ -4177,7 +4177,7 @@ namespace ts.projectSystem {
41774177
checkErrorMessage(session, "suggestionDiag", {
41784178
file: file.path,
41794179
diagnostics: [
4180-
createDiagnostic({ line: 1, offset: 1 }, { line: 1, offset: 13 }, Diagnostics.File_is_a_CommonJS_module_it_may_be_converted_to_an_ES6_module)
4180+
createDiagnostic({ line: 1, offset: 12 }, { line: 1, offset: 13 }, Diagnostics._0_is_declared_but_its_value_is_never_read, ["p"], "suggestion", /*reportsUnnecssary*/ true)
41814181
],
41824182
});
41834183
checkCompleteEvent(session, 2, expectedSequenceId);
@@ -4241,8 +4241,8 @@ namespace ts.projectSystem {
42414241
session.clearMessages();
42424242
});
42434243

4244-
function createDiagnostic(start: protocol.Location, end: protocol.Location, message: DiagnosticMessage, args: ReadonlyArray<string> = []): protocol.Diagnostic {
4245-
return { start, end, text: formatStringFromArgs(message.message, args), code: message.code, category: diagnosticCategoryName(message), source: undefined };
4244+
function createDiagnostic(start: protocol.Location, end: protocol.Location, message: DiagnosticMessage, args: ReadonlyArray<string> = [], category = diagnosticCategoryName(message), reportsUnnecessary?: {}): protocol.Diagnostic {
4245+
return { start, end, text: formatStringFromArgs(message.message, args), code: message.code, category, reportsUnnecessary, source: undefined };
42464246
}
42474247
});
42484248

src/server/protocol.ts

+2
Original file line numberDiff line numberDiff line change
@@ -2172,6 +2172,8 @@ namespace ts.server.protocol {
21722172
*/
21732173
category: string;
21742174

2175+
reportsUnnecessary?: {};
2176+
21752177
/**
21762178
* The error code of the diagnostic message.
21772179
*/

src/server/session.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ namespace ts.server {
8080
text: flattenDiagnosticMessageText(diag.messageText, "\n"),
8181
code: diag.code,
8282
category: diagnosticCategoryName(diag),
83+
reportsUnnecessary: diag.reportsUnnecessary,
8384
source: diag.source
8485
};
8586
}
@@ -96,8 +97,8 @@ namespace ts.server {
9697
const text = flattenDiagnosticMessageText(diag.messageText, "\n");
9798
const { code, source } = diag;
9899
const category = diagnosticCategoryName(diag);
99-
return includeFileName ? { start, end, text, code, category, source, fileName: diag.file && diag.file.fileName } :
100-
{ start, end, text, code, category, source };
100+
return includeFileName ? { start, end, text, code, category, source, reportsUnnecessary: diag.reportsUnnecessary, fileName: diag.file && diag.file.fileName } :
101+
{ start, end, text, code, category, reportsUnnecessary: diag.reportsUnnecessary, source };
101102
}
102103

103104
export interface PendingErrorCheck {

tests/baselines/reference/api/tsserverlibrary.d.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -2275,7 +2275,7 @@ declare namespace ts {
22752275
category: DiagnosticCategory;
22762276
code: number;
22772277
message: string;
2278-
unused?: {};
2278+
reportsUnnecessary?: {};
22792279
}
22802280
/**
22812281
* A linked list of formatted diagnostic messages to be used as part of a multiline message.
@@ -6758,6 +6758,7 @@ declare namespace ts.server.protocol {
67586758
* The category of the diagnostic message, e.g. "error", "warning", or "suggestion".
67596759
*/
67606760
category: string;
6761+
reportsUnnecessary?: {};
67616762
/**
67626763
* The error code of the diagnostic message.
67636764
*/

tests/baselines/reference/api/typescript.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2275,7 +2275,7 @@ declare namespace ts {
22752275
category: DiagnosticCategory;
22762276
code: number;
22772277
message: string;
2278-
unused?: {};
2278+
reportsUnnecessary?: {};
22792279
}
22802280
/**
22812281
* A linked list of formatted diagnostic messages to be used as part of a multiline message.

0 commit comments

Comments
 (0)