Skip to content

Commit 969aa45

Browse files
author
Andy
authored
Improve error message for unused type (microsoft#23633)
1 parent eca17ac commit 969aa45

15 files changed

Lines changed: 48 additions & 41 deletions

src/compiler/checker.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22183,7 +22183,8 @@ namespace ts {
2218322183
}
2218422184

2218522185
if (!isRemovedPropertyFromObjectSpread(node.kind === SyntaxKind.Identifier ? node.parent : node)) {
22186-
addDiagnostic(UnusedKind.Local, createDiagnosticForNodeSpan(getSourceFileOfNode(declaration), declaration, node, Diagnostics._0_is_declared_but_its_value_is_never_read, name));
22186+
const message = isTypeDeclaration(declaration) ? Diagnostics._0_is_declared_but_never_used : Diagnostics._0_is_declared_but_its_value_is_never_read;
22187+
addDiagnostic(UnusedKind.Local, createDiagnosticForNodeSpan(getSourceFileOfNode(declaration), declaration, node, message, name));
2218722188
}
2218822189
}
2218922190

src/compiler/diagnosticMessages.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3530,6 +3530,11 @@
35303530
"category": "Message",
35313531
"code": 6195
35323532
},
3533+
"'{0}' is declared but never used.": {
3534+
"category": "Error",
3535+
"code": 6196,
3536+
"reportsUnnecessary": true
3537+
},
35333538
"Variable '{0}' implicitly has an '{1}' type.": {
35343539
"category": "Error",
35353540
"code": 7005

src/services/codefixes/fixUnusedIdentifier.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ namespace ts.codefix {
55
const fixIdDelete = "unusedIdentifier_delete";
66
const errorCodes = [
77
Diagnostics._0_is_declared_but_its_value_is_never_read.code,
8+
Diagnostics._0_is_declared_but_never_used.code,
89
Diagnostics.Property_0_is_declared_but_its_value_is_never_read.code,
910
Diagnostics.All_imports_in_import_declaration_are_unused.code,
1011
];

tests/baselines/reference/noUnusedLocals_selfReference.errors.txt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
tests/cases/compiler/noUnusedLocals_selfReference.ts(3,1): error TS6133: 'f' is declared but its value is never read.
22
tests/cases/compiler/noUnusedLocals_selfReference.ts(5,5): error TS6133: 'g' is declared but its value is never read.
3-
tests/cases/compiler/noUnusedLocals_selfReference.ts(9,1): error TS6133: 'C' is declared but its value is never read.
4-
tests/cases/compiler/noUnusedLocals_selfReference.ts(12,1): error TS6133: 'E' is declared but its value is never read.
5-
tests/cases/compiler/noUnusedLocals_selfReference.ts(13,1): error TS6133: 'I' is declared but its value is never read.
6-
tests/cases/compiler/noUnusedLocals_selfReference.ts(14,1): error TS6133: 'T' is declared but its value is never read.
3+
tests/cases/compiler/noUnusedLocals_selfReference.ts(9,1): error TS6196: 'C' is declared but never used.
4+
tests/cases/compiler/noUnusedLocals_selfReference.ts(12,1): error TS6196: 'E' is declared but never used.
5+
tests/cases/compiler/noUnusedLocals_selfReference.ts(13,1): error TS6196: 'I' is declared but never used.
6+
tests/cases/compiler/noUnusedLocals_selfReference.ts(14,1): error TS6196: 'T' is declared but never used.
77
tests/cases/compiler/noUnusedLocals_selfReference.ts(15,1): error TS6133: 'N' is declared but its value is never read.
88
tests/cases/compiler/noUnusedLocals_selfReference.ts(22,19): error TS6133: 'm' is declared but its value is never read.
99

@@ -23,18 +23,18 @@ tests/cases/compiler/noUnusedLocals_selfReference.ts(22,19): error TS6133: 'm' i
2323
}
2424
class C {
2525
~~~~~~~
26-
!!! error TS6133: 'C' is declared but its value is never read.
26+
!!! error TS6196: 'C' is declared but never used.
2727
m() { C; }
2828
}
2929
enum E { A = 0, B = E.A }
3030
~~~~~~
31-
!!! error TS6133: 'E' is declared but its value is never read.
31+
!!! error TS6196: 'E' is declared but never used.
3232
interface I { x: I };
3333
~~~~~~~~~~~
34-
!!! error TS6133: 'I' is declared but its value is never read.
34+
!!! error TS6196: 'I' is declared but never used.
3535
type T = { x: T };
3636
~~~~~~
37-
!!! error TS6133: 'T' is declared but its value is never read.
37+
!!! error TS6196: 'T' is declared but never used.
3838
namespace N { N; }
3939
~~~~~~~~~~~
4040
!!! error TS6133: 'N' is declared but its value is never read.

tests/baselines/reference/unusedClassesinModule1.errors.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
tests/cases/compiler/unusedClassesinModule1.ts(2,5): error TS6133: 'Calculator' is declared but its value is never read.
1+
tests/cases/compiler/unusedClassesinModule1.ts(2,5): error TS6196: 'Calculator' is declared but never used.
22

33

44
==== tests/cases/compiler/unusedClassesinModule1.ts (1 errors) ====
55
module A {
66
class Calculator {
77
~~~~~~~~~~~~~~~~
8-
!!! error TS6133: 'Calculator' is declared but its value is never read.
8+
!!! error TS6196: 'Calculator' is declared but never used.
99
public handelChar() {
1010
}
1111
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
tests/cases/compiler/unusedClassesinNamespace1.ts(2,5): error TS6133: 'c1' is declared but its value is never read.
1+
tests/cases/compiler/unusedClassesinNamespace1.ts(2,5): error TS6196: 'c1' is declared but never used.
22

33

44
==== tests/cases/compiler/unusedClassesinNamespace1.ts (1 errors) ====
55
namespace Validation {
66
class c1 {
77
~~~~~~~~
8-
!!! error TS6133: 'c1' is declared but its value is never read.
8+
!!! error TS6196: 'c1' is declared but never used.
99

1010
}
1111
}

tests/baselines/reference/unusedClassesinNamespace2.errors.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
tests/cases/compiler/unusedClassesinNamespace2.ts(2,5): error TS6133: 'c1' is declared but its value is never read.
1+
tests/cases/compiler/unusedClassesinNamespace2.ts(2,5): error TS6196: 'c1' is declared but never used.
22

33

44
==== tests/cases/compiler/unusedClassesinNamespace2.ts (1 errors) ====
55
namespace Validation {
66
class c1 {
77
~~~~~~~~
8-
!!! error TS6133: 'c1' is declared but its value is never read.
8+
!!! error TS6196: 'c1' is declared but never used.
99

1010
}
1111

tests/baselines/reference/unusedClassesinNamespace4.errors.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
tests/cases/compiler/unusedClassesinNamespace4.ts(10,5): error TS6133: 'c3' is declared but its value is never read.
1+
tests/cases/compiler/unusedClassesinNamespace4.ts(10,5): error TS6196: 'c3' is declared but never used.
22

33

44
==== tests/cases/compiler/unusedClassesinNamespace4.ts (1 errors) ====
@@ -13,7 +13,7 @@ tests/cases/compiler/unusedClassesinNamespace4.ts(10,5): error TS6133: 'c3' is d
1313

1414
class c3 extends c1 {
1515
~~~~~~~~
16-
!!! error TS6133: 'c3' is declared but its value is never read.
16+
!!! error TS6196: 'c3' is declared but never used.
1717

1818
}
1919
}

tests/baselines/reference/unusedClassesinNamespace5.errors.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
tests/cases/compiler/unusedClassesinNamespace5.ts(10,5): error TS6133: 'c3' is declared but its value is never read.
1+
tests/cases/compiler/unusedClassesinNamespace5.ts(10,5): error TS6196: 'c3' is declared but never used.
22

33

44
==== tests/cases/compiler/unusedClassesinNamespace5.ts (1 errors) ====
@@ -13,7 +13,7 @@ tests/cases/compiler/unusedClassesinNamespace5.ts(10,5): error TS6133: 'c3' is d
1313

1414
class c3 {
1515
~~~~~~~~
16-
!!! error TS6133: 'c3' is declared but its value is never read.
16+
!!! error TS6196: 'c3' is declared but never used.
1717
public x: c1;
1818
}
1919
}

tests/baselines/reference/unusedIdentifiersConsolidated1.errors.txt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ tests/cases/compiler/unusedIdentifiersConsolidated1.ts(17,13): error TS6133: 'un
1010
tests/cases/compiler/unusedIdentifiersConsolidated1.ts(24,13): error TS6133: 'unUsedPrivateFunction' is declared but its value is never read.
1111
tests/cases/compiler/unusedIdentifiersConsolidated1.ts(37,11): error TS6133: 'numberRegexp' is declared but its value is never read.
1212
tests/cases/compiler/unusedIdentifiersConsolidated1.ts(44,17): error TS6133: 'unUsedPrivateFunction' is declared but its value is never read.
13-
tests/cases/compiler/unusedIdentifiersConsolidated1.ts(57,5): error TS6133: 'usedLocallyInterface2' is declared but its value is never read.
14-
tests/cases/compiler/unusedIdentifiersConsolidated1.ts(64,5): error TS6133: 'dummy' is declared but its value is never read.
15-
tests/cases/compiler/unusedIdentifiersConsolidated1.ts(67,5): error TS6133: 'unusedInterface' is declared but its value is never read.
16-
tests/cases/compiler/unusedIdentifiersConsolidated1.ts(79,5): error TS6133: 'class3' is declared but its value is never read.
17-
tests/cases/compiler/unusedIdentifiersConsolidated1.ts(99,5): error TS6133: 'interface5' is declared but its value is never read.
13+
tests/cases/compiler/unusedIdentifiersConsolidated1.ts(57,5): error TS6196: 'usedLocallyInterface2' is declared but never used.
14+
tests/cases/compiler/unusedIdentifiersConsolidated1.ts(64,5): error TS6196: 'dummy' is declared but never used.
15+
tests/cases/compiler/unusedIdentifiersConsolidated1.ts(67,5): error TS6196: 'unusedInterface' is declared but never used.
16+
tests/cases/compiler/unusedIdentifiersConsolidated1.ts(79,5): error TS6196: 'class3' is declared but never used.
17+
tests/cases/compiler/unusedIdentifiersConsolidated1.ts(99,5): error TS6196: 'interface5' is declared but never used.
1818

1919

2020
==== tests/cases/compiler/unusedIdentifiersConsolidated1.ts (17 errors) ====
@@ -100,7 +100,7 @@ tests/cases/compiler/unusedIdentifiersConsolidated1.ts(99,5): error TS6133: 'int
100100

101101
interface usedLocallyInterface2 {
102102
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
103-
!!! error TS6133: 'usedLocallyInterface2' is declared but its value is never read.
103+
!!! error TS6196: 'usedLocallyInterface2' is declared but never used.
104104
someFunction(s1: string): void;
105105
}
106106

@@ -109,12 +109,12 @@ tests/cases/compiler/unusedIdentifiersConsolidated1.ts(99,5): error TS6133: 'int
109109

110110
class dummy implements usedLocallyInterface {
111111
~~~~~~~~~~~
112-
!!! error TS6133: 'dummy' is declared but its value is never read.
112+
!!! error TS6196: 'dummy' is declared but never used.
113113
}
114114

115115
interface unusedInterface {
116116
~~~~~~~~~~~~~~~~~~~~~~~~~
117-
!!! error TS6133: 'unusedInterface' is declared but its value is never read.
117+
!!! error TS6196: 'unusedInterface' is declared but never used.
118118
}
119119
}
120120

@@ -128,7 +128,7 @@ tests/cases/compiler/unusedIdentifiersConsolidated1.ts(99,5): error TS6133: 'int
128128

129129
class class3 {
130130
~~~~~~~~~~~~
131-
!!! error TS6133: 'class3' is declared but its value is never read.
131+
!!! error TS6196: 'class3' is declared but never used.
132132
}
133133

134134
export class class4 {
@@ -150,6 +150,6 @@ tests/cases/compiler/unusedIdentifiersConsolidated1.ts(99,5): error TS6133: 'int
150150

151151
interface interface5 {
152152
~~~~~~~~~~~~~~~~~~~~
153-
!!! error TS6133: 'interface5' is declared but its value is never read.
153+
!!! error TS6196: 'interface5' is declared but never used.
154154
}
155155
}

0 commit comments

Comments
 (0)