create ArgumentList node
This commit is contained in:
@@ -99,11 +99,13 @@ func TestReferenceArgs(t *testing.T) {
|
||||
&name.NamePart{Value: "Foo"},
|
||||
},
|
||||
},
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{
|
||||
Variadic: false,
|
||||
IsReference: false,
|
||||
Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
|
||||
ArgumentList: &node.ArgumentList{
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{
|
||||
Variadic: false,
|
||||
IsReference: false,
|
||||
Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -7,15 +7,15 @@ import (
|
||||
|
||||
// FunctionCall node
|
||||
type FunctionCall struct {
|
||||
Function node.Node
|
||||
Arguments []node.Node
|
||||
Function node.Node
|
||||
ArgumentList *node.ArgumentList
|
||||
}
|
||||
|
||||
// NewFunctionCall node constructor
|
||||
func NewFunctionCall(Function node.Node, Arguments []node.Node) *FunctionCall {
|
||||
func NewFunctionCall(Function node.Node, ArgumentList *node.ArgumentList) *FunctionCall {
|
||||
return &FunctionCall{
|
||||
Function,
|
||||
Arguments,
|
||||
ArgumentList,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,13 +36,9 @@ func (n *FunctionCall) Walk(v walker.Visitor) {
|
||||
n.Function.Walk(vv)
|
||||
}
|
||||
|
||||
if n.Arguments != nil {
|
||||
vv := v.GetChildrenVisitor("Arguments")
|
||||
for _, nn := range n.Arguments {
|
||||
if nn != nil {
|
||||
nn.Walk(vv)
|
||||
}
|
||||
}
|
||||
if n.ArgumentList != nil {
|
||||
vv := v.GetChildrenVisitor("ArgumentList")
|
||||
n.ArgumentList.Walk(vv)
|
||||
}
|
||||
|
||||
v.LeaveNode(n)
|
||||
|
||||
@@ -7,17 +7,17 @@ import (
|
||||
|
||||
// MethodCall node
|
||||
type MethodCall struct {
|
||||
Variable node.Node
|
||||
Method node.Node
|
||||
Arguments []node.Node
|
||||
Variable node.Node
|
||||
Method node.Node
|
||||
ArgumentList *node.ArgumentList
|
||||
}
|
||||
|
||||
// NewMethodCall node constructor
|
||||
func NewMethodCall(Variable node.Node, Method node.Node, Arguments []node.Node) *MethodCall {
|
||||
func NewMethodCall(Variable node.Node, Method node.Node, ArgumentList *node.ArgumentList) *MethodCall {
|
||||
return &MethodCall{
|
||||
Variable,
|
||||
Method,
|
||||
Arguments,
|
||||
ArgumentList,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,13 +43,9 @@ func (n *MethodCall) Walk(v walker.Visitor) {
|
||||
n.Method.Walk(vv)
|
||||
}
|
||||
|
||||
if n.Arguments != nil {
|
||||
vv := v.GetChildrenVisitor("Arguments")
|
||||
for _, nn := range n.Arguments {
|
||||
if nn != nil {
|
||||
nn.Walk(vv)
|
||||
}
|
||||
}
|
||||
if n.ArgumentList != nil {
|
||||
vv := v.GetChildrenVisitor("ArgumentList")
|
||||
n.ArgumentList.Walk(vv)
|
||||
}
|
||||
|
||||
v.LeaveNode(n)
|
||||
|
||||
@@ -7,15 +7,15 @@ import (
|
||||
|
||||
// New node
|
||||
type New struct {
|
||||
Class node.Node
|
||||
Arguments []node.Node
|
||||
Class node.Node
|
||||
ArgumentList *node.ArgumentList
|
||||
}
|
||||
|
||||
// NewNew node constructor
|
||||
func NewNew(Class node.Node, Arguments []node.Node) *New {
|
||||
func NewNew(Class node.Node, ArgumentList *node.ArgumentList) *New {
|
||||
return &New{
|
||||
Class,
|
||||
Arguments,
|
||||
ArgumentList,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,13 +36,9 @@ func (n *New) Walk(v walker.Visitor) {
|
||||
n.Class.Walk(vv)
|
||||
}
|
||||
|
||||
if n.Arguments != nil {
|
||||
vv := v.GetChildrenVisitor("Arguments")
|
||||
for _, nn := range n.Arguments {
|
||||
if nn != nil {
|
||||
nn.Walk(vv)
|
||||
}
|
||||
}
|
||||
if n.ArgumentList != nil {
|
||||
vv := v.GetChildrenVisitor("ArgumentList")
|
||||
n.ArgumentList.Walk(vv)
|
||||
}
|
||||
|
||||
v.LeaveNode(n)
|
||||
|
||||
@@ -7,17 +7,17 @@ import (
|
||||
|
||||
// StaticCall node
|
||||
type StaticCall struct {
|
||||
Class node.Node
|
||||
Call node.Node
|
||||
Arguments []node.Node
|
||||
Class node.Node
|
||||
Call node.Node
|
||||
ArgumentList *node.ArgumentList
|
||||
}
|
||||
|
||||
// NewStaticCall node constructor
|
||||
func NewStaticCall(Class node.Node, Call node.Node, Arguments []node.Node) *StaticCall {
|
||||
func NewStaticCall(Class node.Node, Call node.Node, ArgumentList *node.ArgumentList) *StaticCall {
|
||||
return &StaticCall{
|
||||
Class,
|
||||
Call,
|
||||
Arguments,
|
||||
ArgumentList,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,13 +43,9 @@ func (n *StaticCall) Walk(v walker.Visitor) {
|
||||
n.Call.Walk(vv)
|
||||
}
|
||||
|
||||
if n.Arguments != nil {
|
||||
vv := v.GetChildrenVisitor("Arguments")
|
||||
for _, nn := range n.Arguments {
|
||||
if nn != nil {
|
||||
nn.Walk(vv)
|
||||
}
|
||||
}
|
||||
if n.ArgumentList != nil {
|
||||
vv := v.GetChildrenVisitor("ArgumentList")
|
||||
n.ArgumentList.Walk(vv)
|
||||
}
|
||||
|
||||
v.LeaveNode(n)
|
||||
|
||||
@@ -29,7 +29,7 @@ func TestFunctionCall(t *testing.T) {
|
||||
&name.NamePart{Value: "foo"},
|
||||
},
|
||||
},
|
||||
Arguments: []node.Node{},
|
||||
ArgumentList: &node.ArgumentList{},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -58,7 +58,7 @@ func TestFunctionCallRelative(t *testing.T) {
|
||||
&name.NamePart{Value: "foo"},
|
||||
},
|
||||
},
|
||||
Arguments: []node.Node{},
|
||||
ArgumentList: &node.ArgumentList{},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -87,12 +87,14 @@ func TestFunctionFullyQualified(t *testing.T) {
|
||||
&name.NamePart{Value: "foo"},
|
||||
},
|
||||
},
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{
|
||||
Variadic: false,
|
||||
IsReference: false,
|
||||
Expr: &expr.ShortArray{
|
||||
Items: []node.Node{},
|
||||
ArgumentList: &node.ArgumentList{
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{
|
||||
Variadic: false,
|
||||
IsReference: false,
|
||||
Expr: &expr.ShortArray{
|
||||
Items: []node.Node{},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -120,12 +122,14 @@ func TestFunctionCallVar(t *testing.T) {
|
||||
&stmt.Expression{
|
||||
Expr: &expr.FunctionCall{
|
||||
Function: &expr.Variable{VarName: &node.Identifier{Value: "foo"}},
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{
|
||||
Variadic: false,
|
||||
IsReference: false,
|
||||
Expr: &expr.Yield{
|
||||
Value: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
|
||||
ArgumentList: &node.ArgumentList{
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{
|
||||
Variadic: false,
|
||||
IsReference: false,
|
||||
Expr: &expr.Yield{
|
||||
Value: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -157,13 +161,15 @@ func TestFunctionCallExprArg(t *testing.T) {
|
||||
&name.NamePart{Value: "ceil"},
|
||||
},
|
||||
},
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{
|
||||
Variadic: false,
|
||||
IsReference: false,
|
||||
Expr: &binary.Div{
|
||||
Left: &expr.Variable{VarName: &node.Identifier{Value: "foo"}},
|
||||
Right: &scalar.Lnumber{Value: "3"},
|
||||
ArgumentList: &node.ArgumentList{
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{
|
||||
Variadic: false,
|
||||
IsReference: false,
|
||||
Expr: &binary.Div{
|
||||
Left: &expr.Variable{VarName: &node.Identifier{Value: "foo"}},
|
||||
Right: &scalar.Lnumber{Value: "3"},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -19,9 +19,9 @@ func TestMethodCall(t *testing.T) {
|
||||
Stmts: []node.Node{
|
||||
&stmt.Expression{
|
||||
Expr: &expr.MethodCall{
|
||||
Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
|
||||
Method: &node.Identifier{Value: "foo"},
|
||||
Arguments: []node.Node{},
|
||||
Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
|
||||
Method: &node.Identifier{Value: "foo"},
|
||||
ArgumentList: &node.ArgumentList{},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -54,7 +54,7 @@ func TestNewRelative(t *testing.T) {
|
||||
&name.NamePart{Value: "Foo"},
|
||||
},
|
||||
},
|
||||
Arguments: []node.Node{},
|
||||
ArgumentList: &node.ArgumentList{},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -83,7 +83,7 @@ func TestNewFullyQualified(t *testing.T) {
|
||||
&name.NamePart{Value: "Foo"},
|
||||
},
|
||||
},
|
||||
Arguments: []node.Node{},
|
||||
ArgumentList: &node.ArgumentList{},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -109,9 +109,11 @@ func TestNewAnonymous(t *testing.T) {
|
||||
Expr: &expr.New{
|
||||
Class: &stmt.Class{
|
||||
PhpDocComment: "",
|
||||
Args: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
ArgumentList: &node.ArgumentList{
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
},
|
||||
},
|
||||
Stmts: []node.Node{},
|
||||
},
|
||||
|
||||
@@ -26,8 +26,8 @@ func TestStaticCall(t *testing.T) {
|
||||
&name.NamePart{Value: "Foo"},
|
||||
},
|
||||
},
|
||||
Call: &node.Identifier{Value: "bar"},
|
||||
Arguments: []node.Node{},
|
||||
Call: &node.Identifier{Value: "bar"},
|
||||
ArgumentList: &node.ArgumentList{},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -56,8 +56,8 @@ func TestStaticCallRelative(t *testing.T) {
|
||||
&name.NamePart{Value: "Foo"},
|
||||
},
|
||||
},
|
||||
Call: &node.Identifier{Value: "bar"},
|
||||
Arguments: []node.Node{},
|
||||
Call: &node.Identifier{Value: "bar"},
|
||||
ArgumentList: &node.ArgumentList{},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -86,8 +86,8 @@ func TestStaticCallFullyQualified(t *testing.T) {
|
||||
&name.NamePart{Value: "Foo"},
|
||||
},
|
||||
},
|
||||
Call: &node.Identifier{Value: "bar"},
|
||||
Arguments: []node.Node{},
|
||||
Call: &node.Identifier{Value: "bar"},
|
||||
ArgumentList: &node.ArgumentList{},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -116,8 +116,8 @@ func TestStaticCallVar(t *testing.T) {
|
||||
&name.NamePart{Value: "Foo"},
|
||||
},
|
||||
},
|
||||
Call: &expr.Variable{VarName: &node.Identifier{Value: "bar"}},
|
||||
Arguments: []node.Node{},
|
||||
Call: &expr.Variable{VarName: &node.Identifier{Value: "bar"}},
|
||||
ArgumentList: &node.ArgumentList{},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -141,9 +141,9 @@ func TestStaticCallVarVar(t *testing.T) {
|
||||
Stmts: []node.Node{
|
||||
&stmt.Expression{
|
||||
Expr: &expr.StaticCall{
|
||||
Class: &expr.Variable{VarName: &node.Identifier{Value: "foo"}},
|
||||
Call: &expr.Variable{VarName: &node.Identifier{Value: "bar"}},
|
||||
Arguments: []node.Node{},
|
||||
Class: &expr.Variable{VarName: &node.Identifier{Value: "foo"}},
|
||||
Call: &expr.Variable{VarName: &node.Identifier{Value: "bar"}},
|
||||
ArgumentList: &node.ArgumentList{},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -146,10 +146,10 @@ var nodesToTest = []struct {
|
||||
},
|
||||
{
|
||||
&expr.FunctionCall{
|
||||
Function: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
|
||||
Arguments: []node.Node{&node.Argument{}},
|
||||
Function: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
|
||||
ArgumentList: &node.ArgumentList{},
|
||||
},
|
||||
[]string{"Function", "Arguments"},
|
||||
[]string{"Function", "ArgumentList"},
|
||||
map[string]interface{}{},
|
||||
},
|
||||
{
|
||||
@@ -194,19 +194,19 @@ var nodesToTest = []struct {
|
||||
},
|
||||
{
|
||||
&expr.MethodCall{
|
||||
Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
|
||||
Method: &node.Identifier{Value: "foo"},
|
||||
Arguments: []node.Node{&node.Argument{}},
|
||||
Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
|
||||
Method: &node.Identifier{Value: "foo"},
|
||||
ArgumentList: &node.ArgumentList{},
|
||||
},
|
||||
[]string{"Variable", "Method", "Arguments"},
|
||||
[]string{"Variable", "Method", "ArgumentList"},
|
||||
map[string]interface{}{},
|
||||
},
|
||||
{
|
||||
&expr.New{
|
||||
Class: &name.Name{},
|
||||
Arguments: []node.Node{&node.Argument{}},
|
||||
Class: &name.Name{},
|
||||
ArgumentList: &node.ArgumentList{},
|
||||
},
|
||||
[]string{"Class", "Arguments"},
|
||||
[]string{"Class", "ArgumentList"},
|
||||
map[string]interface{}{},
|
||||
},
|
||||
{
|
||||
@@ -295,11 +295,11 @@ var nodesToTest = []struct {
|
||||
},
|
||||
{
|
||||
&expr.StaticCall{
|
||||
Class: &name.Name{},
|
||||
Call: &node.Identifier{Value: "foo"},
|
||||
Arguments: []node.Node{&node.Argument{}},
|
||||
Class: &name.Name{},
|
||||
Call: &node.Identifier{Value: "foo"},
|
||||
ArgumentList: &node.ArgumentList{},
|
||||
},
|
||||
[]string{"Class", "Call", "Arguments"},
|
||||
[]string{"Class", "Call", "ArgumentList"},
|
||||
map[string]interface{}{},
|
||||
},
|
||||
{
|
||||
|
||||
41
node/n_argument_list.go
Normal file
41
node/n_argument_list.go
Normal file
@@ -0,0 +1,41 @@
|
||||
package node
|
||||
|
||||
import (
|
||||
"github.com/z7zmey/php-parser/walker"
|
||||
)
|
||||
|
||||
// ArgumentList node
|
||||
type ArgumentList struct {
|
||||
Arguments []Node
|
||||
}
|
||||
|
||||
// NewArgumentList node constructor
|
||||
func NewArgumentList(Arguments []Node) *ArgumentList {
|
||||
return &ArgumentList{
|
||||
Arguments,
|
||||
}
|
||||
}
|
||||
|
||||
// Attributes returns node attributes as map
|
||||
func (n *ArgumentList) Attributes() map[string]interface{} {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Walk traverses nodes
|
||||
// Walk is invoked recursively until v.EnterNode returns true
|
||||
func (n *ArgumentList) Walk(v walker.Visitor) {
|
||||
if v.EnterNode(n) == false {
|
||||
return
|
||||
}
|
||||
|
||||
if n.Arguments != nil {
|
||||
vv := v.GetChildrenVisitor("Arguments")
|
||||
for _, nn := range n.Arguments {
|
||||
if nn != nil {
|
||||
nn.Walk(vv)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
v.LeaveNode(n)
|
||||
}
|
||||
@@ -38,7 +38,7 @@ func TestName(t *testing.T) {
|
||||
Function: &name.Name{
|
||||
Parts: []node.Node{&name.NamePart{Value: "foo"}},
|
||||
},
|
||||
Arguments: []node.Node{},
|
||||
ArgumentList: &node.ArgumentList{},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -65,7 +65,7 @@ func TestFullyQualified(t *testing.T) {
|
||||
Function: &name.FullyQualified{
|
||||
Parts: []node.Node{&name.NamePart{Value: "foo"}},
|
||||
},
|
||||
Arguments: []node.Node{},
|
||||
ArgumentList: &node.ArgumentList{},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -92,7 +92,7 @@ func TestRelative(t *testing.T) {
|
||||
Function: &name.Relative{
|
||||
Parts: []node.Node{&name.NamePart{Value: "foo"}},
|
||||
},
|
||||
Arguments: []node.Node{},
|
||||
ArgumentList: &node.ArgumentList{},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -221,9 +221,9 @@ func TestCurlyOpenMethodCall(t *testing.T) {
|
||||
Parts: []node.Node{
|
||||
&scalar.EncapsedStringPart{Value: "test "},
|
||||
&expr.MethodCall{
|
||||
Variable: &expr.Variable{VarName: &node.Identifier{Value: "foo"}},
|
||||
Method: &node.Identifier{Value: "bar"},
|
||||
Arguments: []node.Node{},
|
||||
Variable: &expr.Variable{VarName: &node.Identifier{Value: "foo"}},
|
||||
Method: &node.Identifier{Value: "bar"},
|
||||
ArgumentList: &node.ArgumentList{},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -10,19 +10,19 @@ type Class struct {
|
||||
PhpDocComment string
|
||||
ClassName node.Node
|
||||
Modifiers []node.Node
|
||||
Args []node.Node
|
||||
ArgumentList *node.ArgumentList
|
||||
Extends node.Node
|
||||
Implements []node.Node
|
||||
Stmts []node.Node
|
||||
}
|
||||
|
||||
// NewClass node constructor
|
||||
func NewClass(ClassName node.Node, Modifiers []node.Node, Args []node.Node, Extends node.Node, Implements []node.Node, Stmts []node.Node, PhpDocComment string) *Class {
|
||||
func NewClass(ClassName node.Node, Modifiers []node.Node, ArgumentList *node.ArgumentList, Extends node.Node, Implements []node.Node, Stmts []node.Node, PhpDocComment string) *Class {
|
||||
return &Class{
|
||||
PhpDocComment,
|
||||
ClassName,
|
||||
Modifiers,
|
||||
Args,
|
||||
ArgumentList,
|
||||
Extends,
|
||||
Implements,
|
||||
Stmts,
|
||||
@@ -57,13 +57,9 @@ func (n *Class) Walk(v walker.Visitor) {
|
||||
}
|
||||
}
|
||||
|
||||
if n.Args != nil {
|
||||
vv := v.GetChildrenVisitor("Args")
|
||||
for _, nn := range n.Args {
|
||||
if nn != nil {
|
||||
nn.Walk(vv)
|
||||
}
|
||||
}
|
||||
if n.ArgumentList != nil {
|
||||
vv := v.GetChildrenVisitor("ArgumentList")
|
||||
n.ArgumentList.Walk(vv)
|
||||
}
|
||||
|
||||
if n.Extends != nil {
|
||||
|
||||
@@ -2,9 +2,10 @@ package stmt_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
"github.com/z7zmey/php-parser/node/expr"
|
||||
"github.com/z7zmey/php-parser/node/name"
|
||||
"testing"
|
||||
|
||||
"github.com/z7zmey/php-parser/node"
|
||||
"github.com/z7zmey/php-parser/node/stmt"
|
||||
@@ -171,7 +172,7 @@ func TestAnonimousClass(t *testing.T) {
|
||||
&stmt.Expression{
|
||||
Expr: &expr.New{
|
||||
Class: &stmt.Class{
|
||||
Args: []node.Node{},
|
||||
ArgumentList: &node.ArgumentList{},
|
||||
Extends: &name.Name{
|
||||
Parts: []node.Node{
|
||||
&name.NamePart{Value: "foo"},
|
||||
|
||||
@@ -53,7 +53,7 @@ func TestGlobalVars(t *testing.T) {
|
||||
&name.NamePart{Value: "foo"},
|
||||
},
|
||||
},
|
||||
Arguments: []node.Node{},
|
||||
ArgumentList: &node.ArgumentList{},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -92,12 +92,12 @@ var nodesToTest = []struct {
|
||||
PhpDocComment: "/** */",
|
||||
ClassName: &node.Identifier{},
|
||||
Modifiers: []node.Node{&stmt.Expression{}},
|
||||
Args: []node.Node{&stmt.Expression{}},
|
||||
Extends: &node.Identifier{},
|
||||
Implements: []node.Node{&stmt.Expression{}},
|
||||
Stmts: []node.Node{&stmt.Expression{}},
|
||||
ArgumentList: &node.ArgumentList{},
|
||||
Extends: &node.Identifier{},
|
||||
Implements: []node.Node{&stmt.Expression{}},
|
||||
Stmts: []node.Node{&stmt.Expression{}},
|
||||
},
|
||||
[]string{"ClassName", "Modifiers", "Args", "Extends", "Implements", "Stmts"},
|
||||
[]string{"ClassName", "Modifiers", "ArgumentList", "Extends", "Implements", "Stmts"},
|
||||
map[string]interface{}{"PhpDocComment": "/** */"},
|
||||
},
|
||||
{
|
||||
|
||||
@@ -70,18 +70,22 @@ func TestPhp7ArgumentNode(t *testing.T) {
|
||||
&stmt.Expression{
|
||||
Expr: &expr.FunctionCall{
|
||||
Function: &name.Name{Parts: []node.Node{&name.NamePart{Value: "foo"}}},
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
ArgumentList: &node.ArgumentList{
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
&stmt.Expression{
|
||||
Expr: &expr.FunctionCall{
|
||||
Function: &expr.Variable{VarName: &node.Identifier{Value: "foo"}},
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
ArgumentList: &node.ArgumentList{
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -89,9 +93,11 @@ func TestPhp7ArgumentNode(t *testing.T) {
|
||||
Expr: &expr.MethodCall{
|
||||
Variable: &expr.Variable{VarName: &node.Identifier{Value: "foo"}},
|
||||
Method: &node.Identifier{Value: "bar"},
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
ArgumentList: &node.ArgumentList{
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -99,9 +105,11 @@ func TestPhp7ArgumentNode(t *testing.T) {
|
||||
Expr: &expr.StaticCall{
|
||||
Class: &name.Name{Parts: []node.Node{&name.NamePart{Value: "foo"}}},
|
||||
Call: &node.Identifier{Value: "bar"},
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
ArgumentList: &node.ArgumentList{
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -109,18 +117,22 @@ func TestPhp7ArgumentNode(t *testing.T) {
|
||||
Expr: &expr.StaticCall{
|
||||
Class: &expr.Variable{VarName: &node.Identifier{Value: "foo"}},
|
||||
Call: &node.Identifier{Value: "bar"},
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
ArgumentList: &node.ArgumentList{
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
&stmt.Expression{
|
||||
Expr: &expr.New{
|
||||
Class: &name.Name{Parts: []node.Node{&name.NamePart{Value: "foo"}}},
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
ArgumentList: &node.ArgumentList{
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -128,9 +140,11 @@ func TestPhp7ArgumentNode(t *testing.T) {
|
||||
Expr: &expr.New{
|
||||
Class: &stmt.Class{
|
||||
PhpDocComment: "/** anonymous class */",
|
||||
Args: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
ArgumentList: &node.ArgumentList{
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
},
|
||||
},
|
||||
Stmts: []node.Node{},
|
||||
},
|
||||
@@ -160,18 +174,22 @@ func TestPhp5ArgumentNode(t *testing.T) {
|
||||
&stmt.Expression{
|
||||
Expr: &expr.FunctionCall{
|
||||
Function: &name.Name{Parts: []node.Node{&name.NamePart{Value: "foo"}}},
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
ArgumentList: &node.ArgumentList{
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
&stmt.Expression{
|
||||
Expr: &expr.FunctionCall{
|
||||
Function: &expr.Variable{VarName: &node.Identifier{Value: "foo"}},
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
ArgumentList: &node.ArgumentList{
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -179,9 +197,11 @@ func TestPhp5ArgumentNode(t *testing.T) {
|
||||
Expr: &expr.MethodCall{
|
||||
Variable: &expr.Variable{VarName: &node.Identifier{Value: "foo"}},
|
||||
Method: &node.Identifier{Value: "bar"},
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
ArgumentList: &node.ArgumentList{
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -189,9 +209,11 @@ func TestPhp5ArgumentNode(t *testing.T) {
|
||||
Expr: &expr.StaticCall{
|
||||
Class: &name.Name{Parts: []node.Node{&name.NamePart{Value: "foo"}}},
|
||||
Call: &node.Identifier{Value: "bar"},
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
ArgumentList: &node.ArgumentList{
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -199,18 +221,22 @@ func TestPhp5ArgumentNode(t *testing.T) {
|
||||
Expr: &expr.StaticCall{
|
||||
Class: &expr.Variable{VarName: &node.Identifier{Value: "foo"}},
|
||||
Call: &node.Identifier{Value: "bar"},
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
ArgumentList: &node.ArgumentList{
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
&stmt.Expression{
|
||||
Expr: &expr.New{
|
||||
Class: &name.Name{Parts: []node.Node{&name.NamePart{Value: "foo"}}},
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
ArgumentList: &node.ArgumentList{
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -44,6 +44,15 @@ var nodesToTest = []struct {
|
||||
[]string{"VariableType", "Variable", "DefaultValue"},
|
||||
map[string]interface{}{"ByRef": false, "Variadic": true},
|
||||
},
|
||||
{
|
||||
&node.ArgumentList{
|
||||
Arguments: []node.Node{
|
||||
&node.Argument{},
|
||||
},
|
||||
},
|
||||
[]string{"Arguments"},
|
||||
map[string]interface{}{},
|
||||
},
|
||||
}
|
||||
|
||||
type visitorMock struct {
|
||||
|
||||
Reference in New Issue
Block a user