Valid enum with keys public/protected/private causes error
TheCelavi opened this issue · comments
- PHPMD version: 2.13.0
- PHP Version: 8.2
- Installation type: composer
- Operating System / Distribution & Version: MacOS X Ventura, Docker Debian
Current Behavior
Explained here: pdepend/pdepend#640
enum Acces {
case PUBLIC;
case PROTECTED;
}
yields error.
Expected Behavior
Should not yield error
Steps To Reproduce:
Create enum and run analysis.
Notes
I assume that issue is related to PDEPEND, and fixing issue there and bumping dependency version here would fix it. Issue added for completeness.
I have very similar error but with:
case BREAK = 'break';
That should be also fixed. (same version)
Steps:
- Unpack attachment
- Run
./vendor/bin/phpmd src/ text rulesets/codesize.xml
Expected result
Works without fatal errors
Actual result
./vendor/bin/phpmd src/ text rulesets/codesize.xml
- Unexpected token: NEW, line: 5, col: 10, file: /Users/u/projects/phpmd/src/Test1.php.
#0 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(7966): PDepend\Source\Parser\UnexpectedTokenException->__construct(Object(PDepend\Source\Tokenizer\Token), Object(PDepend\Source\AST\ASTCompilationUnit))
#1 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(8116): PDepend\Source\Language\PHP\AbstractPHPParser->getUnexpectedTokenException()
#2 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(1099): PDepend\Source\Language\PHP\AbstractPHPParser->parseEnumCase()
#3 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/PHPParserVersion81.php(164): PDepend\Source\Language\PHP\AbstractPHPParser->parseTypeBody(Object(PDepend\Source\AST\ASTEnum))
#4 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(6578): PDepend\Source\Language\PHP\PHPParserVersion81->parseEnumDeclaration()
#5 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(516): PDepend\Source\Language\PHP\AbstractPHPParser->parseOptionalStatement()
#6 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Engine.php(606): PDepend\Source\Language\PHP\AbstractPHPParser->parse()
#7 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Engine.php(351): PDepend\Engine->performParseProcess()
#8 /Users/u/projects/phpmd/vendor/phpmd/phpmd/src/main/php/PHPMD/Parser.php(99): PDepend\Engine->analyze()
#9 /Users/u/projects/phpmd/vendor/phpmd/phpmd/src/main/php/PHPMD/PHPMD.php(240): PHPMD\Parser->parse(Object(PHPMD\Report))
#10 /Users/u/projects/phpmd/vendor/phpmd/phpmd/src/main/php/PHPMD/TextUI/Command.php(136): PHPMD\PHPMD->processFiles('src/', 'rulesets/codesi...', Array, Object(PHPMD\RuleSetFactory), Object(PHPMD\Report))
#11 /Users/u/projects/phpmd/vendor/phpmd/phpmd/src/main/php/PHPMD/TextUI/Command.php(184): PHPMD\TextUI\Command->run(Object(PHPMD\TextUI\CommandLineOptions), Object(PHPMD\RuleSetFactory))
#12 /Users/u/projects/phpmd/vendor/phpmd/phpmd/src/bin/phpmd(61): PHPMD\TextUI\Command::main(Array)
#13 /Users/u/projects/phpmd/vendor/bin/phpmd(120): include('/Users/u/projec...')
#14 {main}
- Unexpected token: PUBLIC, line: 5, col: 10, file: /Users/u/projects/phpmd/src/Test2.php.
#0 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(7966): PDepend\Source\Parser\UnexpectedTokenException->__construct(Object(PDepend\Source\Tokenizer\Token), Object(PDepend\Source\AST\ASTCompilationUnit))
#1 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(8116): PDepend\Source\Language\PHP\AbstractPHPParser->getUnexpectedTokenException()
#2 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(1099): PDepend\Source\Language\PHP\AbstractPHPParser->parseEnumCase()
#3 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/PHPParserVersion81.php(164): PDepend\Source\Language\PHP\AbstractPHPParser->parseTypeBody(Object(PDepend\Source\AST\ASTEnum))
#4 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(6578): PDepend\Source\Language\PHP\PHPParserVersion81->parseEnumDeclaration()
#5 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(516): PDepend\Source\Language\PHP\AbstractPHPParser->parseOptionalStatement()
#6 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Engine.php(606): PDepend\Source\Language\PHP\AbstractPHPParser->parse()
#7 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Engine.php(351): PDepend\Engine->performParseProcess()
#8 /Users/u/projects/phpmd/vendor/phpmd/phpmd/src/main/php/PHPMD/Parser.php(99): PDepend\Engine->analyze()
#9 /Users/u/projects/phpmd/vendor/phpmd/phpmd/src/main/php/PHPMD/PHPMD.php(240): PHPMD\Parser->parse(Object(PHPMD\Report))
#10 /Users/u/projects/phpmd/vendor/phpmd/phpmd/src/main/php/PHPMD/TextUI/Command.php(136): PHPMD\PHPMD->processFiles('src/', 'rulesets/codesi...', Array, Object(PHPMD\RuleSetFactory), Object(PHPMD\Report))
#11 /Users/u/projects/phpmd/vendor/phpmd/phpmd/src/main/php/PHPMD/TextUI/Command.php(184): PHPMD\TextUI\Command->run(Object(PHPMD\TextUI\CommandLineOptions), Object(PHPMD\RuleSetFactory))
#12 /Users/u/projects/phpmd/vendor/phpmd/phpmd/src/bin/phpmd(61): PHPMD\TextUI\Command::main(Array)
#13 /Users/u/projects/phpmd/vendor/bin/phpmd(120): include('/Users/u/projec...')
#14 {main}
Please see pdepend/pdepend#635 for the status on this issue