From 2f2ab39d3ce0cebbbaa6ea58f58b292bff84a5d4 Mon Sep 17 00:00:00 2001 From: Ronen Amiel Date: Fri, 7 Feb 2025 17:44:20 +0200 Subject: [PATCH] handle accessor property with no-deprecated --- .../eslint-plugin/src/rules/no-deprecated.ts | 1 + .../tests/rules/no-deprecated.test.ts | 105 ++++++++++++++++++ 2 files changed, 106 insertions(+) diff --git a/packages/eslint-plugin/src/rules/no-deprecated.ts b/packages/eslint-plugin/src/rules/no-deprecated.ts index e8e0402e3241..8833c05b4c82 100644 --- a/packages/eslint-plugin/src/rules/no-deprecated.ts +++ b/packages/eslint-plugin/src/rules/no-deprecated.ts @@ -121,6 +121,7 @@ export default createRule({ case AST_NODE_TYPES.MethodDefinition: case AST_NODE_TYPES.PropertyDefinition: + case AST_NODE_TYPES.AccessorProperty: return parent.key === node; case AST_NODE_TYPES.Property: diff --git a/packages/eslint-plugin/tests/rules/no-deprecated.test.ts b/packages/eslint-plugin/tests/rules/no-deprecated.test.ts index 9bacc19eff23..1d5745fe0b56 100644 --- a/packages/eslint-plugin/tests/rules/no-deprecated.test.ts +++ b/packages/eslint-plugin/tests/rules/no-deprecated.test.ts @@ -63,6 +63,14 @@ ruleTester.run('no-deprecated', rule, { new A().b; `, + ` + class A { + accessor b: 1; + /** @deprecated */ accessor c: 2; + } + + new A().b; + `, ` declare class A { /** @deprecated */ @@ -72,6 +80,15 @@ ruleTester.run('no-deprecated', rule, { A.c; `, + ` + declare class A { + /** @deprecated */ + static accessor b: string; + static accessor c: string; + } + + A.c; + `, ` namespace A { /** @deprecated */ @@ -2757,5 +2774,93 @@ class B extends A { }, ], }, + { + code: ` + declare class A { + /** @deprecated */ + accessor b: () => string; + } + + declare const a: A; + + a.b; + `, + errors: [ + { + column: 11, + data: { name: 'b' }, + endColumn: 12, + endLine: 9, + line: 9, + messageId: 'deprecated', + }, + ], + }, + { + code: ` + declare class A { + /** @deprecated */ + accessor b: () => string; + } + + declare const a: A; + + a.b(); + `, + errors: [ + { + column: 11, + data: { name: 'b' }, + endColumn: 12, + endLine: 9, + line: 9, + messageId: 'deprecated', + }, + ], + }, + { + code: ` + class A { + /** @deprecated */ + accessor b = (): string => { + return ''; + }; + } + + declare const a: A; + + a.b(); + `, + errors: [ + { + column: 11, + data: { name: 'b' }, + endColumn: 12, + endLine: 11, + line: 11, + messageId: 'deprecated', + }, + ], + }, + { + code: ` + declare class A { + /** @deprecated */ + static accessor b: () => string; + } + + A.b(); + `, + errors: [ + { + column: 11, + data: { name: 'b' }, + endColumn: 12, + endLine: 7, + line: 7, + messageId: 'deprecated', + }, + ], + }, ], });