psalm-plugin-symfony icon indicating copy to clipboard operation
psalm-plugin-symfony copied to clipboard

Crash due to an uncaught Throwable in DoctrineRepositoryHandler

Open sakulb opened this issue 3 years ago • 0 comments

Psalm 4.21 crashes due to an uncaught Throwable in DoctrineRepositoryHandler:

Uncaught RuntimeException: PHP Error: ReflectionClass::__construct(): Passing null to parameter #1 ($objectOrClass) of type object|string is deprecated in /var/www/html/vendor/psalm/plugin-symfony/src/Handler/DoctrineRepositoryHandler.php:48 in /var/www/html/vendor/vimeo/psalm/src/Psalm/Internal/ErrorHandler.php:66
Stack trace:
#0 [internal function]: Psalm\Internal\ErrorHandler::Psalm\Internal\{closure}()
#1 /var/www/html/vendor/psalm/plugin-symfony/src/Handler/DoctrineRepositoryHandler.php(48): ReflectionClass->__construct()
#2 /var/www/html/vendor/vimeo/psalm/src/Psalm/Internal/EventDispatcher.php(312): Psalm\SymfonyPsalmPlugin\Handler\DoctrineRepositoryHandler::afterMethodCallAnalysis()
#3 /var/www/html/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/Method/ExistingAtomicMethodCallAnalyzer.php(495): Psalm\Internal\EventDispatcher->dispatchAfterMethodCallAnalysis()
#4 /var/www/html/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/Method/AtomicMethodCallAnalyzer.php(467): Psalm\Internal\Analyzer\Statements\Expression\Call\Method\ExistingAtomicMethodCallAnalyzer::analyze()
#5 /var/www/html/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/MethodCallAnalyzer.php(185): Psalm\Internal\Analyzer\Statements\Expression\Call\Method\AtomicMethodCallAnalyzer::analyze()
#6 /var/www/html/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/ExpressionAnalyzer.php(186): Psalm\Internal\Analyzer\Statements\Expression\Call\MethodCallAnalyzer::analyze()
#7 /var/www/html/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/ExpressionAnalyzer.php(78): Psalm\Internal\Analyzer\Statements\ExpressionAnalyzer::handleExpression()
#8 /var/www/html/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/AssignmentAnalyzer.php(240): Psalm\Internal\Analyzer\Statements\ExpressionAnalyzer::analyze()
#9 /var/www/html/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/ExpressionAnalyzer.php(167): Psalm\Internal\Analyzer\Statements\Expression\AssignmentAnalyzer::analyze()
#10 /var/www/html/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/ExpressionAnalyzer.php(78): Psalm\Internal\Analyzer\Statements\ExpressionAnalyzer::handleExpression()
#11 /var/www/html/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/StatementsAnalyzer.php(571): Psalm\Internal\Analyzer\Statements\ExpressionAnalyzer::analyze()
#12 /var/www/html/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/StatementsAnalyzer.php(206): Psalm\Internal\Analyzer\StatementsAnalyzer::analyzeStatement()
#13 /var/www/html/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/FunctionLikeAnalyzer.php(473): Psalm\Internal\Analyzer\StatementsAnalyzer->analyze()
#14 /var/www/html/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/ClassAnalyzer.php(1788): Psalm\Internal\Analyzer\FunctionLikeAnalyzer->analyze()
#15 /var/www/html/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/ClassAnalyzer.php(425): Psalm\Internal\Analyzer\ClassAnalyzer->analyzeClassMethod()
#16 /var/www/html/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/FileAnalyzer.php(229): Psalm\Internal\Analyzer\ClassAnalyzer->analyze()
#17 /var/www/html/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Analyzer.php(362): Psalm\Internal\Analyzer\FileAnalyzer->analyze()
#18 /var/www/html/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Analyzer.php(619): Psalm\Internal\Codebase\Analyzer->Psalm\Internal\Codebase\{closure}()
#19 /var/www/html/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Analyzer.php(291): Psalm\Internal\Codebase\Analyzer->doAnalysis()
#20 /var/www/html/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php(1203): Psalm\Internal\Codebase\Analyzer->analyzeFiles()
#21 /var/www/html/vendor/vimeo/psalm/src/Psalm/Internal/Cli/Psalm.php(375): Psalm\Internal\Analyzer\ProjectAnalyzer->checkPaths()
#22 /var/www/html/vendor/vimeo/psalm/psalm(7): Psalm\Internal\Cli\Psalm::run()
#23 /var/www/html/vendor/bin/psalm(107): include('...')
#24 {main}
(Psalm 4.21.0@d8bec4c7aaee111a532daec32fb09de5687053d1 crashed due to an uncaught Throwable)

This error can be fixed if you cast the $className to string here: https://github.com/psalm/psalm-plugin-symfony/blob/44f9a695cd7223844ffaa88a2d23b3f7ce658db0/src/Handler/DoctrineRepositoryHandler.php#L48 Or solve why $className is null in the first place..

My system: PHP 8.1.1 psalm/plugin-symfony 3.1.3 vimeo/psalm 4.21.0 doctrine/doctrine-bundle 2.5.6 doctrine/orm 2.11.1 symfony 6.0.4

sakulb avatar Feb 23 '22 09:02 sakulb