expr visitor tests
This commit is contained in:
		
							parent
							
								
									d301afb65c
								
							
						
					
					
						commit
						d79f18f315
					
				| @ -31,15 +31,15 @@ func (n *ClassConstFetch) Walk(v walker.Visitor) { | |||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if n.ConstantName != nil { |  | ||||||
| 		vv := v.GetChildrenVisitor("ConstantName") |  | ||||||
| 		n.ConstantName.Walk(vv) |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	if n.Class != nil { | 	if n.Class != nil { | ||||||
| 		vv := v.GetChildrenVisitor("Class") | 		vv := v.GetChildrenVisitor("Class") | ||||||
| 		n.Class.Walk(vv) | 		n.Class.Walk(vv) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	if n.ConstantName != nil { | ||||||
|  | 		vv := v.GetChildrenVisitor("ConstantName") | ||||||
|  | 		n.ConstantName.Walk(vv) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	v.LeaveNode(n) | 	v.LeaveNode(n) | ||||||
| } | } | ||||||
|  | |||||||
| @ -5,22 +5,22 @@ import ( | |||||||
| 	"github.com/z7zmey/php-parser/walker" | 	"github.com/z7zmey/php-parser/walker" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| // ClusureUse node | // ClosureUse node | ||||||
| type ClusureUse struct { | type ClosureUse struct { | ||||||
| 	ByRef    bool | 	ByRef    bool | ||||||
| 	Variable node.Node | 	Variable node.Node | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // NewClusureUse node constuctor | // NewClosureUse node constuctor | ||||||
| func NewClusureUse(Variable node.Node, ByRef bool) *ClusureUse { | func NewClosureUse(Variable node.Node, ByRef bool) *ClosureUse { | ||||||
| 	return &ClusureUse{ | 	return &ClosureUse{ | ||||||
| 		ByRef, | 		ByRef, | ||||||
| 		Variable, | 		Variable, | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Attributes returns node attributes as map | // Attributes returns node attributes as map | ||||||
| func (n *ClusureUse) Attributes() map[string]interface{} { | func (n *ClosureUse) Attributes() map[string]interface{} { | ||||||
| 	return map[string]interface{}{ | 	return map[string]interface{}{ | ||||||
| 		"ByRef": n.ByRef, | 		"ByRef": n.ByRef, | ||||||
| 	} | 	} | ||||||
| @ -28,7 +28,7 @@ func (n *ClusureUse) Attributes() map[string]interface{} { | |||||||
| 
 | 
 | ||||||
| // Walk traverses nodes | // Walk traverses nodes | ||||||
| // Walk is invoked recursively until v.EnterNode returns true | // Walk is invoked recursively until v.EnterNode returns true | ||||||
| func (n *ClusureUse) Walk(v walker.Visitor) { | func (n *ClosureUse) Walk(v walker.Visitor) { | ||||||
| 	if v.EnterNode(n) == false { | 	if v.EnterNode(n) == false { | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  | |||||||
							
								
								
									
										406
									
								
								node/expr/t_visitor_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										406
									
								
								node/expr/t_visitor_test.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,406 @@ | |||||||
|  | package expr_test | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"reflect" | ||||||
|  | 	"testing" | ||||||
|  | 
 | ||||||
|  | 	"github.com/z7zmey/php-parser/node/stmt" | ||||||
|  | 
 | ||||||
|  | 	"github.com/z7zmey/php-parser/node/name" | ||||||
|  | 
 | ||||||
|  | 	"github.com/z7zmey/php-parser/node/scalar" | ||||||
|  | 
 | ||||||
|  | 	"github.com/kylelemons/godebug/pretty" | ||||||
|  | 
 | ||||||
|  | 	"github.com/z7zmey/php-parser/node" | ||||||
|  | 	"github.com/z7zmey/php-parser/node/expr" | ||||||
|  | 	"github.com/z7zmey/php-parser/walker" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | var nodesToTest = []struct { | ||||||
|  | 	node                node.Node // node | ||||||
|  | 	expectedVisitedKeys []string  // visited keys | ||||||
|  | 	expectedAttributes  map[string]interface{} | ||||||
|  | }{ | ||||||
|  | 	{ | ||||||
|  | 		&expr.ArrayDimFetch{ | ||||||
|  | 			Variable: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 			Dim:      &scalar.Lnumber{Value: "1"}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Variable", "Dim"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.ArrayItem{ | ||||||
|  | 			ByRef: false, | ||||||
|  | 			Key:   &scalar.String{Value: "key"}, | ||||||
|  | 			Val:   &scalar.Lnumber{Value: "1"}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Key", "Val"}, | ||||||
|  | 		map[string]interface{}{"ByRef": false}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.Array{ | ||||||
|  | 			Items: []node.Node{ | ||||||
|  | 				&expr.ArrayItem{ | ||||||
|  | 					ByRef: false, | ||||||
|  | 					Key:   &scalar.String{Value: "key"}, | ||||||
|  | 					Val:   &scalar.Lnumber{Value: "1"}, | ||||||
|  | 				}, | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Items"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.BitwiseNot{ | ||||||
|  | 			Expr: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Expr"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.BooleanNot{ | ||||||
|  | 			Expr: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Expr"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.ClassConstFetch{ | ||||||
|  | 			Class:        &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 			ConstantName: &node.Identifier{Value: "foo"}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Class", "ConstantName"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.Clone{ | ||||||
|  | 			Expr: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Expr"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.ClosureUse{ | ||||||
|  | 			ByRef:    false, | ||||||
|  | 			Variable: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Variable"}, | ||||||
|  | 		map[string]interface{}{"ByRef": false}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.Closure{ | ||||||
|  | 			ReturnsRef:    true, | ||||||
|  | 			Static:        false, | ||||||
|  | 			PhpDocComment: "", | ||||||
|  | 			Params:        []node.Node{&node.Parameter{}}, | ||||||
|  | 			Uses:          []node.Node{&expr.ClosureUse{}}, | ||||||
|  | 			ReturnType:    &name.Name{}, | ||||||
|  | 			Stmts:         []node.Node{&stmt.Nop{}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Params", "Uses", "ReturnType", "Stmts"}, | ||||||
|  | 		map[string]interface{}{"ReturnsRef": true, "Static": false, "PhpDocComment": ""}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.ConstFetch{ | ||||||
|  | 			Constant: &node.Identifier{Value: "foo"}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Constant"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.Empty{ | ||||||
|  | 			Expr: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Expr"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.ErrorSuppress{ | ||||||
|  | 			Expr: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Expr"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.Eval{ | ||||||
|  | 			Expr: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Expr"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.Exit{ | ||||||
|  | 			Expr:  &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 			IsDie: false, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Expr"}, | ||||||
|  | 		map[string]interface{}{"IsDie": false}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.FunctionCall{ | ||||||
|  | 			Function:  &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 			Arguments: []node.Node{&node.Argument{}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Function", "Arguments"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.IncludeOnce{ | ||||||
|  | 			Expr: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Expr"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.Include{ | ||||||
|  | 			Expr: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Expr"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.InstanceOf{ | ||||||
|  | 			Expr:  &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 			Class: &name.Name{}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Expr", "Class"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.Isset{ | ||||||
|  | 			Variables: []node.Node{ | ||||||
|  | 				&expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Variables"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.List{ | ||||||
|  | 			Items: []node.Node{ | ||||||
|  | 				&expr.ArrayItem{}, | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Items"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.MethodCall{ | ||||||
|  | 			Variable:  &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 			Method:    &node.Identifier{Value: "foo"}, | ||||||
|  | 			Arguments: []node.Node{&node.Argument{}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Variable", "Method", "Arguments"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.New{ | ||||||
|  | 			Class:     &name.Name{}, | ||||||
|  | 			Arguments: []node.Node{&node.Argument{}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Class", "Arguments"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.PostDec{ | ||||||
|  | 			Variable: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Variable"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.PostInc{ | ||||||
|  | 			Variable: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Variable"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.PreDec{ | ||||||
|  | 			Variable: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Variable"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.PreInc{ | ||||||
|  | 			Variable: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Variable"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.Print{ | ||||||
|  | 			Expr: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Expr"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.PropertyFetch{ | ||||||
|  | 			Variable: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 			Property: &node.Identifier{Value: "foo"}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Variable", "Property"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.RequireOnce{ | ||||||
|  | 			Expr: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Expr"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.Require{ | ||||||
|  | 			Expr: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Expr"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.ShellExec{ | ||||||
|  | 			Parts: []node.Node{ | ||||||
|  | 				&scalar.EncapsedStringPart{}, | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Parts"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.ShortArray{ | ||||||
|  | 			Items: []node.Node{ | ||||||
|  | 				&expr.ArrayItem{}, | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Items"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.ShortList{ | ||||||
|  | 			Items: []node.Node{ | ||||||
|  | 				&expr.ArrayItem{}, | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Items"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.StaticCall{ | ||||||
|  | 			Class:     &name.Name{}, | ||||||
|  | 			Call:      &node.Identifier{Value: "foo"}, | ||||||
|  | 			Arguments: []node.Node{&node.Argument{}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Class", "Call", "Arguments"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.StaticPropertyFetch{ | ||||||
|  | 			Class:    &name.Name{}, | ||||||
|  | 			Property: &node.Identifier{Value: "foo"}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Class", "Property"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.Ternary{ | ||||||
|  | 			Condition: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 			IfTrue:    &expr.Variable{VarName: &node.Identifier{Value: "$b"}}, | ||||||
|  | 			IfFalse:   &expr.Variable{VarName: &node.Identifier{Value: "$c"}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Condition", "IfTrue", "IfFalse"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.UnaryMinus{ | ||||||
|  | 			Expr: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Expr"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.UnaryPlus{ | ||||||
|  | 			Expr: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Expr"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 		[]string{"VarName"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.YieldFrom{ | ||||||
|  | 			Expr: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Expr"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		&expr.Yield{ | ||||||
|  | 			Key:   &expr.Variable{VarName: &node.Identifier{Value: "$a"}}, | ||||||
|  | 			Value: &expr.Variable{VarName: &node.Identifier{Value: "$b"}}, | ||||||
|  | 		}, | ||||||
|  | 		[]string{"Key", "Value"}, | ||||||
|  | 		map[string]interface{}{}, | ||||||
|  | 	}, | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | type visitorMock struct { | ||||||
|  | 	visitChildren bool | ||||||
|  | 	visitedKeys   []string | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (v *visitorMock) EnterNode(n walker.Walker) bool { return v.visitChildren } | ||||||
|  | func (v *visitorMock) GetChildrenVisitor(key string) walker.Visitor { | ||||||
|  | 	v.visitedKeys = append(v.visitedKeys, key) | ||||||
|  | 	return &visitorMock{v.visitChildren, nil} | ||||||
|  | } | ||||||
|  | func (v *visitorMock) LeaveNode(n walker.Walker) {} | ||||||
|  | 
 | ||||||
|  | func TestVisitorDisableChildren(t *testing.T) { | ||||||
|  | 	for _, tt := range nodesToTest { | ||||||
|  | 		v := &visitorMock{false, nil} | ||||||
|  | 		tt.node.Walk(v) | ||||||
|  | 
 | ||||||
|  | 		expected := []string{} | ||||||
|  | 		actual := v.visitedKeys | ||||||
|  | 
 | ||||||
|  | 		diff := pretty.Compare(expected, actual) | ||||||
|  | 		if diff != "" { | ||||||
|  | 			t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func TestVisitor(t *testing.T) { | ||||||
|  | 	for _, tt := range nodesToTest { | ||||||
|  | 		v := &visitorMock{true, nil} | ||||||
|  | 		tt.node.Walk(v) | ||||||
|  | 
 | ||||||
|  | 		expected := tt.expectedVisitedKeys | ||||||
|  | 		actual := v.visitedKeys | ||||||
|  | 
 | ||||||
|  | 		diff := pretty.Compare(expected, actual) | ||||||
|  | 		if diff != "" { | ||||||
|  | 			t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // test Attributes() | ||||||
|  | 
 | ||||||
|  | func TestNameAttributes(t *testing.T) { | ||||||
|  | 	for _, tt := range nodesToTest { | ||||||
|  | 		expected := tt.expectedAttributes | ||||||
|  | 		actual := tt.node.Attributes() | ||||||
|  | 
 | ||||||
|  | 		diff := pretty.Compare(expected, actual) | ||||||
|  | 		if diff != "" { | ||||||
|  | 			t.Errorf("%s diff: (-expected +actual)\n%s", reflect.TypeOf(tt.node), diff) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @ -4935,7 +4935,7 @@ yydefault: | |||||||
| 			positions.AddPosition(variable, positionBuilder.NewTokenPosition(yyDollar[3].token)) | 			positions.AddPosition(variable, positionBuilder.NewTokenPosition(yyDollar[3].token)) | ||||||
| 			comments.AddComments(variable, yyDollar[3].token.Comments()) | 			comments.AddComments(variable, yyDollar[3].token.Comments()) | ||||||
| 
 | 
 | ||||||
| 			use := expr.NewClusureUse(variable, false) | 			use := expr.NewClosureUse(variable, false) | ||||||
| 			positions.AddPosition(use, positionBuilder.NewTokenPosition(yyDollar[3].token)) | 			positions.AddPosition(use, positionBuilder.NewTokenPosition(yyDollar[3].token)) | ||||||
| 			comments.AddComments(use, yyDollar[3].token.Comments()) | 			comments.AddComments(use, yyDollar[3].token.Comments()) | ||||||
| 
 | 
 | ||||||
| @ -4953,7 +4953,7 @@ yydefault: | |||||||
| 			positions.AddPosition(variable, positionBuilder.NewTokenPosition(yyDollar[4].token)) | 			positions.AddPosition(variable, positionBuilder.NewTokenPosition(yyDollar[4].token)) | ||||||
| 			comments.AddComments(variable, yyDollar[3].token.Comments()) | 			comments.AddComments(variable, yyDollar[3].token.Comments()) | ||||||
| 
 | 
 | ||||||
| 			use := expr.NewClusureUse(variable, true) | 			use := expr.NewClosureUse(variable, true) | ||||||
| 			positions.AddPosition(use, positionBuilder.NewTokensPosition(yyDollar[3].token, yyDollar[4].token)) | 			positions.AddPosition(use, positionBuilder.NewTokensPosition(yyDollar[3].token, yyDollar[4].token)) | ||||||
| 			comments.AddComments(use, yyDollar[3].token.Comments()) | 			comments.AddComments(use, yyDollar[3].token.Comments()) | ||||||
| 
 | 
 | ||||||
| @ -4971,7 +4971,7 @@ yydefault: | |||||||
| 			positions.AddPosition(variable, positionBuilder.NewTokenPosition(yyDollar[1].token)) | 			positions.AddPosition(variable, positionBuilder.NewTokenPosition(yyDollar[1].token)) | ||||||
| 			comments.AddComments(variable, yyDollar[1].token.Comments()) | 			comments.AddComments(variable, yyDollar[1].token.Comments()) | ||||||
| 
 | 
 | ||||||
| 			use := expr.NewClusureUse(variable, false) | 			use := expr.NewClosureUse(variable, false) | ||||||
| 			positions.AddPosition(use, positionBuilder.NewTokenPosition(yyDollar[1].token)) | 			positions.AddPosition(use, positionBuilder.NewTokenPosition(yyDollar[1].token)) | ||||||
| 			comments.AddComments(use, yyDollar[1].token.Comments()) | 			comments.AddComments(use, yyDollar[1].token.Comments()) | ||||||
| 
 | 
 | ||||||
| @ -4989,7 +4989,7 @@ yydefault: | |||||||
| 			positions.AddPosition(variable, positionBuilder.NewTokenPosition(yyDollar[2].token)) | 			positions.AddPosition(variable, positionBuilder.NewTokenPosition(yyDollar[2].token)) | ||||||
| 			comments.AddComments(variable, yyDollar[1].token.Comments()) | 			comments.AddComments(variable, yyDollar[1].token.Comments()) | ||||||
| 
 | 
 | ||||||
| 			use := expr.NewClusureUse(variable, true) | 			use := expr.NewClosureUse(variable, true) | ||||||
| 			positions.AddPosition(use, positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) | 			positions.AddPosition(use, positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) | ||||||
| 			comments.AddComments(use, yyDollar[1].token.Comments()) | 			comments.AddComments(use, yyDollar[1].token.Comments()) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -2369,7 +2369,7 @@ lexical_var_list: | |||||||
|                 positions.AddPosition(variable, positionBuilder.NewTokenPosition($3)) |                 positions.AddPosition(variable, positionBuilder.NewTokenPosition($3)) | ||||||
|                 comments.AddComments(variable, $3.Comments()) |                 comments.AddComments(variable, $3.Comments()) | ||||||
|                  |                  | ||||||
|                 use := expr.NewClusureUse(variable, false) |                 use := expr.NewClosureUse(variable, false) | ||||||
|                 positions.AddPosition(use, positionBuilder.NewTokenPosition($3)) |                 positions.AddPosition(use, positionBuilder.NewTokenPosition($3)) | ||||||
|                 comments.AddComments(use, $3.Comments()) |                 comments.AddComments(use, $3.Comments()) | ||||||
|                  |                  | ||||||
| @ -2385,7 +2385,7 @@ lexical_var_list: | |||||||
|                 positions.AddPosition(variable, positionBuilder.NewTokenPosition($4)) |                 positions.AddPosition(variable, positionBuilder.NewTokenPosition($4)) | ||||||
|                 comments.AddComments(variable, $3.Comments()) |                 comments.AddComments(variable, $3.Comments()) | ||||||
| 
 | 
 | ||||||
|                 use := expr.NewClusureUse(variable, true) |                 use := expr.NewClosureUse(variable, true) | ||||||
|                 positions.AddPosition(use, positionBuilder.NewTokensPosition($3, $4)) |                 positions.AddPosition(use, positionBuilder.NewTokensPosition($3, $4)) | ||||||
|                 comments.AddComments(use, $3.Comments()) |                 comments.AddComments(use, $3.Comments()) | ||||||
| 
 | 
 | ||||||
| @ -2401,7 +2401,7 @@ lexical_var_list: | |||||||
|                 positions.AddPosition(variable, positionBuilder.NewTokenPosition($1)) |                 positions.AddPosition(variable, positionBuilder.NewTokenPosition($1)) | ||||||
|                 comments.AddComments(variable, $1.Comments()) |                 comments.AddComments(variable, $1.Comments()) | ||||||
|                  |                  | ||||||
|                 use := expr.NewClusureUse(variable, false) |                 use := expr.NewClosureUse(variable, false) | ||||||
|                 positions.AddPosition(use, positionBuilder.NewTokenPosition($1)) |                 positions.AddPosition(use, positionBuilder.NewTokenPosition($1)) | ||||||
|                 comments.AddComments(use, $1.Comments()) |                 comments.AddComments(use, $1.Comments()) | ||||||
|                  |                  | ||||||
| @ -2417,7 +2417,7 @@ lexical_var_list: | |||||||
|                 positions.AddPosition(variable, positionBuilder.NewTokenPosition($2)) |                 positions.AddPosition(variable, positionBuilder.NewTokenPosition($2)) | ||||||
|                 comments.AddComments(variable, $1.Comments()) |                 comments.AddComments(variable, $1.Comments()) | ||||||
| 
 | 
 | ||||||
|                 use := expr.NewClusureUse(variable, true) |                 use := expr.NewClosureUse(variable, true) | ||||||
|                 positions.AddPosition(use, positionBuilder.NewTokensPosition($1, $2)) |                 positions.AddPosition(use, positionBuilder.NewTokensPosition($1, $2)) | ||||||
|                 comments.AddComments(use, $1.Comments()) |                 comments.AddComments(use, $1.Comments()) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -4830,7 +4830,7 @@ yydefault: | |||||||
| 			positions.AddPosition(identifier, positionBuilder.NewTokenPosition(yyDollar[1].token)) | 			positions.AddPosition(identifier, positionBuilder.NewTokenPosition(yyDollar[1].token)) | ||||||
| 			variable := expr.NewVariable(identifier) | 			variable := expr.NewVariable(identifier) | ||||||
| 			positions.AddPosition(variable, positionBuilder.NewTokenPosition(yyDollar[1].token)) | 			positions.AddPosition(variable, positionBuilder.NewTokenPosition(yyDollar[1].token)) | ||||||
| 			yyVAL.node = expr.NewClusureUse(variable, false) | 			yyVAL.node = expr.NewClosureUse(variable, false) | ||||||
| 			positions.AddPosition(yyVAL.node, positionBuilder.NewTokenPosition(yyDollar[1].token)) | 			positions.AddPosition(yyVAL.node, positionBuilder.NewTokenPosition(yyDollar[1].token)) | ||||||
| 
 | 
 | ||||||
| 			comments.AddComments(identifier, yyDollar[1].token.Comments()) | 			comments.AddComments(identifier, yyDollar[1].token.Comments()) | ||||||
| @ -4845,7 +4845,7 @@ yydefault: | |||||||
| 			positions.AddPosition(identifier, positionBuilder.NewTokenPosition(yyDollar[2].token)) | 			positions.AddPosition(identifier, positionBuilder.NewTokenPosition(yyDollar[2].token)) | ||||||
| 			variable := expr.NewVariable(identifier) | 			variable := expr.NewVariable(identifier) | ||||||
| 			positions.AddPosition(variable, positionBuilder.NewTokenPosition(yyDollar[2].token)) | 			positions.AddPosition(variable, positionBuilder.NewTokenPosition(yyDollar[2].token)) | ||||||
| 			yyVAL.node = expr.NewClusureUse(variable, true) | 			yyVAL.node = expr.NewClosureUse(variable, true) | ||||||
| 			positions.AddPosition(yyVAL.node, positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) | 			positions.AddPosition(yyVAL.node, positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) | ||||||
| 
 | 
 | ||||||
| 			comments.AddComments(identifier, yyDollar[2].token.Comments()) | 			comments.AddComments(identifier, yyDollar[2].token.Comments()) | ||||||
|  | |||||||
| @ -1933,7 +1933,7 @@ lexical_var: | |||||||
|             positions.AddPosition(identifier, positionBuilder.NewTokenPosition($1)) |             positions.AddPosition(identifier, positionBuilder.NewTokenPosition($1)) | ||||||
|             variable := expr.NewVariable(identifier) |             variable := expr.NewVariable(identifier) | ||||||
|             positions.AddPosition(variable, positionBuilder.NewTokenPosition($1)) |             positions.AddPosition(variable, positionBuilder.NewTokenPosition($1)) | ||||||
|             $$ = expr.NewClusureUse(variable, false) |             $$ = expr.NewClosureUse(variable, false) | ||||||
|             positions.AddPosition($$, positionBuilder.NewTokenPosition($1)) |             positions.AddPosition($$, positionBuilder.NewTokenPosition($1)) | ||||||
| 
 | 
 | ||||||
|             comments.AddComments(identifier, $1.Comments()) |             comments.AddComments(identifier, $1.Comments()) | ||||||
| @ -1946,7 +1946,7 @@ lexical_var: | |||||||
|             positions.AddPosition(identifier, positionBuilder.NewTokenPosition($2)) |             positions.AddPosition(identifier, positionBuilder.NewTokenPosition($2)) | ||||||
|             variable := expr.NewVariable(identifier) |             variable := expr.NewVariable(identifier) | ||||||
|             positions.AddPosition(variable, positionBuilder.NewTokenPosition($2)) |             positions.AddPosition(variable, positionBuilder.NewTokenPosition($2)) | ||||||
|             $$ = expr.NewClusureUse(variable, true) |             $$ = expr.NewClosureUse(variable, true) | ||||||
|             positions.AddPosition($$, positionBuilder.NewTokensPosition($1, $2)) |             positions.AddPosition($$, positionBuilder.NewTokensPosition($1, $2)) | ||||||
| 
 | 
 | ||||||
|             comments.AddComments(identifier, $2.Comments()) |             comments.AddComments(identifier, $2.Comments()) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user