Silverstripe 4.13, PHPStan 1.10.38, silverstripe-phpstan 4.x-dev #fcb734c
This method in an Extension to SiteTree makes PHPStan error:
/**
* Helper, to reload the current page e.g. in SearchForm to load additional fields that might not be loaded.
*
* @return SiteTree
*/
public function getReload()
{
return $this->getOwner()::get()->byID($this->getOwner()->ID);
}
The error is:
Internal error: Internal error: Call to undefined method PhpParser\Node\Expr\MethodCall::toString() in file /path/to/app/src/myproject/Extensions/SiteTree.php
Post the following stack trace to https://github.com/phpstan/phpstan/issues/new?template=Bug_report.yaml:
#0 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(3494): Syntro\SilverstripePHPStan\Type\DataObjectGetStaticReturnTypeExtension->getTypeFromStaticMethodCall()
#1 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(1422): PHPStan\Analyser\MutatingScope->methodCallReturnType()
#2 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(1428): PHPStan\Analyser\MutatingScope->PHPStan\Analyser\{closure}()
#3 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(566): PHPStan\Analyser\MutatingScope->resolveType()
#4 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NullsafeOperatorHelper.php(12): PHPStan\Analyser\MutatingScope->getType()
#5 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Rules/Methods/MethodCallCheck.php(51): PHPStan\Analyser\NullsafeOperatorHelper::getNullsafeShortcircuitedExprRespectingScope()
#6 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Rules/Methods/CallMethodsRule.php(42): PHPStan\Rules\Methods\MethodCallCheck->check()
#7 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/FileAnalyser.php(107): PHPStan\Rules\Methods\CallMethodsRule->processNode()
#8 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Node/ClassStatementsGatherer.php(108): PHPStan\Analyser\FileAnalyser->PHPStan\Analyser\{closure}()
#9 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(543): PHPStan\Node\ClassStatementsGatherer->__invoke()
#10 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(2622): PHPStan\Analyser\NodeScopeResolver::PHPStan\Analyser\{closure}()
#11 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(1574): PHPStan\Analyser\NodeScopeResolver->callNodeCallbackWithExpression()
#12 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(581): PHPStan\Analyser\NodeScopeResolver->processExprNode()
#13 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(388): PHPStan\Analyser\NodeScopeResolver->processStmtNode()
#14 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(561): PHPStan\Analyser\NodeScopeResolver->processStmtNodes()
#15 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(388): PHPStan\Analyser\NodeScopeResolver->processStmtNode()
#16 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(644): PHPStan\Analyser\NodeScopeResolver->processStmtNodes()
#17 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(388): PHPStan\Analyser\NodeScopeResolver->processStmtNode()
#18 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(616): PHPStan\Analyser\NodeScopeResolver->processStmtNodes()
#19 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(357): PHPStan\Analyser\NodeScopeResolver->processStmtNode()
#20 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/FileAnalyser.php(166): PHPStan\Analyser\NodeScopeResolver->processNodes()
#21 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Command/WorkerCommand.php(132): PHPStan\Analyser\FileAnalyser->analyseFile()
#22 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97): PHPStan\Command\WorkerCommand->PHPStan\Command\{closure}()
#23 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/clue/ndjson-react/src/Decoder.php(117): _PHPStan_adbc35a1c\Evenement\EventEmitter->emit()
#24 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97): _PHPStan_adbc35a1c\Clue\React\NDJson\Decoder->handleData()
#25 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/react/stream/src/Util.php(62): _PHPStan_adbc35a1c\Evenement\EventEmitter->emit()
#26 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97):
_PHPStan_adbc35a1c\React\Stream\Util::_PHPStan_adbc35a1c\React\Stream\{closure}()
#27 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/react/stream/src/DuplexResourceStream.php(154): _PHPStan_adbc35a1c\Evenement\EventEmitter->emit()
#28 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/react/event-loop/src/StreamSelectLoop.php(201): _PHPStan_adbc35a1c\React\Stream\DuplexResourceStream->handleData()
#29 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/react/event-loop/src/StreamSelectLoop.php(173): _PHPStan_adbc35a1c\React\EventLoop\StreamSelectLoop->waitForStreamActivity()
#30 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Command/WorkerCommand.php(98): _PHPStan_adbc35a1c\React\EventLoop\StreamSelectLoop->run()
#31 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Command/Command.php(259): PHPStan\Command\WorkerCommand->execute()
#32 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(870): _PHPStan_adbc35a1c\Symfony\Component\Console\Command\Command->run()
#33 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(261): _PHPStan_adbc35a1c\Symfony\Component\Console\Application->doRunCommand()
#34 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(157): _PHPStan_adbc35a1c\Symfony\Component\Console\Application->doRun()
#35 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/bin/phpstan(124): _PHPStan_adbc35a1c\Symfony\Component\Console\Application->run()
#36 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/bin/phpstan(125): _PHPStan_adbc35a1c\{closure}()
#37 /path/to/vendor/phpstan/phpstan/phpstan(7): require('phar:///ho> Internal error: Internal error: Call to undefined method PhpParser\Node\Expr\MethodCall::toString() in file /path/to/app/src/myproject/Extensions/SiteTree.php
Post the following stack trace to https://github.com/phpstan/phpstan/issues/new?template=Bug_report.yaml:
#0 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(3494): Syntro\SilverstripePHPStan\Type\DataObjectGetStaticReturnTypeExtension->getTypeFromStaticMethodCall()
#1 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(1422): PHPStan\Analyser\MutatingScope->methodCallReturnType()
#2 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(1428): PHPStan\Analyser\MutatingScope->PHPStan\Analyser\{closure}()
#3 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(566): PHPStan\Analyser\MutatingScope->resolveType()
#4 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NullsafeOperatorHelper.php(12): PHPStan\Analyser\MutatingScope->getType()
#5 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Rules/Methods/MethodCallCheck.php(51): PHPStan\Analyser\NullsafeOperatorHelper::getNullsafeShortcircuitedExprRespectingScope()
#6 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Rules/Methods/CallMethodsRule.php(42): PHPStan\Rules\Methods\MethodCallCheck->check()
#7 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/FileAnalyser.php(107): PHPStan\Rules\Methods\CallMethodsRule->processNode()
#8 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Node/ClassStatementsGatherer.php(108): PHPStan\Analyser\FileAnalyser->PHPStan\Analyser\{closure}()
#9 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(543): PHPStan\Node\ClassStatementsGatherer->__invoke()
#10 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(2622): PHPStan\Analyser\NodeScopeResolver::PHPStan\Analyser\{closure}()
#11 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(1574): PHPStan\Analyser\NodeScopeResolver->callNodeCallbackWithExpression()
#12 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(581): PHPStan\Analyser\NodeScopeResolver->processExprNode()
#13 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(388): PHPStan\Analyser\NodeScopeResolver->processStmtNode()
#14 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(561): PHPStan\Analyser\NodeScopeResolver->processStmtNodes()
#15 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(388): PHPStan\Analyser\NodeScopeResolver->processStmtNode()
#16 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(644): PHPStan\Analyser\NodeScopeResolver->processStmtNodes()
#17 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(388): PHPStan\Analyser\NodeScopeResolver->processStmtNode()
#18 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(616): PHPStan\Analyser\NodeScopeResolver->processStmtNodes()
#19 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(357): PHPStan\Analyser\NodeScopeResolver->processStmtNode()
#20 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/FileAnalyser.php(166): PHPStan\Analyser\NodeScopeResolver->processNodes()
#21 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Command/WorkerCommand.php(132): PHPStan\Analyser\FileAnalyser->analyseFile()
#22 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97): PHPStan\Command\WorkerCommand->PHPStan\Command\{closure}()
#23 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/clue/ndjson-react/src/Decoder.php(117): _PHPStan_adbc35a1c\Evenement\EventEmitter->emit()
#24 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97): _PHPStan_adbc35a1c\Clue\React\NDJson\Decoder->handleData()
#25 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/react/stream/src/Util.php(62): _PHPStan_adbc35a1c\Evenement\EventEmitter->emit()
#26 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97):
_PHPStan_adbc35a1c\React\Stream\Util::_PHPStan_adbc35a1c\React\Stream\{closure}()
#27 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/react/stream/src/DuplexResourceStream.php(154): _PHPStan_adbc35a1c\Evenement\EventEmitter->emit()
#28 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/react/event-loop/src/StreamSelectLoop.php(201): _PHPStan_adbc35a1c\React\Stream\DuplexResourceStream->handleData()
#29 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/react/event-loop/src/StreamSelectLoop.php(173): _PHPStan_adbc35a1c\React\EventLoop\StreamSelectLoop->waitForStreamActivity()
#30 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/src/Command/WorkerCommand.php(98): _PHPStan_adbc35a1c\React\EventLoop\StreamSelectLoop->run()
#31 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Command/Command.php(259): PHPStan\Command\WorkerCommand->execute()
#32 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(870): _PHPStan_adbc35a1c\Symfony\Component\Console\Command\Command->run()
#33 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(261): _PHPStan_adbc35a1c\Symfony\Component\Console\Application->doRunCommand()
#34 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(157): _PHPStan_adbc35a1c\Symfony\Component\Console\Application->doRun()
#35 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/bin/phpstan(124): _PHPStan_adbc35a1c\Symfony\Component\Console\Application->run()
#36 phar:///path/to/vendor/phpstan/phpstan/phpstan.phar/bin/phpstan(125): _PHPStan_adbc35a1c\{closure}()
#37 /path/to/vendor/phpstan/phpstan/phpstan(7): require('phar:///path/to...')
#38 /path/to/vendor/bin/phpstan(115): include('/path/to...')
#39 {main}
Child process error (exit code 1):me/we...')
#38 /path/to/vendor/bin/phpstan(115): include('/path/to...')
#39 {main}
Child process error (exit code 1):
when I comment out that method, phpstan runs without an internal error.
Silverstripe 4.13, PHPStan 1.10.38, silverstripe-phpstan 4.x-dev #fcb734c
This method in an Extension to SiteTree makes PHPStan error:
The error is:
when I comment out that method, phpstan runs without an internal error.