Skip to content

Internal errors starting from PHPStan 1.9.0 #9085

@mind-bending-forks

Description

@mind-bending-forks

Bug report

Getting internal errors when running phpstan on a codebase with PHPStan 1.10.8. We've tried with older versions of PHPStan. The first version that produces these internal errors is PHPStan 1.9.0. (1.8.11 doesn't).

Code snippet that reproduces the problem

I don't know what's producing the errors, but here are the stack traces. There are two stack traces, but PHPStan reports that there are 4 errors.

Error:

     Internal error: Internal error: preg_match(): Argument #2 ($subject) must be of type string, array given in file
<obfuscated>.php

Stack trace 1:

     #0 phar://<local-path>/phpstan.phar/vendor/symfony/polyfill-mbstring/Mbstring.php(440): preg_match()
     #1 phar://<local-path>/phpstan.phar/vendor/symfony/polyfill-mbstring/Mbstring.php(416):
Symfony\Polyfill\Mbstring\Mbstring::mb_detect_encoding()
     #2 phar://<local-path>/phpstan.phar/vendor/symfony/polyfill-mbstring/bootstrap80.php(45):
Symfony\Polyfill\Mbstring\Mbstring::mb_check_encoding()
     #3 phar://<local-path>/phpstan.phar/src/Type/Php/StrCaseFunctionsReturnTypeExtension.php(65): mb_check_encoding()
     #4 phar://<local-path>/phpstan.phar/src/Analyser/MutatingScope.php(1469):
PHPStan\Type\Php\StrCaseFunctionsReturnTypeExtension->getTypeFromFunctionCall()
     #5 phar://<local-path>/phpstan.phar/src/Analyser/MutatingScope.php(556):
PHPStan\Analyser\MutatingScope->resolveType()
     #6 phar://<local-path>/phpstan.phar/src/Analyser/MutatingScope.php(593): PHPStan\Analyser\MutatingScope->getType()
     #7 phar://<local-path>/phpstan.phar/src/Analyser/MutatingScope.php(556):
PHPStan\Analyser\MutatingScope->resolveType()
     #8 phar://<local-path>/phpstan.phar/src/Analyser/MutatingScope.php(642): PHPStan\Analyser\MutatingScope->getType()
     #9 phar://<local-path>/phpstan.phar/src/Analyser/MutatingScope.php(556):
PHPStan\Analyser\MutatingScope->resolveType()
     #10 phar://<local-path>/phpstan.phar/src/Analyser/MutatingScope.php(652): PHPStan\Analyser\MutatingScope->getType()
     #11 phar://<local-path>/phpstan.phar/src/Analyser/MutatingScope.php(556):
PHPStan\Analyser\MutatingScope->resolveType()
     #12 phar://<local-path>/phpstan.phar/src/Rules/Comparison/UnreachableIfBranchesRule.php(45):
PHPStan\Analyser\MutatingScope->getType()
     #13 phar://<local-path>/phpstan.phar/src/Analyser/FileAnalyser.php(106):
PHPStan\Rules\Comparison\UnreachableIfBranchesRule->processNode()
     #14 phar://<local-path>/phpstan.phar/src/Node/ClassStatementsGatherer.php(98):
PHPStan\Analyser\FileAnalyser->PHPStan\Analyser\{closure}()
     #15 phar://<local-path>/phpstan.phar/src/Analyser/NodeScopeResolver.php(508):
PHPStan\Node\ClassStatementsGatherer->__invoke()
     #16 phar://<local-path>/phpstan.phar/src/Analyser/NodeScopeResolver.php(417):
PHPStan\Analyser\NodeScopeResolver::PHPStan\Analyser\{closure}()
     #17 phar://<local-path>/phpstan.phar/src/Analyser/NodeScopeResolver.php(362):
PHPStan\Analyser\NodeScopeResolver->processStmtNode()
     #18 phar://<local-path>/phpstan.phar/src/Analyser/NodeScopeResolver.php(523):
PHPStan\Analyser\NodeScopeResolver->processStmtNodes()
     #19 phar://<local-path>/phpstan.phar/src/Analyser/NodeScopeResolver.php(362):
PHPStan\Analyser\NodeScopeResolver->processStmtNode()
     #20 phar://<local-path>/phpstan.phar/src/Analyser/NodeScopeResolver.php(601):
PHPStan\Analyser\NodeScopeResolver->processStmtNodes()
     #21 phar://<local-path>/phpstan.phar/src/Analyser/NodeScopeResolver.php(331):
PHPStan\Analyser\NodeScopeResolver->processStmtNode()
     #22 phar://<local-path>/phpstan.phar/src/Analyser/FileAnalyser.php(175):
PHPStan\Analyser\NodeScopeResolver->processNodes()
     #23 phar://<local-path>/phpstan.phar/src/Command/WorkerCommand.php(130):
