Skip to content

Could not process => Fix scope refresh on changed nodes first #7984

@GeoDaz

Description

@GeoDaz

Hello, I have this error when I run
php vendor/bin/rector process src --dry-run

[ERROR] Could not process
         "{path}\src\Service\DataManager\Abstracts\AbstractDataManager.php" file, due to:
         "System error: "Scope not available on "PhpParser\Node\Name\FullyQualified" node with parent node of
         "PhpParser\Node\Stmt\TraitUseAdaptation\Precedence", but is required by a refactorWithScope() method of
         "Rector\Renaming\Rector\Name\RenameClassRector" rule. Fix scope refresh on changed nodes first"

But it used to works some days ago. I don't particularly need to update this file, it is already updated. But I wonder why I get this error now.

For this file

<?php

namespace App\Service\DataManager\Abstracts;

use App\Service\DataManager\Traits\LockDelete;
use App\Service\DataManager\Traits\LockRemove;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Contracts\Service\Attribute\Required;

abstract class AbstractDataManager
{
    use LockDelete, LockRemove {
        LockDelete::extractObjectsId insteadof LockRemove;
        LockDelete::extractBaseObjects insteadof LockRemove;
    }

    protected ?Request $request = null;

    /** @var ServiceEntityRepository */
    protected $repository;

    public function __construct(
        protected readonly EntityManagerInterface $em,
        RequestStack $requestStack
    ) {
        $this->request = $requestStack->getCurrentRequest();
    }

    #[Required]
    abstract public function setRepository();
}

