🌐 US-Proxy
class="logged-out env-production page-responsive" style="word-wrap: break-word;" >
Skip to content

Call to undefined method PHPStan\Reflection\Php\ExtendedDummyParameter::union() #15003

Description

@canvural

Bug report

Hello,

Got this when I upgraded from 2.2.2 to 2.2.6

Seems to be related to union of callable types. Couldn't get a smaller reproduction.

Here is the stacktrace from the project I found the issue at
Uncaught Error: Call to undefined method PHPStan\Reflection\Php\ExtendedDummyParameter::union() in phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php:2585
#0 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(2523): PHPStan\Analyser\NodeScopeResolver->doCreateCallableParameters(Object(PHPStan\Analyser\MutatingScope), Object(PhpParser\Node\Expr\Closure), NULL, Object(PHPStan\Type\UnionType), Object(Closure))
#1 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(2352): PHPStan\Analyser\NodeScopeResolver->createCallableParameters(Object(PHPStan\Analyser\MutatingScope), Object(PhpParser\Node\Expr\Closure), NULL, Object(PHPStan\Type\UnionType))
#2 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(2861): PHPStan\Analyser\NodeScopeResolver->processClosureNode(Object(PhpParser\Node\Stmt\Return_), Object(PhpParser\Node\Expr\Closure), Object(PHPStan\Analyser\MutatingScope), Object(PHPStan\Analyser\ExpressionResultStorage), Object(Closure), Object(PHPStan\Analyser\ExpressionContext), Object(PHPStan\Type\UnionType), Object(PHPStan\Type\MixedType))
#3 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/ExprHandler/MethodCallHandler.php(120): PHPStan\Analyser\NodeScopeResolver->processArgs(Object(PhpParser\Node\Stmt\Return_), Object(PHPStan\Reflection\ResolvedMethodReflection), Object(PHPStan\Reflection\Php\PhpMethodReflection), Object(PHPStan\Reflection\ResolvedFunctionVariantWithOriginal), Object(PhpParser\Node\Expr\MethodCall), Object(PHPStan\Analyser\MutatingScope), Object(PHPStan\Analyser\ExpressionResultStorage), Object(Closure), Object(PHPStan\Analyser\ExpressionContext))
#4 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(2260): PHPStan\Analyser\ExprHandler\MethodCallHandler->processExpr(Object(PHPStan\Analyser\Fiber\FiberNodeScopeResolver), Object(PhpParser\Node\Stmt\Return_), Object(PhpParser\Node\Expr\MethodCall), Object(PHPStan\Analyser\MutatingScope), Object(PHPStan\Analyser\ExpressionResultStorage), Object(Closure), Object(PHPStan\Analyser\ExpressionContext))
#5 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/ExprHandler/ArrayHandler.php(75): PHPStan\Analyser\NodeScopeResolver->processExprNode(Object(PhpParser\Node\Stmt\Return_), Object(PhpParser\Node\Expr\MethodCall), Object(PHPStan\Analyser\MutatingScope), Object(PHPStan\Analyser\ExpressionResultStorage), Object(Closure), Object(PHPStan\Analyser\ExpressionContext))
#6 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(2260): PHPStan\Analyser\ExprHandler\ArrayHandler->processExpr(Object(PHPStan\Analyser\Fiber\FiberNodeScopeResolver), Object(PhpParser\Node\Stmt\Return_), Object(PhpParser\Node\Expr\Array_), Object(PHPStan\Analyser\MutatingScope), Object(PHPStan\Analyser\ExpressionResultStorage), Object(Closure), Object(PHPStan\Analyser\ExpressionContext))
#7 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(926): PHPStan\Analyser\NodeScopeResolver->processExprNode(Object(PhpParser\Node\Stmt\Return_), Object(PhpParser\Node\Expr\Array_), Object(PHPStan\Analyser\MutatingScope), Object(PHPStan\Analyser\ExpressionResultStorage), Object(Closure), Object(PHPStan\Analyser\ExpressionContext))
#8 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(633): PHPStan\Analyser\NodeScopeResolver->processStmtNode(Object(PhpParser\Node\Stmt\Return_), Object(PHPStan\Analyser\MutatingScope), Object(PHPStan\Analyser\ExpressionResultStorage), Object(Closure), Object(PHPStan\Analyser\StatementContext))
#9 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(607): PHPStan\Analyser\NodeScopeResolver->processStmtNodesInternalWithoutFlushingPendingFibers(Object(PhpParser\Node\Stmt\ClassMethod), Array, Object(PHPStan\Analyser\MutatingScope), Object(PHPStan\Analyser\ExpressionResultStorage), Object(Closure), Object(PHPStan\Analyser\StatementContext))
#10 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(845): PHPStan\Analyser\NodeScopeResolver->processStmtNodesInternal(Object(PhpParser\Node\Stmt\ClassMethod), Array, Object(PHPStan\Analyser\MutatingScope), Object(PHPStan\Analyser\ExpressionResultStorage), Object(Closure), Object(PHPStan\Analyser\StatementContext))
#11 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(633): PHPStan\Analyser\NodeScopeResolver->processStmtNode(Object(PhpParser\Node\Stmt\ClassMethod), Object(PHPStan\Analyser\MutatingScope), Object(PHPStan\Analyser\ExpressionResultStorage), Object(PHPStan\Node\ClassStatementsGatherer), Object(PHPStan\Analyser\StatementContext))
#12 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(607): PHPStan\Analyser\NodeScopeResolver->processStmtNodesInternalWithoutFlushingPendingFibers(Object(PhpParser\Node\Stmt\Class_), Array, Object(PHPStan\Analyser\MutatingScope), Object(PHPStan\Analyser\ExpressionResultStorage), Object(PHPStan\Node\ClassStatementsGatherer), Object(PHPStan\Analyser\StatementContext))
#13 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(1054): PHPStan\Analyser\NodeScopeResolver->processStmtNodesInternal(Object(PhpParser\Node\Stmt\Class_), Array, Object(PHPStan\Analyser\MutatingScope), Object(PHPStan\Analyser\ExpressionResultStorage), Object(PHPStan\Node\ClassStatementsGatherer), Object(PHPStan\Analyser\StatementContext))
#14 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(633): PHPStan\Analyser\NodeScopeResolver->processStmtNode(Object(PhpParser\Node\Stmt\Class_), Object(PHPStan\Analyser\MutatingScope), Object(PHPStan\Analyser\ExpressionResultStorage), Object(PHPStan\Analyser\FileAnalyserCallback), Object(PHPStan\Analyser\StatementContext))
#15 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(607): PHPStan\Analyser\NodeScopeResolver->processStmtNodesInternalWithoutFlushingPendingFibers(Object(PhpParser\Node\Stmt\Namespace_), Array, Object(PHPStan\Analyser\MutatingScope), Object(PHPStan\Analyser\ExpressionResultStorage), Object(PHPStan\Analyser\FileAnalyserCallback), Object(PHPStan\Analyser\StatementContext))
#16 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(992): PHPStan\Analyser\NodeScopeResolver->processStmtNodesInternal(Object(PhpParser\Node\Stmt\Namespace_), Array, Object(PHPStan\Analyser\MutatingScope), Object(PHPStan\Analyser\ExpressionResultStorage), Object(PHPStan\Analyser\FileAnalyserCallback), Object(PHPStan\Analyser\StatementContext))
                                                                                                                                                                    #17 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(482): PHPStan\Analyser\NodeScopeResolver->processStmtNode(Object(PhpParser\Node\Stmt\Namespace_), Object(PHPStan\Analyser\MutatingScope), Object(PHPStan\Analyser\ExpressionResultStorage), Object(PHPStan\Analyser\FileAnalyserCallback), Object(PHPStan\Analyser\StatementContext))                                                                                                                                                                                    #18 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/FileAnalyser.php(122): PHPStan\Analyser\NodeScopeResolver->processNodes(Array, Object(PHPStan\Analyser\MutatingScope), Object(PHPStan\Analyser\FileAnalyserCallback))
