changing ClosureUse node purpose
Now ClosureUse is a container node for variable and reference nodes
This commit is contained in:
@@ -11,19 +11,19 @@ type Closure struct {
|
||||
Static bool
|
||||
PhpDocComment string
|
||||
Params []node.Node
|
||||
Uses []node.Node
|
||||
ClosureUse *ClosureUse
|
||||
ReturnType node.Node
|
||||
Stmts []node.Node
|
||||
}
|
||||
|
||||
// NewClosure node constructor
|
||||
func NewClosure(Params []node.Node, Uses []node.Node, ReturnType node.Node, Stmts []node.Node, Static bool, ReturnsRef bool, PhpDocComment string) *Closure {
|
||||
func NewClosure(Params []node.Node, ClosureUse *ClosureUse, ReturnType node.Node, Stmts []node.Node, Static bool, ReturnsRef bool, PhpDocComment string) *Closure {
|
||||
return &Closure{
|
||||
ReturnsRef,
|
||||
Static,
|
||||
PhpDocComment,
|
||||
Params,
|
||||
Uses,
|
||||
ClosureUse,
|
||||
ReturnType,
|
||||
Stmts,
|
||||
}
|
||||
@@ -54,13 +54,9 @@ func (n *Closure) Walk(v walker.Visitor) {
|
||||
}
|
||||
}
|
||||
|
||||
if n.Uses != nil {
|
||||
vv := v.GetChildrenVisitor("Uses")
|
||||
for _, nn := range n.Uses {
|
||||
if nn != nil {
|
||||
nn.Walk(vv)
|
||||
}
|
||||
}
|
||||
if n.ClosureUse != nil {
|
||||
vv := v.GetChildrenVisitor("ClosureUse")
|
||||
n.ClosureUse.Walk(vv)
|
||||
}
|
||||
|
||||
if n.ReturnType != nil {
|
||||
|
||||
@@ -7,13 +7,13 @@ import (
|
||||
|
||||
// ClosureUse node
|
||||
type ClosureUse struct {
|
||||
Variable node.Node
|
||||
Uses []node.Node
|
||||
}
|
||||
|
||||
// NewClosureUse node constructor
|
||||
func NewClosureUse(Variable node.Node) *ClosureUse {
|
||||
func NewClosureUse(Uses []node.Node) *ClosureUse {
|
||||
return &ClosureUse{
|
||||
Variable,
|
||||
Uses,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,9 +29,13 @@ func (n *ClosureUse) Walk(v walker.Visitor) {
|
||||
return
|
||||
}
|
||||
|
||||
if n.Variable != nil {
|
||||
vv := v.GetChildrenVisitor("Variable")
|
||||
n.Variable.Walk(vv)
|
||||
if n.Uses != nil {
|
||||
vv := v.GetChildrenVisitor("Uses")
|
||||
for _, nn := range n.Uses {
|
||||
if nn != nil {
|
||||
nn.Walk(vv)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
v.LeaveNode(n)
|
||||
|
||||
@@ -24,7 +24,6 @@ func TestClosure(t *testing.T) {
|
||||
ReturnsRef: false,
|
||||
Static: false,
|
||||
PhpDocComment: "",
|
||||
Uses: []node.Node{},
|
||||
Stmts: []node.Node{},
|
||||
},
|
||||
},
|
||||
@@ -64,12 +63,10 @@ func TestClosureUse(t *testing.T) {
|
||||
Variable: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
|
||||
},
|
||||
},
|
||||
Uses: []node.Node{
|
||||
&expr.ClosureUse{
|
||||
Variable: &expr.Variable{VarName: &node.Identifier{Value: "c"}},
|
||||
},
|
||||
&expr.ClosureUse{
|
||||
Variable: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "d"}}},
|
||||
ClosureUse: &expr.ClosureUse{
|
||||
Uses: []node.Node{
|
||||
&expr.Variable{VarName: &node.Identifier{Value: "c"}},
|
||||
&expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "d"}}},
|
||||
},
|
||||
},
|
||||
Stmts: []node.Node{},
|
||||
@@ -111,12 +108,10 @@ func TestClosureUse2(t *testing.T) {
|
||||
Variable: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
|
||||
},
|
||||
},
|
||||
Uses: []node.Node{
|
||||
&expr.ClosureUse{
|
||||
Variable: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "c"}}},
|
||||
},
|
||||
&expr.ClosureUse{
|
||||
Variable: &expr.Variable{VarName: &node.Identifier{Value: "d"}},
|
||||
ClosureUse: &expr.ClosureUse{
|
||||
Uses: []node.Node{
|
||||
&expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "c"}}},
|
||||
&expr.Variable{VarName: &node.Identifier{Value: "d"}},
|
||||
},
|
||||
},
|
||||
Stmts: []node.Node{},
|
||||
@@ -146,7 +141,6 @@ func TestClosureReturnType(t *testing.T) {
|
||||
ReturnsRef: false,
|
||||
Static: false,
|
||||
PhpDocComment: "",
|
||||
Uses: []node.Node{},
|
||||
ReturnType: &name.Name{
|
||||
Parts: []node.Node{&name.NamePart{Value: "void"}},
|
||||
},
|
||||
|
||||
@@ -81,9 +81,11 @@ var nodesToTest = []struct {
|
||||
},
|
||||
{
|
||||
&expr.ClosureUse{
|
||||
Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
|
||||
Uses: []node.Node{
|
||||
&expr.Variable{VarName: &node.Identifier{Value: "a"}},
|
||||
},
|
||||
},
|
||||
[]string{"Variable"},
|
||||
[]string{"Uses"},
|
||||
map[string]interface{}{},
|
||||
},
|
||||
{
|
||||
@@ -92,11 +94,11 @@ var nodesToTest = []struct {
|
||||
Static: false,
|
||||
PhpDocComment: "",
|
||||
Params: []node.Node{&node.Parameter{}},
|
||||
Uses: []node.Node{&expr.ClosureUse{}},
|
||||
ClosureUse: &expr.ClosureUse{},
|
||||
ReturnType: &name.Name{},
|
||||
Stmts: []node.Node{&stmt.Nop{}},
|
||||
},
|
||||
[]string{"Params", "Uses", "ReturnType", "Stmts"},
|
||||
[]string{"Params", "ClosureUse", "ReturnType", "Stmts"},
|
||||
map[string]interface{}{"ReturnsRef": true, "Static": false, "PhpDocComment": ""},
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user