With -- debug :

         #0 {path}\vendor\rector\rector\src\Rector\AbstractRector.php(234):
         Rector\Core\Rector\AbstractScopeAwareRector->refactor(Object(PhpParser\Node\Name\FullyQualified))
         #1
        {path}\vendor\rector\rector\vendor\nikic\php-parser\lib\PhpParser\NodeTraverser.p
         hp(113): Rector\Core\Rector\AbstractRector->enterNode(Object(PhpParser\Node\Name\FullyQualified))
         #2
        {path}\vendor\rector\rector\vendor\nikic\php-parser\lib\PhpParser\NodeTraverser.p
         hp(196):
         PhpParser\NodeTraverser->traverseNode(Object(PhpParser\Node\Stmt\TraitUseAdaptation\Precedence))
         #3
        {path}\vendor\rector\rector\vendor\nikic\php-parser\lib\PhpParser\NodeTraverser.p
         hp(105): PhpParser\NodeTraverser->traverseArray(Array)
         #4
        {path}\vendor\rector\rector\vendor\nikic\php-parser\lib\PhpParser\NodeTraverser.p
         hp(196): PhpParser\NodeTraverser->traverseNode(Object(PhpParser\Node\Stmt\TraitUse))
         #5
        {path}\vendor\rector\rector\vendor\nikic\php-parser\lib\PhpParser\NodeTraverser.p
         hp(105): PhpParser\NodeTraverser->traverseArray(Array)
         #6
        {path}\vendor\rector\rector\vendor\nikic\php-parser\lib\PhpParser\NodeTraverser.p
         hp(196): PhpParser\NodeTraverser->traverseNode(Object(PhpParser\Node\Stmt\Class_))
         #7
        {path}\vendor\rector\rector\vendor\nikic\php-parser\lib\PhpParser\NodeTraverser.p
         hp(105): PhpParser\NodeTraverser->traverseArray(Array)
         #8
        {path}\vendor\rector\rector\vendor\nikic\php-parser\lib\PhpParser\NodeTraverser.p
         hp(196): PhpParser\NodeTraverser->traverseNode(Object(PhpParser\Node\Stmt\Namespace_))
         #9
        {path}\vendor\rector\rector\vendor\nikic\php-parser\lib\PhpParser\NodeTraverser.p
         hp(85): PhpParser\NodeTraverser->traverseArray(Array)
         #10
        {path}\vendor\rector\rector\src\PhpParser\NodeTraverser\RectorNodeTraverser.php(4
         2): PhpParser\NodeTraverser->traverse(Array)
         #11 {path}\vendor\rector\rector\src\Application\FileProcessor.php(60):
         Rector\Core\PhpParser\NodeTraverser\RectorNodeTraverser->traverse(Array)
         #12
        {path}\vendor\rector\rector\src\Application\FileProcessor\PhpFileProcessor.php(11
         5): Rector\Core\Application\FileProcessor->refactor(Object(Rector\Core\ValueObject\Application\File),
         Object(Rector\Core\ValueObject\Configuration))
         #13 {path}\vendor\rector\rector\packages\Parallel\WorkerRunner.php(144):
         Rector\Core\Application\FileProcessor\PhpFileProcessor->process(Object(Rector\Core\ValueObject\Applica
         tion\File), Object(Rector\Core\ValueObject\Configuration))
         #14 {path}\vendor\rector\rector\packages\Parallel\WorkerRunner.php(114):
         Rector\Parallel\WorkerRunner->processFile(Object(Rector\Core\ValueObject\Application\File),
         Object(Rector\Core\ValueObject\Configuration), Array)
         #15
        {path}\vendor\rector\rector\vendor\evenement\evenement\src\Evenement\EventEmitter
         Trait.php(97): Rector\Parallel\WorkerRunner->Rector\Parallel\{closure}(Array)
         #16 {path}\vendor\rector\rector\vendor\clue\ndjson-react\src\Decoder.php(117):
         RectorPrefix202306\Evenement\EventEmitter->emit('data', Array)
         #17
        {path}\vendor\rector\rector\vendor\evenement\evenement\src\Evenement\EventEmitter
         Trait.php(97): RectorPrefix202306\Clue\React\NDJson\Decoder->handleData(Array)
         #18 {path}\vendor\rector\rector\vendor\react\stream\src\Util.php(62):
         RectorPrefix202306\Evenement\EventEmitter->emit('data', Array)
         #19
        {path}\vendor\rector\rector\vendor\evenement\evenement\src\Evenement\EventEmitter
         Trait.php(97):
         RectorPrefix202306\React\Stream\Util::RectorPrefix202306\React\Stream\{closure}('{"action":"main...')
         #20
        {path}\vendor\rector\rector\vendor\react\stream\src\DuplexResourceStream.php(154)
         : RectorPrefix202306\Evenement\EventEmitter->emit('data', Array)
         #21
        {path}\vendor\rector\rector\vendor\react\event-loop\src\StreamSelectLoop.php(201)
         : RectorPrefix202306\React\Stream\DuplexResourceStream->handleData(Resource id #2861)
         #22
        {path}\vendor\rector\rector\vendor\react\event-loop\src\StreamSelectLoop.php(173)
         : RectorPrefix202306\React\EventLoop\StreamSelectLoop->waitForStreamActivity(NULL)
         #23 {path}\vendor\rector\rector\src\Console\Command\WorkerCommand.php(63):
         RectorPrefix202306\React\EventLoop\StreamSelectLoop->run()
         #24 {path}\vendor\rector\rector\vendor\symfony\console\Command\Command.php(325):
         Rector\Core\Console\Command\WorkerCommand->execute(Object(RectorPrefix202306\Symfony\Component\Console
         \Input\ArgvInput), Object(RectorPrefix202306\Symfony\Component\Console\Output\ConsoleOutput))
         #25 {path}\vendor\rector\rector\vendor\symfony\console\Application.php(944):
         RectorPrefix202306\Symfony\Component\Console\Command\Command->run(Object(RectorPrefix202306\Symfony\Co
         mponent\Console\Input\ArgvInput),
         Object(RectorPrefix202306\Symfony\Component\Console\Output\ConsoleOutput))
         #26 {path}\vendor\rector\rector\vendor\symfony\console\Application.php(326):
         RectorPrefix202306\Symfony\Component\Console\Application->doRunCommand(Object(Rector\Core\Console\Comm
         and\WorkerCommand), Object(RectorPrefix202306\Symfony\Component\Console\Input\ArgvInput),
         Object(RectorPrefix202306\Symfony\Component\Console\Output\ConsoleOutput))
         #27 {path}\vendor\rector\rector\src\Console\ConsoleApplication.php(49):
         RectorPrefix202306\Symfony\Component\Console\Application->doRun(Object(RectorPrefix202306\Symfony\Comp
         onent\Console\Input\ArgvInput),
         Object(RectorPrefix202306\Symfony\Component\Console\Output\ConsoleOutput))
         #28 {path}\vendor\rector\rector\vendor\symfony\console\Application.php(212):
         Rector\Core\Console\ConsoleApplication->doRun(Object(RectorPrefix202306\Symfony\Component\Console\Inpu
         t\ArgvInput), Object(RectorPrefix202306\Symfony\Component\Console\Output\ConsoleOutput))
         #29 {path}\vendor\rector\rector\bin\rector.php(132):
         RectorPrefix202306\Symfony\Component\Console\Application->run()
         #30 {path}\vendor\rector\rector\bin\rector(5):
         require_once('...')
         #31 {path}\vendor\bin\rector(120): include('...')
         #32 {main}". On line: 53

rector file :

<?php

declare(strict_types=1);

use Rector\CodeQuality\Rector\Class_\InlineConstructorDefaultToPropertyRector;
use Rector\Config\RectorConfig;
use Rector\Php73\Rector\BooleanOr\IsCountableRector;
use Rector\Php73\Rector\FuncCall\StringifyStrNeedlesRector;
use Rector\Set\ValueObject\LevelSetList;
use Rector\Doctrine\Set\DoctrineSetList;
use Rector\Php56\Rector\FunctionLike\AddDefaultValueForUndefinedVariableRector;
use Rector\Php70\Rector\MethodCall\ThisCallOnStaticMethodToStaticCallRector;
use Rector\Php71\Rector\BinaryOp\BinaryOpBetweenNumberAndStringRector;
use Rector\Php71\Rector\FuncCall\CountOnNullRector;
use Rector\Php71\Rector\FuncCall\RemoveExtraParametersRector;
use Rector\Php73\Rector\FuncCall\JsonThrowOnErrorRector;
use Rector\Php74\Rector\LNumber\AddLiteralSeparatorToNumberRector;
use Rector\Php80\Rector\Switch_\ChangeSwitchToMatchRector;
use Rector\Php81\Rector\FuncCall\NullToStrictStringFuncCallArgRector;
use Rector\Set\ValueObject\SetList;
use Rector\Symfony\Set\SymfonySetList;

return static function (RectorConfig $rectorConfig): void {
    $rectorConfig->paths([
        __DIR__ . '/src'
    ]);

    // register a single rule
    $rectorConfig->rule(InlineConstructorDefaultToPropertyRector::class);

    $rectorConfig->skip([
        IsCountableRector::class,
        CountOnNullRector::class,
        StringifyStrNeedlesRector::class, 
        NullToStrictStringFuncCallArgRector::class,
        JsonThrowOnErrorRector::class,
        AddDefaultValueForUndefinedVariableRector::class,
        ChangeSwitchToMatchRector::class,
        ThisCallOnStaticMethodToStaticCallRector::class,
        RemoveExtraParametersRector::class,
        AddLiteralSeparatorToNumberRector::class,
        BinaryOpBetweenNumberAndStringRector::class,
    ]);

    // define sets of rules
    $rectorConfig->sets([
        LevelSetList::UP_TO_PHP_82,
        SetList::PHP_82,
        SymfonySetList::SYMFONY_62,
        DoctrineSetList::ANNOTATIONS_TO_ATTRIBUTES,
        SymfonySetList::ANNOTATIONS_TO_ATTRIBUTES,
    ]);
};

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions