From 3e296c911f1b03805d3538a3736f7316304e740b Mon Sep 17 00:00:00 2001 From: auvred Date: Fri, 1 Nov 2024 10:50:33 +0300 Subject: [PATCH] fix(eslint-plugin): [no-deprecated] report when exported class implements/extends deprecated entity --- .../eslint-plugin/src/rules/no-deprecated.ts | 2 +- .../tests/rules/no-deprecated.test.ts | 93 +++++++++++++++++++ 2 files changed, 94 insertions(+), 1 deletion(-) diff --git a/packages/eslint-plugin/src/rules/no-deprecated.ts b/packages/eslint-plugin/src/rules/no-deprecated.ts index d8e7ebc0105e..e18224cd8969 100644 --- a/packages/eslint-plugin/src/rules/no-deprecated.ts +++ b/packages/eslint-plugin/src/rules/no-deprecated.ts @@ -135,7 +135,7 @@ export default createRule({ case AST_NODE_TYPES.ArrowFunctionExpression: case AST_NODE_TYPES.BlockStatement: - case AST_NODE_TYPES.ClassBody: + case AST_NODE_TYPES.ClassDeclaration: case AST_NODE_TYPES.TSInterfaceDeclaration: case AST_NODE_TYPES.FunctionDeclaration: case AST_NODE_TYPES.FunctionExpression: diff --git a/packages/eslint-plugin/tests/rules/no-deprecated.test.ts b/packages/eslint-plugin/tests/rules/no-deprecated.test.ts index 46af24bf1c98..5d104fbbd3be 100644 --- a/packages/eslint-plugin/tests/rules/no-deprecated.test.ts +++ b/packages/eslint-plugin/tests/rules/no-deprecated.test.ts @@ -2354,5 +2354,98 @@ ruleTester.run('no-deprecated', rule, { }, }, }, + { + code: ` + /** @deprecated */ + interface Foo {} + + class Bar implements Foo {} + `, + errors: [ + { + column: 30, + data: { name: 'Foo' }, + endColumn: 33, + endLine: 5, + line: 5, + messageId: 'deprecated', + }, + ], + }, + { + code: ` + /** @deprecated */ + interface Foo {} + + export class Bar implements Foo {} + `, + errors: [ + { + column: 37, + data: { name: 'Foo' }, + endColumn: 40, + endLine: 5, + line: 5, + messageId: 'deprecated', + }, + ], + }, + { + code: ` + /** @deprecated */ + interface Foo {} + + interface Baz {} + + export class Bar implements Baz, Foo {} + `, + errors: [ + { + column: 42, + data: { name: 'Foo' }, + endColumn: 45, + endLine: 7, + line: 7, + messageId: 'deprecated', + }, + ], + }, + { + code: ` + /** @deprecated */ + class Foo {} + + export class Bar extends Foo {} + `, + errors: [ + { + column: 34, + data: { name: 'Foo' }, + endColumn: 37, + endLine: 5, + line: 5, + messageId: 'deprecated', + }, + ], + }, + { + code: ` + /** @deprecated */ + declare function decorator(constructor: Function); + + @decorator + export class Foo {} + `, + errors: [ + { + column: 10, + data: { name: 'decorator' }, + endColumn: 19, + endLine: 5, + line: 5, + messageId: 'deprecated', + }, + ], + }, ], }); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy