From 3442fc5aa9c633b5469b15e4e5708571ebaa3947 Mon Sep 17 00:00:00 2001 From: yeonjuan Date: Wed, 10 Aug 2022 01:09:16 +0900 Subject: [PATCH 1/2] fix(eslint-plugin): [no-useless-constructor] handle parameter decorator --- .../src/rules/no-useless-constructor.ts | 6 ++++-- .../tests/rules/no-useless-constructor.test.ts | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/packages/eslint-plugin/src/rules/no-useless-constructor.ts b/packages/eslint-plugin/src/rules/no-useless-constructor.ts index 10e55cfbe0e..43ebba0e865 100644 --- a/packages/eslint-plugin/src/rules/no-useless-constructor.ts +++ b/packages/eslint-plugin/src/rules/no-useless-constructor.ts @@ -31,13 +31,15 @@ function checkAccessibility(node: TSESTree.MethodDefinition): boolean { } /** - * Check if method is not unless due to typescript parameter properties + * Check if method is not unless due to typescript parameter properties and decorators */ function checkParams(node: TSESTree.MethodDefinition): boolean { return ( !node.value.params || !node.value.params.some( - param => param.type === AST_NODE_TYPES.TSParameterProperty, + param => + param.type === AST_NODE_TYPES.TSParameterProperty || + param.decorators?.length, ) ); } diff --git a/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts b/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts index 7cedb9151e3..ea27557d3db 100644 --- a/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts +++ b/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts @@ -206,6 +206,20 @@ class A extends B { ` class A { constructor(foo); +} + `, + ` +class A extends Object { + constructor(@Foo foo: string) { + super(foo); + } +} + `, + ` +class A extends Object { + constructor(foo: string, @Bar() bar) { + super(foo, bar); + } } `, ], From 78c7b1e67609b2d7d8545c2c91d34e47b9bd91af Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Tue, 9 Aug 2022 13:09:31 -0400 Subject: [PATCH 2/2] Update packages/eslint-plugin/src/rules/no-useless-constructor.ts --- packages/eslint-plugin/src/rules/no-useless-constructor.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/eslint-plugin/src/rules/no-useless-constructor.ts b/packages/eslint-plugin/src/rules/no-useless-constructor.ts index 43ebba0e865..3f0b15c9efd 100644 --- a/packages/eslint-plugin/src/rules/no-useless-constructor.ts +++ b/packages/eslint-plugin/src/rules/no-useless-constructor.ts @@ -31,7 +31,7 @@ function checkAccessibility(node: TSESTree.MethodDefinition): boolean { } /** - * Check if method is not unless due to typescript parameter properties and decorators + * Check if method is not useless due to typescript parameter properties and decorators */ function checkParams(node: TSESTree.MethodDefinition): boolean { return (