diff --git a/src/Tokenizer/Transformer/TypeAlternationTransformer.php b/src/Tokenizer/Transformer/TypeAlternationTransformer.php index 07cd08879b7..747d6389cba 100644 --- a/src/Tokenizer/Transformer/TypeAlternationTransformer.php +++ b/src/Tokenizer/Transformer/TypeAlternationTransformer.php @@ -18,7 +18,8 @@ use PhpCsFixer\Tokenizer\Tokens; /** - * Transform `|` operator into CT::T_TYPE_ALTERNATION in `} catch (ExceptionType1 | ExceptionType2 $e) {`. + * Transform `|` operator into CT::T_TYPE_ALTERNATION in `function foo(Type1 | Type2 $x) {` + * or `} catch (ExceptionType1 | ExceptionType2 $e) {`. * * @author Dariusz RumiƄski * @@ -31,7 +32,7 @@ final class TypeAlternationTransformer extends AbstractTransformer */ public function getPriority() { - // needs to run after TypeColonTransformer + // needs to run after ArrayTypehintTransformer and TypeColonTransformer return -15; } @@ -54,7 +55,7 @@ public function process(Tokens $tokens, Token $token, $index) $prevIndex = $tokens->getPrevMeaningfulToken($index); - if (!$tokens[$prevIndex]->isGivenKind(T_STRING)) { + if (!$tokens[$prevIndex]->isGivenKind([T_STRING, CT::T_ARRAY_TYPEHINT])) { return; } diff --git a/tests/Fixer/ClassNotation/VisibilityRequiredFixerTest.php b/tests/Fixer/ClassNotation/VisibilityRequiredFixerTest.php index ae9ca1defe2..99b3a5eb99e 100644 --- a/tests/Fixer/ClassNotation/VisibilityRequiredFixerTest.php +++ b/tests/Fixer/ClassNotation/VisibilityRequiredFixerTest.php @@ -849,5 +849,18 @@ public function provideFix80Cases() yield [ ' CT::T_TYPE_ALTERNATION, ], ]; + + yield 'array as first element of types' => [ + ' CT::T_TYPE_ALTERNATION, + 8 => CT::T_TYPE_ALTERNATION, + ], + ]; + + yield 'array as middle element of types' => [ + ' CT::T_TYPE_ALTERNATION, + 8 => CT::T_TYPE_ALTERNATION, + ], + ]; + + yield 'array as last element of types' => [ + ' CT::T_TYPE_ALTERNATION, + 8 => CT::T_TYPE_ALTERNATION, + ], + ]; } }