[refactoring] update ast structure of "Return" node

This commit is contained in:
Vadym Slizov
2020-09-06 13:09:00 +03:00
parent e817f8dd8d
commit 59ef622082
7 changed files with 892 additions and 901 deletions

View File

@@ -618,7 +618,9 @@ func (n *StmtPropertyList) Accept(v NodeVisitor) {
// StmtReturn node
type StmtReturn struct {
Node
Expr Vertex
ReturnTkn *token.Token
Expr Vertex
SemiColonTkn *token.Token
}
func (n *StmtReturn) Accept(v NodeVisitor) {

View File

@@ -173,3 +173,8 @@ func (v *FilterTokens) StmtContinue(n *ast.StmtContinue) {
n.ContinueTkn = nil
n.SemiColonTkn = nil
}
func (v *FilterTokens) StmtReturn(n *ast.StmtReturn) {
n.ReturnTkn = nil
n.SemiColonTkn = nil
}

View File

@@ -2690,21 +2690,15 @@ func (p *Printer) printStmtProperty(n ast.Vertex) {
p.printFreeFloating(nn, token.End)
}
func (p *Printer) printStmtReturn(n ast.Vertex) {
nn := n.(*ast.StmtReturn)
p.printFreeFloating(nn, token.Start)
func (p *Printer) printStmtReturn(n *ast.StmtReturn) {
p.printToken(n.ReturnTkn, "return")
io.WriteString(p.w, "return")
p.bufStart = " "
p.Print(nn.Expr)
p.printFreeFloating(nn, token.Expr)
p.printFreeFloating(nn, token.SemiColon)
if n.GetNode().Tokens.IsEmpty() {
io.WriteString(p.w, ";")
if n.Expr != nil {
p.bufStart = " "
}
p.Print(n.Expr)
p.printFreeFloating(nn, token.End)
p.printToken(n.SemiColonTkn, ";")
}
func (p *Printer) printStmtStaticVar(n ast.Vertex) {