rule AddGenericReturnTypeToRelationsRector trigger Error
Closed this issue · 2 comments
arno14 commented
With
"rector/rector": "^0.18.12",
"driftingly/rector-laravel": "^0.26.2",
"phpstan/phpstan": "^1.10",
"nunomaduro/larastan": "^2.7",
when the rule AddGenericReturnTypeToRelationsRector::class is activated
I get this error on multiple class:
[ERROR] Could not process "app/Models/User.php" file, due to:
"System error: "Call to a member function mapPHPStanPhpDocTypeNodeToPHPStanType() on null"
Stack trace:
#0 vendor/driftingly/rector-laravel/src/Rector/ClassMethod/AddGenericReturnTypeToRelationsRector.php(162):
RectorLaravel\Rector\ClassMethod\AddGenericReturnTypeToRelationsRector->areNativeTypeAndPhpDocReturnTypeEqual(
Object(PhpParser\Node\Stmt\ClassMethod), Object(PhpParser\Node\Name\FullyQualified),
Object(PHPStan\PhpDocParser\Ast\PhpDoc\ReturnTagValueNode))
#1 vendor/rector/rector/src/Rector/AbstractScopeAwareRector.php(27):
RectorLaravel\Rector\ClassMethod\AddGenericReturnTypeToRelationsRector->refactorWithScope(Object(PhpParser\Nod
e\Stmt\ClassMethod), Object(PHPStan\Analyser\MutatingScope))
#2 vendor/rector/rector/src/Rector/AbstractRector.php(132):
Rector\Core\Rector\AbstractScopeAwareRector->refactor(Object(PhpParser\Node\Stmt\ClassMethod))
#3 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(176):
Rector\Core\Rector\AbstractRector->enterNode(Object(PhpParser\Node\Stmt\ClassMethod))
#4 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(105):
PhpParser\NodeTraverser->traverseArray(Array)
#5 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(196):
PhpParser\NodeTraverser->traverseNode(Object(PhpParser\Node\Stmt\Class_))
#6 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(105):
PhpParser\NodeTraverser->traverseArray(Array)
#7 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(196):
PhpParser\NodeTraverser->traverseNode(Object(PhpParser\Node\Stmt\Namespace_))
#8 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(85):
PhpParser\NodeTraverser->traverseArray(Array)
#9 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(50):
PhpParser\NodeTraverser->traverse(Array)
#10 vendor/rector/rector/src/Application/FileProcessor.php(116):
Rector\Core\PhpParser\NodeTraverser\RectorNodeTraverser->traverse(Array)
#11 vendor/rector/rector/src/Application/ApplicationFileProcessor.php(177):
Rector\Core\Application\FileProcessor->processFile(Object(Rector\Core\ValueObject\Application\File),
Object(Rector\Core\ValueObject\Configuration))
#12 vendor/rector/rector/src/Application/ApplicationFileProcessor.php(153):
Rector\Core\Application\ApplicationFileProcessor->processFile(Object(Rector\Core\ValueObject\Application\File)
, Object(Rector\Core\ValueObject\Configuration))
#13 vendor/rector/rector/src/Console/Command/WorkerCommand.php(132):
Rector\Core\Application\ApplicationFileProcessor->processFiles(Array,
Object(Rector\Core\ValueObject\Configuration), Object(Closure))
#14 vendor/rector/rector/vendor/evenement/evenement/src/EventEmitterTrait.php(111):
Rector\Core\Console\Command\WorkerCommand->Rector\Core\Console\Command\{closure}(Array)
#15 vendor/rector/rector/vendor/clue/ndjson-react/src/Decoder.php(117):
RectorPrefix202312\Evenement\EventEmitter->emit('data', Array)
#16 vendor/rector/rector/vendor/evenement/evenement/src/EventEmitterTrait.php(111):
RectorPrefix202312\Clue\React\NDJson\Decoder->handleData(Array)
#17 vendor/rector/rector/vendor/react/stream/src/Util.php(62):
RectorPrefix202312\Evenement\EventEmitter->emit('data', Array)
#18 vendor/rector/rector/vendor/evenement/evenement/src/EventEmitterTrait.php(111):
RectorPrefix202312\React\Stream\Util::RectorPrefix202312\React\Stream\{closure}('{"action":"main...')
#19 vendor/rector/rector/vendor/react/stream/src/DuplexResourceStream.php(154):
RectorPrefix202312\Evenement\EventEmitter->emit('data', Array)
#20 vendor/rector/rector/vendor/react/event-loop/src/StreamSelectLoop.php(201):
RectorPrefix202312\React\Stream\DuplexResourceStream->handleData(Resource id #1883)
#21 vendor/rector/rector/vendor/react/event-loop/src/StreamSelectLoop.php(173):
RectorPrefix202312\React\EventLoop\StreamSelectLoop->waitForStreamActivity(NULL)
#22 vendor/rector/rector/src/Console/Command/WorkerCommand.php(90):
RectorPrefix202312\React\EventLoop\StreamSelectLoop->run()
#23 vendor/rector/rector/vendor/symfony/console/Command/Command.php(327):
Rector\Core\Console\Command\WorkerCommand->execute(Object(RectorPrefix202312\Symfony\Component\Console\Input\A
rgvInput), Object(RectorPrefix202312\Symfony\Component\Console\Output\ConsoleOutput))
#24 vendor/rector/rector/vendor/symfony/console/Application.php(960):
RectorPrefix202312\Symfony\Component\Console\Command\Command->run(Object(RectorPrefix202312\Symfony\Component\
Console\Input\ArgvInput), Object(RectorPrefix202312\Symfony\Component\Console\Output\ConsoleOutput))
#25 vendor/rector/rector/vendor/symfony/console/Application.php(333):
RectorPrefix202312\Symfony\Component\Console\Application->doRunCommand(Object(Rector\Core\Console\Command\Work
erCommand), Object(RectorPrefix202312\Symfony\Component\Console\Input\ArgvInput),
Object(RectorPrefix202312\Symfony\Component\Console\Output\ConsoleOutput))
#26 vendor/rector/rector/src/Console/ConsoleApplication.php(53):
RectorPrefix202312\Symfony\Component\Console\Application->doRun(Object(RectorPrefix202312\Symfony\Component\Co
nsole\Input\ArgvInput), Object(RectorPrefix202312\Symfony\Component\Console\Output\ConsoleOutput))
#27 vendor/rector/rector/vendor/symfony/console/Application.php(216):
Rector\Core\Console\ConsoleApplication->doRun(Object(RectorPrefix202312\Symfony\Component\Console\Input\ArgvIn
put), Object(RectorPrefix202312\Symfony\Component\Console\Output\ConsoleOutput))
#28 vendor/rector/rector/bin/rector.php(129): RectorPrefix202312\Symfony\Component\Console\Application->run()
#29 vendor/rector/rector/bin/rector(5): require_once('vendor...')
#30 vendor/bin/rector(119): include('vendor...')
#31 {main}". On line: 290
When the rule is disabled, no errors occurs
With this packages version:
"rector/rector": "^0.18.4",
"driftingly/rector-laravel": "^0.26.0",
"phpstan/phpstan": "^1.10",
"nunomaduro/larastan": "^2.6",
No errors are triggered, and command line display Rector is done!
/
But I get this warning in the console when rule AddGenericReturnTypeToRelationsRector is enabled
Get staticTypeMapper property from AbstractRector on RectorLaravel\Rector\ClassMethod\AddGenericReturnTypeToRelationsRector is deprecated, inject via __construct() instead
GeniJaho commented
Try to install the dev-main version of rector-laravel, that could solve the issue.