diff --git a/packages/eslint-plugin/src/rules/lines-between-class-members.ts b/packages/eslint-plugin/src/rules/lines-between-class-members.ts index fc89f43c15c..7317b37c598 100644 --- a/packages/eslint-plugin/src/rules/lines-between-class-members.ts +++ b/packages/eslint-plugin/src/rules/lines-between-class-members.ts @@ -51,7 +51,8 @@ export default util.createRule({ function isOverload(node: TSESTree.Node): boolean { return ( - node.type === AST_NODE_TYPES.MethodDefinition && + (node.type === AST_NODE_TYPES.TSAbstractMethodDefinition || + node.type === AST_NODE_TYPES.MethodDefinition) && node.value.type === AST_NODE_TYPES.TSEmptyBodyFunctionExpression ); } diff --git a/packages/eslint-plugin/tests/rules/lines-between-class-members.test.ts b/packages/eslint-plugin/tests/rules/lines-between-class-members.test.ts index b25b0ca6b3c..bb55bbbf346 100644 --- a/packages/eslint-plugin/tests/rules/lines-between-class-members.test.ts +++ b/packages/eslint-plugin/tests/rules/lines-between-class-members.test.ts @@ -120,6 +120,15 @@ qux() { } { exceptAfterOverload: true, exceptAfterSingleLine: true }, ], }, + { + code: ` +abstract class foo { +abstract bar(a: string): void; +abstract bar(a: string, b: string): void; +}; + `, + options: ['always'], + }, ], invalid: [ {