mirror of
https://github.com/rectorphp/rector.git
synced 2025-02-24 03:35:01 +01:00
dummy node prepend
This commit is contained in:
parent
b7e5942489
commit
2032e2762d
@ -4,6 +4,7 @@ namespace Rector\Rector\Contrib\Nette\DI;
|
||||
|
||||
use PhpParser\Node;
|
||||
use PhpParser\Node\Expr\MethodCall;
|
||||
use PhpParser\Node\Stmt\Expression;
|
||||
use Rector\Node\NodeFactory;
|
||||
use Rector\NodeAnalyzer\MethodCallAnalyzer;
|
||||
use Rector\Rector\AbstractRector;
|
||||
@ -26,6 +27,11 @@ final class CompilerArgumentsRector extends AbstractRector
|
||||
*/
|
||||
private $methodCallAnalyzer;
|
||||
|
||||
/**
|
||||
* @var Expression[]
|
||||
*/
|
||||
private $expressionsToPrepend = [];
|
||||
|
||||
public function __construct(MethodCallAnalyzer $methodCallAnalyzer, NodeFactory $nodeFactory)
|
||||
{
|
||||
$this->methodCallAnalyzer = $methodCallAnalyzer;
|
||||
@ -41,17 +47,43 @@ final class CompilerArgumentsRector extends AbstractRector
|
||||
return count($node->args) >= 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Node[] $nodes
|
||||
* @return Node[]
|
||||
*/
|
||||
public function afterTraverse(array $nodes): array
|
||||
{
|
||||
// statements with current key and prepends some
|
||||
$nodes = array_merge($nodes, $this->expressionsToPrepend);
|
||||
|
||||
$this->expressionsToPrepend = [];
|
||||
|
||||
return $nodes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param MethodCall $methodCallNode
|
||||
*/
|
||||
public function refactor(Node $methodCallNode): ?Node
|
||||
{
|
||||
$oldArguments = $methodCallNode->args;
|
||||
|
||||
$addConfigMethodCallNode = clone $methodCallNode;
|
||||
$addConfigMethodCallNode->name = 'addConfig';
|
||||
$addConfigMethodCallNode->args = [$oldArguments[0]];
|
||||
|
||||
$this->expressionsToPrepend[] = new Expression($addConfigMethodCallNode);
|
||||
|
||||
if (isset($oldArguments[1])) {
|
||||
$setClassNameMethodCallNode = clone $methodCallNode;
|
||||
$setClassNameMethodCallNode->name = 'setClassName';
|
||||
$setClassNameMethodCallNode->args = [$oldArguments[1]];
|
||||
|
||||
$this->expressionsToPrepend[] = new Expression($setClassNameMethodCallNode);
|
||||
}
|
||||
|
||||
$methodCallNode->args = [];
|
||||
|
||||
|
||||
|
||||
// $methodCallNode->setAttribute(Attribute::ORIGINAL_NODE, null);
|
||||
|
||||
return $methodCallNode;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user