PHPStan\Analyser\FileAnalyser->analyseFile()
     #24 phar://<local-path>/phpstan.phar/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97):
PHPStan\Command\WorkerCommand->PHPStan\Command\{closure}()
     #25 phar://<local-path>/phpstan.phar/vendor/clue/ndjson-react/src/Decoder.php(110):
_PHPStan_cbfb23d84\Evenement\EventEmitter->emit()
     #26 phar://<local-path>/phpstan.phar/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97):
_PHPStan_cbfb23d84\Clue\React\NDJson\Decoder->handleData()
     #27 phar://<local-path>/phpstan.phar/vendor/react/stream/src/Util.php(62):
_PHPStan_cbfb23d84\Evenement\EventEmitter->emit()
     #28 phar://<local-path>/phpstan.phar/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97):
_PHPStan_cbfb23d84\React\Stream\Util::_PHPStan_cbfb23d84\React\Stream\{closure}()
     #29 phar://<local-path>/phpstan.phar/vendor/react/stream/src/DuplexResourceStream.php(154):
_PHPStan_cbfb23d84\Evenement\EventEmitter->emit()
     #30 phar://<local-path>/phpstan.phar/vendor/react/event-loop/src/StreamSelectLoop.php(201):
_PHPStan_cbfb23d84\React\Stream\DuplexResourceStream->handleData()
     #31 phar://<local-path>/phpstan.phar/vendor/react/event-loop/src/StreamSelectLoop.php(173):
_PHPStan_cbfb23d84\React\EventLoop\StreamSelectLoop->waitForStreamActivity()
     #32 phar://<local-path>/phpstan.phar/src/Command/WorkerCommand.php(96):
_PHPStan_cbfb23d84\React\EventLoop\StreamSelectLoop->run()
     #33 phar://<local-path>/phpstan.phar/vendor/symfony/console/Command/Command.php(259):
PHPStan\Command\WorkerCommand->execute()
     #34 phar://<local-path>/phpstan.phar/vendor/symfony/console/Application.php(870):
_PHPStan_cbfb23d84\Symfony\Component\Console\Command\Command->run()
     #35 phar://<local-path>/phpstan.phar/vendor/symfony/console/Application.php(261):
_PHPStan_cbfb23d84\Symfony\Component\Console\Application->doRunCommand()
     #36 phar://<local-path>/phpstan.phar/vendor/symfony/console/Application.php(157):
_PHPStan_cbfb23d84\Symfony\Component\Console\Application->doRun()
     #37 phar://<local-path>/phpstan.phar/bin/phpstan(124):
_PHPStan_cbfb23d84\Symfony\Component\Console\Application->run()
     #38 phar://<local-path>/phpstan.phar/bin/phpstan(125): _PHPStan_cbfb23d84\{closure}()
     #39 <local-path>/phpstan.phar(6): require('...')
     #40 {main}

Stack trace 2:

     #0 phar://<local-path>/phpstan.phar/vendor/symfony/polyfill-mbstring/Mbstring.php(440): preg_match()
     #1 phar://<local-path>/phpstan.phar/vendor/symfony/polyfill-mbstring/Mbstring.php(416):
Symfony\Polyfill\Mbstring\Mbstring::mb_detect_encoding()
     #2 phar://<local-path>/phpstan.phar/vendor/symfony/polyfill-mbstring/bootstrap80.php(45):
Symfony\Polyfill\Mbstring\Mbstring::mb_check_encoding()
     #3 phar://<local-path>/phpstan.phar/src/Type/Php/StrCaseFunctionsReturnTypeExtension.php(65): mb_check_encoding()
     #4 phar://<local-path>/phpstan.phar/src/Analyser/MutatingScope.php(1469):
PHPStan\Type\Php\StrCaseFunctionsReturnTypeExtension->getTypeFromFunctionCall()
     #5 phar://<local-path>/phpstan.phar/src/Analyser/MutatingScope.php(556):
PHPStan\Analyser\MutatingScope->resolveType()
     #6 phar://<local-path>/phpstan.phar/src/Analyser/NodeScopeResolver.php(2365):
PHPStan\Analyser\MutatingScope->getType()
     #7 phar://<local-path>/phpstan.phar/src/Analyser/NodeScopeResolver.php(1559):
PHPStan\Analyser\NodeScopeResolver->getFunctionThrowPoint()
     #8 phar://<local-path>/phpstan.phar/src/Analyser/NodeScopeResolver.php(2768):
PHPStan\Analyser\NodeScopeResolver->processExprNode()
     #9 phar://<local-path>/phpstan.phar/src/Analyser/NodeScopeResolver.php(1708):
PHPStan\Analyser\NodeScopeResolver->processArgs()
     #10 phar://<local-path>/phpstan.phar/src/Analyser/NodeScopeResolver.php(560):
