[refactoring] update ast structure of "Root" and "Class" nodes

This commit is contained in:
Vadym Slizov
2020-12-04 11:02:38 +02:00
parent d19b3f609e
commit df1626b7dc
11 changed files with 1098 additions and 1106 deletions

View File

@@ -24,7 +24,6 @@ type NodeVisitor interface {
Variadic(n *Variadic)
Parameter(n *Parameter)
Identifier(n *Identifier)
ArgumentList(n *ArgumentList)
Argument(n *Argument)
StmtBreak(n *StmtBreak)

View File

@@ -23,7 +23,8 @@ func (n *Node) GetPosition() *position.Position {
// Root node
type Root struct {
Node
Stmts []Vertex
Stmts []Vertex
EndTkn *token.Token
}
func (n *Root) Accept(v NodeVisitor) {
@@ -87,19 +88,6 @@ func (n *Identifier) Accept(v NodeVisitor) {
v.Identifier(n)
}
// ArgumentList node
type ArgumentList struct {
Node
OpenParenthesisTkn *token.Token
Arguments []Vertex
SeparatorTkns []*token.Token
CloseParenthesisTkn *token.Token
}
func (n *ArgumentList) Accept(v NodeVisitor) {
v.ArgumentList(n)
}
// Argument node
type Argument struct {
Node
@@ -238,15 +226,17 @@ func (n *StmtCatch) Accept(v NodeVisitor) {
// StmtClass node
type StmtClass struct {
Node
Modifiers []Vertex
ClassTkn *token.Token
ClassName Vertex
ArgumentList Vertex
Extends Vertex
Implements Vertex
OpenCurlyBracket *token.Token
Stmts []Vertex
CloseCurlyBracket *token.Token
Modifiers []Vertex
ClassTkn *token.Token
ClassName Vertex
OpenParenthesisTkn *token.Token
Arguments []Vertex
CloseParenthesisTkn *token.Token
Extends Vertex
Implements Vertex
OpenCurlyBracket *token.Token
Stmts []Vertex
CloseCurlyBracket *token.Token
}
func (n *StmtClass) Accept(v NodeVisitor) {
@@ -2098,6 +2088,19 @@ func (n *ParserSeparatedList) Accept(v NodeVisitor) {
v.ParserSeparatedList(n)
}
// ArgumentList node
type ArgumentList struct {
Node
OpenParenthesisTkn *token.Token
Arguments []Vertex
SeparatorTkns []*token.Token
CloseParenthesisTkn *token.Token
}
func (n *ArgumentList) Accept(v NodeVisitor) {
// do nothing
}
type ReturnType struct {
Node
ColonTkn *token.Token

View File

@@ -93,20 +93,6 @@ func (t *DFS) Traverse(n ast.Vertex) {
if !t.visitor.EnterNode(nn) {
return
}
case *ast.ArgumentList:
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Arguments != nil {
t.visitor.Enter("Arguments", false)
for _, c := range nn.Arguments {
t.Traverse(c)
}
t.visitor.Leave("Arguments", false)
}
case *ast.Argument:
if nn == nil {
return
@@ -195,10 +181,12 @@ func (t *DFS) Traverse(n ast.Vertex) {
}
t.visitor.Leave("Modifiers", false)
}
if nn.ArgumentList != nil {
t.visitor.Enter("ArgumentList", true)
t.Traverse(nn.ArgumentList)
t.visitor.Leave("ArgumentList", true)
if nn.Arguments != nil {
t.visitor.Enter("Arguments", false)
for _, c := range nn.Arguments {
t.Traverse(c)
}
t.visitor.Leave("Arguments", false)
}
if nn.Extends != nil {
t.visitor.Enter("Extends", true)

View File

@@ -230,12 +230,6 @@ func (v *Dump) Identifier(n *ast.Identifier) {
v.print(fmt.Sprintf("Value: []byte(%q),\n", n.Value))
}
func (v *Dump) ArgumentList(n *ast.ArgumentList) {
v.printIndentIfNotSingle(v.indent - 1)
v.print("&ast.ArgumentList{\n")
v.printNode(n.GetNode())
}
func (v *Dump) Argument(n *ast.Argument) {
v.printIndentIfNotSingle(v.indent - 1)
v.print("&ast.Argument{\n")

View File

@@ -46,10 +46,6 @@ func (v *Null) Identifier(_ *ast.Identifier) {
// do nothing
}
func (v *Null) ArgumentList(_ *ast.ArgumentList) {
// do nothing
}
func (v *Null) Argument(_ *ast.Argument) {
// do nothing
}

View File

@@ -1450,9 +1450,9 @@ func (p *PrettyPrinter) printStmtClass(n ast.Vertex) {
p.Print(nn.ClassName)
}
if nn.ArgumentList != nil {
if nn.Arguments != nil {
io.WriteString(p.w, "(")
p.joinPrint(", ", nn.ArgumentList.(*ast.ArgumentList).Arguments)
p.joinPrint(", ", nn.Arguments)
io.WriteString(p.w, ")")
}

View File

@@ -2067,10 +2067,10 @@ func (p *Printer) printStmtClass(n ast.Vertex) {
p.Print(nn.ClassName)
}
if nn.ArgumentList != nil {
p.printFreeFloatingOrDefault(nn.ArgumentList, token.Start, "(")
p.joinPrint(",", nn.ArgumentList.(*ast.ArgumentList).Arguments)
p.printFreeFloatingOrDefault(nn.ArgumentList, token.End, ")")
if nn.Arguments != nil {
p.printToken(nn.OpenParenthesisTkn, "(")
p.joinPrint(",", nn.Arguments)
p.printToken(nn.CloseParenthesisTkn, ")")
}
if nn.Extends != nil {