Skip to content

Commit 4f986ef

Browse files
committed
fix(47256): show deprecated on index signatures
1 parent 52e785f commit 4f986ef

File tree

3 files changed

+67
-33
lines changed

3 files changed

+67
-33
lines changed

src/compiler/checker.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28515,6 +28515,9 @@ namespace ts {
2851528515
if (compilerOptions.noPropertyAccessFromIndexSignature && isPropertyAccessExpression(node)) {
2851628516
error(right, Diagnostics.Property_0_comes_from_an_index_signature_so_it_must_be_accessed_with_0, unescapeLeadingUnderscores(right.escapedText));
2851728517
}
28518+
if (indexInfo.declaration && getCombinedNodeFlags(indexInfo.declaration) & NodeFlags.Deprecated) {
28519+
addDeprecatedSuggestion(right, [indexInfo.declaration], right.escapedText as string);
28520+
}
2851828521
}
2851928522
else {
2852028523
if (isDeprecatedSymbol(prop) && isUncalledFunctionReference(node, prop) && prop.declarations) {
Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,33 @@
1-
/// <reference path="fourslash.ts" />
2-
3-
// @module: esnext
4-
// @filename: /a.ts
5-
////export const a = 1;
6-
////export const b = 1;
7-
8-
// @filename: /b.ts
9-
////export {
10-
//// /** @deprecated a is deprecated */
11-
//// a
12-
////} from "./a";
13-
14-
// @filename: /c.ts
15-
////import { [|a|] } from "./b";
16-
////[|a|]
17-
18-
goTo.file("/c.ts")
19-
20-
verify.getSuggestionDiagnostics([
21-
{
22-
"code": 6385,
23-
"message": "'a' is deprecated.",
24-
"reportsDeprecated": true,
25-
"range": test.ranges()[0]
26-
},
27-
{
28-
"code": 6385,
29-
"message": "'a' is deprecated.",
30-
"reportsDeprecated": true,
31-
"range": test.ranges()[1]
32-
},
33-
]);
1+
/// <reference path="fourslash.ts" />
2+
3+
// @module: esnext
4+
// @filename: /a.ts
5+
////export const a = 1;
6+
////export const b = 1;
7+
8+
// @filename: /b.ts
9+
////export {
10+
//// /** @deprecated a is deprecated */
11+
//// a
12+
////} from "./a";
13+
14+
// @filename: /c.ts
15+
////import { [|a|] } from "./b";
16+
////[|a|]
17+
18+
goTo.file("/c.ts")
19+
20+
verify.getSuggestionDiagnostics([
21+
{
22+
"code": 6385,
23+
"message": "'a' is deprecated.",
24+
"reportsDeprecated": true,
25+
"range": test.ranges()[0]
26+
},
27+
{
28+
"code": 6385,
29+
"message": "'a' is deprecated.",
30+
"reportsDeprecated": true,
31+
"range": test.ranges()[1]
32+
},
33+
]);
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
///<reference path="fourslash.ts" />
2+
3+
// @filename: foo.ts
4+
////interface Foo {
5+
//// /** @deprecated */
6+
//// [k: string]: any;
7+
//// /** @deprecated please use `.y` instead */
8+
//// x: number;
9+
//// y: number;
10+
////}
11+
////function f(foo: Foo) {
12+
//// foo.[|x|];
13+
//// foo.[|y|];
14+
//// foo.[|z|];
15+
////}
16+
17+
const ranges = test.ranges();
18+
verify.getSuggestionDiagnostics([
19+
{
20+
"code": 6385,
21+
"message": "'x' is deprecated.",
22+
"reportsDeprecated": true,
23+
"range": ranges[0]
24+
},
25+
{
26+
"code": 6385,
27+
"message": "'z' is deprecated.",
28+
"reportsDeprecated": true,
29+
"range": ranges[2]
30+
},
31+
]);

0 commit comments

Comments
 (0)