From 59ef6220825a39294e7de034fb154fc43b0a81b9 Mon Sep 17 00:00:00 2001 From: Vadym Slizov Date: Sun, 6 Sep 2020 13:09:00 +0300 Subject: [PATCH] [refactoring] update ast structure of "Return" node --- internal/php5/php5.go | Bin 292106 -> 291414 bytes internal/php5/php5.y | 50 ++++++++++++++----------------- internal/php7/php7.go | Bin 244481 -> 244258 bytes internal/php7/php7.y | 17 +++++------ pkg/ast/node.go | 4 ++- pkg/ast/visitor/filter_tokens.go | 5 ++++ pkg/printer/printer.go | 18 ++++------- 7 files changed, 45 insertions(+), 49 deletions(-) diff --git a/internal/php5/php5.go b/internal/php5/php5.go index c43d502c0cdb079727b65e15b09585de9282865b..d7d7936f765403286ef4cce4244492efe9713623 100644 GIT binary patch delta 7899 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

;m9JcdKn_d+jWsK(UM$9({(Yf3qI(> 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 HEBb!{w8Ft0 diff --git a/internal/php5/php5.y b/internal/php5/php5.y index 355007f..be091ce 100644 --- a/internal/php5/php5.y +++ b/internal/php5/php5.y @@ -992,39 +992,35 @@ unticked_statement: } | T_RETURN ';' { - $$ = &ast.StmtReturn{ast.Node{}, nil} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Expr, $2.SkippedTokens) - yylex.(*Parser).setToken($$, token.SemiColon, $2.SkippedTokens) + $$ = &ast.StmtReturn{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $2), + }, + ReturnTkn: $1, + SemiColonTkn: $2, + } } | T_RETURN expr_without_variable ';' { - $$ = &ast.StmtReturn{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Expr, $3.SkippedTokens) - yylex.(*Parser).setToken($$, token.SemiColon, $3.SkippedTokens) + $$ = &ast.StmtReturn{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $3), + }, + ReturnTkn: $1, + Expr: $2, + SemiColonTkn: $3, + } } | T_RETURN variable ';' { - $$ = &ast.StmtReturn{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Expr, $3.SkippedTokens) - yylex.(*Parser).setToken($$, token.SemiColon, $3.SkippedTokens) + $$ = &ast.StmtReturn{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $3), + }, + ReturnTkn: $1, + Expr: $2, + SemiColonTkn: $3, + } } | yield_expr ';' { diff --git a/internal/php7/php7.go b/internal/php7/php7.go index d34558c203a38f2ea33c58eef621fd08ae7c7025..7ce01b9fe68ae02018ccf855e505cf9f3707a36c 100644 GIT binary patch delta 5540 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 M?~lQ9sL`bU2jDpy_W%F@ delta 5633 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 diff --git a/internal/php7/php7.y b/internal/php7/php7.y index d3cfde3..45741de 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -941,15 +941,14 @@ statement: } | T_RETURN optional_expr ';' { - $$ = &ast.StmtReturn{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Expr, $3.SkippedTokens) - yylex.(*Parser).setToken($$, token.SemiColon, $3.SkippedTokens) + $$ = &ast.StmtReturn{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $3), + }, + ReturnTkn: $1, + Expr: $2, + SemiColonTkn: $3, + } } | T_GLOBAL global_var_list ';' { diff --git a/pkg/ast/node.go b/pkg/ast/node.go index 2ed7187..1bed711 100644 --- a/pkg/ast/node.go +++ b/pkg/ast/node.go @@ -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) { diff --git a/pkg/ast/visitor/filter_tokens.go b/pkg/ast/visitor/filter_tokens.go index 4cc6a27..91f6ddd 100644 --- a/pkg/ast/visitor/filter_tokens.go +++ b/pkg/ast/visitor/filter_tokens.go @@ -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 +} diff --git a/pkg/printer/printer.go b/pkg/printer/printer.go index 3380c90..469a837 100644 --- a/pkg/printer/printer.go +++ b/pkg/printer/printer.go @@ -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) {