Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prasing error in OptionalParametersAfterRequiredRector failing unexpectly #8640

Closed
alexander-schranz opened this issue May 16, 2024 · 4 comments

Comments

@alexander-schranz
Copy link

alexander-schranz commented May 16, 2024

I'm not really sure what is causing this issue.

 [ERROR] Could not process
         "/Users/alexanderschranz/Documents/Projects/messenger/src/Infrastructure/Symfony/HttpKernel/SuluMessengerBundle
         .php" file, due to:
         "System error: "Scope not available on "PhpParser\Node\Stmt\ClassMethod" node, but is required by a
         refactorWithScope() method of "Rector\CodeQuality\Rector\ClassMethod\OptionalParametersAfterRequiredRector"
         rule. Fix scope refresh on changed nodes first"
         Run Rector with "--debug" option and post the report here: https://github.com/rectorphp/rector/issues/new". On line: 25
Debug Output
[ERROR] Could not process
         "/Users/alexanderschranz/Documents/Projects/messenger/src/Infrastructure/Symfony/HttpKernel/SuluMessengerBundle
         .php" file, due to:
         "System error: "Scope not available on "PhpParser\Node\Stmt\ClassMethod" node, but is required by a
         refactorWithScope() method of "Rector\CodeQuality\Rector\ClassMethod\OptionalParametersAfterRequiredRector"
         rule. Fix scope refresh on changed nodes first"

         Stack trace:
         #0 vendor/rector/rector/src/Rector/AbstractRector.php(136):
         Rector\Rector\AbstractScopeAwareRector->refactor(Object(PhpParser\Node\Stmt\ClassMethod))
         #1 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(176):
         Rector\Rector\AbstractRector->enterNode(Object(PhpParser\Node\Stmt\ClassMethod))
         #2 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(105):
         PhpParser\NodeTraverser->traverseArray(Array)
         #3 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(196):
         PhpParser\NodeTraverser->traverseNode(Object(PhpParser\Node\Stmt\Class_))
         #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\Namespace_))
         #6 vendor/rector/rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php(85):
         PhpParser\NodeTraverser->traverseArray(Array)
         #7 vendor/rector/rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php(41):
         PhpParser\NodeTraverser->traverse(Array)
         #8 vendor/rector/rector/src/Application/FileProcessor.php(110):
         Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverse(Array)
         #9 vendor/rector/rector/src/Application/ApplicationFileProcessor.php(184):
         Rector\Application\FileProcessor->processFile(Object(Rector\ValueObject\Application\File),
         Object(Rector\ValueObject\Configuration))
         #10 vendor/rector/rector/src/Application/ApplicationFileProcessor.php(161):
         Rector\Application\ApplicationFileProcessor->processFile(Object(Rector\ValueObject\Application\File),
         Object(Rector\ValueObject\Configuration))
         #11 vendor/rector/rector/src/Console/Command/WorkerCommand.php(118):
         Rector\Application\ApplicationFileProcessor->processFiles(Array, Object(Rector\ValueObject\Configuration),
         Object(Closure))
         #12 vendor/rector/rector/vendor/evenement/evenement/src/EventEmitterTrait.php(111):
         Rector\Console\Command\WorkerCommand->Rector\Console\Command\{closure}(Array)
         #13 vendor/rector/rector/vendor/clue/ndjson-react/src/Decoder.php(117):
         RectorPrefix202405\Evenement\EventEmitter->emit('data', Array)
         #14 vendor/rector/rector/vendor/evenement/evenement/src/EventEmitterTrait.php(111):
         RectorPrefix202405\Clue\React\NDJson\Decoder->handleData(Array)
         #15 vendor/rector/rector/vendor/react/stream/src/Util.php(62):
         RectorPrefix202405\Evenement\EventEmitter->emit('data', Array)
         #16 vendor/rector/rector/vendor/evenement/evenement/src/EventEmitterTrait.php(111):
         RectorPrefix202405\React\Stream\Util::RectorPrefix202405\React\Stream\{closure}('{"action":"main...')
         #17 vendor/rector/rector/vendor/react/stream/src/DuplexResourceStream.php(154):
         RectorPrefix202405\Evenement\EventEmitter->emit('data', Array)
         #18 vendor/rector/rector/vendor/react/event-loop/src/StreamSelectLoop.php(201):
         RectorPrefix202405\React\Stream\DuplexResourceStream->handleData(Resource id #1938)
         #19 vendor/rector/rector/vendor/react/event-loop/src/StreamSelectLoop.php(173):
         RectorPrefix202405\React\EventLoop\StreamSelectLoop->waitForStreamActivity(NULL)
         #20 vendor/rector/rector/src/Console/Command/WorkerCommand.php(89):
         RectorPrefix202405\React\EventLoop\StreamSelectLoop->run()
         #21 vendor/rector/rector/vendor/symfony/console/Command/Command.php(327):
         Rector\Console\Command\WorkerCommand->execute(Object(RectorPrefix202405\Symfony\Component\Console\Input\ArgvIn
         put), Object(RectorPrefix202405\Symfony\Component\Console\Output\ConsoleOutput))
         #22 vendor/rector/rector/vendor/symfony/console/Application.php(960):
         RectorPrefix202405\Symfony\Component\Console\Command\Command->run(Object(RectorPrefix202405\Symfony\Component\
         Console\Input\ArgvInput), Object(RectorPrefix202405\Symfony\Component\Console\Output\ConsoleOutput))
         #23 vendor/rector/rector/vendor/symfony/console/Application.php(333):
         RectorPrefix202405\Symfony\Component\Console\Application->doRunCommand(Object(Rector\Console\Command\WorkerCom
         mand), Object(RectorPrefix202405\Symfony\Component\Console\Input\ArgvInput),
         Object(RectorPrefix202405\Symfony\Component\Console\Output\ConsoleOutput))
         #24 vendor/rector/rector/src/Console/ConsoleApplication.php(53):
         RectorPrefix202405\Symfony\Component\Console\Application->doRun(Object(RectorPrefix202405\Symfony\Component\Co
         nsole\Input\ArgvInput), Object(RectorPrefix202405\Symfony\Component\Console\Output\ConsoleOutput))
         #25 vendor/rector/rector/vendor/symfony/console/Application.php(216):
         Rector\Console\ConsoleApplication->doRun(Object(RectorPrefix202405\Symfony\Component\Console\Input\ArgvInput),
         Object(RectorPrefix202405\Symfony\Component\Console\Output\ConsoleOutput))
         #26 vendor/rector/rector/bin/rector.php(130): RectorPrefix202405\Symfony\Component\Console\Application->run()
         #27 vendor/rector/rector/bin/rector(5): require_once('/Users/alexande...')
         #28 vendor/bin/rector(119): include('/Users/alexande...')
         #29 {main}". On line: 25

What I did found out that it is the SetList::CODE_QUALITY.

The installed versions:

rector/rector                              1.0.5  Instant Upgrade and Automated Refactoring of any PHP code

jangregor/phpstan-prophecy                 1.0.2  Provides a phpstan/phpstan extension for phpspec/prophecy
phpstan/extension-installer                1.3.1  Composer plugin for automatic installation of PHPStan extensions
phpstan/phpdoc-parser                      1.29.0 PHPDoc parser with support for nullable, intersection and generic types
phpstan/phpstan                            1.11.1 PHPStan - PHP Static Analysis Tool
phpstan/phpstan-doctrine                   1.4.0  Doctrine extensions for PHPStan
phpstan/phpstan-phpunit                    1.4.0  PHPUnit extensions and rules for PHPStan
phpstan/phpstan-symfony                    1.4.0  Symfony Framework extensions and rules for PHPStan
phpstan/phpstan-webmozart-assert           1.2.6  PHPStan webmozart/assert extension
thecodingmachine/phpstan-strict-rules      1.0.0  A set of additional rules for PHPStan based on best practices followed at TheCodingMachine

Reproduceable

git clone git@github.com:sulu/messenger.git sulu-messenger
cd sulu-messenger

composer update
composer lint-rector
@TomasVotruba
Copy link
Member

Thanks for report! Could you narrow down dev deps to minimum that causes this?

@samsonasik
Copy link
Member

@alexander-schranz it should already resolved in latest dev-main, please try:

composer config minimum-stability dev
composer config prefer-stable true
composer require --dev rector/rector:dev-main

I tried and it seems working fine on dev-main :)

@samsonasik
Copy link
Member

here I create a PR to temporary use rector/rector:dev-main to your repo:

@alexander-schranz
Copy link
Author

Looks like its fixed. Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants