pdepend / pdepend

PHP_Depend is an adaptation of the established Java development tool JDepend. This tool shows you the quality of your design in terms of extensibility, reusability and maintainability.

Home Page:https://pdepend.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

"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.

commented

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
commented

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.

commented

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

commented

Hello, a fix is in progress, you can try it with:

composer require pdepend/pdepend:dev-fix/union-types