#19 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/Analyser.php(81): PHPStan\Analyser\FileAnalyser->analyseFile('/var/redacted/c...', Array, Object(PHPStan\Rules\LazyRegistry), Object(PHPStan\Collectors\Registry), NULL)                                                                                                                        #20 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Command/AnalyserRunner.php(70): PHPStan\Analyser\Analyser->analyse(Array, Object(Closure), Object(Closure), true, Array)                                                                                                                                                                                 #21 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Command/AnalyseApplication.php(188): PHPStan\Command\AnalyserRunner->runAnalyser(Array, Array, Object(Closure), Object(Closure), true, true, '/var/redacted/c...', NULL, NULL, Object(_PHPStan_d7e9e6b1a\Symfony\Component\Console\Input\ArgvInput))
#22 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Command/AnalyseApplication.php(80): PHPStan\Command\AnalyseApplication->runAnalyser(Array, Array, true, '/var/redacted/c...', NULL, NULL, Object(PHPStan\Command\Symfony\SymfonyOutput), Object(PHPStan\Command\Symfony\SymfonyOutput), Object(_PHPStan_d7e9e6b1a\Symfony\Component\Console\Input\ArgvInput))
#23 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/src/Command/AnalyseCommand.php(263): PHPStan\Command\AnalyseApplication->analyse(Array, true, Object(PHPStan\Command\Symfony\SymfonyOutput), Object(PHPStan\Command\Symfony\SymfonyOutput), false, true, '/var/redacted/c...', Array, NULL, NULL, Object(_PHPStan_d7e9e6b1a\Symfony\Component\Console\Input\ArgvInput))
#24 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Command/Command.php(259): PHPStan\Command\AnalyseCommand->execute(Object(_PHPStan_d7e9e6b1a\Symfony\Component\Console\Input\ArgvInput), Object(_PHPStan_d7e9e6b1a\Symfony\Component\Console\Output\ConsoleOutput))
#25 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(868): _PHPStan_d7e9e6b1a\Symfony\Component\Console\Command\Command->run(Object(_PHPStan_d7e9e6b1a\Symfony\Component\Console\Input\ArgvInput), Object(_PHPStan_d7e9e6b1a\Symfony\Component\Console\Output\ConsoleOutput))                                              #26 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(261): _PHPStan_d7e9e6b1a\Symfony\Component\Console\Application->doRunCommand(Object(PHPStan\Command\AnalyseCommand), Object(_PHPStan_d7e9e6b1a\Symfony\Component\Console\Input\ArgvInput), Object(_PHPStan_d7e9e6b1a\Symfony\Component\Console\Output\ConsoleOutput)) #27 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(157): _PHPStan_d7e9e6b1a\Symfony\Component\Console\Application->doRun(Object(_PHPStan_d7e9e6b1a\Symfony\Component\Console\Input\ArgvInput), Object(_PHPStan_d7e9e6b1a\Symfony\Component\Console\Output\ConsoleOutput))                                                #28 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/bin/phpstan(109): _PHPStan_d7e9e6b1a\Symfony\Component\Console\Application->run()                             #29 phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/bin/phpstan(110): {closure:phar:///var/redacted/vendor/phpstan/phpstan/phpstan.phar/bin/phpstan:16}()                                                                                                                                                                                    #30 /var/redacted/vendor/phpstan/phpstan/phpstan(8): require('phar:///var/hom...')                                                                                         #31 /var/redacted/vendor/bin/phpstan(119): include('/var/redacted/c...')
#32 {main}

Some calls might be little different because the playground reproduction is not 100% same

Code snippet that reproduces the problem

https://phpstan.org/r/2f301111-1f28-40c7-a64e-d2aa69a589f7

Expected output

No errors

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

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions