From 461704b2406c8a908ddbda496c4546a4bf3fb70f Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Tue, 13 Oct 2026 15:17:27 +0200 Subject: [PATCH 1/2] Run NoBlankLineBetweenImportsFixer before BlankLineBetweenImportGroupsFixer Priority -50 ran after BlankLineBetweenImportGroupsFixer (-40), stripping the PER-CS blank line between import groups. Raise to -35 so it runs after OrderedImportsFixer but before the group fixer, keeping the group blank line. --- .../NoBlankLineBetweenImportsFixer.php | 4 +-- ...etweenImportsFixerWithImportGroupsTest.php | 28 +++++++++++++++++ ...d_blank_line_between_import_groups.php.inc | 28 +++++++++++++++++ ...p_blank_line_between_import_groups.php.inc | 30 +++++++++++++++++++ .../config/with_import_groups_rule.php | 12 ++++++++ 5 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 packages/coding-standard/tests/Fixer/Spacing/NoBlankLineBetweenImportsFixer/NoBlankLineBetweenImportsFixerWithImportGroupsTest.php create mode 100644 packages/coding-standard/tests/Fixer/Spacing/NoBlankLineBetweenImportsFixer/WithImportGroupsFixture/add_blank_line_between_import_groups.php.inc create mode 100644 packages/coding-standard/tests/Fixer/Spacing/NoBlankLineBetweenImportsFixer/WithImportGroupsFixture/keep_blank_line_between_import_groups.php.inc create mode 100644 packages/coding-standard/tests/Fixer/Spacing/NoBlankLineBetweenImportsFixer/config/with_import_groups_rule.php diff --git a/packages/coding-standard/src/Fixer/Spacing/NoBlankLineBetweenImportsFixer.php b/packages/coding-standard/src/Fixer/Spacing/NoBlankLineBetweenImportsFixer.php index a250aa2ece..65d9ccd745 100644 --- a/packages/coding-standard/src/Fixer/Spacing/NoBlankLineBetweenImportsFixer.php +++ b/packages/coding-standard/src/Fixer/Spacing/NoBlankLineBetweenImportsFixer.php @@ -29,10 +29,10 @@ public function getDefinition(): FixerDefinitionInterface return new FixerDefinition(self::ERROR_MESSAGE, [new CodeSample("doTestFile($filePath); + } + + public static function provideData(): Iterator + { + return self::yieldFiles(__DIR__ . '/WithImportGroupsFixture'); + } + + public function provideConfig(): string + { + return __DIR__ . '/config/with_import_groups_rule.php'; + } +} diff --git a/packages/coding-standard/tests/Fixer/Spacing/NoBlankLineBetweenImportsFixer/WithImportGroupsFixture/add_blank_line_between_import_groups.php.inc b/packages/coding-standard/tests/Fixer/Spacing/NoBlankLineBetweenImportsFixer/WithImportGroupsFixture/add_blank_line_between_import_groups.php.inc new file mode 100644 index 0000000000..160d58255c --- /dev/null +++ b/packages/coding-standard/tests/Fixer/Spacing/NoBlankLineBetweenImportsFixer/WithImportGroupsFixture/add_blank_line_between_import_groups.php.inc @@ -0,0 +1,28 @@ + +----- + diff --git a/packages/coding-standard/tests/Fixer/Spacing/NoBlankLineBetweenImportsFixer/WithImportGroupsFixture/keep_blank_line_between_import_groups.php.inc b/packages/coding-standard/tests/Fixer/Spacing/NoBlankLineBetweenImportsFixer/WithImportGroupsFixture/keep_blank_line_between_import_groups.php.inc new file mode 100644 index 0000000000..946c716b0a --- /dev/null +++ b/packages/coding-standard/tests/Fixer/Spacing/NoBlankLineBetweenImportsFixer/WithImportGroupsFixture/keep_blank_line_between_import_groups.php.inc @@ -0,0 +1,30 @@ + +----- + diff --git a/packages/coding-standard/tests/Fixer/Spacing/NoBlankLineBetweenImportsFixer/config/with_import_groups_rule.php b/packages/coding-standard/tests/Fixer/Spacing/NoBlankLineBetweenImportsFixer/config/with_import_groups_rule.php new file mode 100644 index 0000000000..c992ea982b --- /dev/null +++ b/packages/coding-standard/tests/Fixer/Spacing/NoBlankLineBetweenImportsFixer/config/with_import_groups_rule.php @@ -0,0 +1,12 @@ +rule(BlankLineBetweenImportGroupsFixer::class); + $ecsConfig->rule(NoBlankLineBetweenImportsFixer::class); +}; From 59fef5885d40e55a8028fba76c0b373a1490890a Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Tue, 13 Oct 2026 15:30:18 +0200 Subject: [PATCH 2/2] Mirror import fixer priority change in blink Keep the blink Go engine in parity with the PHP fixer by running NoBlankLineBetweenImportsFixer before BlankLineBetweenImportGroupsFixer. --- blink/internal/fixer/rules/priorities.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blink/internal/fixer/rules/priorities.go b/blink/internal/fixer/rules/priorities.go index e6c1691b79..ecf165eece 100644 --- a/blink/internal/fixer/rules/priorities.go +++ b/blink/internal/fixer/rules/priorities.go @@ -158,7 +158,7 @@ var fixerPriority = map[string]int{ "SingleClassElementPerStatementFixer": 56, "SingleImportPerStatementFixer": 1, "SingleLineAfterImportsFixer": -11, - "NoBlankLineBetweenImportsFixer": -50, + "NoBlankLineBetweenImportsFixer": -35, "SpaceAfterCommaHereNowDocFixer": 0, "ArrayOpenerAndCloserNewlineFixer": 34, "SingleLineCommentSpacingFixer": 1,