[refactoring] update ast structure of "Throw" node

This commit is contained in:
Vadym Slizov 2020-09-17 16:37:34 +03:00
parent 80aa328386
commit 48aaa7cc47
7 changed files with 29 additions and 36 deletions

BIN
internal/php5/php5.go generated

Binary file not shown.

View File

@ -1167,15 +1167,14 @@ unticked_statement:
}
| T_THROW expr ';'
{
$$ = &ast.StmtThrow{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.StmtThrow{
Node: ast.Node{
Position: position.NewTokensPosition($1, $3),
},
ThrowTkn: $1,
Expr: $2,
SemiColonTkn: $3,
}
}
| T_GOTO T_STRING ';'
{

BIN
internal/php7/php7.go generated

Binary file not shown.

View File

@ -1077,15 +1077,14 @@ statement:
}
| T_THROW expr ';'
{
$$ = &ast.StmtThrow{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.StmtThrow{
Node: ast.Node{
Position: position.NewTokensPosition($1, $3),
},
ThrowTkn: $1,
Expr: $2,
SemiColonTkn: $3,
}
}
| T_GOTO T_STRING ';'
{

View File

@ -709,7 +709,9 @@ func (n *StmtSwitch) Accept(v NodeVisitor) {
// StmtThrow node
type StmtThrow struct {
Node
Expr Vertex
ThrowTkn *token.Token
Expr Vertex
SemiColonTkn *token.Token
}
func (n *StmtThrow) Accept(v NodeVisitor) {

View File

@ -260,3 +260,8 @@ func (v *FilterTokens) StmtFinally(n *ast.StmtFinally) {
n.OpenCurlyBracketTkn = nil
n.CloseCurlyBracketTkn = nil
}
func (v *FilterTokens) StmtThrow(n *ast.StmtThrow) {
n.ThrowTkn = nil
n.SemiColonTkn = nil
}

View File

@ -2674,23 +2674,11 @@ func (p *Printer) printStmtAltSwitch(n *ast.StmtSwitch) {
p.printToken(n.SemiColonTkn, ";")
}
func (p *Printer) printStmtThrow(n ast.Vertex) {
nn := n.(*ast.StmtThrow)
p.printFreeFloating(nn, token.Start)
p.write([]byte("throw"))
if nn.Expr.GetNode().Tokens.IsEmpty() {
p.write([]byte(" "))
}
p.Print(nn.Expr)
p.printFreeFloating(nn, token.Expr)
p.printFreeFloating(nn, token.SemiColon)
if n.GetNode().Tokens.IsEmpty() {
p.write([]byte(";"))
}
p.printFreeFloating(nn, token.End)
func (p *Printer) printStmtThrow(n *ast.StmtThrow) {
p.printToken(n.ThrowTkn, "throw")
p.bufStart = " "
p.Print(n.Expr)
p.printToken(n.SemiColonTkn, ";")
}
func (p *Printer) printStmtTraitAdaptationList(n ast.Vertex) {