Browse Source

fix: `NoSpacesAfterFunctionNameFixer` - do not remove space if the opening parenthesis part of an expression (#7430)

Kuba Werłos 1 year ago
parent
commit
34d914c711

+ 2 - 2
src/Fixer/FunctionNotation/NoSpacesAfterFunctionNameFixer.php

@@ -50,7 +50,7 @@ final class NoSpacesAfterFunctionNameFixer extends AbstractFixer
 
     public function isCandidate(Tokens $tokens): bool
     {
-        return $tokens->isAnyTokenKindsFound(array_merge($this->getFunctionyTokenKinds(), [T_STRING]));
+        return $tokens->isAnyTokenKindsFound([T_STRING, ...$this->getFunctionyTokenKinds()]);
     }
 
     protected function applyFix(\SplFileInfo $file, Tokens $tokens): void
@@ -73,7 +73,7 @@ final class NoSpacesAfterFunctionNameFixer extends AbstractFixer
             $nextNonWhiteSpace = $tokens->getNextMeaningfulToken($endParenthesisIndex);
             if (
                 null !== $nextNonWhiteSpace
-                && $tokens[$nextNonWhiteSpace]->equals('?')
+                && !$tokens[$nextNonWhiteSpace]->equals(';')
                 && $tokens[$lastTokenIndex]->isGivenKind($languageConstructionTokens)
             ) {
                 continue;

+ 49 - 0
tests/Fixer/FunctionNotation/NoSpacesAfterFunctionNameFixerTest.php

@@ -167,6 +167,55 @@ $$e(2);
             '<?php $a()(1);',
             '<?php $a () (1);',
         ];
+
+        yield [
+            '<?php
+                echo (function () {})();
+                echo ($propertyValue ? "TRUE" : "FALSE") . EOL;
+                echo(FUNCTION_1);
+                echo (EXPRESSION + CONST_1), CONST_2;
+            ',
+            '<?php
+                echo (function () {})();
+                echo ($propertyValue ? "TRUE" : "FALSE") . EOL;
+                echo (FUNCTION_1);
+                echo (EXPRESSION + CONST_1), CONST_2;
+            ',
+        ];
+
+        yield [
+            '<?php
+                include(SOME_PATH_1);
+                include_once(SOME_PATH_2);
+                require(SOME_PATH_3);
+                require_once(SOME_PATH_4);
+                print(SOME_VALUE);
+                print(FIRST_HALF_OF_STRING_1 . SECOND_HALF_OF_STRING_1);
+                print((FIRST_HALF_OF_STRING_2) . (SECOND_HALF_OF_STRING_2));
+            ',
+            '<?php
+                include         (SOME_PATH_1);
+                include_once    (SOME_PATH_2);
+                require         (SOME_PATH_3);
+                require_once    (SOME_PATH_4);
+                print           (SOME_VALUE);
+                print           (FIRST_HALF_OF_STRING_1 . SECOND_HALF_OF_STRING_1);
+                print           ((FIRST_HALF_OF_STRING_2) . (SECOND_HALF_OF_STRING_2));
+            ',
+        ];
+
+        yield [
+            '<?php
+                include         (DIR) . FILENAME_1;
+                include_once    (DIR) . (FILENAME_2);
+                require         (DIR) . FILENAME_3;
+                require_once    (DIR) . (FILENAME_4);
+                print           (FIRST_HALF_OF_STRING_1) . SECOND_HALF_OF_STRING_1;
+                print           (FIRST_HALF_OF_STRING_2) . ((((SECOND_HALF_OF_STRING_2))));
+                print           ((FIRST_HALF_OF_STRING_3)) . ((SECOND_HALF_OF_STRING_3));
+                print           ((((FIRST_HALF_OF_STRING_4)))) . ((((SECOND_HALF_OF_STRING_4))));
+            ',
+        ];
     }
 
     /**