Skip to content

Commit 1458547

Browse files
committed
fix parsing class bug
1 parent 841e810 commit 1458547

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

src/parser/visitor/ClassParserVisitor.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ public function visitClass(Class_ $node) {
1212
$struct = $this->getStruct();
1313

1414
if ($node->extends !== null) {
15-
$struct->setParentClassName(implode('\\', $node->extends->parts));
15+
if ($node->extends->getType() === 'Name_FullyQualified') {
16+
$struct->setParentClassName('\\' . implode('\\', $node->extends->parts));
17+
} else {
18+
$struct->setParentClassName(implode('\\', $node->extends->parts));
19+
}
1620
}
1721

1822
foreach ($node->implements as $name) {

tests/fixtures/MyCollection2.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?php
2+
class MyCollection2 extends \phootwork\collection\AbstractCollection implements \phootwork\collection\Collection {
3+
4+
}

tests/parser/ClassParserTest.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,13 @@ public function testMyCollection() {
7474
$this->assertEquals('phootwork\collection\AbstractCollection', $class->getParentClassName());
7575
$this->assertTrue($class->hasInterface('phootwork\collection\Collection'));
7676
}
77+
78+
public function testMyCollection2() {
79+
$class = PhpClass::fromFile(__DIR__ . '/../fixtures/MyCollection2.php');
80+
81+
$this->assertEquals('\phootwork\collection\AbstractCollection', $class->getParentClassName());
82+
$this->assertTrue($class->hasInterface('\phootwork\collection\Collection'));
83+
}
7784

7885
public function testTypeClass() {
7986
$class = PhpClass::fromFile(__DIR__ . '/../fixtures/TypeClass.php');

0 commit comments

Comments
 (0)