diff --git a/packages/eslint-plugin/src/rules/padding-line-between-statements.ts b/packages/eslint-plugin/src/rules/padding-line-between-statements.ts index f64122aaea3..aab53cbba4a 100644 --- a/packages/eslint-plugin/src/rules/padding-line-between-statements.ts +++ b/packages/eslint-plugin/src/rules/padding-line-between-statements.ts @@ -803,7 +803,9 @@ export default util.createRule({ ':statement': verify, SwitchCase: verifyThenEnterScope, + TSDeclareFunction: verifyThenEnterScope, 'SwitchCase:exit': exitScope, + 'TSDeclareFunction:exit': exitScope, }; }, }); diff --git a/packages/eslint-plugin/tests/rules/padding-line-between-statements.test.ts b/packages/eslint-plugin/tests/rules/padding-line-between-statements.test.ts index 4fd71fa1eec..93b01ce6f33 100644 --- a/packages/eslint-plugin/tests/rules/padding-line-between-statements.test.ts +++ b/packages/eslint-plugin/tests/rules/padding-line-between-statements.test.ts @@ -2799,6 +2799,20 @@ var a = 1 { blankLine: 'always', prev: 'block-like', next: 'block-like' }, ], }, + { + code: 'export function foo(arg1: string): number;\nexport function foo(arg2: number) {\n return arg2;\n}', + options: [ + { blankLine: 'always', prev: '*', next: 'block-like' }, + { blankLine: 'never', prev: '*', next: 'export' }, + ], + }, + { + code: 'function foo(arg1: string): number;\nfunction foo(arg2: number) {\n return arg2;\n}', + options: [ + { blankLine: 'always', prev: '*', next: 'block-like' }, + { blankLine: 'never', prev: '*', next: 'function' }, + ], + }, ], invalid: [ //---------------------------------------------------------------------- @@ -5101,5 +5115,19 @@ declare namespace Types { { messageId: 'expectedBlankLine' }, ], }, + { + code: 'export function foo(arg1: string): number;\nexport function foo(arg2: number) {\n return arg2;\n}', + output: + 'export function foo(arg1: string): number;\n\nexport function foo(arg2: number) {\n return arg2;\n}', + options: [{ blankLine: 'always', prev: '*', next: 'block-like' }], + errors: [{ messageId: 'expectedBlankLine' }], + }, + { + code: 'function foo(arg1: string): number;\nfunction foo(arg2: number) {\n return arg2;\n}', + output: + 'function foo(arg1: string): number;\n\nfunction foo(arg2: number) {\n return arg2;\n}', + options: [{ blankLine: 'always', prev: '*', next: 'block-like' }], + errors: [{ messageId: 'expectedBlankLine' }], + }, ], });