create ClassExtends ClassImplements InterfaceExtends nodes
This commit is contained in:
@@ -66,11 +66,13 @@ func (nsr *NamespaceResolver) EnterNode(w walker.Walkable) bool {
|
||||
|
||||
case *stmt.Class:
|
||||
if n.Extends != nil {
|
||||
nsr.ResolveName(n.Extends, "")
|
||||
nsr.ResolveName(n.Extends.ClassName, "")
|
||||
}
|
||||
|
||||
for _, interfaceName := range n.Implements {
|
||||
nsr.ResolveName(interfaceName, "")
|
||||
if n.Implements != nil {
|
||||
for _, interfaceName := range n.Implements.InterfaceNames {
|
||||
nsr.ResolveName(interfaceName, "")
|
||||
}
|
||||
}
|
||||
|
||||
if n.ClassName != nil {
|
||||
@@ -78,8 +80,10 @@ func (nsr *NamespaceResolver) EnterNode(w walker.Walkable) bool {
|
||||
}
|
||||
|
||||
case *stmt.Interface:
|
||||
for _, interfaceName := range n.Extends {
|
||||
nsr.ResolveName(interfaceName, "")
|
||||
if n.Extends != nil {
|
||||
for _, interfaceName := range n.Extends.InterfaceNames {
|
||||
nsr.ResolveName(interfaceName, "")
|
||||
}
|
||||
}
|
||||
|
||||
nsr.AddNamespacedName(n, n.InterfaceName.(*node.Identifier).Value)
|
||||
|
||||
@@ -411,9 +411,13 @@ func TestResolveClassName(t *testing.T) {
|
||||
class := &stmt.Class{
|
||||
PhpDocComment: "",
|
||||
ClassName: &node.Identifier{Value: "A"},
|
||||
Extends: nameAB,
|
||||
Implements: []node.Node{
|
||||
nameBC,
|
||||
Extends: &stmt.ClassExtends{
|
||||
ClassName: nameAB,
|
||||
},
|
||||
Implements: &stmt.ClassImplements{
|
||||
InterfaceNames: []node.Node{
|
||||
nameBC,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -442,9 +446,11 @@ func TestResolveInterfaceName(t *testing.T) {
|
||||
interfaceNode := &stmt.Interface{
|
||||
PhpDocComment: "",
|
||||
InterfaceName: &node.Identifier{Value: "A"},
|
||||
Extends: []node.Node{
|
||||
nameAB,
|
||||
nameBC,
|
||||
Extends: &stmt.InterfaceExtends{
|
||||
InterfaceNames: []node.Node{
|
||||
nameAB,
|
||||
nameBC,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user