Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Internal Error: PHPStan 0.12.91 failing on PHP8.1 #5263

Closed
paulbalandan opened this issue Jul 7, 2021 · 5 comments
Closed

Internal Error: PHPStan 0.12.91 failing on PHP8.1 #5263

paulbalandan opened this issue Jul 7, 2021 · 5 comments

Comments

@paulbalandan
Copy link

Bug report

My scheduled builds running on GHA suddenly encountered internal error for phpstan 0.12.91 on PHP 8.1. The erroring part is PhpParser\Lexer.

Code snippet that reproduces the problem

Here's the stack trace:

Fatal error: Uncaught TypeError: PhpParser\Lexer::getNextToken(): Return value must be of type int, null returned in phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/vendor/nikic/php-parser/lib/PhpParser/Lexer.php:304
Stack trace:
#0 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php(183): PhpParser\Lexer->getNextToken()
#1 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php(143): PhpParser\ParserAbstract->doParse()
#2 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Parser/RichParser.php(48): PhpParser\ParserAbstract->parse()
#3 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Parser/RichParser.php(36): PHPStan\Parser\RichParser->parseString()
#4 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Parser/PathRoutingParser.php(30): PHPStan\Parser\RichParser->parseFile()
#5 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Parser/CachedParser.php(36): PHPStan\Parser\PathRoutingParser->parseFile()
#6 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Reflection/BetterReflection/SourceLocator/FileNodesFetcher.php(29): PHPStan\Parser\CachedParser->parseFile()
#7 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Reflection/BetterReflection/SourceLocator/AutoloadSourceLocator.php(132): PHPStan\Reflection\BetterReflection\SourceLocator\FileNodesFetcher->fetchNodes()
#8 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Reflection/BetterReflection/SourceLocator/AutoloadSourceLocator.php(127): PHPStan\Reflection\BetterReflection\SourceLocator\AutoloadSourceLocator->findReflection()
#9 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Reflection/BetterReflection/SourceLocator/ClassBlacklistSourceLocator.php(36): PHPStan\Reflection\BetterReflection\SourceLocator\AutoloadSourceLocator->locateIdentifier()
#10 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/vendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/AggregateSourceLocator.php(31): PHPStan\Reflection\BetterReflection\SourceLocator\ClassBlacklistSourceLocator->locateIdentifier()
#11 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/vendor/ondrejmirtes/better-reflection/src/SourceLocator/Type/MemoizingSourceLocator.php(31): PHPStan\BetterReflection\SourceLocator\Type\AggregateSourceLocator->locateIdentifier()
#12 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/vendor/ondrejmirtes/better-reflection/src/Reflector/ClassReflector.php(39): PHPStan\BetterReflection\SourceLocator\Type\MemoizingSourceLocator->locateIdentifier()
#13 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Reflection/BetterReflection/Reflector/MemoizingClassReflector.php(29): PHPStan\BetterReflection\Reflector\ClassReflector->reflect()
#14 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Reflection/BetterReflection/BetterReflectionProvider.php(105): PHPStan\Reflection\BetterReflection\Reflector\MemoizingClassReflector->reflect()
#15 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Reflection/ReflectionProvider/ChainReflectionProvider.php(35): PHPStan\Reflection\BetterReflection\BetterReflectionProvider->hasClass()
#16 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Reflection/ReflectionProvider/MemoizingReflectionProvider.php(39): PHPStan\Reflection\ReflectionProvider\ChainReflectionProvider->getClass()
#17 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Reflection/ClassReflection.php(177): PHPStan\Reflection\ReflectionProvider\MemoizingReflectionProvider->getClass()
#18 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Reflection/ClassReflection.php(559): PHPStan\Reflection\ClassReflection->getParentClass()
#19 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Reflection/ReflectionProvider/ClassBlacklistReflectionProvider.php(50): PHPStan\Reflection\ClassReflection->getParentClassesNames()
#20 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Reflection/ReflectionProvider/ChainReflectionProvider.php(25): PHPStan\Reflection\ReflectionProvider\ClassBlacklistReflectionProvider->hasClass()
#21 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Reflection/ReflectionProvider/MemoizingReflectionProvider.php(31): PHPStan\Reflection\ReflectionProvider\ChainReflectionProvider->hasClass()
#22 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Rules/ClassCaseSensitivityCheck.php(28): PHPStan\Reflection\ReflectionProvider\MemoizingReflectionProvider->hasClass()
#23 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Rules/Namespaces/ExistingNamesInUseRule.php(96): PHPStan\Rules\ClassCaseSensitivityCheck->checkClassNames()
#24 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Rules/Namespaces/ExistingNamesInUseRule.php(50): PHPStan\Rules\Namespaces\ExistingNamesInUseRule->checkClasses()
#25 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/FileAnalyser.php(69): PHPStan\Rules\Namespaces\ExistingNamesInUseRule->processNode()
#26 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(312): PHPStan\Analyser\FileAnalyser->PHPStan\Analyser\{closure}()
#27 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(254): PHPStan\Analyser\NodeScopeResolver->processStmtNode()
#28 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(459): PHPStan\Analyser\NodeScopeResolver->processStmtNodes()
#29 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(222): PHPStan\Analyser\NodeScopeResolver->processStmtNode()
#30 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/FileAnalyser.php(149): PHPStan\Analyser\NodeScopeResolver->processNodes()
#31 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/Analyser.php(52): PHPStan\Analyser\FileAnalyser->analyseFile()
#32 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Command/AnalyserRunner.php(56): PHPStan\Analyser\Analyser->analyse()
#33 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Command/AnalyseApplication.php(148): PHPStan\Command\AnalyserRunner->runAnalyser()
#34 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Command/AnalyseApplication.php(79): PHPStan\Command\AnalyseApplication->runAnalyser()
#35 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/src/Command/AnalyseCommand.php(156): PHPStan\Command\AnalyseApplication->analyse()
#36 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Command/Command.php(228): PHPStan\Command\AnalyseCommand->execute()
#37 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(856): _HumbugBox243b3a4ed02c\Symfony\Component\Console\Command\Command->run()
#38 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(237): _HumbugBox243b3a4ed02c\Symfony\Component\Console\Application->doRunCommand()
#39 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(138): _HumbugBox243b3a4ed02c\Symfony\Component\Console\Application->doRun()
#40 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/bin/phpstan(82): _HumbugBox243b3a4ed02c\Symfony\Component\Console\Application->run()
#41 phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/bin/phpstan(83): _HumbugBox243b3a4ed02c\{closure}()
#42 /home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan(8): require('...')
#43 {main}
  thrown in phar:///home/runner/work/cs-config/cs-config/vendor/phpstan/phpstan/phpstan.phar/vendor/nikic/php-parser/lib/PhpParser/Lexer.php on line 304

Build run

Expected output

Green, as always.

@mergeable
Copy link

mergeable bot commented Jul 7, 2021

This bug report is missing a link to reproduction on phpstan.org.

It will most likely be closed after manual review.

@ondrejmirtes
Copy link
Member

Hi,

  1. PHP 8.1 isn't supported yet, because it can't be - the version hasn't even been feature-frozen yet.
  2. This looks like a problem in nikic/php-parser (which can't be fully PHP 8.1-compatible) for the same reason.

It would be great if you were able to isolate the bug to a minimal example which should be reproducible with nikic/php-parser itself. The package has a handy bin/php-parse executable that should show the same issue. Thanks.

@ondrejmirtes
Copy link
Member

Looks like I've found it: nikic/PHP-Parser#794

@ondrejmirtes
Copy link
Member

Fixed by: phpstan/phpstan-src@0f8ead7

@github-actions
Copy link

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Aug 10, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants