From 1458547d25a983f7bf41d94ade75f619fe44c1f2 Mon Sep 17 00:00:00 2001 From: hhashimoto Date: Sun, 12 Mar 2017 12:56:00 +0000 Subject: [PATCH] fix parsing class bug --- src/parser/visitor/ClassParserVisitor.php | 6 +++++- tests/fixtures/MyCollection2.php | 4 ++++ tests/parser/ClassParserTest.php | 7 +++++++ 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 tests/fixtures/MyCollection2.php diff --git a/src/parser/visitor/ClassParserVisitor.php b/src/parser/visitor/ClassParserVisitor.php index 5925974..b108a44 100644 --- a/src/parser/visitor/ClassParserVisitor.php +++ b/src/parser/visitor/ClassParserVisitor.php @@ -12,7 +12,11 @@ public function visitClass(Class_ $node) { $struct = $this->getStruct(); if ($node->extends !== null) { - $struct->setParentClassName(implode('\\', $node->extends->parts)); + if ($node->extends->getType() === 'Name_FullyQualified') { + $struct->setParentClassName('\\' . implode('\\', $node->extends->parts)); + } else { + $struct->setParentClassName(implode('\\', $node->extends->parts)); + } } foreach ($node->implements as $name) { diff --git a/tests/fixtures/MyCollection2.php b/tests/fixtures/MyCollection2.php new file mode 100644 index 0000000..f460a74 --- /dev/null +++ b/tests/fixtures/MyCollection2.php @@ -0,0 +1,4 @@ +assertEquals('phootwork\collection\AbstractCollection', $class->getParentClassName()); $this->assertTrue($class->hasInterface('phootwork\collection\Collection')); } + + public function testMyCollection2() { + $class = PhpClass::fromFile(__DIR__ . '/../fixtures/MyCollection2.php'); + + $this->assertEquals('\phootwork\collection\AbstractCollection', $class->getParentClassName()); + $this->assertTrue($class->hasInterface('\phootwork\collection\Collection')); + } public function testTypeClass() { $class = PhpClass::fromFile(__DIR__ . '/../fixtures/TypeClass.php');