From ae6fe5200551439ee9f8ca0b7f0e2203656651c6 Mon Sep 17 00:00:00 2001 From: vadim Date: Fri, 22 Dec 2017 13:28:58 +0200 Subject: [PATCH] error_suppress node --- node/expr/error_suppress.go | 29 +++++++++++++++++++++++++++++ parser/parser.go | 2 +- parser/parser.y | 2 +- 3 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 node/expr/error_suppress.go diff --git a/node/expr/error_suppress.go b/node/expr/error_suppress.go new file mode 100644 index 0000000..8a81862 --- /dev/null +++ b/node/expr/error_suppress.go @@ -0,0 +1,29 @@ +package expr + +import ( + "fmt" + "io" + + "github.com/z7zmey/php-parser/node" +) + +type ErrorSuppress struct { + node.SimpleNode + expr node.Node +} + +func NewErrorSuppress(expression node.Node) node.Node { + return ErrorSuppress{ + node.SimpleNode{Name: "ErrorSuppress", Attributes: make(map[string]string)}, + expression, + } +} + +func (n ErrorSuppress) Print(out io.Writer, indent string) { + fmt.Fprintf(out, "\n%v%v [- -]", indent, n.Name) + + if n.expr != nil { + fmt.Fprintf(out, "\n%vexpr:", indent+" ") + n.expr.Print(out, indent+" ") + } +} diff --git a/parser/parser.go b/parser/parser.go index 673152e..94e7d5b 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -4195,7 +4195,7 @@ yydefault: yyDollar = yyS[yypt-2 : yypt+1] //line parser/parser.y:888 { - yyVAL.node = node.NewSimpleNode("Silence").Append(yyDollar[2].node) + yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) } case 360: yyDollar = yyS[yypt-1 : yypt+1] diff --git a/parser/parser.y b/parser/parser.y index dd13e1d..e2915d6 100644 --- a/parser/parser.y +++ b/parser/parser.y @@ -885,7 +885,7 @@ expr_without_variable: | T_BOOL_CAST expr { $$ = cast.NewCastBool($2) } | T_UNSET_CAST expr { $$ = cast.NewCastUnset($2) } | T_EXIT exit_expr { $$ = expr.NewExit($2, strings.EqualFold($1.Value, "die")) } - | '@' expr { $$ = node.NewSimpleNode("Silence").Append($2); } + | '@' expr { $$ = expr.NewErrorSuppress($2) } | scalar { $$ = $1; } | '`' backticks_expr '`' { $$ = expr.NewShellExec($2) } | T_PRINT expr { $$ = expr.NewPrint($2) }