Skip to content

Uncaught ArgumentCountError when parsing array #5669

@verfriemelt-dot-org

Description

@verfriemelt-dot-org

Bug report

a wrong phpdoc returntype seem to trip phpstan, but only under certain conditions. i created a minimal setup to reproduce the error

tested version:

  • PHPStan - PHP Static Analysis Tool 1.0.x-dev@fb3f83e
  • PHPStan - PHP Static Analysis Tool 0.12.99

Code snippet that reproduces the problem

https://phpstan.org/r/ea2a617a-7b1d-43a9-9568-58f514a5aca5

Expected output

some kind of errors or description

Actual output

 1/1 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%

 ------ ----------------------------------------------------------------------
  Line   test.php
 ------ ----------------------------------------------------------------------
         Internal error: 3 arguments are required, 2 given
         Run PHPStan with --debug option and post the stack trace to:
         https://github.com/phpstan/phpstan/issues/new?template=Bug_report.md
 ------ ----------------------------------------------------------------------

and with --debug

Uncaught ArgumentCountError: 3 arguments are required, 2 given in phar:///home/easteregg/src/phpstan/phpstan.phar/src/Rules/RuleLevelHelper.php:126
#0 phar:///home/easteregg/src/phpstan/phpstan.phar/src/Rules/RuleLevelHelper.php(126): sprintf()
#1 phar:///home/easteregg/src/phpstan/phpstan.phar/src/Rules/Arrays/NonexistentOffsetInArrayDimFetchRule.php(44): PHPStan\Rules\RuleLevelHelper->findTypeToCheck()
#2 phar:///home/easteregg/src/phpstan/phpstan.phar/src/Analyser/FileAnalyser.php(69): PHPStan\Rules\Arrays\NonexistentOffsetInArrayDimFetchRule->processNode()
#3 phar:///home/easteregg/src/phpstan/phpstan.phar/src/Node/ClassStatementsGatherer.php(91): PHPStan\Analyser\FileAnalyser->PHPStan\Analyser\{closure}()
#4 phar:///home/easteregg/src/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(409): PHPStan\Node\ClassStatementsGatherer->__invoke()
#5 phar:///home/easteregg/src/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(2524): PHPStan\Analyser\NodeScopeResolver::PHPStan\Analyser\{closure}()
#6 phar:///home/easteregg/src/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(1384): PHPStan\Analyser\NodeScopeResolver->processAssignVar()
#7 phar:///home/easteregg/src/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(461): PHPStan\Analyser\NodeScopeResolver->processExprNode()
#8 phar:///home/easteregg/src/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(259): PHPStan\Analyser\NodeScopeResolver->processStmtNode()
#9 phar:///home/easteregg/src/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(424): PHPStan\Analyser\NodeScopeResolver->processStmtNodes()
#10 phar:///home/easteregg/src/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(259): PHPStan\Analyser\NodeScopeResolver->processStmtNode()
#11 phar:///home/easteregg/src/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(508): PHPStan\Analyser\NodeScopeResolver->processStmtNodes()
#12 phar:///home/easteregg/src/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(227): PHPStan\Analyser\NodeScopeResolver->processStmtNode()
#13 phar:///home/easteregg/src/phpstan/phpstan.phar/src/Analyser/FileAnalyser.php(149): PHPStan\Analyser\NodeScopeResolver->processNodes()
#14 phar:///home/easteregg/src/phpstan/phpstan.phar/src/Analyser/Analyser.php(52): PHPStan\Analyser\FileAnalyser->analyseFile()
#15 phar:///home/easteregg/src/phpstan/phpstan.phar/src/Command/AnalyserRunner.php(56): PHPStan\Analyser\Analyser->analyse()
#16 phar:///home/easteregg/src/phpstan/phpstan.phar/src/Command/AnalyseApplication.php(148): PHPStan\Command\AnalyserRunner->runAnalyser()
#17 phar:///home/easteregg/src/phpstan/phpstan.phar/src/Command/AnalyseApplication.php(79): PHPStan\Command\AnalyseApplication->runAnalyser()
#18 phar:///home/easteregg/src/phpstan/phpstan.phar/src/Command/AnalyseCommand.php(157): PHPStan\Command\AnalyseApplication->analyse()
#19 phar:///home/easteregg/src/phpstan/phpstan.phar/vendor/symfony/console/Command/Command.php(228): PHPStan\Command\AnalyseCommand->execute()
#20 phar:///home/easteregg/src/phpstan/phpstan.phar/vendor/symfony/console/Application.php(856): _PHPStan_76800bfb5\Symfony\Component\Console\Command\Command->run()
#21 phar:///home/easteregg/src/phpstan/phpstan.phar/vendor/symfony/console/Application.php(237): _PHPStan_76800bfb5\Symfony\Component\Console\Application->doRunCommand()
#22 phar:///home/easteregg/src/phpstan/phpstan.phar/vendor/symfony/console/Application.php(138): _PHPStan_76800bfb5\Symfony\Component\Console\Application->doRun()
#23 phar:///home/easteregg/src/phpstan/phpstan.phar/bin/phpstan(82): _PHPStan_76800bfb5\Symfony\Component\Console\Application->run()
#24 phar:///home/easteregg/src/phpstan/phpstan.phar/bin/phpstan(83): _PHPStan_76800bfb5\{closure}()
#25 /home/easteregg/src/phpstan/phpstan(8): require('...')
#26 {main}

Did PHPStan help you today? Did it make you happy in any way?

yes! i really like this tool but i run in a lot of memory and parsing issues with a big codebase ( > 15k files )

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions