ParentConnectingVisitorTest.php 792 B

12345678910111213141516171819202122232425262728
  1. <?php declare(strict_types=1);
  2. namespace PhpParser\NodeVisitor;
  3. use PhpParser\Node\Stmt\ClassMethod;
  4. use PhpParser\NodeFinder;
  5. use PhpParser\NodeTraverser;
  6. use PhpParser\ParserFactory;
  7. final class ParentConnectingVisitorTest extends \PHPUnit\Framework\TestCase
  8. {
  9. public function testConnectsChildNodeToParentNode()
  10. {
  11. $ast = (new ParserFactory)->create(ParserFactory::PREFER_PHP7)->parse(
  12. '<?php class C { public function m() {} }'
  13. );
  14. $traverser = new NodeTraverser;
  15. $traverser->addVisitor(new ParentConnectingVisitor);
  16. $ast = $traverser->traverse($ast);
  17. $node = (new NodeFinder)->findFirstInstanceof($ast, ClassMethod::class);
  18. $this->assertSame('C', $node->getAttribute('parent')->name->toString());
  19. }
  20. }