changing ClosureUse node purpose
Now ClosureUse is a container node for variable and reference nodes
This commit is contained in:
@@ -1006,7 +1006,10 @@ func (p *Printer) printExprClone(n node.Node) {
|
||||
|
||||
func (p *Printer) printExprClosureUse(n node.Node) {
|
||||
nn := n.(*expr.ClosureUse)
|
||||
p.Print(nn.Variable)
|
||||
|
||||
io.WriteString(p.w, "use (")
|
||||
p.joinPrint(", ", nn.Uses)
|
||||
io.WriteString(p.w, ")")
|
||||
}
|
||||
|
||||
func (p *Printer) printExprClosure(n node.Node) {
|
||||
@@ -1026,10 +1029,9 @@ func (p *Printer) printExprClosure(n node.Node) {
|
||||
p.joinPrint(", ", nn.Params)
|
||||
io.WriteString(p.w, ")")
|
||||
|
||||
if nn.Uses != nil {
|
||||
io.WriteString(p.w, " use (")
|
||||
p.joinPrint(", ", nn.Uses)
|
||||
io.WriteString(p.w, ")")
|
||||
if nn.ClosureUse != nil {
|
||||
io.WriteString(p.w, " ")
|
||||
p.Print(nn.ClosureUse)
|
||||
}
|
||||
|
||||
if nn.ReturnType != nil {
|
||||
|
||||
@@ -1371,10 +1371,13 @@ func TestPrintExprClosureUse(t *testing.T) {
|
||||
|
||||
p := printer.NewPrinter(o, " ")
|
||||
p.Print(&expr.ClosureUse{
|
||||
Variable: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "var"}}},
|
||||
Uses: []node.Node{
|
||||
&expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}},
|
||||
&expr.Variable{VarName: &node.Identifier{Value: "bar"}},
|
||||
},
|
||||
})
|
||||
|
||||
expected := `&$var`
|
||||
expected := `use (&$foo, $bar)`
|
||||
actual := o.String()
|
||||
|
||||
if expected != actual {
|
||||
@@ -1398,12 +1401,10 @@ func TestPrintExprClosure(t *testing.T) {
|
||||
Variable: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
|
||||
},
|
||||
},
|
||||
Uses: []node.Node{
|
||||
&expr.ClosureUse{
|
||||
Variable: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
},
|
||||
&expr.ClosureUse{
|
||||
Variable: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
|
||||
ClosureUse: &expr.ClosureUse{
|
||||
Uses: []node.Node{
|
||||
&expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
|
||||
&expr.Variable{VarName: &node.Identifier{Value: "b"}},
|
||||
},
|
||||
},
|
||||
ReturnType: &name.FullyQualified{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
|
||||
|
||||
Reference in New Issue
Block a user