diff --git a/packages/coding-standard/src/TokenRunner/Transformer/FixerTransformer/TokensNewliner.php b/packages/coding-standard/src/TokenRunner/Transformer/FixerTransformer/TokensNewliner.php index eca2e39ecf..b89e9a747b 100644 --- a/packages/coding-standard/src/TokenRunner/Transformer/FixerTransformer/TokensNewliner.php +++ b/packages/coding-standard/src/TokenRunner/Transformer/FixerTransformer/TokensNewliner.php @@ -66,6 +66,10 @@ public function breakItems(BlockInfo $blockInfo, Tokens $tokens, int $kind): voi continue; } + if ($this->isFollowedByEmptyLine($tokens, $i)) { + continue; + } + $tokens->ensureWhitespaceAtIndex($i + 1, 0, $newlineIndentWhitespace); } } @@ -113,4 +117,20 @@ private function isFollowedByComment(Tokens $tokens, int $i): bool return $nextNextToken->isComment(); } + + /** + * Keep author-added empty line between items + * + * @param Tokens $tokens + */ + private function isFollowedByEmptyLine(Tokens $tokens, int $i): bool + { + $nextToken = $tokens[$i + 1]; + if (! $nextToken->isWhitespace()) { + return false; + } + + $lineEnding = $this->whitespacesFixerConfig->getLineEnding(); + return \substr_count($nextToken->getContent(), $lineEnding) >= 2; + } } diff --git a/packages/coding-standard/tests/Fixer/Spacing/StandaloneLinePromotedPropertyFixer/Fixture/skip_empty_lines_between_properties.php.inc b/packages/coding-standard/tests/Fixer/Spacing/StandaloneLinePromotedPropertyFixer/Fixture/skip_empty_lines_between_properties.php.inc new file mode 100644 index 0000000000..8a01f5982f --- /dev/null +++ b/packages/coding-standard/tests/Fixer/Spacing/StandaloneLinePromotedPropertyFixer/Fixture/skip_empty_lines_between_properties.php.inc @@ -0,0 +1,17 @@ +