[refactoring] update ast structure of "ClassExtends", "ClassImplements", "InterfaceExtends", "StmtTraitUse" and "StmtTraitUsePrecedence" nodes

This commit is contained in:
Vadym Slizov
2020-11-22 13:02:36 +02:00
parent fe2e097d8f
commit 4c54c56af5
9 changed files with 1665 additions and 1654 deletions

View File

@@ -242,8 +242,8 @@ type StmtClass struct {
ClassTkn *token.Token
ClassName Vertex
ArgumentList Vertex
Extends *StmtClassExtends
Implements *StmtClassImplements
Extends Vertex
Implements Vertex
OpenCurlyBracket *token.Token
Stmts []Vertex
CloseCurlyBracket *token.Token
@@ -269,6 +269,7 @@ func (n *StmtClassConstList) Accept(v NodeVisitor) {
// StmtClassExtends node
type StmtClassExtends struct {
Node
ExtendTkn *token.Token
ClassName Vertex
}
@@ -279,7 +280,9 @@ func (n *StmtClassExtends) Accept(v NodeVisitor) {
// StmtClassImplements node
type StmtClassImplements struct {
Node
ImplementsTkn *token.Token
InterfaceNames []Vertex
SeparatorTkns []*token.Token
}
func (n *StmtClassImplements) Accept(v NodeVisitor) {
@@ -582,7 +585,7 @@ func (n *StmtInlineHtml) Accept(v NodeVisitor) {
type StmtInterface struct {
Node
InterfaceName Vertex
Extends *StmtInterfaceExtends
Extends Vertex
Stmts []Vertex
}
@@ -593,7 +596,9 @@ func (n *StmtInterface) Accept(v NodeVisitor) {
// StmtInterfaceExtends node
type StmtInterfaceExtends struct {
Node
ExtendsTkn *token.Token
InterfaceNames []Vertex
SeparatorTkns []*token.Token
}
func (n *StmtInterfaceExtends) Accept(v NodeVisitor) {
@@ -746,8 +751,8 @@ type StmtTrait struct {
Node
TraitTkn *token.Token
TraitName Vertex
Extends *StmtClassExtends
Implements *StmtClassImplements
Extends Vertex
Implements Vertex
OpenCurlyBracket *token.Token
Stmts []Vertex
CloseCurlyBracket *token.Token
@@ -781,8 +786,10 @@ func (n *StmtTraitMethodRef) Accept(v NodeVisitor) {
// StmtTraitUse node
type StmtTraitUse struct {
Node
Traits []Vertex
TraitAdaptationList Vertex
UseTkn *token.Token
Traits []Vertex
SeparatorTkns []*token.Token
Adaptations Vertex
}
func (n *StmtTraitUse) Accept(v NodeVisitor) {
@@ -804,8 +811,10 @@ func (n *StmtTraitUseAlias) Accept(v NodeVisitor) {
// StmtTraitUsePrecedence node
type StmtTraitUsePrecedence struct {
Node
Ref Vertex
Insteadof []Vertex
Ref Vertex
InsteadofTkn *token.Token
Insteadof []Vertex
SeparatorTkns []*token.Token
}
func (n *StmtTraitUsePrecedence) Accept(v NodeVisitor) {

View File

@@ -893,10 +893,10 @@ func (t *DFS) Traverse(n ast.Vertex) {
}
t.visitor.Leave("Traits", false)
}
if nn.TraitAdaptationList != nil {
t.visitor.Enter("TraitAdaptationList", true)
t.Traverse(nn.TraitAdaptationList)
t.visitor.Leave("TraitAdaptationList", true)
if nn.Adaptations != nil {
t.visitor.Enter("Adaptations", true)
t.Traverse(nn.Adaptations)
t.visitor.Leave("Adaptations", true)
}
case *ast.StmtTraitUseAlias:
if nn == nil {

View File

@@ -73,11 +73,11 @@ func (nsr *NamespaceResolver) StmtGroupUse(n *ast.StmtGroupUse) {
func (nsr *NamespaceResolver) StmtClass(n *ast.StmtClass) {
if n.Extends != nil {
nsr.ResolveName(n.Extends.ClassName, "")
nsr.ResolveName(n.Extends.(*ast.StmtClassExtends).ClassName, "")
}
if n.Implements != nil {
for _, interfaceName := range n.Implements.InterfaceNames {
for _, interfaceName := range n.Implements.(*ast.StmtClassImplements).InterfaceNames {
nsr.ResolveName(interfaceName, "")
}
}
@@ -89,7 +89,7 @@ func (nsr *NamespaceResolver) StmtClass(n *ast.StmtClass) {
func (nsr *NamespaceResolver) StmtInterface(n *ast.StmtInterface) {
if n.Extends != nil {
for _, interfaceName := range n.Extends.InterfaceNames {
for _, interfaceName := range n.Extends.(*ast.StmtInterfaceExtends).InterfaceNames {
nsr.ResolveName(interfaceName, "")
}
}
@@ -184,7 +184,7 @@ func (nsr *NamespaceResolver) StmtTraitUse(n *ast.StmtTraitUse) {
nsr.ResolveName(t, "")
}
if adaptationList, ok := n.TraitAdaptationList.(*ast.StmtTraitAdaptationList); ok {
if adaptationList, ok := n.Adaptations.(*ast.StmtTraitAdaptationList); ok {
for _, a := range adaptationList.Adaptations {
switch aa := a.(type) {
case *ast.StmtTraitUsePrecedence: