Skip to content

Internal error with >=1.12.5 #11819

@thomascorthals

Description

@thomascorthals

Bug report

Starting with 1.12.5, I get this stack trace on a file that analyses at all levels without errors up to 1.12.4.

It only happens when analysing at levels 3 through 6. It analyses without errors at all other levels.

     ## phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/src/Type/Constant/ConstantArrayTypeBuilder.php(153)
     #0 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/src/Type/Constant/ConstantArrayType.php(580):
     PHPStan\Type\Constant\ConstantArrayTypeBuilder->setOffsetValueType(Object(PHPStan\Type\Constant\ConstantIntegerType), Object(PHPStan\Type\MixedType))
     #1 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/src/Rules/Arrays/OffsetAccessAssignmentRule.php(56):
     PHPStan\Type\Constant\ConstantArrayType->setOffsetValueType(Object(PHPStan\Type\Constant\ConstantIntegerType), Object(PHPStan\Type\MixedType))
     #2 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/src/Rules/RuleLevelHelper.php(309):
     PHPStan\Rules\Arrays\OffsetAccessAssignmentRule::PHPStan\Rules\Arrays\{closure}(Object(PHPStan\Type\Constant\ConstantIntegerType))
     #3 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/src/Rules/RuleLevelHelper.php(227):
     PHPStan\Rules\RuleLevelHelper->findTypeToCheckImplementation(Object(PHPStan\Analyser\MutatingScope), Object(PhpParser\Node\Expr\Variable), Object(PHPStan\Type\UnionType), '', Object(Closure), true)
     #4 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/src/Rules/Arrays/OffsetAccessAssignmentRule.php(55):
     PHPStan\Rules\RuleLevelHelper->findTypeToCheck(Object(PHPStan\Analyser\MutatingScope), Object(PhpParser\Node\Expr\Variable), '', Object(Closure))
     #5 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/FileAnalyser.php(120):
     PHPStan\Rules\Arrays\OffsetAccessAssignmentRule->processNode(Object(PhpParser\Node\Expr\ArrayDimFetch), Object(PHPStan\Analyser\MutatingScope))
     #6 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(728):
     PHPStan\Analyser\FileAnalyser->PHPStan\Analyser\{closure}(Object(PhpParser\Node\Expr\ArrayDimFetch), Object(PHPStan\Analyser\MutatingScope))
     #7 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(3821):
     PHPStan\Analyser\NodeScopeResolver::PHPStan\Analyser\{closure}(Object(PhpParser\Node\Expr\ArrayDimFetch), Object(PHPStan\Analyser\MutatingScope))
     #8 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(1834):
     PHPStan\Analyser\NodeScopeResolver->processAssignVar(Object(PHPStan\Analyser\MutatingScope), Object(PhpParser\Node\Stmt\Expression), Object(PhpParser\Node\Expr\ArrayDimFetch),
     Object(PhpParser\Node\Expr\ConstFetch), Object(Closure), Object(PHPStan\Analyser\ExpressionContext), Object(Closure), true)
     #9 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(727):
     PHPStan\Analyser\NodeScopeResolver->processExprNode(Object(PhpParser\Node\Stmt\Expression), Object(PhpParser\Node\Expr\Assign), Object(PHPStan\Analyser\MutatingScope), Object(Closure),
     Object(PHPStan\Analyser\ExpressionContext))
     #10 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(464):
     PHPStan\Analyser\NodeScopeResolver->processStmtNode(Object(PhpParser\Node\Stmt\Expression), Object(PHPStan\Analyser\MutatingScope), Object(Closure), Object(PHPStan\Analyser\StatementContext))
     #11 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(838): PHPStan\Analyser\NodeScopeResolver->processStmtNodes(Object(PhpParser\Node\Stmt\If_),
     Array, Object(PHPStan\Analyser\MutatingScope), Object(Closure), Object(PHPStan\Analyser\StatementContext))
     #12 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(429): PHPStan\Analyser\NodeScopeResolver->processStmtNode(Object(PhpParser\Node\Stmt\If_),
     Object(PHPStan\Analyser\MutatingScope), Object(Closure), Object(PHPStan\Analyser\StatementContext))
     #13 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/FileAnalyser.php(179): PHPStan\Analyser\NodeScopeResolver->processNodes(Array,
     Object(PHPStan\Analyser\MutatingScope), Object(Closure))
     #14 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/src/Command/WorkerCommand.php(139): PHPStan\Analyser\FileAnalyser->analyseFile('C:\\xampp\\htdocs...', Array,
     Object(PHPStan\Rules\LazyRegistry), Object(PHPStan\Collectors\Registry), NULL)
     #15 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/vendor/evenement/evenement/src/EventEmitterTrait.php(111): PHPStan\Command\WorkerCommand::PHPStan\Command\{closure}(Array)
     #16 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/vendor/clue/ndjson-react/src/Decoder.php(117): _PHPStan_eb6a95a92\Evenement\EventEmitter->emit('data', Array)
     #17 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/vendor/evenement/evenement/src/EventEmitterTrait.php(111): _PHPStan_eb6a95a92\Clue\React\NDJson\Decoder->handleData(Array)
     #18 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/vendor/react/stream/src/Util.php(62): _PHPStan_eb6a95a92\Evenement\EventEmitter->emit('data', Array)
     #19 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/vendor/evenement/evenement/src/EventEmitterTrait.php(111):
     _PHPStan_eb6a95a92\React\Stream\Util::_PHPStan_eb6a95a92\React\Stream\{closure}('{"action":"anal...')
     #20 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/vendor/react/stream/src/DuplexResourceStream.php(168): _PHPStan_eb6a95a92\Evenement\EventEmitter->emit('data', Array)
     #21 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/vendor/react/event-loop/src/StreamSelectLoop.php(201): _PHPStan_eb6a95a92\React\Stream\DuplexResourceStream->handleData(Resource
     id #6660)
     #22 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/vendor/react/event-loop/src/StreamSelectLoop.php(173):
     _PHPStan_eb6a95a92\React\EventLoop\StreamSelectLoop->waitForStreamActivity(NULL)
     #23 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/src/Command/WorkerCommand.php(99): _PHPStan_eb6a95a92\React\EventLoop\StreamSelectLoop->run()
     #24 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Command/Command.php(259):
     PHPStan\Command\WorkerCommand->execute(Object(_PHPStan_eb6a95a92\Symfony\Component\Console\Input\ArgvInput), Object(_PHPStan_eb6a95a92\Symfony\Component\Console\Output\ConsoleOutput))
     #25 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(870):
     _PHPStan_eb6a95a92\Symfony\Component\Console\Command\Command->run(Object(_PHPStan_eb6a95a92\Symfony\Component\Console\Input\ArgvInput),
     Object(_PHPStan_eb6a95a92\Symfony\Component\Console\Output\ConsoleOutput))
     #26 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(261):
     _PHPStan_eb6a95a92\Symfony\Component\Console\Application->doRunCommand(Object(PHPStan\Command\WorkerCommand), Object(_PHPStan_eb6a95a92\Symfony\Component\Console\Input\ArgvInput),
     Object(_PHPStan_eb6a95a92\Symfony\Component\Console\Output\ConsoleOutput))
     #27 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(157):
     _PHPStan_eb6a95a92\Symfony\Component\Console\Application->doRun(Object(_PHPStan_eb6a95a92\Symfony\Component\Console\Input\ArgvInput),
     Object(_PHPStan_eb6a95a92\Symfony\Component\Console\Output\ConsoleOutput))
     #28 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/bin/phpstan(127): _PHPStan_eb6a95a92\Symfony\Component\Console\Application->run()
     #29 phar://C:/xampp/htdocs/test/vendor/phpstan/phpstan/phpstan.phar/bin/phpstan(128): _PHPStan_eb6a95a92\{closure}()
     #30 C:\xampp\htdocs\test\vendor\phpstan\phpstan\phpstan(8): require('phar://C:/xampp...')
     #31 C:\xampp\htdocs\test\vendor\bin\phpstan(119): include('C:\\xampp\\htdocs...')
     #32 {main}

Code snippet that reproduces the problem

https://phpstan.org/r/8dafc8f3-97f7-4ec6-a6cc-319ef2a41ef6

Expected output

No internal error for code that was previously analysable, and is analysable at other levels.

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

Release 1.12.6 contains the fix for the previous bug I reported.

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