"Unexpected token: |" when using new PHP 8.0 syntax
dokoAgency opened this issue · comments
- PHP Depend version: 2.9.1
- PHP Version: 8.0.3
- Installation type: composer
- Operating System / Distribution & Version: (php:8.0-fpm)
Current Behavior
Got "Unexpected token: |" in method declarations using new PHP 8.0 syntax. Triggering code:
public static function fetchConfiguration(FieldableEntityInterface $entity): array | bool {
Expected Behavior
The exception should not have thrown.
Hello, I can't get this error with PDepend 2.9.1 and get this exact one with oldest version. Can you triple check the version of PDepend running when this error outputs really is 2.9.1?
The same behavior with input params:
private function fooBar(array|string|int $attributes): int
pdepend/pdepend (2.9.1)
Having the same issue with pdepend 2.9.1:
❯ composer show pdepend/pdepend
name : pdepend/pdepend
descrip. : Official version of pdepend to be handled with Composer
keywords :
versions : * 2.9.1
Sorry to insist but do you run ./vendor/bin/pdepend
(or ./vendor/bin/phpmd
)? To be sure the installed package in your composer vendor is actually the one you run.
Can you show the command you use?
Actually blocking point for me to inspect is the steps to reproduce it.
I've been running via phpmd, but running pdepend directly causes the same issue (with =>
in match
expressions and |
in union types). Here's the full output of ./vendor/bin/pdepend --summary-xml=pdep-out.xml src
on my project, running PHP 8.0.3:
skore on main via 🐘 v8.0.3
❯ vendor/bin/pdepend --summary-xml=pdep-out.xml src
PDepend 2.9.1
Parsing source files:
............................................................ 60
............................................ 104
Calculating Cyclomatic Complexity metrics:
......................... 502
Calculating Node Loc metrics:
....................... 461
Calculating NPath Complexity metrics:
......................... 502
Calculating Inheritance metrics:
......... 182
Calculating Node Count metrics:
................. 358
Calculating Hierarchy metrics:
..................... 435
Calculating Code Rank metrics:
...... 139
Calculating Coupling metrics:
........................... 541
Calculating Class Level metrics:
..................... 421
Calculating Cohesion metrics:
...................................... 773
Calculating Halstead metrics:
.......................... 526
Calculating Maintainability Index metrics:
.......................... 526
Generating pdepend log files, this may take a moment.
The following errors occurred:
Unexpected token: =>, line: 41, col: 32, file: /home/rauch/GitHub/RauchF/skore/src/Api/V1/SpecHandler.php.
#0 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(7322): PDepend\Source\Parser\UnexpectedTokenException->__construct(Object(PDepend\Source\Tokenizer\Token), Object(PDepend\Source\AST\ASTCompilationUnit))
#1 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(7288): PDepend\Source\Language\PHP\AbstractPHPParser->getUnexpectedTokenException()
#2 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(2014): PDepend\Source\Language\PHP\AbstractPHPParser->consumeToken(5)
#3 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(2076): PDepend\Source\Language\PHP\AbstractPHPParser->parseIndexExpression(Object(PDepend\Source\AST\ASTFunctionPostfix), Object(PDepend\Source\AST\ASTStringIndexExpression), 4, 5)
#4 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(1982): PDepend\Source\Language\PHP\AbstractPHPParser->parseStringIndexExpression(Object(PDepend\Source\AST\ASTFunctionPostfix))
#5 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(4088): PDepend\Source\Language\PHP\AbstractPHPParser->parseOptionalIndexExpression(Object(PDepend\Source\AST\ASTFunctionPostfix))
#6 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/PHPParserVersion80.php(224): PDepend\Source\Language\PHP\AbstractPHPParser->parseFunctionPostfix(Object(PDepend\Source\AST\ASTIdentifier))
#7 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(4030): PDepend\Source\Language\PHP\PHPParserVersion80->parseFunctionPostfix(Object(PDepend\Source\AST\ASTIdentifier))
#8 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(4493): PDepend\Source\Language\PHP\AbstractPHPParser->parseMemberPrefixOrFunctionPostfix()
#9 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(2772): PDepend\Source\Language\PHP\AbstractPHPParser->parseVariableOrConstantOrPrimaryPrefix()
#10 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(3831): PDepend\Source\Language\PHP\AbstractPHPParser->parseOptionalExpression()
#11 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(3849): PDepend\Source\Language\PHP\AbstractPHPParser->buildReturnStatement(Object(PDepend\Source\Tokenizer\Token))
#12 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(6007): PDepend\Source\Language\PHP\AbstractPHPParser->parseReturnStatement()
#13 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(5944): PDepend\Source\Language\PHP\AbstractPHPParser->parseOptionalStatement()
#14 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(1278): PDepend\Source\Language\PHP\AbstractPHPParser->parseScope()
#15 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(1231): PDepend\Source\Language\PHP\AbstractPHPParser->parseCallableDeclaration(Object(PDepend\Source\AST\ASTMethod))
#16 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(988): PDepend\Source\Language\PHP\AbstractPHPParser->parseMethodDeclaration()
#17 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/PHPParserVersion74.php(87): PDepend\Source\Language\PHP\AbstractPHPParser->parseMethodOrFieldDeclaration(1)
#18 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(887): PDepend\Source\Language\PHP\PHPParserVersion74->parseMethodOrFieldDeclaration(1)
#19 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(723): PDepend\Source\Language\PHP\AbstractPHPParser->parseTypeBody(Object(PDepend\Source\AST\ASTClass))
#20 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(6075): PDepend\Source\Language\PHP\AbstractPHPParser->parseClassDeclaration()
#21 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(397): PDepend\Source\Language\PHP\AbstractPHPParser->parseOptionalStatement()
#22 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Engine.php(587): PDepend\Source\Language\PHP\AbstractPHPParser->parse()
#23 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Engine.php(335): PDepend\Engine->performParseProcess()
#24 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/TextUI/Runner.php(314): PDepend\Engine->analyze()
#25 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/TextUI/Command.php(243): PDepend\TextUI\Runner->run()
#26 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/TextUI/Command.php(627): PDepend\TextUI\Command->run()
#27 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/bin/pdepend(72): PDepend\TextUI\Command::main()
#28 {main}
Unexpected token: =>, line: 20, col: 17, file: /home/rauch/GitHub/RauchF/skore/src/Http/ResponseFactory.php.
#0 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(7322): PDepend\Source\Parser\UnexpectedTokenException->__construct(Object(PDepend\Source\Tokenizer\Token), Object(PDepend\Source\AST\ASTCompilationUnit))
#1 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(7288): PDepend\Source\Language\PHP\AbstractPHPParser->getUnexpectedTokenException()
#2 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(2014): PDepend\Source\Language\PHP\AbstractPHPParser->consumeToken(5)
#3 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(2076): PDepend\Source\Language\PHP\AbstractPHPParser->parseIndexExpression(Object(PDepend\Source\AST\ASTFunctionPostfix), Object(PDepend\Source\AST\ASTStringIndexExpression), 4, 5)
#4 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(1982): PDepend\Source\Language\PHP\AbstractPHPParser->parseStringIndexExpression(Object(PDepend\Source\AST\ASTFunctionPostfix))
#5 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(4088): PDepend\Source\Language\PHP\AbstractPHPParser->parseOptionalIndexExpression(Object(PDepend\Source\AST\ASTFunctionPostfix))
#6 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/PHPParserVersion80.php(224): PDepend\Source\Language\PHP\AbstractPHPParser->parseFunctionPostfix(Object(PDepend\Source\AST\ASTIdentifier))
#7 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(4030): PDepend\Source\Language\PHP\PHPParserVersion80->parseFunctionPostfix(Object(PDepend\Source\AST\ASTIdentifier))
#8 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(4493): PDepend\Source\Language\PHP\AbstractPHPParser->parseMemberPrefixOrFunctionPostfix()
#9 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(2772): PDepend\Source\Language\PHP\AbstractPHPParser->parseVariableOrConstantOrPrimaryPrefix()
#10 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(4556): PDepend\Source\Language\PHP\AbstractPHPParser->parseOptionalExpression()
#11 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(2902): PDepend\Source\Language\PHP\AbstractPHPParser->parseAssignmentExpression(Object(PDepend\Source\AST\ASTVariable))
#12 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(6088): PDepend\Source\Language\PHP\AbstractPHPParser->parseOptionalExpression()
#13 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(5944): PDepend\Source\Language\PHP\AbstractPHPParser->parseOptionalStatement()
#14 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(1278): PDepend\Source\Language\PHP\AbstractPHPParser->parseScope()
#15 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(1231): PDepend\Source\Language\PHP\AbstractPHPParser->parseCallableDeclaration(Object(PDepend\Source\AST\ASTMethod))
#16 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(988): PDepend\Source\Language\PHP\AbstractPHPParser->parseMethodDeclaration()
#17 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/PHPParserVersion74.php(87): PDepend\Source\Language\PHP\AbstractPHPParser->parseMethodOrFieldDeclaration(1)
#18 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(887): PDepend\Source\Language\PHP\PHPParserVersion74->parseMethodOrFieldDeclaration(1)
#19 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(723): PDepend\Source\Language\PHP\AbstractPHPParser->parseTypeBody(Object(PDepend\Source\AST\ASTClass))
#20 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(6075): PDepend\Source\Language\PHP\AbstractPHPParser->parseClassDeclaration()
#21 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(397): PDepend\Source\Language\PHP\AbstractPHPParser->parseOptionalStatement()
#22 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Engine.php(587): PDepend\Source\Language\PHP\AbstractPHPParser->parse()
#23 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Engine.php(335): PDepend\Engine->performParseProcess()
#24 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/TextUI/Runner.php(314): PDepend\Engine->analyze()
#25 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/TextUI/Command.php(243): PDepend\TextUI\Runner->run()
#26 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/TextUI/Command.php(627): PDepend\TextUI\Command->run()
#27 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/bin/pdepend(72): PDepend\TextUI\Command::main()
#28 {main}
Unexpected token: |, line: 37, col: 48, file: /home/rauch/GitHub/RauchF/skore/src/Validation/EntityValidator.php.
#0 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(7322): PDepend\Source\Parser\UnexpectedTokenException->__construct(Object(PDepend\Source\Tokenizer\Token), Object(PDepend\Source\AST\ASTCompilationUnit))
#1 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(7288): PDepend\Source\Language\PHP\AbstractPHPParser->getUnexpectedTokenException()
#2 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(6757): PDepend\Source\Language\PHP\AbstractPHPParser->consumeToken(116)
#3 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/PHPParserVersion70.php(505): PDepend\Source\Language\PHP\AbstractPHPParser->parseVariableDeclarator()
#4 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(5841): PDepend\Source\Language\PHP\PHPParserVersion70->parseFormalParameter()
#5 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(5696): PDepend\Source\Language\PHP\AbstractPHPParser->parseFormalParameterOrByReference()
#6 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(5659): PDepend\Source\Language\PHP\AbstractPHPParser->parseFormalParameterAndArrayTypeHint()
#7 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/PHPParserVersion71.php(119): PDepend\Source\Language\PHP\AbstractPHPParser->parseFormalParameterOrTypeHintOrByReference()
#8 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(5578): PDepend\Source\Language\PHP\PHPParserVersion71->parseFormalParameterOrTypeHintOrByReference()
#9 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/PHPParserVersion80.php(180): PDepend\Source\Language\PHP\AbstractPHPParser->parseFormalParameterOrPrefix(Object(PDepend\Source\AST\ASTMethod))
#10 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(5611): PDepend\Source\Language\PHP\PHPParserVersion80->parseFormalParameterOrPrefix(Object(PDepend\Source\AST\ASTMethod))
#11 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(1273): PDepend\Source\Language\PHP\AbstractPHPParser->parseFormalParameters(Object(PDepend\Source\AST\ASTMethod))
#12 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(1231): PDepend\Source\Language\PHP\AbstractPHPParser->parseCallableDeclaration(Object(PDepend\Source\AST\ASTMethod))
#13 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(988): PDepend\Source\Language\PHP\AbstractPHPParser->parseMethodDeclaration()
#14 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/PHPParserVersion74.php(87): PDepend\Source\Language\PHP\AbstractPHPParser->parseMethodOrFieldDeclaration(1)
#15 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(887): PDepend\Source\Language\PHP\PHPParserVersion74->parseMethodOrFieldDeclaration(1)
#16 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(723): PDepend\Source\Language\PHP\AbstractPHPParser->parseTypeBody(Object(PDepend\Source\AST\ASTClass))
#17 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(6075): PDepend\Source\Language\PHP\AbstractPHPParser->parseClassDeclaration()
#18 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(397): PDepend\Source\Language\PHP\AbstractPHPParser->parseOptionalStatement()
#19 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Engine.php(587): PDepend\Source\Language\PHP\AbstractPHPParser->parse()
#20 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/Engine.php(335): PDepend\Engine->performParseProcess()
#21 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/TextUI/Runner.php(314): PDepend\Engine->analyze()
#22 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/TextUI/Command.php(243): PDepend\TextUI\Runner->run()
#23 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/main/php/PDepend/TextUI/Command.php(627): PDepend\TextUI\Command->run()
#24 /home/rauch/GitHub/RauchF/skore/vendor/pdepend/pdepend/src/bin/pdepend(72): PDepend\TextUI\Command::main()
#25 {main}
Time: 0:00:02; Memory: 20.00Mb
I'll follow up with minimal examples to reproduce the issue.
It seems to happen with unions with array
:
<?php
class Foo
{
public function bar(array|object $lorem): void
{
// magic
}
}
Running pdepend 2.9.1 on this code causes the described issue.
I came across this issue and it is super funky. This only occurs where array
is the first in the union type list.
Throws exception:
public function bob(array | null $bob)
public function bob(array | string | null $bob)
public function bob(array | int | string | null)
public function bob(array | string)
This does not:
public function bob(null | array $bob)
public function bob(string | array | null)
I also tested with a bunch of other type lists, but you get the gist.
I strongly suspect that this may have either been overlooked when implementing or caused by #522
Hello, a fix is in progress, you can try it with:
composer require pdepend/pdepend:dev-fix/union-types