From 297086154acc568a0ae8eb41c8977b7a7ba4e0ed Mon Sep 17 00:00:00 2001 From: yuya <47887646+oxyu8@users.noreply.github.com> Date: Mon, 24 Apr 2023 13:24:11 +0900 Subject: [PATCH] fix(eslint-plugin): [unified-signatures] no parameters function (#6940) * fix: [unified-signatures] no parameters function * change: [unified-signatures] check every b.params[i] * quick lil refactor --------- Co-authored-by: Josh Goldberg --- .../src/rules/unified-signatures.ts | 3 ++- .../tests/rules/unified-signatures.test.ts | 22 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/packages/eslint-plugin/src/rules/unified-signatures.ts b/packages/eslint-plugin/src/rules/unified-signatures.ts index b387450801f..3b5f2294762 100644 --- a/packages/eslint-plugin/src/rules/unified-signatures.ts +++ b/packages/eslint-plugin/src/rules/unified-signatures.ts @@ -213,7 +213,8 @@ export default util.createRule({ b.typeParameters !== undefined ? b.typeParameters.params : undefined; if (ignoreDifferentlyNamedParameters) { - for (let i = 0; i < a.params.length; i += 1) { + const commonParamsLength = Math.min(a.params.length, b.params.length); + for (let i = 0; i < commonParamsLength; i += 1) { if ( a.params[i].type === b.params[i].type && getStaticParameterName(a.params[i]) !== diff --git a/packages/eslint-plugin/tests/rules/unified-signatures.test.ts b/packages/eslint-plugin/tests/rules/unified-signatures.test.ts index 73f773dc42d..ce62f6c571c 100644 --- a/packages/eslint-plugin/tests/rules/unified-signatures.test.ts +++ b/packages/eslint-plugin/tests/rules/unified-signatures.test.ts @@ -177,6 +177,28 @@ function f(v: number, u?: string): void {} }, { code: ` +function f(v: boolean): number; +function f(): string; + `, + options: [{ ignoreDifferentlyNamedParameters: true }], + }, + { + code: ` +function f(v: boolean, u: boolean): number; +function f(v: boolean): string; + `, + options: [{ ignoreDifferentlyNamedParameters: true }], + }, + { + code: ` +function f(v: number, u?: string): void {} +function f(v: number): void; +function f(): string; + `, + options: [{ ignoreDifferentlyNamedParameters: true }], + }, + { + code: ` function f(a: boolean, ...c: number[]): void; function f(a: boolean, ...d: string[]): void; function f(a: boolean, ...c: (number | string)[]): void {}