diff --git a/packages/eslint-plugin/src/rules/unified-signatures.ts b/packages/eslint-plugin/src/rules/unified-signatures.ts index af8bd281da51..5ccc53c38da3 100644 --- a/packages/eslint-plugin/src/rules/unified-signatures.ts +++ b/packages/eslint-plugin/src/rules/unified-signatures.ts @@ -620,7 +620,15 @@ function getOverloadInfo(node: OverloadNode): string { default: { const { key } = node as MethodDefinition; - return isIdentifier(key) ? key.name : (key as TSESTree.Literal).raw; + if (isPrivateIdentifier(key)) { + return `private_identifier_${key.name}`; + } + + if (isIdentifier(key)) { + return `identifier_${key.name}`; + } + + return (key as TSESTree.Literal).raw; } } } @@ -639,6 +647,12 @@ function isIdentifier(node: TSESTree.Node): node is TSESTree.Identifier { return node.type === AST_NODE_TYPES.Identifier; } +function isPrivateIdentifier( + node: TSESTree.Node, +): node is TSESTree.PrivateIdentifier { + return node.type === AST_NODE_TYPES.PrivateIdentifier; +} + function isGetterOrSetter( node: | TSESTree.MethodDefinition diff --git a/packages/eslint-plugin/tests/rules/unified-signatures.test.ts b/packages/eslint-plugin/tests/rules/unified-signatures.test.ts index f88ba1e89fd8..1e5f0538c0a7 100644 --- a/packages/eslint-plugin/tests/rules/unified-signatures.test.ts +++ b/packages/eslint-plugin/tests/rules/unified-signatures.test.ts @@ -29,6 +29,18 @@ class C { a(): void; a(a: number, b: number): void; a(a?: number, b?: number): void {} +} + `, + ` +declare class Example { + privateMethod(a: number): void; + #privateMethod(a: number, b?: string): void; +} + `, + ` +declare class Example { + #privateMethod1(a: number): void; + #privateMethod2(a: number, b?: string): void; } `, // No error for arity difference greater than 1. @@ -510,6 +522,25 @@ type T = { }, ], }, + { + code: ` +declare class Example { + #privateMethod(a: number): void; + #privateMethod(a: number, b?: string): void; +} + `, + errors: [ + { + column: 29, + data: { + failureStringStart: + 'These overloads can be combined into one signature', + }, + line: 4, + messageId: 'omittingSingleParameter', + }, + ], + }, { // Works for constructor. code: `