Skip to content

Commit

Permalink
[NodeTraverser] Add NodeConnectingTraverser (#3531)
Browse files Browse the repository at this point in the history
* [NodeTraverser] Add NodeConnectingTraverser

* Final touch: remove unused use statement

* final touch: add missing return

* final touch: phpstan fix
  • Loading branch information
samsonasik committed Mar 28, 2023
1 parent 87186dd commit 02df443
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 13 deletions.
18 changes: 18 additions & 0 deletions src/PhpParser/NodeTraverser/NodeConnectingTraverser.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?php

declare(strict_types=1);

namespace Rector\Core\PhpParser\NodeTraverser;

use PhpParser\NodeTraverser;
use PhpParser\NodeVisitor\NodeConnectingVisitor;

final class NodeConnectingTraverser extends NodeTraverser
{
public function __construct()
{
parent::__construct();

$this->addVisitor(new NodeConnectingVisitor());
}
}
10 changes: 3 additions & 7 deletions src/PhpParser/Parser/SimplePhpParser.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,15 @@

use Nette\Utils\FileSystem;
use PhpParser\Node\Stmt;
use PhpParser\NodeTraverser;
use PhpParser\NodeVisitor\NodeConnectingVisitor;
use PhpParser\Parser;
use PhpParser\ParserFactory;
use Rector\Core\PhpParser\NodeTraverser\NodeConnectingTraverser;

final class SimplePhpParser
{
private readonly Parser $phpParser;

public function __construct()
public function __construct(private readonly NodeConnectingTraverser $nodeConnectingTraverser)
{
$parserFactory = new ParserFactory();
$this->phpParser = $parserFactory->create(ParserFactory::PREFER_PHP7);
Expand All @@ -41,9 +40,6 @@ public function parseString(string $fileContent): array
return [];
}

$nodeTraverser = new NodeTraverser();
$nodeTraverser->addVisitor(new NodeConnectingVisitor());

return $nodeTraverser->traverse($stmts);
return $this->nodeConnectingTraverser->traverse($stmts);
}
}
13 changes: 7 additions & 6 deletions src/Rector/AbstractRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@
use PhpParser\Node\Stmt\Expression;
use PhpParser\Node\Stmt\InlineHTML;
use PhpParser\Node\Stmt\Nop;
use PhpParser\NodeTraverser;
use PhpParser\NodeVisitor\NodeConnectingVisitor;
use PhpParser\NodeVisitorAbstract;
use PHPStan\Analyser\MutatingScope;
use PHPStan\Type\ObjectType;
Expand All @@ -32,6 +30,7 @@
use Rector\Core\PhpParser\Node\BetterNodeFinder;
use Rector\Core\PhpParser\Node\NodeFactory;
use Rector\Core\PhpParser\Node\Value\ValueResolver;
use Rector\Core\PhpParser\NodeTraverser\NodeConnectingTraverser;
use Rector\Core\ProcessAnalyzer\RectifiedAnalyzer;
use Rector\Core\Provider\CurrentFileProvider;
use Rector\Core\ValueObject\Application\File;
Expand Down Expand Up @@ -115,6 +114,8 @@ abstract class AbstractRector extends NodeVisitorAbstract implements PhpRectorIn

private DocBlockUpdater $docBlockUpdater;

private NodeConnectingTraverser $nodeConnectingTraverser;

#[Required]
public function autowire(
NodesToRemoveCollector $nodesToRemoveCollector,
Expand All @@ -137,7 +138,8 @@ public function autowire(
ChangedNodeScopeRefresher $changedNodeScopeRefresher,
RectorOutputStyle $rectorOutputStyle,
FilePathHelper $filePathHelper,
DocBlockUpdater $docBlockUpdater
DocBlockUpdater $docBlockUpdater,
NodeConnectingTraverser $nodeConnectingTraverser
): void {
$this->nodesToRemoveCollector = $nodesToRemoveCollector;
$this->nodeRemover = $nodeRemover;
Expand All @@ -160,6 +162,7 @@ public function autowire(
$this->rectorOutputStyle = $rectorOutputStyle;
$this->filePathHelper = $filePathHelper;
$this->docBlockUpdater = $docBlockUpdater;
$this->nodeConnectingTraverser = $nodeConnectingTraverser;
}

/**
Expand Down Expand Up @@ -435,9 +438,7 @@ private function connectNodes(array $nodes, Node $node): void
$nodes = [...$nodes, $nextNode];
}

$nodeTraverser = new NodeTraverser();
$nodeTraverser->addVisitor(new NodeConnectingVisitor());
$nodeTraverser->traverse($nodes);
$this->nodeConnectingTraverser->traverse($nodes);
}

private function printDebugCurrentFileAndRule(): void
Expand Down

0 comments on commit 02df443

Please sign in to comment.