Preview: ParentConnectingPhpDocNodeVisitor.php
Size: 1.21 KB
//opt/cpanel/ea-wappspector/vendor/rector/rector/src/PhpDocParser/PhpDocParser/PhpDocNodeVisitor/ParentConnectingPhpDocNodeVisitor.php
<?php
declare (strict_types=1);
namespace Rector\PhpDocParser\PhpDocParser\PhpDocNodeVisitor;
use PHPStan\PhpDocParser\Ast\Node;
use Rector\PhpDocParser\PhpDocParser\ValueObject\PhpDocAttributeKey;
/**
* @api
*
* Mimics https://github.com/nikic/PHP-Parser/blob/master/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php
*
* @see \Rector\Tests\PhpDocParser\PhpDocParser\PhpDocNodeVisitor\ParentConnectingPhpDocNodeVisitorTest
*/
final class ParentConnectingPhpDocNodeVisitor extends \Rector\PhpDocParser\PhpDocParser\PhpDocNodeVisitor\AbstractPhpDocNodeVisitor
{
/**
* @var Node[]
*/
private $stack = [];
public function beforeTraverse(Node $node) : void
{
$this->stack = [$node];
}
public function enterNode(Node $node) : Node
{
if ($this->stack !== []) {
$parentNode = $this->stack[\count($this->stack) - 1];
$node->setAttribute(PhpDocAttributeKey::PARENT, $parentNode);
}
$this->stack[] = $node;
return $node;
}
/**
* @return null|int|\PhpParser\Node|Node[] Replacement node (or special return
*/
public function leaveNode(Node $node)
{
\array_pop($this->stack);
return null;
}
}
Directory Contents
Dirs: 0 × Files: 4