Browse Source

fix: `BlankLineAfterOpeningTagFixer` - add blank line in file starting with multi-line comment (#8256)

Kuba Werłos 4 months ago
parent
commit
c362c4018b

+ 8 - 4
src/Fixer/PhpTag/BlankLineAfterOpeningTagFixer.php

@@ -77,12 +77,16 @@ final class BlankLineAfterOpeningTagFixer extends AbstractFixer implements White
         }
 
         $newLineIndex = $openTagIndex + 1;
-        if (isset($tokens[$newLineIndex]) && !str_contains($tokens[$newLineIndex]->getContent(), "\n")) {
-            if ($tokens[$newLineIndex]->isWhitespace()) {
+        if (!$tokens->offsetExists($newLineIndex)) {
+            return;
+        }
+
+        if ($tokens[$newLineIndex]->isWhitespace()) {
+            if (!str_contains($tokens[$newLineIndex]->getContent(), "\n")) {
                 $tokens[$newLineIndex] = new Token([T_WHITESPACE, $lineEnding.$tokens[$newLineIndex]->getContent()]);
-            } else {
-                $tokens->insertAt($newLineIndex, new Token([T_WHITESPACE, $lineEnding]));
             }
+        } else {
+            $tokens->insertAt($newLineIndex, new Token([T_WHITESPACE, $lineEnding]));
         }
     }
 }

+ 16 - 0
tests/Fixer/PhpTag/BlankLineAfterOpeningTagFixerTest.php

@@ -163,6 +163,22 @@ $foo = $bar;
                 echo 1;
                 EOD,
         ];
+
+        yield 'file starting with multi-line comment' => [
+            <<<'PHP'
+                <?php
+
+                /**
+                 * @author yes
+                 */
+                PHP,
+            <<<'PHP'
+                <?php
+                /**
+                 * @author yes
+                 */
+                PHP,
+        ];
     }
 
     /**