From bb66a056e0ab0e63c995dd9923af6837a900dc60 Mon Sep 17 00:00:00 2001 From: yeonjuan Date: Wed, 10 Aug 2022 01:09:16 +0900 Subject: [PATCH] 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 10e55cfbe0eb..43ebba0e8658 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 7cedb9151e3e..ea27557d3db2 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); + } } `, ],