From 1efa7ff5eecb138589cd39108fb2aacc3e0db592 Mon Sep 17 00:00:00 2001 From: vadim Date: Sat, 9 Dec 2017 13:13:12 +0200 Subject: [PATCH] trait_method_ref node --- node/stmt/trait_method_ref.go | 32 ++++++++++++++++++++++++++++++++ parser/parser.go | 4 ++-- parser/parser.y | 4 ++-- 3 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 node/stmt/trait_method_ref.go diff --git a/node/stmt/trait_method_ref.go b/node/stmt/trait_method_ref.go new file mode 100644 index 0000000..13b668e --- /dev/null +++ b/node/stmt/trait_method_ref.go @@ -0,0 +1,32 @@ +package stmt + +import ( + "fmt" + "io" + + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/token" +) + +type TraitMethodRef struct { + node.SimpleNode + trait node.Node + method token.Token +} + +func NewTraitMethodRef(trait node.Node, method token.Token) node.Node { + return TraitMethodRef{ + node.SimpleNode{Name: "TraitMethodRef", Attributes: make(map[string]string)}, + trait, + method, + } +} + +func (n TraitMethodRef) Print(out io.Writer, indent string) { + fmt.Fprintf(out, "\n%v%v [- -] %q", indent, n.Name, n.method.Value) + + if n.trait != nil { + fmt.Fprintf(out, "\n%vtrait", indent+" ") + n.trait.Print(out, indent+" ") + } +} diff --git a/parser/parser.go b/parser/parser.go index 898f6c7..08152b0 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -3585,7 +3585,7 @@ yydefault: yyDollar = yyS[yypt-1 : yypt+1] //line parser/parser.y:720 { - yyVAL.node = node.NewSimpleNode("TraitMethodRef").Attribute("value", yyDollar[1].token.Value) + yyVAL.node = stmt.NewTraitMethodRef(nil, yyDollar[1].token) } case 259: yyDollar = yyS[yypt-1 : yypt+1] @@ -3597,7 +3597,7 @@ yydefault: yyDollar = yyS[yypt-3 : yypt+1] //line parser/parser.y:725 { - yyVAL.node = node.NewSimpleNode("TraitMethodRef").Append(yyDollar[1].node).Attribute("value", yyDollar[3].token.Value) + yyVAL.node = stmt.NewTraitMethodRef(yyDollar[1].node, yyDollar[3].token) } case 261: yyDollar = yyS[yypt-1 : yypt+1] diff --git a/parser/parser.y b/parser/parser.y index 2881210..f49e7e2 100644 --- a/parser/parser.y +++ b/parser/parser.y @@ -717,12 +717,12 @@ trait_alias: ; trait_method_reference: - identifier { $$ = node.NewSimpleNode("TraitMethodRef").Attribute("value", $1.Value); } + identifier { $$ = stmt.NewTraitMethodRef(nil, $1) } | absolute_trait_method_reference { $$ = $1; } ; absolute_trait_method_reference: - name T_PAAMAYIM_NEKUDOTAYIM identifier { $$ = node.NewSimpleNode("TraitMethodRef").Append($1).Attribute("value", $3.Value) } + name T_PAAMAYIM_NEKUDOTAYIM identifier { $$ = stmt.NewTraitMethodRef($1, $3) } ; method_body: