From fd5d891037f05f0238e3a5d0ae366e883f2e9eb5 Mon Sep 17 00:00:00 2001 From: Vadym Slizov Date: Sun, 9 Aug 2020 00:56:21 +0200 Subject: [PATCH] [refactoring] add Parser nodes for `use` --- internal/php5/parser_test.go | 276 ++++++++++++++++++++++- internal/php5/php5.go | Bin 330857 -> 332754 bytes internal/php5/php5.y | 78 ++++--- internal/php5/php5_test.go | 21 +- internal/php7/parser_test.go | 300 ++++++++++++++++++++++++- internal/php7/php7.go | Bin 272180 -> 274511 bytes internal/php7/php7.y | 78 ++++--- internal/php7/php7_test.go | 21 +- pkg/ast/ast.go | 4 + pkg/ast/node.go | 27 +++ pkg/ast/traverser/dfs.go | 36 +++ pkg/ast/visitor/dump.go | 18 ++ pkg/ast/visitor/filter_parser_nodes.go | 42 ++++ pkg/ast/visitor/null.go | 12 + pkg/printer/printer.go | 78 ++++--- 15 files changed, 880 insertions(+), 111 deletions(-) create mode 100644 pkg/ast/visitor/filter_parser_nodes.go diff --git a/internal/php5/parser_test.go b/internal/php5/parser_test.go index b210323..6d72de0 100644 --- a/internal/php5/parser_test.go +++ b/internal/php5/parser_test.go @@ -8,6 +8,8 @@ import ( "github.com/z7zmey/php-parser/internal/php5" "github.com/z7zmey/php-parser/internal/scanner" "github.com/z7zmey/php-parser/pkg/ast" + "github.com/z7zmey/php-parser/pkg/ast/traverser" + "github.com/z7zmey/php-parser/pkg/ast/visitor" "github.com/z7zmey/php-parser/pkg/position" ) @@ -62,6 +64,7 @@ func TestIdentifier(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -845,6 +848,7 @@ func TestPhp5ArgumentNode(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -1658,6 +1662,7 @@ func TestPhp5ParameterNode(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -1680,6 +1685,7 @@ func TestCommentEndFile(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -1758,6 +1764,7 @@ func TestName(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -1834,6 +1841,7 @@ func TestFullyQualified(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -1910,6 +1918,7 @@ func TestRelative(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -1989,6 +1998,7 @@ func TestScalarEncapsed_SimpleVar(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -2066,6 +2076,7 @@ func TestScalarEncapsed_SimpleVarOneChar(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -2154,6 +2165,7 @@ func TestScalarEncapsed_SimpleVarEndsEcapsed(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -2252,6 +2264,7 @@ func TestScalarEncapsed_StringVarCurveOpen(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -2361,6 +2374,7 @@ func TestScalarEncapsed_SimpleVarPropertyFetch(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -2438,6 +2452,7 @@ func TestScalarEncapsed_DollarOpenCurlyBraces(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -2536,6 +2551,7 @@ func TestScalarEncapsed_DollarOpenCurlyBracesDimNumber(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -2644,6 +2660,7 @@ func TestScalarEncapsed_CurlyOpenMethodCall(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -2736,6 +2753,7 @@ LBL; php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -2828,6 +2846,7 @@ LBL; php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -2888,6 +2907,7 @@ LBL; php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -2934,6 +2954,7 @@ CAD; php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -2994,6 +3015,7 @@ CAD; php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -3039,6 +3061,7 @@ func TestScalarMagicConstant(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -3083,6 +3106,7 @@ func TestScalarNumber_LNumber(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -3127,6 +3151,7 @@ func TestScalarNumber_DNumber(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -3171,6 +3196,7 @@ func TestScalarNumber_Float(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -3215,6 +3241,7 @@ func TestScalarNumber_BinaryLNumber(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -3259,6 +3286,7 @@ func TestScalarNumber_BinaryDNumber(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -3303,6 +3331,7 @@ func TestScalarNumber_HLNumber(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -3347,6 +3376,7 @@ func TestScalarNumber_HDNumber(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -3391,6 +3421,7 @@ func TestScalarString_DoubleQuotedScalarString(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -3435,6 +3466,7 @@ func TestScalarString_DoubleQuotedScalarStringWithEscapedVar(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -3481,6 +3513,7 @@ func TestScalarString_MultilineDoubleQuotedScalarString(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -3525,6 +3558,7 @@ func TestScalarString_SingleQuotedScalarString(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -3571,6 +3605,7 @@ func TestScalarString_MultilineSingleQuotedScalarString(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -3641,6 +3676,7 @@ func TestStmtAltIf_AltIf(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -3754,6 +3790,7 @@ func TestStmtAltIf_AltElseIf(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -3844,6 +3881,7 @@ func TestStmtAltIf_AltElse(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -4022,6 +4060,7 @@ func TestStmtAltIf_AltElseElseIf(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -4144,6 +4183,7 @@ func TestStmtClassConstList_WithoutModifiers(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -4223,6 +4263,7 @@ func TestStmtClassMethod_SimpleClassMethod(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -4372,6 +4413,7 @@ func TestStmtClassMethod_PrivateProtectedClassMethod(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -4475,6 +4517,7 @@ func TestStmtClassMethod_Php5ClassMethod(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -4590,6 +4633,7 @@ func TestStmtClassMethod_AbstractClassMethod(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -4635,6 +4679,7 @@ func TestStmtClass_SimpleClass(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -4693,6 +4738,7 @@ func TestStmtClass_AbstractClass(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -4784,6 +4830,7 @@ func TestStmtClass_ClassExtends(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -4877,6 +4924,7 @@ func TestStmtClass_ClassImplement(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -4993,6 +5041,7 @@ func TestStmtClass_ClassImplements(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -5092,6 +5141,7 @@ func TestStmtConstList(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -5158,6 +5208,7 @@ func TestStmtContinue_Empty(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -5235,6 +5286,7 @@ func TestStmtContinue_Light(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -5312,6 +5364,7 @@ func TestStmtContinue(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -5389,6 +5442,7 @@ func TestStmtDeclare(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -5499,6 +5553,7 @@ func TestStmtDeclare_Stmts(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -5578,6 +5633,7 @@ func TestStmtDeclare_Alt(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -5633,6 +5689,7 @@ func TestStmtDo(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -5700,6 +5757,7 @@ func TestStmtEcho(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -5756,6 +5814,7 @@ func TestStmtEcho_Parenthesis(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -5800,6 +5859,7 @@ func TestStmtExpression(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -5996,6 +6056,7 @@ func TestStmtFor(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -6117,6 +6178,7 @@ func TestStmtFor_Alt(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -6203,6 +6265,7 @@ func TestStmtForeach(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -6279,6 +6342,7 @@ func TestStmtForeach_Expr(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -6365,6 +6429,7 @@ func TestStmtForeach_Alt(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -6472,6 +6537,7 @@ func TestStmtForeach_WithKey(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -6569,6 +6635,7 @@ func TestStmtForeach_ExprWithKey(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -6686,6 +6753,7 @@ func TestStmtForeach_WithRef(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -6815,6 +6883,7 @@ func TestStmtForeach_WithList(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -6861,6 +6930,7 @@ func TestStmtFunction(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -6918,6 +6988,7 @@ func TestStmtFunction_Return(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -7082,6 +7153,7 @@ func TestStmtFunction_ReturnVar(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -7150,6 +7222,7 @@ func TestStmtFunction_Ref(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -7206,6 +7279,7 @@ func TestStmtGlobal(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -7367,6 +7441,7 @@ func TestStmtGlobal_Vars(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -7432,6 +7507,7 @@ func TestStmtGotoLabel(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -7465,6 +7541,7 @@ func TestStmtHaltCompiler(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -7530,6 +7607,7 @@ func TestStmtIf(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -7639,6 +7717,7 @@ func TestStmtIf_ElseIf(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -7725,6 +7804,7 @@ func TestStmtIf_Else(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -7897,6 +7977,7 @@ func TestStmtIf_ElseElseIf(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -8079,6 +8160,7 @@ func TestStmtIf_ElseIfElseIfElse(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -8123,6 +8205,7 @@ func TestStmtInlineHtml(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -8168,6 +8251,7 @@ func TestStmtInterface(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -8248,6 +8332,7 @@ func TestStmtInterface_Extend(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -8351,6 +8436,7 @@ func TestStmtInterface_Extends(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -8407,6 +8493,7 @@ func TestStmtNamespace(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -8464,6 +8551,7 @@ func TestStmtNamespace_Stmts(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -8498,6 +8586,7 @@ func TestStmtNamespace_Anonymous(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -8600,6 +8689,7 @@ func TestStmtProperty(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -8755,6 +8845,7 @@ func TestStmtProperty_Properties(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -8910,6 +9001,7 @@ func TestStmtProperty_Properties2(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -8976,6 +9068,7 @@ func TestStmtStaticVar(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -9084,6 +9177,7 @@ func TestStmtStaticVar_Vars(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -9192,6 +9286,7 @@ func TestStmtStaticVar_Vars2(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -9319,6 +9414,7 @@ func TestStmtSwitch(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -9446,6 +9542,7 @@ func TestStmtSwitch_Semicolon(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -9563,6 +9660,7 @@ func TestStmtSwitch_Alt(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -9668,6 +9766,7 @@ func TestStmtSwitch_AltSemicolon(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -9722,6 +9821,7 @@ func TestStmtThrow(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -9767,6 +9867,7 @@ func TestStmtTrait(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -9858,6 +9959,7 @@ func TestStmtTraitUse(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -9972,6 +10074,7 @@ func TestStmtTraitUse_Uses(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -10086,6 +10189,7 @@ func TestStmtTraitUse_EmptyAdaptations(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -10244,6 +10348,7 @@ func TestStmtTraitUse_Modifier(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -10413,6 +10518,7 @@ func TestStmtTraitUse_AliasModifier(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -10696,6 +10802,7 @@ func TestStmtTraitUse_Adaptions(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -10733,6 +10840,7 @@ func TestStmtTry_Try(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -10828,6 +10936,7 @@ func TestStmtTry_TryCatch(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -10980,6 +11089,7 @@ func TestStmtTry_TryCatchCatch(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -11086,6 +11196,7 @@ func TestStmtTry_TryCatchFinally(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -11293,6 +11404,7 @@ func TestStmtTry_TryCatchCatchCatch(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -11349,6 +11461,7 @@ func TestStmtUnset(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -11426,6 +11539,7 @@ func TestStmtUnset_Vars(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -11504,6 +11618,7 @@ func TestStmtUse(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -11534,7 +11649,7 @@ func TestStmtUse_FullyQualified(t *testing.T) { Position: &position.Position{ StartLine: 1, EndLine: 1, - StartPos: 8, + StartPos: 7, EndPos: 11, }, }, @@ -11544,7 +11659,7 @@ func TestStmtUse_FullyQualified(t *testing.T) { Position: &position.Position{ StartLine: 1, EndLine: 1, - StartPos: 8, + StartPos: 7, EndPos: 11, }, }, @@ -11582,6 +11697,7 @@ func TestStmtUse_FullyQualified(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -11612,7 +11728,7 @@ func TestStmtUse_FullyQualifiedAlias(t *testing.T) { Position: &position.Position{ StartLine: 1, EndLine: 1, - StartPos: 8, + StartPos: 7, EndPos: 18, }, }, @@ -11622,7 +11738,7 @@ func TestStmtUse_FullyQualifiedAlias(t *testing.T) { Position: &position.Position{ StartLine: 1, EndLine: 1, - StartPos: 8, + StartPos: 7, EndPos: 18, }, }, @@ -11671,6 +11787,7 @@ func TestStmtUse_FullyQualifiedAlias(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -11782,6 +11899,7 @@ func TestStmtUse_List(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -11904,6 +12022,7 @@ func TestStmtUse_ListAlias(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -11997,7 +12116,7 @@ func TestStmtUse_ListFunctionType(t *testing.T) { Position: &position.Position{ StartLine: 1, EndLine: 1, - StartPos: 22, + StartPos: 21, EndPos: 25, }, }, @@ -12036,6 +12155,7 @@ func TestStmtUse_ListFunctionType(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -12140,7 +12260,7 @@ func TestStmtUse_ListFunctionTypeAliases(t *testing.T) { Position: &position.Position{ StartLine: 1, EndLine: 1, - StartPos: 29, + StartPos: 28, EndPos: 39, }, }, @@ -12190,6 +12310,7 @@ func TestStmtUse_ListFunctionTypeAliases(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -12284,7 +12405,7 @@ func TestStmtUse_ListConstType(t *testing.T) { Position: &position.Position{ StartLine: 1, EndLine: 1, - StartPos: 19, + StartPos: 18, EndPos: 22, }, }, @@ -12323,6 +12444,7 @@ func TestStmtUse_ListConstType(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -12427,7 +12549,7 @@ func TestStmtUse_ListConstTypeAliases(t *testing.T) { Position: &position.Position{ StartLine: 1, EndLine: 1, - StartPos: 26, + StartPos: 25, EndPos: 36, }, }, @@ -12477,6 +12599,7 @@ func TestStmtUse_ListConstTypeAliases(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -12543,6 +12666,7 @@ func TestStmtBreak_Empty(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -12620,6 +12744,7 @@ func TestStmtBreak_Light(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -12697,6 +12822,7 @@ func TestStmtBreak(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -12774,6 +12900,7 @@ func TestExprArrayDimFetch(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -12870,6 +12997,7 @@ func TestExprArrayDimFetch_Nested(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -12914,6 +13042,7 @@ func TestExprArray(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -12980,6 +13109,7 @@ func TestExprArray_Item(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -13099,6 +13229,7 @@ func TestExprArray_Items(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -13163,6 +13294,7 @@ func TestExprBitwiseNot(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -13227,6 +13359,7 @@ func TestExprBooleanNot(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -13304,6 +13437,7 @@ func TestExprClassConstFetch(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -13369,6 +13503,7 @@ func TestExprClassConstFetch_Static(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -13433,6 +13568,7 @@ func TestExprClone_Brackets(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -13497,6 +13633,7 @@ func TestExprClone(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -13543,6 +13680,7 @@ func TestExprClosure(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -13717,6 +13855,7 @@ func TestExprClosure_Use(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -13891,6 +14030,7 @@ func TestExprClosure_Use2(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -13957,6 +14097,7 @@ func TestExprConstFetch(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -14023,6 +14164,7 @@ func TestExprConstFetch_Relative(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -14089,6 +14231,7 @@ func TestExprConstFetch_FullyQualified(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -14153,6 +14296,7 @@ func TestExprEmpty(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -14217,6 +14361,7 @@ func TestExprErrorSuppress(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -14281,6 +14426,7 @@ func TestExprEval(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -14325,6 +14471,7 @@ func TestExprExit(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -14369,6 +14516,7 @@ func TestExprExit_Empty(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -14434,6 +14582,7 @@ func TestExprExit_Expr(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -14478,6 +14627,7 @@ func TestExprDie(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -14522,6 +14672,7 @@ func TestExprDie_Empty(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -14587,6 +14738,7 @@ func TestExprDie_Expr(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -14663,6 +14815,7 @@ func TestExprFunctionCall(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -14739,6 +14892,7 @@ func TestExprFunctionCall_Relative(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -14840,6 +14994,7 @@ func TestExprFunctionCall_FullyQualified(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -14959,6 +15114,7 @@ func TestExprFunctionCall_Var(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -15091,6 +15247,7 @@ func TestExprFunctionCall_ExprArg(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -15155,6 +15312,7 @@ func TestExprPostDec(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -15219,6 +15377,7 @@ func TestExprPostInc(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -15283,6 +15442,7 @@ func TestExprPreDec(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -15347,6 +15507,7 @@ func TestExprPreInc(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -15411,6 +15572,7 @@ func TestExprInclude(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -15475,6 +15637,7 @@ func TestExprInclude_Once(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -15539,6 +15702,7 @@ func TestExprRequire(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -15603,6 +15767,7 @@ func TestExprRequire_Once(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -15690,6 +15855,7 @@ func TestExprInstanceOf(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -15777,6 +15943,7 @@ func TestExprInstanceOf_Relative(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -15864,6 +16031,7 @@ func TestExprInstanceOf_FullyQualified(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -15930,6 +16098,7 @@ func TestExprIsset(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -16017,6 +16186,7 @@ func TestExprIsset_Variables(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -16092,6 +16262,7 @@ func TestExprList_Empty(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -16199,6 +16370,7 @@ func TestExprList(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -16316,6 +16488,7 @@ func TestExprList_ArrayIndex(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -16445,6 +16618,7 @@ func TestExprList_List(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -16553,6 +16727,7 @@ func TestExprList_EmptyItem(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -16663,6 +16838,7 @@ func TestExprList_EmptyItems(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -16748,6 +16924,7 @@ func TestExprMethodCall(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -16814,6 +16991,7 @@ func TestExprNew(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -16890,6 +17068,7 @@ func TestExprNew_Relative(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -16966,6 +17145,7 @@ func TestExprNew_FullyQualified(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -17030,6 +17210,7 @@ func TestExprPrint(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -17105,6 +17286,7 @@ func TestExprPropertyFetch(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -17223,6 +17405,7 @@ func TestExprReference_ForeachWithRef(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -17300,6 +17483,7 @@ func TestExprShellExec(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -17344,6 +17528,7 @@ func TestExprShortArray(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -17410,6 +17595,7 @@ func TestExprShortArray_Item(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -17529,6 +17715,7 @@ func TestExprShortArray_Items(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -17616,6 +17803,7 @@ func TestExprStaticCall(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -17703,6 +17891,7 @@ func TestExprStaticCall_Relative(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -17790,6 +17979,7 @@ func TestExprStaticCall_FullyQualified(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -17887,6 +18077,7 @@ func TestExprStaticCall_Var(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -17982,6 +18173,7 @@ func TestExprStaticCall_VarVar(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -18069,6 +18261,7 @@ func TestExprStaticPropertyFetch(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -18156,6 +18349,7 @@ func TestExprStaticPropertyFetch_Relative(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -18243,6 +18437,7 @@ func TestExprStaticPropertyFetch_FullyQualified(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -18349,6 +18544,7 @@ func TestExprTernary(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -18434,6 +18630,7 @@ func TestExprTernary_Simple(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -18592,6 +18789,7 @@ func TestExprTernary_NestedTrue(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -18750,6 +18948,7 @@ func TestExprTernary_NestedCond(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -18814,6 +19013,7 @@ func TestExprUnaryMinus(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -18878,6 +19078,7 @@ func TestExprUnaryPlus(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -18932,6 +19133,7 @@ func TestExprVariable(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -18996,6 +19198,7 @@ func TestExprVariable_Variable(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -19039,6 +19242,7 @@ func TestExprYield(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -19103,6 +19307,7 @@ func TestExprYield_Val(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -19188,6 +19393,7 @@ func TestExprYield_KeyVal(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -19242,6 +19448,7 @@ func TestExprYield_Expr(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -19317,6 +19524,7 @@ func TestExprYield_KeyExpr(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -19404,6 +19612,7 @@ func TestExprAssign_Assign(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -19489,6 +19698,7 @@ func TestExprAssign_Reference(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -19586,6 +19796,7 @@ func TestExprAssign_ReferenceNew(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -19728,6 +19939,7 @@ func TestExprAssign_ReferenceArgs(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -19813,6 +20025,7 @@ func TestExprAssign_BitwiseAnd(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -19898,6 +20111,7 @@ func TestExprAssign_BitwiseOr(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -19983,6 +20197,7 @@ func TestExprAssign_BitwiseXor(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -20068,6 +20283,7 @@ func TestExprAssign_Concat(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -20153,6 +20369,7 @@ func TestExprAssign_Div(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -20238,6 +20455,7 @@ func TestExprAssign_Minus(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -20323,6 +20541,7 @@ func TestExprAssign_Mod(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -20408,6 +20627,7 @@ func TestExprAssign_Mul(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -20493,6 +20713,7 @@ func TestExprAssign_Plus(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -20578,6 +20799,7 @@ func TestExprAssign_Pow(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -20663,6 +20885,7 @@ func TestExprAssign_ShiftLeft(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -20748,6 +20971,7 @@ func TestExprAssign_ShiftRight(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -20835,6 +21059,7 @@ func TestExprBinary_BitwiseAnd(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -20920,6 +21145,7 @@ func TestExprBinary_BitwiseOr(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -21005,6 +21231,7 @@ func TestExprBinary_BitwiseXor(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -21090,6 +21317,7 @@ func TestExprBinary_BooleanAnd(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -21175,6 +21403,7 @@ func TestExprBinary_BooleanOr(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -21260,6 +21489,7 @@ func TestExprBinary_Concat(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -21345,6 +21575,7 @@ func TestExprBinary_Div(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -21430,6 +21661,7 @@ func TestExprBinary_Equal(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -21515,6 +21747,7 @@ func TestExprBinary_GreaterOrEqual(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -21600,6 +21833,7 @@ func TestExprBinary_Greater(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -21685,6 +21919,7 @@ func TestExprBinary_Identical(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -21770,6 +22005,7 @@ func TestExprBinary_LogicalAnd(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -21855,6 +22091,7 @@ func TestExprBinary_LogicalOr(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -21940,6 +22177,7 @@ func TestExprBinary_LogicalXor(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -22025,6 +22263,7 @@ func TestExprBinary_Minus(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -22110,6 +22349,7 @@ func TestExprBinary_Mod(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -22195,6 +22435,7 @@ func TestExprBinary_Mul(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -22280,6 +22521,7 @@ func TestExprBinary_NotEqual(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -22365,6 +22607,7 @@ func TestExprBinary_NotIdentical(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -22450,6 +22693,7 @@ func TestExprBinary_Plus(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -22535,6 +22779,7 @@ func TestExprBinary_Pow(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -22620,6 +22865,7 @@ func TestExprBinary_ShiftLeft(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -22705,6 +22951,7 @@ func TestExprBinary_ShiftRight(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -22790,6 +23037,7 @@ func TestExprBinary_SmallerOrEqual(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -22875,6 +23123,7 @@ func TestExprBinary_Smaller(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -22941,6 +23190,7 @@ func TestExprCast_Array(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -23005,6 +23255,7 @@ func TestExprCast_Bool(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -23069,6 +23320,7 @@ func TestExprCast_BoolShort(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -23133,6 +23385,7 @@ func TestExprCast_Double(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -23197,6 +23450,7 @@ func TestExprCast_CastFloat(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -23261,6 +23515,7 @@ func TestExprCast_Int(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -23325,6 +23580,7 @@ func TestExprCast_IntShort(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -23389,6 +23645,7 @@ func TestExprCast_Object(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -23453,6 +23710,7 @@ func TestExprCast_String(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -23517,6 +23775,7 @@ func TestExprCast_BinaryString(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -23581,5 +23840,6 @@ func TestExprCast_Unset(t *testing.T) { php5parser := php5.NewParser(lexer, nil) php5parser.Parse() actual := php5parser.GetRootNode() + traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) assert.DeepEqual(t, expected, actual) } diff --git a/internal/php5/php5.go b/internal/php5/php5.go index 397fb9de03ab0b5bc305150efa6fa4373bd2fcb1..b8faaea75d4a1919d0548cc90a1edbdccd90df6f 100644 GIT binary patch delta 10525 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 a8b?FXTG&={>J?x!Sgo5&IC-ksT>k;Ro+al1 delta 9611 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 delta 7277 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 R