PHPStan\Analyser\NodeScopeResolver->processExprNode()
     #11 phar://<local-path>/phpstan.phar/src/Analyser/NodeScopeResolver.php(362):
PHPStan\Analyser\NodeScopeResolver->processStmtNode()
     #12 phar://<local-path>/phpstan.phar/src/Analyser/NodeScopeResolver.php(725):
PHPStan\Analyser\NodeScopeResolver->processStmtNodes()
     #13 phar://<local-path>/phpstan.phar/src/Analyser/NodeScopeResolver.php(362):
PHPStan\Analyser\NodeScopeResolver->processStmtNode()
     #14 phar://<local-path>/phpstan.phar/src/Analyser/NodeScopeResolver.php(648):
PHPStan\Analyser\NodeScopeResolver->processStmtNodes()
     #15 phar://<local-path>/phpstan.phar/src/Analyser/NodeScopeResolver.php(362):
PHPStan\Analyser\NodeScopeResolver->processStmtNode()
     #16 phar://<local-path>/phpstan.phar/src/Analyser/NodeScopeResolver.php(523):
PHPStan\Analyser\NodeScopeResolver->processStmtNodes()
     #17 phar://<local-path>/phpstan.phar/src/Analyser/NodeScopeResolver.php(362):
PHPStan\Analyser\NodeScopeResolver->processStmtNode()
     #18 phar://<local-path>/phpstan.phar/src/Analyser/NodeScopeResolver.php(601):
PHPStan\Analyser\NodeScopeResolver->processStmtNodes()
     #19 phar://<local-path>/phpstan.phar/src/Analyser/NodeScopeResolver.php(331):
PHPStan\Analyser\NodeScopeResolver->processStmtNode()
     #20 phar://<local-path>/phpstan.phar/src/Analyser/FileAnalyser.php(175):
PHPStan\Analyser\NodeScopeResolver->processNodes()
     #21 phar://<local-path>/phpstan.phar/src/Command/WorkerCommand.php(130):
PHPStan\Analyser\FileAnalyser->analyseFile()
     #22 phar://<local-path>/phpstan.phar/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97):
PHPStan\Command\WorkerCommand->PHPStan\Command\{closure}()
     #23 phar://<local-path>/phpstan.phar/vendor/clue/ndjson-react/src/Decoder.php(110):
_PHPStan_cbfb23d84\Evenement\EventEmitter->emit()
     #24 phar://<local-path>/phpstan.phar/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97):
_PHPStan_cbfb23d84\Clue\React\NDJson\Decoder->handleData()
     #25 phar://<local-path>/phpstan.phar/vendor/react/stream/src/Util.php(62):
_PHPStan_cbfb23d84\Evenement\EventEmitter->emit()
     #26 phar://<local-path>/phpstan.phar/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97):
_PHPStan_cbfb23d84\React\Stream\Util::_PHPStan_cbfb23d84\React\Stream\{closure}()
     #27 phar://<local-path>/phpstan.phar/vendor/react/stream/src/DuplexResourceStream.php(154):
_PHPStan_cbfb23d84\Evenement\EventEmitter->emit()
     #28 phar://<local-path>/phpstan.phar/vendor/react/event-loop/src/StreamSelectLoop.php(201):
_PHPStan_cbfb23d84\React\Stream\DuplexResourceStream->handleData()
     #29 phar://<local-path>/phpstan.phar/vendor/react/event-loop/src/StreamSelectLoop.php(173):
_PHPStan_cbfb23d84\React\EventLoop\StreamSelectLoop->waitForStreamActivity()
     #30 phar://<local-path>/phpstan.phar/src/Command/WorkerCommand.php(96):
_PHPStan_cbfb23d84\React\EventLoop\StreamSelectLoop->run()
     #31 phar://<local-path>/phpstan.phar/vendor/symfony/console/Command/Command.php(259):
PHPStan\Command\WorkerCommand->execute()
     #32 phar://<local-path>/phpstan.phar/vendor/symfony/console/Application.php(870):
_PHPStan_cbfb23d84\Symfony\Component\Console\Command\Command->run()
     #33 phar://<local-path>/phpstan.phar/vendor/symfony/console/Application.php(261):
_PHPStan_cbfb23d84\Symfony\Component\Console\Application->doRunCommand()
     #34 phar://<local-path>/phpstan.phar/vendor/symfony/console/Application.php(157):
_PHPStan_cbfb23d84\Symfony\Component\Console\Application->doRun()
     #35 phar://<local-path>/phpstan.phar/bin/phpstan(124):
_PHPStan_cbfb23d84\Symfony\Component\Console\Application->run()
     #36 phar://<local-path>/phpstan.phar/bin/phpstan(125): _PHPStan_cbfb23d84\{closure}()
     #37 <local-path>/phpstan.phar(6): require('...')
     #38 {main}

Expected output

No internal errors.

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

Always!

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