From fd984fea8f543ff62646df3c5087a0dfcbc9634a Mon Sep 17 00:00:00 2001 From: Vadym Slizov Date: Sun, 20 Dec 2020 11:38:13 +0200 Subject: [PATCH] refactoring: update php7 tests --- internal/php7/parser_test.go | 50330 +++++++++++++++++++++++------ internal/php7/php7.go | Bin 219167 -> 219246 bytes internal/php7/php7.y | 8 +- internal/php7/php7_bench_test.go | 378 +- internal/php7/php7_test.go | 19703 ----------- 5 files changed, 39857 insertions(+), 30562 deletions(-) delete mode 100644 internal/php7/php7_test.go diff --git a/internal/php7/parser_test.go b/internal/php7/parser_test.go index 94835e1..6c94e47 100644 --- a/internal/php7/parser_test.go +++ b/internal/php7/parser_test.go @@ -1,6 +1,7 @@ package php7_test import ( + "github.com/z7zmey/php-parser/pkg/errors" "testing" "gotest.tools/assert" @@ -8,69 +9,101 @@ import ( "github.com/z7zmey/php-parser/internal/php7" "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" + "github.com/z7zmey/php-parser/pkg/token" ) func TestIdentifier(t *testing.T) { src := `bar($a, ...$b); @@ -78,729 +111,1424 @@ func TestPhp7ArgumentNode(t *testing.T) { $foo::bar($a, ...$b); new foo($a, ...$b); /** anonymous class */ - new class ($a, ...$b) {}; - ` + new class ($a, ...$b) {};` expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 2, - EndLine: 9, - StartPos: 6, - EndPos: 186, - }, + Position: &position.Position{ + StartLine: 2, + EndLine: 9, + StartPos: 5, + EndPos: 185, }, Stmts: []ast.Vertex{ &ast.StmtExpression{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 2, + EndLine: 2, + StartPos: 5, + EndPos: 20, + }, + Expr: &ast.ExprFunctionCall{ Position: &position.Position{ StartLine: 2, EndLine: 2, - StartPos: 6, - EndPos: 21, + StartPos: 5, + EndPos: 19, }, - }, - Expr: &ast.ExprFunctionCall{ - Node: ast.Node{ + Function: &ast.NameName{ Position: &position.Position{ StartLine: 2, EndLine: 2, - StartPos: 6, - EndPos: 20, - }, - }, - Function: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 2, - EndLine: 2, - StartPos: 6, - EndPos: 9, - }, + StartPos: 5, + EndPos: 8, }, Parts: []ast.Vertex{ &ast.NameNamePart{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 2, + EndLine: 2, + StartPos: 5, + EndPos: 8, + }, + StringTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("foo"), Position: &position.Position{ StartLine: 2, EndLine: 2, - StartPos: 6, - EndPos: 9, + StartPos: 5, + EndPos: 8, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_OPEN_TAG, + Value: []byte(""), + Position: &position.Position{ + StartLine: 4, + EndLine: 4, + StartPos: 46, + EndPos: 48, + }, + }, Method: &ast.Identifier{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 4, + EndLine: 4, + StartPos: 48, + EndPos: 51, + }, + IdentifierTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("bar"), Position: &position.Position{ StartLine: 4, EndLine: 4, - StartPos: 49, - EndPos: 52, + StartPos: 48, + EndPos: 51, }, }, Value: []byte("bar"), }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ + OpenParenthesisTkn: &token.Token{ + ID: token.ID(40), + Value: []byte("("), + Position: &position.Position{ + StartLine: 4, + EndLine: 4, + StartPos: 51, + EndPos: 52, + }, + }, + Arguments: []ast.Vertex{ + &ast.Argument{ Position: &position.Position{ StartLine: 4, EndLine: 4, StartPos: 52, - EndPos: 63, + EndPos: 54, }, - }, - Arguments: []ast.Vertex{ - &ast.Argument{ - Node: ast.Node{ + Expr: &ast.ExprVariable{ + Position: &position.Position{ + StartLine: 4, + EndLine: 4, + StartPos: 52, + EndPos: 54, + }, + VarName: &ast.Identifier{ Position: &position.Position{ StartLine: 4, EndLine: 4, - StartPos: 53, - EndPos: 55, + StartPos: 52, + EndPos: 54, }, - }, - IsReference: false, - Variadic: false, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 4, - EndLine: 4, - StartPos: 53, - EndPos: 55, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 4, - EndLine: 4, - StartPos: 53, - EndPos: 55, - }, - }, + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, Value: []byte("$a"), - }, - }, - }, - &ast.Argument{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 4, - EndLine: 4, - StartPos: 57, - EndPos: 62, - }, - }, - Variadic: true, - IsReference: false, - Expr: &ast.ExprVariable{ - Node: ast.Node{ Position: &position.Position{ StartLine: 4, EndLine: 4, - StartPos: 60, - EndPos: 62, + StartPos: 52, + EndPos: 54, }, }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 4, - EndLine: 4, - StartPos: 60, - EndPos: 62, - }, - }, - Value: []byte("$b"), - }, + Value: []byte("$a"), }, }, }, + &ast.Argument{ + Position: &position.Position{ + StartLine: 4, + EndLine: 4, + StartPos: 56, + EndPos: 61, + }, + VariadicTkn: &token.Token{ + ID: token.T_ELLIPSIS, + Value: []byte("..."), + Position: &position.Position{ + StartLine: 4, + EndLine: 4, + StartPos: 56, + EndPos: 59, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 4, + EndLine: 4, + StartPos: 55, + EndPos: 56, + }, + }, + }, + }, + Expr: &ast.ExprVariable{ + Position: &position.Position{ + StartLine: 4, + EndLine: 4, + StartPos: 59, + EndPos: 61, + }, + VarName: &ast.Identifier{ + Position: &position.Position{ + StartLine: 4, + EndLine: 4, + StartPos: 59, + EndPos: 61, + }, + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$b"), + Position: &position.Position{ + StartLine: 4, + EndLine: 4, + StartPos: 59, + EndPos: 61, + }, + }, + Value: []byte("$b"), + }, + }, + }, + }, + SeparatorTkns: []*token.Token{ + { + ID: token.ID(44), + Value: []byte(","), + Position: &position.Position{ + StartLine: 4, + EndLine: 4, + StartPos: 54, + EndPos: 55, + }, + }, + }, + CloseParenthesisTkn: &token.Token{ + ID: token.ID(41), + Value: []byte(")"), + Position: &position.Position{ + StartLine: 4, + EndLine: 4, + StartPos: 61, + EndPos: 62, + }, + }, + }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 4, + EndLine: 4, + StartPos: 62, + EndPos: 63, }, }, }, &ast.StmtExpression{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 5, + EndLine: 5, + StartPos: 66, + EndPos: 86, + }, + Expr: &ast.ExprStaticCall{ Position: &position.Position{ StartLine: 5, EndLine: 5, - StartPos: 67, - EndPos: 87, + StartPos: 66, + EndPos: 85, }, - }, - Expr: &ast.ExprStaticCall{ - Node: ast.Node{ + Class: &ast.NameName{ Position: &position.Position{ StartLine: 5, EndLine: 5, - StartPos: 67, - EndPos: 86, - }, - }, - Class: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 5, - EndLine: 5, - StartPos: 67, - EndPos: 70, - }, + StartPos: 66, + EndPos: 69, }, Parts: []ast.Vertex{ &ast.NameNamePart{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 5, + EndLine: 5, + StartPos: 66, + EndPos: 69, + }, + StringTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("foo"), Position: &position.Position{ StartLine: 5, EndLine: 5, - StartPos: 67, - EndPos: 70, + StartPos: 66, + EndPos: 69, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte("\n\t\t"), + Position: &position.Position{ + StartLine: 4, + EndLine: 5, + StartPos: 63, + EndPos: 66, + }, + }, }, }, Value: []byte("foo"), }, }, }, + DoubleColonTkn: &token.Token{ + ID: token.T_PAAMAYIM_NEKUDOTAYIM, + Value: []byte("::"), + Position: &position.Position{ + StartLine: 5, + EndLine: 5, + StartPos: 69, + EndPos: 71, + }, + }, Call: &ast.Identifier{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 5, + EndLine: 5, + StartPos: 71, + EndPos: 74, + }, + IdentifierTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("bar"), Position: &position.Position{ StartLine: 5, EndLine: 5, - StartPos: 72, - EndPos: 75, + StartPos: 71, + EndPos: 74, }, }, Value: []byte("bar"), }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ + OpenParenthesisTkn: &token.Token{ + ID: token.ID(40), + Value: []byte("("), + Position: &position.Position{ + StartLine: 5, + EndLine: 5, + StartPos: 74, + EndPos: 75, + }, + }, + Arguments: []ast.Vertex{ + &ast.Argument{ Position: &position.Position{ StartLine: 5, EndLine: 5, StartPos: 75, - EndPos: 86, + EndPos: 77, }, - }, - Arguments: []ast.Vertex{ - &ast.Argument{ - Node: ast.Node{ + Expr: &ast.ExprVariable{ + Position: &position.Position{ + StartLine: 5, + EndLine: 5, + StartPos: 75, + EndPos: 77, + }, + VarName: &ast.Identifier{ Position: &position.Position{ StartLine: 5, EndLine: 5, - StartPos: 76, - EndPos: 78, + StartPos: 75, + EndPos: 77, }, - }, - Variadic: false, - IsReference: false, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 5, - EndLine: 5, - StartPos: 76, - EndPos: 78, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 5, - EndLine: 5, - StartPos: 76, - EndPos: 78, - }, - }, + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, Value: []byte("$a"), - }, - }, - }, - &ast.Argument{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 5, - EndLine: 5, - StartPos: 80, - EndPos: 85, - }, - }, - Variadic: true, - IsReference: false, - Expr: &ast.ExprVariable{ - Node: ast.Node{ Position: &position.Position{ StartLine: 5, EndLine: 5, - StartPos: 83, - EndPos: 85, + StartPos: 75, + EndPos: 77, }, }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 5, - EndLine: 5, - StartPos: 83, - EndPos: 85, - }, - }, - Value: []byte("$b"), - }, + Value: []byte("$a"), }, }, }, + &ast.Argument{ + Position: &position.Position{ + StartLine: 5, + EndLine: 5, + StartPos: 79, + EndPos: 84, + }, + VariadicTkn: &token.Token{ + ID: token.T_ELLIPSIS, + Value: []byte("..."), + Position: &position.Position{ + StartLine: 5, + EndLine: 5, + StartPos: 79, + EndPos: 82, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 5, + EndLine: 5, + StartPos: 78, + EndPos: 79, + }, + }, + }, + }, + Expr: &ast.ExprVariable{ + Position: &position.Position{ + StartLine: 5, + EndLine: 5, + StartPos: 82, + EndPos: 84, + }, + VarName: &ast.Identifier{ + Position: &position.Position{ + StartLine: 5, + EndLine: 5, + StartPos: 82, + EndPos: 84, + }, + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$b"), + Position: &position.Position{ + StartLine: 5, + EndLine: 5, + StartPos: 82, + EndPos: 84, + }, + }, + Value: []byte("$b"), + }, + }, + }, + }, + SeparatorTkns: []*token.Token{ + { + ID: token.ID(44), + Value: []byte(","), + Position: &position.Position{ + StartLine: 5, + EndLine: 5, + StartPos: 77, + EndPos: 78, + }, + }, + }, + CloseParenthesisTkn: &token.Token{ + ID: token.ID(41), + Value: []byte(")"), + Position: &position.Position{ + StartLine: 5, + EndLine: 5, + StartPos: 84, + EndPos: 85, + }, + }, + }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 5, + EndLine: 5, + StartPos: 85, + EndPos: 86, }, }, }, &ast.StmtExpression{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 6, + EndLine: 6, + StartPos: 89, + EndPos: 110, + }, + Expr: &ast.ExprStaticCall{ Position: &position.Position{ StartLine: 6, EndLine: 6, - StartPos: 90, - EndPos: 111, + StartPos: 89, + EndPos: 109, }, - }, - Expr: &ast.ExprStaticCall{ - Node: ast.Node{ + Class: &ast.ExprVariable{ Position: &position.Position{ StartLine: 6, EndLine: 6, - StartPos: 90, - EndPos: 110, + StartPos: 89, + EndPos: 93, }, - }, - Class: &ast.ExprVariable{ - Node: ast.Node{ + VarName: &ast.Identifier{ Position: &position.Position{ StartLine: 6, EndLine: 6, - StartPos: 90, - EndPos: 94, + StartPos: 89, + EndPos: 93, }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$foo"), Position: &position.Position{ StartLine: 6, EndLine: 6, - StartPos: 90, - EndPos: 94, + StartPos: 89, + EndPos: 93, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte("\n\t\t"), + Position: &position.Position{ + StartLine: 5, + EndLine: 6, + StartPos: 86, + EndPos: 89, + }, + }, }, }, Value: []byte("$foo"), }, }, + DoubleColonTkn: &token.Token{ + ID: token.T_PAAMAYIM_NEKUDOTAYIM, + Value: []byte("::"), + Position: &position.Position{ + StartLine: 6, + EndLine: 6, + StartPos: 93, + EndPos: 95, + }, + }, Call: &ast.Identifier{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 6, + EndLine: 6, + StartPos: 95, + EndPos: 98, + }, + IdentifierTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("bar"), Position: &position.Position{ StartLine: 6, EndLine: 6, - StartPos: 96, - EndPos: 99, + StartPos: 95, + EndPos: 98, }, }, Value: []byte("bar"), }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ + OpenParenthesisTkn: &token.Token{ + ID: token.ID(40), + Value: []byte("("), + Position: &position.Position{ + StartLine: 6, + EndLine: 6, + StartPos: 98, + EndPos: 99, + }, + }, + Arguments: []ast.Vertex{ + &ast.Argument{ Position: &position.Position{ StartLine: 6, EndLine: 6, StartPos: 99, - EndPos: 110, + EndPos: 101, }, - }, - Arguments: []ast.Vertex{ - &ast.Argument{ - Node: ast.Node{ + Expr: &ast.ExprVariable{ + Position: &position.Position{ + StartLine: 6, + EndLine: 6, + StartPos: 99, + EndPos: 101, + }, + VarName: &ast.Identifier{ Position: &position.Position{ StartLine: 6, EndLine: 6, - StartPos: 100, - EndPos: 102, + StartPos: 99, + EndPos: 101, }, - }, - Variadic: false, - IsReference: false, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 6, - EndLine: 6, - StartPos: 100, - EndPos: 102, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 6, - EndLine: 6, - StartPos: 100, - EndPos: 102, - }, - }, + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, Value: []byte("$a"), - }, - }, - }, - &ast.Argument{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 6, - EndLine: 6, - StartPos: 104, - EndPos: 109, - }, - }, - Variadic: true, - IsReference: false, - Expr: &ast.ExprVariable{ - Node: ast.Node{ Position: &position.Position{ StartLine: 6, EndLine: 6, - StartPos: 107, - EndPos: 109, + StartPos: 99, + EndPos: 101, }, }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 6, - EndLine: 6, - StartPos: 107, - EndPos: 109, - }, - }, - Value: []byte("$b"), - }, + Value: []byte("$a"), }, }, }, + &ast.Argument{ + Position: &position.Position{ + StartLine: 6, + EndLine: 6, + StartPos: 103, + EndPos: 108, + }, + VariadicTkn: &token.Token{ + ID: token.T_ELLIPSIS, + Value: []byte("..."), + Position: &position.Position{ + StartLine: 6, + EndLine: 6, + StartPos: 103, + EndPos: 106, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 6, + EndLine: 6, + StartPos: 102, + EndPos: 103, + }, + }, + }, + }, + Expr: &ast.ExprVariable{ + Position: &position.Position{ + StartLine: 6, + EndLine: 6, + StartPos: 106, + EndPos: 108, + }, + VarName: &ast.Identifier{ + Position: &position.Position{ + StartLine: 6, + EndLine: 6, + StartPos: 106, + EndPos: 108, + }, + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$b"), + Position: &position.Position{ + StartLine: 6, + EndLine: 6, + StartPos: 106, + EndPos: 108, + }, + }, + Value: []byte("$b"), + }, + }, + }, + }, + SeparatorTkns: []*token.Token{ + { + ID: token.ID(44), + Value: []byte(","), + Position: &position.Position{ + StartLine: 6, + EndLine: 6, + StartPos: 101, + EndPos: 102, + }, + }, + }, + CloseParenthesisTkn: &token.Token{ + ID: token.ID(41), + Value: []byte(")"), + Position: &position.Position{ + StartLine: 6, + EndLine: 6, + StartPos: 108, + EndPos: 109, + }, + }, + }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 6, + EndLine: 6, + StartPos: 109, + EndPos: 110, }, }, }, &ast.StmtExpression{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 7, + EndLine: 7, + StartPos: 113, + EndPos: 132, + }, + Expr: &ast.ExprNew{ Position: &position.Position{ StartLine: 7, EndLine: 7, - StartPos: 114, - EndPos: 133, + StartPos: 113, + EndPos: 131, }, - }, - Expr: &ast.ExprNew{ - Node: ast.Node{ + NewTkn: &token.Token{ + ID: token.T_NEW, + Value: []byte("new"), Position: &position.Position{ StartLine: 7, EndLine: 7, - StartPos: 114, - EndPos: 132, + StartPos: 113, + EndPos: 116, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte("\n\t\t"), + Position: &position.Position{ + StartLine: 6, + EndLine: 7, + StartPos: 110, + EndPos: 113, + }, + }, }, }, Class: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 118, - EndPos: 121, - }, + Position: &position.Position{ + StartLine: 7, + EndLine: 7, + StartPos: 117, + EndPos: 120, }, Parts: []ast.Vertex{ &ast.NameNamePart{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 7, + EndLine: 7, + StartPos: 117, + EndPos: 120, + }, + StringTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("foo"), Position: &position.Position{ StartLine: 7, EndLine: 7, - StartPos: 118, - EndPos: 121, + StartPos: 117, + EndPos: 120, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 7, + EndLine: 7, + StartPos: 116, + EndPos: 117, + }, + }, }, }, Value: []byte("foo"), }, }, }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ + OpenParenthesisTkn: &token.Token{ + ID: token.ID(40), + Value: []byte("("), + Position: &position.Position{ + StartLine: 7, + EndLine: 7, + StartPos: 120, + EndPos: 121, + }, + }, + Arguments: []ast.Vertex{ + &ast.Argument{ Position: &position.Position{ StartLine: 7, EndLine: 7, StartPos: 121, - EndPos: 132, + EndPos: 123, + }, + Expr: &ast.ExprVariable{ + Position: &position.Position{ + StartLine: 7, + EndLine: 7, + StartPos: 121, + EndPos: 123, + }, + VarName: &ast.Identifier{ + Position: &position.Position{ + StartLine: 7, + EndLine: 7, + StartPos: 121, + EndPos: 123, + }, + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$a"), + Position: &position.Position{ + StartLine: 7, + EndLine: 7, + StartPos: 121, + EndPos: 123, + }, + }, + Value: []byte("$a"), + }, + }, + }, + &ast.Argument{ + Position: &position.Position{ + StartLine: 7, + EndLine: 7, + StartPos: 125, + EndPos: 130, + }, + VariadicTkn: &token.Token{ + ID: token.T_ELLIPSIS, + Value: []byte("..."), + Position: &position.Position{ + StartLine: 7, + EndLine: 7, + StartPos: 125, + EndPos: 128, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 7, + EndLine: 7, + StartPos: 124, + EndPos: 125, + }, + }, + }, + }, + Expr: &ast.ExprVariable{ + Position: &position.Position{ + StartLine: 7, + EndLine: 7, + StartPos: 128, + EndPos: 130, + }, + VarName: &ast.Identifier{ + Position: &position.Position{ + StartLine: 7, + EndLine: 7, + StartPos: 128, + EndPos: 130, + }, + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$b"), + Position: &position.Position{ + StartLine: 7, + EndLine: 7, + StartPos: 128, + EndPos: 130, + }, + }, + Value: []byte("$b"), + }, + }, + }, + }, + SeparatorTkns: []*token.Token{ + { + ID: token.ID(44), + Value: []byte(","), + Position: &position.Position{ + StartLine: 7, + EndLine: 7, + StartPos: 123, + EndPos: 124, + }, + }, + }, + CloseParenthesisTkn: &token.Token{ + ID: token.ID(41), + Value: []byte(")"), + Position: &position.Position{ + StartLine: 7, + EndLine: 7, + StartPos: 130, + EndPos: 131, + }, + }, + }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 7, + EndLine: 7, + StartPos: 131, + EndPos: 132, + }, + }, + }, + &ast.StmtExpression{ + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 160, + EndPos: 185, + }, + Expr: &ast.ExprNew{ + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 160, + EndPos: 184, + }, + NewTkn: &token.Token{ + ID: token.T_NEW, + Value: []byte("new"), + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 160, + EndPos: 163, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte("\n\t\t"), + Position: &position.Position{ + StartLine: 7, + EndLine: 8, + StartPos: 132, + EndPos: 135, + }, + }, + { + ID: token.T_DOC_COMMENT, + Value: []byte("/** anonymous class */"), + Position: &position.Position{ + StartLine: 8, + EndLine: 8, + StartPos: 135, + EndPos: 157, + }, + }, + { + ID: token.T_WHITESPACE, + Value: []byte("\n\t\t"), + Position: &position.Position{ + StartLine: 8, + EndLine: 9, + StartPos: 157, + EndPos: 160, + }, + }, + }, + }, + Class: &ast.StmtClass{ + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 164, + EndPos: 184, + }, + ClassTkn: &token.Token{ + ID: token.T_CLASS, + Value: []byte("class"), + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 164, + EndPos: 169, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 163, + EndPos: 164, + }, + }, + }, + }, + OpenParenthesisTkn: &token.Token{ + ID: token.ID(40), + Value: []byte("("), + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 170, + EndPos: 171, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 169, + EndPos: 170, + }, + }, }, }, Arguments: []ast.Vertex{ &ast.Argument{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 122, - EndPos: 124, - }, + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 171, + EndPos: 173, }, - Variadic: false, - IsReference: false, Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 122, - EndPos: 124, - }, + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 171, + EndPos: 173, }, VarName: &ast.Identifier{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 171, + EndPos: 173, + }, + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$a"), Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 122, - EndPos: 124, + StartLine: 9, + EndLine: 9, + StartPos: 171, + EndPos: 173, }, }, Value: []byte("$a"), @@ -808,32 +1536,56 @@ func TestPhp7ArgumentNode(t *testing.T) { }, }, &ast.Argument{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 126, - EndPos: 131, - }, + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 175, + EndPos: 180, }, - Variadic: true, - IsReference: false, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 129, - EndPos: 131, + VariadicTkn: &token.Token{ + ID: token.T_ELLIPSIS, + Value: []byte("..."), + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 175, + EndPos: 178, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 174, + EndPos: 175, + }, }, }, + }, + Expr: &ast.ExprVariable{ + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 178, + EndPos: 180, + }, VarName: &ast.Identifier{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 178, + EndPos: 180, + }, + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$b"), Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 129, - EndPos: 131, + StartLine: 9, + EndLine: 9, + StartPos: 178, + EndPos: 180, }, }, Value: []byte("$b"), @@ -841,127 +1593,82 @@ func TestPhp7ArgumentNode(t *testing.T) { }, }, }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 161, - EndPos: 186, - }, - }, - Expr: &ast.ExprNew{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 161, - EndPos: 185, - }, - }, - Class: &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 165, - EndPos: 185, - }, - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ + SeparatorTkns: []*token.Token{ + { + ID: token.ID(44), + Value: []byte(","), Position: &position.Position{ StartLine: 9, EndLine: 9, - StartPos: 171, - EndPos: 182, + StartPos: 173, + EndPos: 174, }, }, - Arguments: []ast.Vertex{ - &ast.Argument{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 172, - EndPos: 174, - }, - }, - Variadic: false, - IsReference: false, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 172, - EndPos: 174, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 172, - EndPos: 174, - }, - }, - Value: []byte("$a"), - }, - }, - }, - &ast.Argument{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 176, - EndPos: 181, - }, - }, - Variadic: true, - IsReference: false, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 179, - EndPos: 181, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 179, - EndPos: 181, - }, - }, - Value: []byte("$b"), - }, + }, + CloseParenthesisTkn: &token.Token{ + ID: token.ID(41), + Value: []byte(")"), + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 180, + EndPos: 181, + }, + }, + OpenCurlyBracketTkn: &token.Token{ + ID: token.ID(123), + Value: []byte("{"), + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 182, + EndPos: 183, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 181, + EndPos: 182, }, }, }, }, Stmts: []ast.Vertex{}, + CloseCurlyBracketTkn: &token.Token{ + ID: token.ID(125), + Value: []byte("}"), + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 183, + EndPos: 184, + }, + }, + }, + }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 9, + EndLine: 9, + StartPos: 184, + EndPos: 185, }, }, }, }, + EndTkn: &token.Token{}, } lexer := scanner.NewLexer([]byte(src), "7.4", nil) php7parser := php7.NewParser(lexer, nil) php7parser.Parse() actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -974,66 +1681,136 @@ func TestPhp7ParameterNode(t *testing.T) { ` expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 2, - EndLine: 5, - StartPos: 5, - EndPos: 214, - }, + Position: &position.Position{ + StartLine: 2, + EndLine: 5, + StartPos: 5, + EndPos: 214, }, Stmts: []ast.Vertex{ &ast.StmtFunction{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 2, + EndLine: 2, + StartPos: 5, + EndPos: 50, + }, + FunctionTkn: &token.Token{ + ID: token.T_FUNCTION, + Value: []byte("function"), Position: &position.Position{ StartLine: 2, EndLine: 2, StartPos: 5, - EndPos: 50, + EndPos: 13, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_OPEN_TAG, + Value: []byte("bar()";` expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 22, - }, + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 22, }, Stmts: []ast.Vertex{ &ast.StmtExpression{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 22, + }, + Expr: &ast.ScalarEncapsed{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 22, + EndPos: 21, }, - }, - Expr: &ast.ScalarEncapsed{ - Node: ast.Node{ + OpenQuoteTkn: &token.Token{ + ID: token.ID(34), + Value: []byte("\""), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 21, + EndPos: 4, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_OPEN_TAG, + Value: []byte(""), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 13, + EndPos: 15, + }, + }, Property: &ast.Identifier{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 15, + EndPos: 18, + }, + IdentifierTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("bar"), Position: &position.Position{ StartLine: 1, EndLine: 1, @@ -2516,7 +4563,15 @@ func TestScalarEncapsed_SimpleVarPropertyFetch(t *testing.T) { }, }, &ast.ScalarEncapsedStringPart{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 18, + EndPos: 20, + }, + EncapsedStrTkn: &token.Token{ + ID: token.T_ENCAPSED_AND_WHITESPACE, + Value: []byte("()"), Position: &position.Position{ StartLine: 1, EndLine: 1, @@ -2527,17 +4582,36 @@ func TestScalarEncapsed_SimpleVarPropertyFetch(t *testing.T) { Value: []byte("()"), }, }, + CloseQuoteTkn: &token.Token{ + ID: token.ID(34), + Value: []byte("\""), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 20, + EndPos: 21, + }, + }, + }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 21, + EndPos: 22, + }, }, }, }, + EndTkn: &token.Token{}, } lexer := scanner.NewLexer([]byte(src), "7.4", nil) php7parser := php7.NewParser(lexer, nil) php7parser.Parse() actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -2545,36 +4619,70 @@ func TestScalarEncapsed_DollarOpenCurlyBraces(t *testing.T) { src := `bar()}";` +func TestScalarEncapsed_DollarOpenCurlyBracesDimNumber(t *testing.T) { + src := `bar()}";` + + expected := &ast.Root{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 24, + }, + Stmts: []ast.Vertex{ + &ast.StmtExpression{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 24, + }, + Expr: &ast.ScalarEncapsed{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 23, + }, + OpenQuoteTkn: &token.Token{ + ID: token.ID(34), + Value: []byte("\""), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 4, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_OPEN_TAG, + Value: []byte(""), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 14, + EndPos: 16, + }, + }, + Method: &ast.Identifier{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 16, + EndPos: 19, + }, + IdentifierTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("bar"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 16, + EndPos: 19, + }, + }, + Value: []byte("bar"), + }, + OpenParenthesisTkn: &token.Token{ + ID: token.ID(40), + Value: []byte("("), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 19, + EndPos: 20, + }, + }, + CloseParenthesisTkn: &token.Token{ + ID: token.ID(41), + Value: []byte(")"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 20, + EndPos: 21, + }, + }, + }, + CloseBracketTkn: &token.Token{ + ID: token.ID(125), + Value: []byte("}"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 21, + EndPos: 22, + }, + }, + }, + }, + CloseQuoteTkn: &token.Token{ + ID: token.ID(34), + Value: []byte("\""), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 22, + EndPos: 23, + }, + }, + }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 23, + EndPos: 24, + }, + }, + }, + }, + EndTkn: &token.Token{}, } lexer := scanner.NewLexer([]byte(src), "7.4", nil) php7parser := php7.NewParser(lexer, nil) php7parser.Parse() actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -2837,37 +5224,70 @@ LBL; ` expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 3, - StartPos: 3, - EndPos: 24, - }, + Position: &position.Position{ + StartLine: 1, + EndLine: 3, + StartPos: 3, + EndPos: 24, }, Stmts: []ast.Vertex{ &ast.StmtExpression{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 3, + StartPos: 3, + EndPos: 24, + }, + Expr: &ast.ScalarHeredoc{ Position: &position.Position{ StartLine: 1, EndLine: 3, StartPos: 3, - EndPos: 24, + EndPos: 23, }, - }, - Expr: &ast.ScalarHeredoc{ - Node: ast.Node{ + OpenHeredocTkn: &token.Token{ + ID: token.T_START_HEREDOC, + Value: []byte("<< $v) {}` expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 30, - }, + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 30, }, Stmts: []ast.Vertex{ &ast.StmtForeach{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 30, + }, + ForeachTkn: &token.Token{ + ID: token.T_FOREACH, + Value: []byte("foreach"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 30, + EndPos: 10, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_OPEN_TAG, + Value: []byte(""), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 21, + EndPos: 23, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 20, + EndPos: 21, + }, + }, + }, + }, Var: &ast.ExprVariable{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 24, + EndPos: 26, + }, + VarName: &ast.Identifier{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 24, EndPos: 26, }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$v"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 24, EndPos: 26, }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 23, + EndPos: 24, + }, + }, + }, }, Value: []byte("$v"), }, }, + CloseParenthesisTkn: &token.Token{ + ID: token.ID(41), + Value: []byte(")"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 26, + EndPos: 27, + }, + }, Stmt: &ast.StmtStmtList{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 28, + EndPos: 30, + }, + OpenCurlyBracketTkn: &token.Token{ + ID: token.ID(123), + Value: []byte("{"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 28, - EndPos: 30, + EndPos: 29, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 27, + EndPos: 28, + }, + }, }, }, Stmts: []ast.Vertex{}, + CloseCurlyBracketTkn: &token.Token{ + ID: token.ID(125), + Value: []byte("}"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 29, + EndPos: 30, + }, + }, }, }, }, + EndTkn: &token.Token{}, } lexer := scanner.NewLexer([]byte(src), "7.4", nil) php7parser := php7.NewParser(lexer, nil) php7parser.Parse() actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -7217,98 +16061,284 @@ func TestStmtForeach_ExprWithKey(t *testing.T) { src := ` $v) {}` expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 30, - }, + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 30, }, Stmts: []ast.Vertex{ &ast.StmtForeach{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 30, + }, + ForeachTkn: &token.Token{ + ID: token.T_FOREACH, + Value: []byte("foreach"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 30, + EndPos: 10, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_OPEN_TAG, + Value: []byte(""), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 21, + EndPos: 23, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 20, + EndPos: 21, + }, + }, + }, + }, Var: &ast.ExprVariable{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 24, + EndPos: 26, + }, + VarName: &ast.Identifier{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 24, EndPos: 26, }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$v"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 24, EndPos: 26, }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 23, + EndPos: 24, + }, + }, + }, }, Value: []byte("$v"), }, }, + CloseParenthesisTkn: &token.Token{ + ID: token.ID(41), + Value: []byte(")"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 26, + EndPos: 27, + }, + }, Stmt: &ast.StmtStmtList{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 28, + EndPos: 30, + }, + OpenCurlyBracketTkn: &token.Token{ + ID: token.ID(123), + Value: []byte("{"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 28, - EndPos: 30, + EndPos: 29, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 27, + EndPos: 28, + }, + }, }, }, Stmts: []ast.Vertex{}, + CloseCurlyBracketTkn: &token.Token{ + ID: token.ID(125), + Value: []byte("}"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 29, + EndPos: 30, + }, + }, }, }, }, + EndTkn: &token.Token{}, } lexer := scanner.NewLexer([]byte(src), "7.4", nil) php7parser := php7.NewParser(lexer, nil) php7parser.Parse() actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -7316,35 +16346,91 @@ func TestStmtForeach_WithRef(t *testing.T) { src := ` &$v) {}` expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 31, - }, + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 31, }, Stmts: []ast.Vertex{ &ast.StmtForeach{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 31, + }, + ForeachTkn: &token.Token{ + ID: token.T_FOREACH, + Value: []byte("foreach"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 31, + EndPos: 10, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_OPEN_TAG, + Value: []byte(""), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 21, + EndPos: 23, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 20, + EndPos: 21, + }, + }, + }, + }, Var: &ast.ExprReference{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 24, + EndPos: 27, + }, + AmpersandTkn: &token.Token{ + ID: token.ID(38), + Value: []byte("&"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 24, - EndPos: 27, + EndPos: 25, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 23, + EndPos: 24, + }, + }, }, }, Var: &ast.ExprVariable{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 25, + EndPos: 27, + }, + VarName: &ast.Identifier{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 25, EndPos: 27, }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$v"), Position: &position.Position{ StartLine: 1, EndLine: 1, @@ -7407,27 +16581,66 @@ func TestStmtForeach_WithRef(t *testing.T) { }, }, }, + CloseParenthesisTkn: &token.Token{ + ID: token.ID(41), + Value: []byte(")"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 27, + EndPos: 28, + }, + }, Stmt: &ast.StmtStmtList{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 29, + EndPos: 31, + }, + OpenCurlyBracketTkn: &token.Token{ + ID: token.ID(123), + Value: []byte("{"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 29, - EndPos: 31, + EndPos: 30, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 28, + EndPos: 29, + }, + }, }, }, Stmts: []ast.Vertex{}, + CloseCurlyBracketTkn: &token.Token{ + ID: token.ID(125), + Value: []byte("}"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 30, + EndPos: 31, + }, + }, }, }, }, + EndTkn: &token.Token{}, } lexer := scanner.NewLexer([]byte(src), "7.4", nil) php7parser := php7.NewParser(lexer, nil) php7parser.Parse() actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -7435,35 +16648,91 @@ func TestStmtForeach_WithList(t *testing.T) { src := ` list($v)) {}` expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 36, - }, + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 36, }, Stmts: []ast.Vertex{ &ast.StmtForeach{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 36, + }, + ForeachTkn: &token.Token{ + ID: token.T_FOREACH, + Value: []byte("foreach"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 36, + EndPos: 10, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_OPEN_TAG, + Value: []byte(""), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 21, + EndPos: 23, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 20, + EndPos: 21, + }, + }, + }, + }, Var: &ast.ExprList{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 24, + EndPos: 32, + }, + ListTkn: &token.Token{ + ID: token.T_LIST, + Value: []byte("list"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 24, - EndPos: 32, + EndPos: 28, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 23, + EndPos: 24, + }, + }, + }, + }, + OpenBracketTkn: &token.Token{ + ID: token.ID(40), + Value: []byte("("), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 28, + EndPos: 29, }, }, Items: []ast.Vertex{ &ast.ExprArrayItem{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 29, + EndPos: 31, + }, + Val: &ast.ExprVariable{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 29, EndPos: 31, }, - }, - Val: &ast.ExprVariable{ - Node: ast.Node{ + VarName: &ast.Identifier{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 29, EndPos: 31, }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$v"), Position: &position.Position{ StartLine: 1, EndLine: 1, @@ -7537,28 +16902,77 @@ func TestStmtForeach_WithList(t *testing.T) { }, }, }, + CloseBracketTkn: &token.Token{ + ID: token.ID(41), + Value: []byte(")"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 31, + EndPos: 32, + }, + }, + }, + CloseParenthesisTkn: &token.Token{ + ID: token.ID(41), + Value: []byte(")"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 32, + EndPos: 33, + }, }, Stmt: &ast.StmtStmtList{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 34, + EndPos: 36, + }, + OpenCurlyBracketTkn: &token.Token{ + ID: token.ID(123), + Value: []byte("{"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 34, - EndPos: 36, + EndPos: 35, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 33, + EndPos: 34, + }, + }, }, }, Stmts: []ast.Vertex{}, + CloseCurlyBracketTkn: &token.Token{ + ID: token.ID(125), + Value: []byte("}"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 35, + EndPos: 36, + }, + }, }, }, }, + EndTkn: &token.Token{}, } lexer := scanner.NewLexer([]byte(src), "7.4", nil) php7parser := php7.NewParser(lexer, nil) php7parser.Parse() actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -7566,47 +16980,145 @@ func TestStmtFunction(t *testing.T) { src := `
` expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 17, - }, + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 17, }, Stmts: []ast.Vertex{ &ast.StmtNop{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 5, + }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte("?>"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, EndPos: 5, }, + FreeFloating: []*token.Token{ + { + ID: token.T_OPEN_TAG, + Value: []byte(""), Position: &position.Position{ StartLine: 1, EndLine: 1, @@ -8958,14 +20585,13 @@ func TestStmtInlineHtml(t *testing.T) { Value: []byte("
"), }, }, + EndTkn: &token.Token{}, } lexer := scanner.NewLexer([]byte(src), "7.4", nil) php7parser := php7.NewParser(lexer, nil) php7parser.Parse() actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -8973,46 +20599,125 @@ func TestStmtInterface(t *testing.T) { src := `1, &$b,);` expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 21, - }, + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 21, }, Stmts: []ast.Vertex{ &ast.StmtExpression{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 21, + }, + Expr: &ast.ExprArray{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 21, + EndPos: 20, }, - }, - Expr: &ast.ExprArray{ - Node: ast.Node{ + ArrayTkn: &token.Token{ + ID: token.T_ARRAY, + Value: []byte("array"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 20, + EndPos: 8, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_OPEN_TAG, + Value: []byte(""), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 10, + EndPos: 12, + }, + }, Val: &ast.ScalarLnumber{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 12, + EndPos: 13, + }, + NumberTkn: &token.Token{ + ID: token.T_LNUMBER, + Value: []byte("1"), Position: &position.Position{ StartLine: 1, EndLine: 1, @@ -14828,34 +34768,58 @@ func TestExprArray_Items(t *testing.T) { }, }, &ast.ExprArrayItem{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 15, + EndPos: 18, + }, + Val: &ast.ExprReference{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 15, EndPos: 18, }, - }, - Val: &ast.ExprReference{ - Node: ast.Node{ + AmpersandTkn: &token.Token{ + ID: token.ID(38), + Value: []byte("&"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 15, - EndPos: 18, + EndPos: 16, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 14, + EndPos: 15, + }, + }, }, }, Var: &ast.ExprVariable{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 16, + EndPos: 18, + }, + VarName: &ast.Identifier{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 16, EndPos: 18, }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$b"), Position: &position.Position{ StartLine: 1, EndLine: 1, @@ -14870,17 +34834,58 @@ func TestExprArray_Items(t *testing.T) { }, &ast.ExprArrayItem{}, }, + SeparatorTkns: []*token.Token{ + { + ID: token.ID(44), + Value: []byte(","), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 13, + EndPos: 14, + }, + }, + { + ID: token.ID(44), + Value: []byte(","), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 18, + EndPos: 19, + }, + }, + }, + CloseBracketTkn: &token.Token{ + ID: token.ID(41), + Value: []byte(")"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 19, + EndPos: 20, + }, + }, + }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 20, + EndPos: 21, + }, }, }, }, + EndTkn: &token.Token{}, } lexer := scanner.NewLexer([]byte(src), "7.4", nil) php7parser := php7.NewParser(lexer, nil) php7parser.Parse() actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -14888,55 +34893,104 @@ func TestExprArray_ItemUnpack(t *testing.T) { src := ` $a;` expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 14, - }, + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 14, }, Stmts: []ast.Vertex{ &ast.StmtExpression{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 14, + }, + Expr: &ast.ExprArrowFunction{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 14, + EndPos: 13, }, - }, - Expr: &ast.ExprArrowFunction{ - Node: ast.Node{ + FnTkn: &token.Token{ + ID: token.T_FN, + Value: []byte("fn"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 13, + EndPos: 5, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_OPEN_TAG, + Value: []byte(""), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 8, + EndPos: 10, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 7, + EndPos: 8, + }, + }, }, }, - ReturnsRef: false, - Static: false, Expr: &ast.ExprVariable{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 11, + EndPos: 13, + }, + VarName: &ast.Identifier{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 11, EndPos: 13, }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$a"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 11, EndPos: 13, }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 10, + EndPos: 11, + }, + }, + }, }, Value: []byte("$a"), }, }, }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 13, + EndPos: 14, + }, + }, }, }, + EndTkn: &token.Token{}, } lexer := scanner.NewLexer([]byte(src), "7.4", nil) php7parser := php7.NewParser(lexer, nil) php7parser.Parse() actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -15035,90 +35201,257 @@ func TestExprArrowFunction_ReturnType(t *testing.T) { src := ` $a;` expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 23, - }, + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 23, }, Stmts: []ast.Vertex{ &ast.StmtExpression{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 23, + }, + Expr: &ast.ExprArrowFunction{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 23, + EndPos: 22, }, - }, - Expr: &ast.ExprArrowFunction{ - Node: ast.Node{ + FnTkn: &token.Token{ + ID: token.T_FN, + Value: []byte("fn"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 22, + EndPos: 5, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_OPEN_TAG, + Value: []byte(""), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 17, + EndPos: 19, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 16, + EndPos: 17, + }, + }, + }, + }, Expr: &ast.ExprVariable{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 20, + EndPos: 22, + }, + VarName: &ast.Identifier{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 20, EndPos: 22, }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$a"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 20, EndPos: 22, }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 19, + EndPos: 20, + }, + }, + }, }, Value: []byte("$a"), }, }, }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 22, + EndPos: 23, + }, + }, }, }, + EndTkn: &token.Token{}, } lexer := scanner.NewLexer([]byte(src), "7.4", nil) php7parser := php7.NewParser(lexer, nil) php7parser.Parse() actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -15126,44 +35459,76 @@ func TestExprBitwiseNot(t *testing.T) { src := `foo();` expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 13, - }, + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 13, }, Stmts: []ast.Vertex{ &ast.StmtExpression{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 13, + }, + Expr: &ast.ExprMethodCall{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 13, + EndPos: 12, }, - }, - Expr: &ast.ExprMethodCall{ - Node: ast.Node{ + Var: &ast.ExprVariable{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 12, + EndPos: 5, }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ + VarName: &ast.Identifier{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, EndPos: 5, }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$a"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, EndPos: 5, }, + FreeFloating: []*token.Token{ + { + ID: token.T_OPEN_TAG, + Value: []byte(""), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 5, + EndPos: 7, + }, + }, Method: &ast.Identifier{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 7, + EndPos: 10, + }, + IdentifierTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("foo"), Position: &position.Position{ StartLine: 1, EndLine: 1, @@ -18910,27 +42553,46 @@ func TestExprMethodCall(t *testing.T) { }, Value: []byte("foo"), }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 10, - EndPos: 12, - }, + OpenParenthesisTkn: &token.Token{ + ID: token.ID(40), + Value: []byte("("), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 10, + EndPos: 11, }, }, + CloseParenthesisTkn: &token.Token{ + ID: token.ID(41), + Value: []byte(")"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 11, + EndPos: 12, + }, + }, + }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 12, + EndPos: 13, + }, }, }, }, + EndTkn: &token.Token{}, } lexer := scanner.NewLexer([]byte(src), "7.4", nil) php7parser := php7.NewParser(lexer, nil) php7parser.Parse() actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -18938,67 +42600,120 @@ func TestExprNew(t *testing.T) { src := `foo;` expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 11, - }, + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 11, }, Stmts: []ast.Vertex{ &ast.StmtExpression{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 11, + }, + Expr: &ast.ExprPropertyFetch{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 11, + EndPos: 10, }, - }, - Expr: &ast.ExprPropertyFetch{ - Node: ast.Node{ + Var: &ast.ExprVariable{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 10, + EndPos: 5, }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ + VarName: &ast.Identifier{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, EndPos: 5, }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$a"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, EndPos: 5, }, + FreeFloating: []*token.Token{ + { + ID: token.T_OPEN_TAG, + Value: []byte(""), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 5, + EndPos: 7, + }, + }, Property: &ast.Identifier{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 7, + EndPos: 10, + }, + IdentifierTkn: &token.Token{ + ID: token.T_STRING, + Value: []byte("foo"), Position: &position.Position{ StartLine: 1, EndLine: 1, @@ -19422,16 +43549,25 @@ func TestExprPropertyFetch(t *testing.T) { Value: []byte("foo"), }, }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 10, + EndPos: 11, + }, + }, }, }, + EndTkn: &token.Token{}, } lexer := scanner.NewLexer([]byte(src), "7.4", nil) php7parser := php7.NewParser(lexer, nil) php7parser.Parse() actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -19440,35 +43576,91 @@ func TestExprReference_ForeachWithRef(t *testing.T) { src := ` &$v) {}` expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 31, - }, + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 31, }, Stmts: []ast.Vertex{ &ast.StmtForeach{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 31, + }, + ForeachTkn: &token.Token{ + ID: token.T_FOREACH, + Value: []byte("foreach"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 31, + EndPos: 10, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_OPEN_TAG, + Value: []byte(""), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 21, + EndPos: 23, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 20, + EndPos: 21, + }, + }, + }, + }, Var: &ast.ExprReference{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 24, + EndPos: 27, + }, + AmpersandTkn: &token.Token{ + ID: token.ID(38), + Value: []byte("&"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 24, - EndPos: 27, + EndPos: 25, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 23, + EndPos: 24, + }, + }, }, }, Var: &ast.ExprVariable{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 25, + EndPos: 27, + }, + VarName: &ast.Identifier{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 25, EndPos: 27, }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$v"), Position: &position.Position{ StartLine: 1, EndLine: 1, @@ -19531,27 +43811,66 @@ func TestExprReference_ForeachWithRef(t *testing.T) { }, }, }, + CloseParenthesisTkn: &token.Token{ + ID: token.ID(41), + Value: []byte(")"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 27, + EndPos: 28, + }, + }, Stmt: &ast.StmtStmtList{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 29, + EndPos: 31, + }, + OpenCurlyBracketTkn: &token.Token{ + ID: token.ID(123), + Value: []byte("{"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 29, - EndPos: 31, + EndPos: 30, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 28, + EndPos: 29, + }, + }, }, }, Stmts: []ast.Vertex{}, + CloseCurlyBracketTkn: &token.Token{ + ID: token.ID(125), + Value: []byte("}"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 30, + EndPos: 31, + }, + }, }, }, }, + EndTkn: &token.Token{}, } lexer := scanner.NewLexer([]byte(src), "7.4", nil) php7parser := php7.NewParser(lexer, nil) php7parser.Parse() actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -19559,36 +43878,70 @@ func TestExprShellExec(t *testing.T) { src := "1, &$b,];` expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 16, - }, + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 16, }, Stmts: []ast.Vertex{ &ast.StmtExpression{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 16, + }, + Expr: &ast.ExprArray{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 16, + EndPos: 15, }, - }, - Expr: &ast.ExprShortArray{ - Node: ast.Node{ + OpenBracketTkn: &token.Token{ + ID: token.ID(91), + Value: []byte("["), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 15, + EndPos: 4, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_OPEN_TAG, + Value: []byte(""), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 5, + EndPos: 7, + }, + }, Val: &ast.ScalarLnumber{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 7, + EndPos: 8, + }, + NumberTkn: &token.Token{ + ID: token.T_LNUMBER, + Value: []byte("1"), Position: &position.Position{ StartLine: 1, EndLine: 1, @@ -19813,34 +44336,58 @@ func TestExprShortArray_Items(t *testing.T) { }, }, &ast.ExprArrayItem{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 10, + EndPos: 13, + }, + Val: &ast.ExprReference{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 10, EndPos: 13, }, - }, - Val: &ast.ExprReference{ - Node: ast.Node{ + AmpersandTkn: &token.Token{ + ID: token.ID(38), + Value: []byte("&"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 10, - EndPos: 13, + EndPos: 11, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 9, + EndPos: 10, + }, + }, }, }, Var: &ast.ExprVariable{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 11, + EndPos: 13, + }, + VarName: &ast.Identifier{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 11, EndPos: 13, }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$b"), Position: &position.Position{ StartLine: 1, EndLine: 1, @@ -19855,17 +44402,58 @@ func TestExprShortArray_Items(t *testing.T) { }, &ast.ExprArrayItem{}, }, + SeparatorTkns: []*token.Token{ + { + ID: token.ID(44), + Value: []byte(","), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 8, + EndPos: 9, + }, + }, + { + ID: token.ID(44), + Value: []byte(","), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 13, + EndPos: 14, + }, + }, + }, + CloseBracketTkn: &token.Token{ + ID: token.ID(93), + Value: []byte("]"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 14, + EndPos: 15, + }, + }, + }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 15, + EndPos: 16, + }, }, }, }, + EndTkn: &token.Token{}, } lexer := scanner.NewLexer([]byte(src), "7.4", nil) php7parser := php7.NewParser(lexer, nil) php7parser.Parse() actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -19873,63 +44461,91 @@ func TestExprShortList(t *testing.T) { src := ` $b;` expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 18, - }, + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 18, }, Stmts: []ast.Vertex{ &ast.StmtExpression{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 18, + }, + Expr: &ast.ExprYield{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 18, + EndPos: 17, }, - }, - Expr: &ast.ExprYield{ - Node: ast.Node{ + YieldTkn: &token.Token{ + ID: token.T_YIELD, + Value: []byte("yield"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 17, + EndPos: 8, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_OPEN_TAG, + Value: []byte(""), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 12, + EndPos: 14, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 11, + EndPos: 12, + }, + }, + }, + }, Value: &ast.ExprVariable{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 15, + EndPos: 17, + }, + VarName: &ast.Identifier{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 15, EndPos: 17, }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$b"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 15, EndPos: 17, }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 14, + EndPos: 15, + }, + }, + }, }, Value: []byte("$b"), }, }, }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 17, + EndPos: 18, + }, + }, }, }, + EndTkn: &token.Token{}, } lexer := scanner.NewLexer([]byte(src), "7.4", nil) php7parser := php7.NewParser(lexer, nil) php7parser.Parse() actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -21929,55 +48233,110 @@ func TestExprYield_Expr(t *testing.T) { src := ` 1;` expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 17, - }, + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 17, }, Stmts: []ast.Vertex{ &ast.StmtExpression{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 3, + EndPos: 17, + }, + Expr: &ast.ExprYield{ Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 17, + EndPos: 16, }, - }, - Expr: &ast.ExprYield{ - Node: ast.Node{ + YieldTkn: &token.Token{ + ID: token.T_YIELD, + Value: []byte("yield"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 3, - EndPos: 16, + EndPos: 8, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_OPEN_TAG, + Value: []byte(""), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 12, + EndPos: 14, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 11, + EndPos: 12, + }, + }, + }, + }, Value: &ast.ScalarLnumber{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 15, + EndPos: 16, + }, + NumberTkn: &token.Token{ + ID: token.T_LNUMBER, + Value: []byte("1"), Position: &position.Position{ StartLine: 1, EndLine: 1, StartPos: 15, EndPos: 16, }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 14, + EndPos: 15, + }, + }, + }, }, Value: []byte("1"), }, }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 1, + EndLine: 1, + StartPos: 16, + EndPos: 17, + }, + }, }, }, + EndTkn: &token.Token{}, } lexer := scanner.NewLexer([]byte(src), "7.4", nil) php7parser := php7.NewParser(lexer, nil) php7parser.Parse() actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) assert.DeepEqual(t, expected, actual) } @@ -22062,4082 +48516,6018 @@ func TestExprYieldFrom(t *testing.T) { src := `>= $b; + $a ??= $b;` expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 11, - }, + Position: &position.Position{ + StartLine: 2, + EndLine: 18, + StartPos: 5, + EndPos: 223, }, Stmts: []ast.Vertex{ &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 11, - }, + Position: &position.Position{ + StartLine: 2, + EndLine: 2, + StartPos: 5, + EndPos: 13, }, Expr: &ast.ExprAssign{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 10, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 5, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 5, - }, - }, - Value: []byte("$a"), - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 8, - EndPos: 10, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 8, - EndPos: 10, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - }, - } - - lexer := scanner.NewLexer([]byte(src), "7.4", nil) - php7parser := php7.NewParser(lexer, nil) - php7parser.Parse() - actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) - assert.DeepEqual(t, expected, actual) -} - -func TestExprAssign_Reference(t *testing.T) { - src := `>= $b;` - - expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 13, - }, - }, - Stmts: []ast.Vertex{ - &ast.StmtExpression{ - Node: ast.Node{ + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 13, + StartLine: 16, + EndLine: 16, + StartPos: 196, + EndPos: 197, }, }, + }, + &ast.StmtExpression{ + Position: &position.Position{ + StartLine: 17, + EndLine: 17, + StartPos: 200, + EndPos: 210, + }, Expr: &ast.ExprAssignShiftRight{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 12, - }, + Position: &position.Position{ + StartLine: 17, + EndLine: 17, + StartPos: 200, + EndPos: 209, }, Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 5, - }, + Position: &position.Position{ + StartLine: 17, + EndLine: 17, + StartPos: 200, + EndPos: 202, }, VarName: &ast.Identifier{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 17, + EndLine: 17, + StartPos: 200, + EndPos: 202, + }, + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$a"), Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 5, + StartLine: 17, + EndLine: 17, + StartPos: 200, + EndPos: 202, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte("\n\t\t"), + Position: &position.Position{ + StartLine: 16, + EndLine: 17, + StartPos: 197, + EndPos: 200, + }, + }, }, }, Value: []byte("$a"), }, }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 10, - EndPos: 12, + EqualTkn: &token.Token{ + ID: token.T_SR_EQUAL, + Value: []byte(">>="), + Position: &position.Position{ + StartLine: 17, + EndLine: 17, + StartPos: 203, + EndPos: 206, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 17, + EndLine: 17, + StartPos: 202, + EndPos: 203, + }, }, }, + }, + Expr: &ast.ExprVariable{ + Position: &position.Position{ + StartLine: 17, + EndLine: 17, + StartPos: 207, + EndPos: 209, + }, VarName: &ast.Identifier{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 17, + EndLine: 17, + StartPos: 207, + EndPos: 209, + }, + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$b"), Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 10, - EndPos: 12, + StartLine: 17, + EndLine: 17, + StartPos: 207, + EndPos: 209, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 17, + EndLine: 17, + StartPos: 206, + EndPos: 207, + }, + }, }, }, Value: []byte("$b"), }, }, }, - }, - }, - } - - lexer := scanner.NewLexer([]byte(src), "7.4", nil) - php7parser := php7.NewParser(lexer, nil) - php7parser.Parse() - actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) - assert.DeepEqual(t, expected, actual) -} - -func TestExprAssign_Coalesce(t *testing.T) { - src := `= $b; + $a > $b; + $a === $b; + $a and $b; + $a or $b; + $a xor $b; + $a - $b; + $a % $b; + $a * $b; + $a != $b; + $a !== $b; + $a + $b; + $a ** $b; + $a << $b; + $a >> $b; + $a <= $b; + $a < $b; + $a <=> $b;` expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 11, - }, + Position: &position.Position{ + StartLine: 2, + EndLine: 28, + StartPos: 5, + EndPos: 320, }, Stmts: []ast.Vertex{ &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 11, - }, + Position: &position.Position{ + StartLine: 2, + EndLine: 2, + StartPos: 5, + EndPos: 13, }, Expr: &ast.ExprBinaryBitwiseAnd{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 10, - }, + Position: &position.Position{ + StartLine: 2, + EndLine: 2, + StartPos: 5, + EndPos: 12, }, Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 5, - }, + Position: &position.Position{ + StartLine: 2, + EndLine: 2, + StartPos: 5, + EndPos: 7, }, VarName: &ast.Identifier{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 2, + EndLine: 2, + StartPos: 5, + EndPos: 7, + }, + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$a"), Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 5, + StartLine: 2, + EndLine: 2, + StartPos: 5, + EndPos: 7, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_OPEN_TAG, + Value: []byte("= $b;` - - expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 12, - }, - }, - Stmts: []ast.Vertex{ - &ast.StmtExpression{ - Node: ast.Node{ + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 12, + StartLine: 10, + EndLine: 10, + StartPos: 104, + EndPos: 105, }, }, + }, + &ast.StmtExpression{ + Position: &position.Position{ + StartLine: 11, + EndLine: 11, + StartPos: 108, + EndPos: 117, + }, Expr: &ast.ExprBinaryGreaterOrEqual{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 11, - }, + Position: &position.Position{ + StartLine: 11, + EndLine: 11, + StartPos: 108, + EndPos: 116, }, Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 5, - }, + Position: &position.Position{ + StartLine: 11, + EndLine: 11, + StartPos: 108, + EndPos: 110, }, VarName: &ast.Identifier{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 11, + EndLine: 11, + StartPos: 108, + EndPos: 110, + }, + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$a"), Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 5, + StartLine: 11, + EndLine: 11, + StartPos: 108, + EndPos: 110, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte("\n\t\t"), + Position: &position.Position{ + StartLine: 10, + EndLine: 11, + StartPos: 105, + EndPos: 108, + }, + }, }, }, Value: []byte("$a"), }, }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 9, - EndPos: 11, + OpTkn: &token.Token{ + ID: token.T_IS_GREATER_OR_EQUAL, + Value: []byte(">="), + Position: &position.Position{ + StartLine: 11, + EndLine: 11, + StartPos: 111, + EndPos: 113, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 11, + EndLine: 11, + StartPos: 110, + EndPos: 111, + }, }, }, + }, + Right: &ast.ExprVariable{ + Position: &position.Position{ + StartLine: 11, + EndLine: 11, + StartPos: 114, + EndPos: 116, + }, VarName: &ast.Identifier{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 11, + EndLine: 11, + StartPos: 114, + EndPos: 116, + }, + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$b"), Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 9, - EndPos: 11, + StartLine: 11, + EndLine: 11, + StartPos: 114, + EndPos: 116, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 11, + EndLine: 11, + StartPos: 113, + EndPos: 114, + }, + }, }, }, Value: []byte("$b"), }, }, }, - }, - }, - } - - lexer := scanner.NewLexer([]byte(src), "7.4", nil) - php7parser := php7.NewParser(lexer, nil) - php7parser.Parse() - actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) - assert.DeepEqual(t, expected, actual) -} - -func TestExprBinary_Greater(t *testing.T) { - src := ` $b;` - - expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 11, - }, - }, - Stmts: []ast.Vertex{ - &ast.StmtExpression{ - Node: ast.Node{ + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 11, + StartLine: 11, + EndLine: 11, + StartPos: 116, + EndPos: 117, }, }, + }, + &ast.StmtExpression{ + Position: &position.Position{ + StartLine: 12, + EndLine: 12, + StartPos: 120, + EndPos: 128, + }, Expr: &ast.ExprBinaryGreater{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 10, - }, + Position: &position.Position{ + StartLine: 12, + EndLine: 12, + StartPos: 120, + EndPos: 127, }, Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 5, - }, + Position: &position.Position{ + StartLine: 12, + EndLine: 12, + StartPos: 120, + EndPos: 122, }, VarName: &ast.Identifier{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 12, + EndLine: 12, + StartPos: 120, + EndPos: 122, + }, + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$a"), Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 5, + StartLine: 12, + EndLine: 12, + StartPos: 120, + EndPos: 122, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte("\n\t\t"), + Position: &position.Position{ + StartLine: 11, + EndLine: 12, + StartPos: 117, + EndPos: 120, + }, + }, }, }, Value: []byte("$a"), }, }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 8, - EndPos: 10, + OpTkn: &token.Token{ + ID: token.ID(62), + Value: []byte(">"), + Position: &position.Position{ + StartLine: 12, + EndLine: 12, + StartPos: 123, + EndPos: 124, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 12, + EndLine: 12, + StartPos: 122, + EndPos: 123, + }, }, }, + }, + Right: &ast.ExprVariable{ + Position: &position.Position{ + StartLine: 12, + EndLine: 12, + StartPos: 125, + EndPos: 127, + }, VarName: &ast.Identifier{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 12, + EndLine: 12, + StartPos: 125, + EndPos: 127, + }, + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$b"), Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 8, - EndPos: 10, + StartLine: 12, + EndLine: 12, + StartPos: 125, + EndPos: 127, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 12, + EndLine: 12, + StartPos: 124, + EndPos: 125, + }, + }, }, }, Value: []byte("$b"), }, }, }, - }, - }, - } - - lexer := scanner.NewLexer([]byte(src), "7.4", nil) - php7parser := php7.NewParser(lexer, nil) - php7parser.Parse() - actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) - assert.DeepEqual(t, expected, actual) -} - -func TestExprBinary_Identical(t *testing.T) { - src := `> $b;` - - expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 12, - }, - }, - Stmts: []ast.Vertex{ - &ast.StmtExpression{ - Node: ast.Node{ + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 12, + StartLine: 24, + EndLine: 24, + StartPos: 271, + EndPos: 272, }, }, + }, + &ast.StmtExpression{ + Position: &position.Position{ + StartLine: 25, + EndLine: 25, + StartPos: 275, + EndPos: 284, + }, Expr: &ast.ExprBinaryShiftRight{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 11, - }, + Position: &position.Position{ + StartLine: 25, + EndLine: 25, + StartPos: 275, + EndPos: 283, }, Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 5, - }, + Position: &position.Position{ + StartLine: 25, + EndLine: 25, + StartPos: 275, + EndPos: 277, }, VarName: &ast.Identifier{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 25, + EndLine: 25, + StartPos: 275, + EndPos: 277, + }, + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$a"), Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 5, + StartLine: 25, + EndLine: 25, + StartPos: 275, + EndPos: 277, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte("\n\t\t"), + Position: &position.Position{ + StartLine: 24, + EndLine: 25, + StartPos: 272, + EndPos: 275, + }, + }, }, }, Value: []byte("$a"), }, }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 9, - EndPos: 11, + OpTkn: &token.Token{ + ID: token.T_SR, + Value: []byte(">>"), + Position: &position.Position{ + StartLine: 25, + EndLine: 25, + StartPos: 278, + EndPos: 280, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 25, + EndLine: 25, + StartPos: 277, + EndPos: 278, + }, }, }, + }, + Right: &ast.ExprVariable{ + Position: &position.Position{ + StartLine: 25, + EndLine: 25, + StartPos: 281, + EndPos: 283, + }, VarName: &ast.Identifier{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 25, + EndLine: 25, + StartPos: 281, + EndPos: 283, + }, + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$b"), Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 9, - EndPos: 11, + StartLine: 25, + EndLine: 25, + StartPos: 281, + EndPos: 283, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 25, + EndLine: 25, + StartPos: 280, + EndPos: 281, + }, + }, }, }, Value: []byte("$b"), }, }, }, - }, - }, - } - - lexer := scanner.NewLexer([]byte(src), "7.4", nil) - php7parser := php7.NewParser(lexer, nil) - php7parser.Parse() - actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) - assert.DeepEqual(t, expected, actual) -} - -func TestExprBinary_SmallerOrEqual(t *testing.T) { - src := ` $b;` - - expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 13, - }, - }, - Stmts: []ast.Vertex{ - &ast.StmtExpression{ - Node: ast.Node{ + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 13, + StartLine: 27, + EndLine: 27, + StartPos: 306, + EndPos: 307, }, }, + }, + &ast.StmtExpression{ + Position: &position.Position{ + StartLine: 28, + EndLine: 28, + StartPos: 310, + EndPos: 320, + }, Expr: &ast.ExprBinarySpaceship{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 12, - }, + Position: &position.Position{ + StartLine: 28, + EndLine: 28, + StartPos: 310, + EndPos: 319, }, Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 5, - }, + Position: &position.Position{ + StartLine: 28, + EndLine: 28, + StartPos: 310, + EndPos: 312, }, VarName: &ast.Identifier{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 28, + EndLine: 28, + StartPos: 310, + EndPos: 312, + }, + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$a"), Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 3, - EndPos: 5, + StartLine: 28, + EndLine: 28, + StartPos: 310, + EndPos: 312, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte("\n\t\t"), + Position: &position.Position{ + StartLine: 27, + EndLine: 28, + StartPos: 307, + EndPos: 310, + }, + }, }, }, Value: []byte("$a"), }, }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 10, - EndPos: 12, + OpTkn: &token.Token{ + ID: token.T_SPACESHIP, + Value: []byte("<=>"), + Position: &position.Position{ + StartLine: 28, + EndLine: 28, + StartPos: 313, + EndPos: 316, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 28, + EndLine: 28, + StartPos: 312, + EndPos: 313, + }, }, }, + }, + Right: &ast.ExprVariable{ + Position: &position.Position{ + StartLine: 28, + EndLine: 28, + StartPos: 317, + EndPos: 319, + }, VarName: &ast.Identifier{ - Node: ast.Node{ + Position: &position.Position{ + StartLine: 28, + EndLine: 28, + StartPos: 317, + EndPos: 319, + }, + IdentifierTkn: &token.Token{ + ID: token.T_VARIABLE, + Value: []byte("$b"), Position: &position.Position{ - StartLine: 1, - EndLine: 1, - StartPos: 10, - EndPos: 12, + StartLine: 28, + EndLine: 28, + StartPos: 317, + EndPos: 319, + }, + FreeFloating: []*token.Token{ + { + ID: token.T_WHITESPACE, + Value: []byte(" "), + Position: &position.Position{ + StartLine: 28, + EndLine: 28, + StartPos: 316, + EndPos: 317, + }, + }, }, }, Value: []byte("$b"), }, }, }, + SemiColonTkn: &token.Token{ + ID: token.ID(59), + Value: []byte(";"), + Position: &position.Position{ + StartLine: 28, + EndLine: 28, + StartPos: 319, + EndPos: 320, + }, + }, }, }, + EndTkn: &token.Token{}, } lexer := scanner.NewLexer([]byte(src), "7.4", nil) php7parser := php7.NewParser(lexer, nil) php7parser.Parse() actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) assert.DeepEqual(t, expected, actual) } // expr cast func TestExprCast_Array(t *testing.T) { - src := ``- zuhp@&b*FR)MO7I|(b5*7tziZe=2JnW=6mn+yl>LZfA3wMv)%9co^$W}){Z(ichuPt z70Jm-i((>mOeBr(AWMc)sGdKVK2Z`kfO_kKq4cAY=7Xs>rOU#h)W9sVhtf3$Z9LL= zBsGz;eHoi%GkEXuV$(@dS4AV)SIZDcM zc(9aWNGa~xgt62|%BE0bDIQDfIm0WPB9&KO8)x>2eu8>RWFB3oR9To!3HmqVsgh)7 zILAqg@suqKa;d*QK9Od!nQSEaQz=IBpP*ix;??-N8*yr)tE&4`Fk|L@?1HM{a{DRj z<2ovXCez!To-7A;QZu=+p6W=mDb$-gd1dkxdPYW1g{uvwQg1nBe!Vu8ddYxk_!Te> z)*m*%7EGfY={g+|f(g-5fd$9rSUqMsEg-3z0sl)<$fGM~(4!K)nb6K0W#TuV=Vk%p3dx!L#eg_p=fP;Z6vVv3-^)I@7t*%E4{yS+lf0V$5T%c!;HWi*Qe z(tP$elaAMV}u)o$WqZX29=FTjmR(4K*w48o4u5_OT&-bsS<*X9D zUb!@d8cBR#3YO`wQz@{PwT2e6FXmU)!eu9Vsq5&An&FRolinjrlU1#$qug6h{U}xU z+&~kRgAFV4@LRML4sN=N;LO-Sf%>^Z$|7l11f3CkC|oXV@?pvB*S(5pK2cH)qrQKe zmLP~mf?oL!<&ew@RKVwE;Ir1B@v%MG>3^mhN{A*qxuq1Y`y8al zNhb6GRLy>kmG{Ys%kxL5gA|U3kinf*Jt>&XwWRDY&9!WzvHDjszWZ}Tx_*vB_}>qb z<;+poWJ7^1#pGg6qQ0Qd0c0a!_i;J|nlfBt@l;+yO(n0021!X8&{GnnJTmt0^i_2f z#kXaQK6a97)dVb7{;$T^ztbbd+qk#HWkBM%QVNsYJ#cQ|BPv+(vM{VTN%iFVFl0z^ zcNHd&oT3x*_-O<->@JJk@wfpDL;#FR`Ue5>^0Hxr>dUxEo~xBOEP)URu=z23#GV->q%Z86(kSqf&#n# z2W)ofJTh9^m4O$xMygiw!$k{yd^F?N`!_7$FkMncN$x2_L$*X*gKvc$sJ>oynMw>* z8GRc1HnKBlEm{A>a^63vJ5D`GWBnFO=ygP=_zF_=$iDzc3nP@Q2GaF94MR4A@N5ms zl?T^N0-D0ok7W5xn~fl#j*=S!cQWsQ6B7PS2Nk@>bh2YLrh|0ie<;Qydn+91hsmr8 z;A19b!(YiZxU^T!4%7A4Mm<{Itc5Nj!;+?4{3C)D7Q~=kTkfX?^U}anQ$s@J(hQ2$ks*A| zaBe|11T_xf49R_x+K2^2UN)+W#DsBQxfg~c1iPil&M-!=QeEUjrFA&;rCJGkWjLQQ zWuY3Zi|X=Cf3R)kUR9sB5O+$dai)Ic>eUT7#6yXW0CX6`q?SQPx&g_mn)!=*^@=Qs z=6<#YNRL>4T9zN-a2fq~Fx0wj6f4_*248#|!)OGm2}xt;Sd!N9aOhW5elZT3I+^yx zGI^TJj<=ox*3G3Xp5Nv4L?^5m1j+6M-hk~Ua(Y%XOlrYMydHO4-qOQcnX#q1 zUah&D01jL9hd;tC{Ji&<_Ml*I2xsexwj5)R%f)Z+_S{EGNbHs$i1lxY_l0; z*F(Bsh>G-$wC{=ovP~{XU|%M{#+My}7$UQ}!F5yP1;7f@W!?C;%TQ)47<+$-R~&** z)C)QG@Uokzc-a@p{l(i0vaPTcJt;tM=*5SL(`}V)ZboP?1NuRqKi@R^wrt<2N@;&y z?3OlkAOjGvkpmGhU^LP&TOElQ2uBhnaU+;x$w0&{$?H;E^dM-q3MZ;88k$G^1xRYBj2Of`yd*E<~>#!^5k`9vw1{$u@fKx;KxT8f31ThbzL$ zF&wD#$8!`(_8Gtm!b0@U2^?wC+DY_D9IneJV#bgtnu!*=<0MFsUHu(PL-h0~45*7n zaZA19NwZ|bkw1m&>N~$TW9yV1cb#lR+oq(gsQEle3Mcb)88+3yf@@;&RE{HAIS<@u z3>1t5bjWmAiBC-s^ne*0>*FF_kk6qcbKp^@mZ`~eX;uH9}o$o1w3!1 z8$Au9Ekwp34m;+di~rpmsP*wv`D*xG_zY&uSs!?ods!7N1#`7@((~3Y)4te^Gv{)= zPwyPAtu<`-9fBEGy1G%~Zw6t|2jtqTsluX!&Ottsw_(>eBk8R|9 zU(ogFw|D?KZMy#qP80%iGN}lq*nS^V1aauqEoMFXr6Pko$9~gSZ+V*oz-MV_QXC|{ zWBLJW*saZG$tHjc?h# z$vyQAPxN1@5&STzI>%%D_ovqK@i*L5vT`U>BEIF?Qj$e!YllL^!$YVnx#!^l;29&i z-*bSJ=crKm?j2OClJk7g*HrDe!GRK=qw2_o3w+HWVdn*q^0kXx;ezoppO8;4A*}Eo zNdKNclN*;EGLP06)*;iqS|y*!mm?_0lbnKgmP=)PS*BdUMwE>xv3eH#zz1Z_KVX*A zUR~znvhON}I1DTLh+MsfFK}wn&KL8qLvsFYj#_(&y6MmU$!jgqIr21C8=JH;ChOfd zINj2Xl@y@E{>_;rhs$xU3(6t%(kWE-igM@Z9ni?QTd<&-AqL#$>nM9yd>N1NW|GRE zaKqet2Xdai zsjEub+_%s}Qo1{e?&E_=mA+wgC3K;UjMl(kj;Y<%Tkkx;){m=vTl1?R+ZLL*kIGdm zlAnJ@duNNHGx5e!)yt%}At3CSYAT{7qj{`eseVL^lGFgzS1JNjGOjK7<-Fb)W^EIw zjQN(QQJX`gQGNALR@G7_eT*o77LW5)0K=F_ZM@J`^A*M!&Pzt^P$kvmC+8cg`?9wV zbXIS+bJ5|LyAW<(k&GR0VCWhTM_Q6JtE+I*C^0(kA-5sfRu3j6JKi;{kKZow84Z>4 zOhaY*USAg!tTCHSHq1_wT+tZv-8QK(Q?-%YduW$OMyfuhRl-R>XAC?mx0|YdPUDNy zsgj}5u(Fz9j$?>-M%^ezjUu@b3+s#9s`|1nR@rN*>r8B%>Zj4ZqLJPaZ{zE`YY&!* z37D{*QM{~(#p^~)D;2)Bks2xUTc}56c{4TJ*RMl#=C2aZYdv2?GIERtm4om~GMR(Ln)pko}4ZY@KJ6gK6R_i<|UOaSJ)~ab$ODS*9 zZS=S{YJf}8K8+2WS2_Dm1vNm!#~oCxRJH|)4(_0)AlT*tr%O7(Un%se=KjaJp`400 z3a^@2<88|iv&JNkCi~z5WeL@Ku)bLjAP5!HA+KMO^*ZU?)8Iib>Zv9(?u3cDyqEf| zc~~)}ux1dJ^~c5x=bwwK{nZEd_1vwHdw#2)t(lEO2CE>KNaFN!xhmAx|HtahL)0Am sT5d~im!S%+2xvS`PaLKq$@zQZ%5Y_#jh%lzo*iKZCL`L)jS(v8zXoqvH2?qr delta 6588 zcmZ`;dw7mlwtv=olTQ-43L$d&64Dec`Erj&C5i-55|_Gk)U`TpnQ&^fK}B`yF0`6u zh!!nMmC(!f7?;pitF%%@#h7WBI#gBZnFmd^&TsGc{Sxh*^G}}d-Iul3<+pxo?VW2? zL9bN>RYgT|O4huXNEH)FqdUok{w?fz;lIQY0*dT1x0p zdQ5&Af?p;66eFvLQl6UIo%@h<7*4$?UCv*n335*VPE&IaaW9f7f1qA6psf`pHGd#c z@sDzElBy>tU)E=Hv>q&yaU-dx)Ofh1RF9;w;`0>skf%n`RXOO=`_jlq%EwYS$r(f4 z)W1j5ERuua>{b}O!}@20-WV2Kf8Wl(1(gLDl`4*7%S|2du4lW|5!TJd>`GY-oek@6M)9L|Ial zjk9FtFF?+(e(bL@=Fu=hd@(YcWIzT) zJoqB{V91tNIG;kvm6mCA>9mLv)sh7y?CUWD#fzz(DqKv{*f+%ttS_f_f`JF5q#SOp zSPVJl*Efry!*)H^b_pe#F=dt0MdGXsW0ne9LCcsrOHr@|Jm_E-M)LycxsrMVMdd4L zK4PqaP?f;GDnlrVY;V1=ijF#-E?!MriPJN6ER&>nB>} zwIBP){z`JGPu5YckrW{#_fUv*+<-XwZ9p8W4+BE4Y|xG=+NnXRl}dSo7Q!f?+HHiW zuiu~^WP@SwChBeLv~LrAZ%Lewoh%_zvlSrPvXxrtjER*;-$KYUWoi@e{GPXP=*qXe z8I`e(@)6PGXoPp|Hu{tiv#H%-z^mJ+xr9!G0d=vQC|CP)q^jRRE%XA|+(x<;)y_r*Bzz4GUhPE8LGg9Bw-&y^{T(qM&v_QBV1)&9r?-WZ)mQ>Ev06%Bj56qe$BY4 zYWGj7C4ds(h>*D3;L)@?oZ65r3Ojeg*>{k`klRz{c&NQPdx2^Y+J=Syq$qq-dBzMmY&xDhPR!Qn_tDrI;^rT3Q(SXmBzq!5L}d$bmc-R z_+I1GVfAy@z!2#IhDef!@exO4Z${R*fZ7Y}DgjQw$Loq%wE!GBUupGRFLn?0p zg|K#<&fsKu?>5Hf-NqP5+*d{ZM1h2pp_xgTee!EPPBu<*2HbbxcLc;}9wTe+AU+01 zzuciw+FOY-?-yEa0}bG@K*PDeQXFEdM&BhLwqX`!W&|?<@-p!})CEH^9Y4j%qc)o8oP8sW!aNS!~j*Pj=;k~P%_$ckcWt;PrNcLc`) zHSzMt0Hi4Lw7pbL;BXb0X?3QGTd*j!H+PrG!Ds{wO#%E4CHYr`aK5|~jGCWRNs%%m z1Z&c?G`Hk-gR3ru@KK%Ch6+!F@iiwL(Xzh{KzliyU(=vnwi3I32k7%HI6xOoY;|BW zq&1|cI6QX?&H0L3sw*iRYIBvQvLRBR3YTEvIOz8~ zm&K(s%0U`}>~&d@_Pmopr!wGBlQO75`{ZUO7Ec`x{xP2|I~&xPAew=!htN8v%jnKr zE01Txx<*N*T`=YCI0L(S#eyt?^GykADOEj? zZ|4e3zM*ICB#W<7kc{jLtJ?I1y9^E2;**mz9N13m2L+7Dh6!W)!&@db(I-SmSzl@@ z)v=tX&>FnWl&n?{;MtaTuUkR}gEDd+jMM_xZWSjkvgC4;OZqgms&ALyVQ6ChXklE%P@}!c(rw@ z@aN$QxgKc6X$dYhXdV=k!eCftzF&Sp$IPRVZxjtsC;p;k;2Jm!F$VeqF9c-| zUZBM_YFW4d?q0o6(->;AiHVOK$g_MmpIrnGdgElqLM8TjzRxaf6PNHxoMF%!yOdjM zAbC}AsUgeQr_nbqRaVY%_nfLeTFz}7-QrR~FF8EwmIKSdqeU<4??$)0v=VLt#cQ{y zoqi;2E6(txO&P4Y|Y*Pq?EnM zL2_mT|7t7WR@J|*v(yuRT_O;!lMs3!&Rzn;Z^^v7-0>$at0c|%| zZDHUyQ|;QyGugye^?jTDox)=@n7V&HaE3*Ex2YumX;gWW|{S_N;~`pDzEG{bQ?^T?Pa?FxZRVU3LVYr;{IRHvdwtFI6c7i3b+Dm$cBRNp5 zs752gsfLqRIF{fEqrc4h5bI2`{lnja>H4N-3|r@CoswpUG239a!nLNoxzoDUp-(uK z?Tw*9mP@rh%FpYT7_1j7-jQsUJI7IEl5HQ1snL7D{ZXpw1iMg+Z*sC+`VxLX^N&ZA zlPE4@PokE1PI9XJ<0Q5^O}4SA*C}X|a0*0%CL8g1^R%v>x^{PxxUV4P`e{y(x)gvp zI@vlVo-c%L65;7GXEXpRdKC4mF^T_)0EW zK9YNmN7zMY_gNlmZr5>=L!ea5Y$n;&4*@Ot7KEMC(+ZRaHtKx(Cx2~sX7LjDHQ%&@ zA6;<`LbK}lmTrU1mnuB3k!WrYHILx-fbT=n7V3Ik+Ok z9*L-1NpJ!WQ?zO^5@4Ql;xHBre`NTI%PJ zVA*mDDEW)7Ip)}e+c3^tjGcj3Z=3$?U_GZu~mWhBQ){x29n3e*GD)%Yz-e}PhHIsz0>bRWs1cVUEGR~68c zNUzjdJ#|?%B#n{DNX;saQ%Biaz;@39HDcsNUn|e^Toy1!*!c%lT~(HfNTQuCmdt_lLIGKUE6nbA)c!vig`X$N`yh_fd2 zD6E(fY;`f5s4cu0f|GZJ;AF3b2{<_n=Q~9Q_Q2*}nqefxShyM5k&J7Ofm8)nMD72m z1%&9Ezvu%52mD(STVesOa}V(u$!lfx^7dQcE0;pW>FV@b5fw33jI?PD2{uLPX1rSz z>@^70%XNXeEw4vo380c9(J@v&dotCNG1f4rROl=gcN_e<6l)EZ{jqpPHK8wdTfG$S zp}k4&#z717zG&)Rf7um}0jJl}0u%(`<@tIZvCtiCr8>^Puq=!_tYoU zfdp$FN~(TS{@p%s@eq0OK`U6*C0gi6OhaRz*3NQ~m5P#T`iI}_>nzt3xV_rm-YPKs z9A`6_(ZsO3i9W=l9;BEz|VN^}}!}0@;492crXY@b7p4nOqi}PgI5<&l$X0UaOqG*oJ?h+a{x9d9?Su8{s%?Swv2)P% zB0w#mpM?vvIT(TWQS16!e!6==LIGy|ttRStp@rv7`%a>;r<8Q1F!=IOiw0UKHoCi2 ky9OZz0b29VkMzf^-juBDe|~&C#Lgn~x)~u|hFU5A3wmZ^S^xk5 diff --git a/internal/php7/php7.y b/internal/php7/php7.y index 4b5c149..2c14cff 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -541,7 +541,9 @@ use_type: group_use_declaration: namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations possible_comma '}' { - $4.(*ast.ParserSeparatedList).SeparatorTkns = append($4.(*ast.ParserSeparatedList).SeparatorTkns, $5) + if $5 != nil { + $4.(*ast.ParserSeparatedList).SeparatorTkns = append($4.(*ast.ParserSeparatedList).SeparatorTkns, $5) + } $$ = &ast.StmtGroupUse{ Position: yylex.(*Parser).builder.NewNodeListTokenPosition($1.(*ast.ParserSeparatedList).Items, $6), @@ -559,7 +561,9 @@ group_use_declaration: } | T_NS_SEPARATOR namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations possible_comma '}' { - $5.(*ast.ParserSeparatedList).SeparatorTkns = append($5.(*ast.ParserSeparatedList).SeparatorTkns, $6) + if $6 != nil { + $5.(*ast.ParserSeparatedList).SeparatorTkns = append($5.(*ast.ParserSeparatedList).SeparatorTkns, $6) + } $$ = &ast.StmtGroupUse{ Position: yylex.(*Parser).builder.NewTokensPosition($1, $7), diff --git a/internal/php7/php7_bench_test.go b/internal/php7/php7_bench_test.go index d5f2636..3ba6578 100644 --- a/internal/php7/php7_bench_test.go +++ b/internal/php7/php7_bench_test.go @@ -1,6 +1,7 @@ package php7_test import ( + "io/ioutil" "testing" "github.com/z7zmey/php-parser/internal/php7" @@ -8,381 +9,14 @@ import ( ) func BenchmarkPhp7(b *testing.B) { - src := `bar($a, ...$b); - foo::bar($a, ...$b); - $foo::bar($a, ...$b); - new foo($a, ...$b); - /** anonymous class */ - new class ($a, ...$b) {}; - new class {}; - new $foo; - new $foo[1]; - new $foo{$bar}; - new $foo->bar; - new $foo::$bar; - new static::$bar; + src, err := ioutil.ReadFile("test.php") - function foo(?bar $bar=null, baz &...$baz) {} - class foo {public function foo(?bar $bar=null, baz &...$baz) {}} - function(?bar $bar=null, baz &...$baz) {}; - static function(?bar $bar=null, baz &...$baz) {}; - - "test"; - "\$test"; - " - test - "; - '$test'; - ' - $test - '; - <<bar()"; - "test ${foo}"; - "test ${foo[0]}"; - "test ${$foo}"; - "test {$foo->bar()}"; - - if ($a) : - endif; - if ($a) : - elseif ($b): - endif; - if ($a) : - else: - endif; - if ($a) : - elseif ($b): - elseif ($c): - else: - endif; - - while (1) { break; } - while (1) { break 2; } - while (1) : break(3); endwhile; - class foo{ public const FOO = 1, BAR = 2; } - class foo{ const FOO = 1, BAR = 2; } - class foo{ function bar() {} } - class foo{ public static function &bar() {} } - class foo{ public static function &bar(): void {} } - abstract class foo{ } - final class foo extends bar { } - final class foo implements bar { } - final class foo implements bar, baz { } - new class() extends foo implements bar, baz { }; - - const FOO = 1, BAR = 2; - while (1) { continue; } - while (1) { continue 2; } - while (1) { continue(3); } - declare(ticks=1); - declare(ticks=1) {} - declare(ticks=1): enddeclare; - do {} while(1); - echo $a, 1; - echo($a); - for($i = 0; $i < 10; $i++, $i++) {} - for(; $i < 10; $i++, $i++) : endfor; - foreach ($a as $v) {} - foreach ($a as $v) : endforeach; - foreach ($a as $k => $v) {} - foreach ($a as $k => &$v) {} - foreach ($a as $k => list($v)) {} - foreach ($a as $k => [$v]) {} - function foo() {} - function foo() {return;} - function &foo() {return 1;} - function &foo(): void {} - global $a, $b; - a: - goto a; - __halt_compiler(); - if ($a) {} - if ($a) {} elseif ($b) {} - if ($a) {} else {} - if ($a) {} elseif ($b) {} elseif ($c) {} else {} - if ($a) {} elseif ($b) {} else if ($c) {} else {} - ?>
1, &$b,); - ~$a; - !$a; - - Foo::Bar; - $foo::Bar; - clone($a); - clone $a; - function(){}; - function($a, $b) use ($c, &$d) {}; - function(): void {}; - foo; - namespace\foo; - \foo; - - empty($a); - @$a; - eval($a); - exit; - exit($a); - die; - die($a); - foo(); - namespace\foo(); - \foo(); - $foo(); - - $a--; - $a++; - --$a; - ++$a; - - include $a; - include_once $a; - require $a; - require_once $a; - - $a instanceof Foo; - $a instanceof namespace\Foo; - $a instanceof \Foo; - - isset($a, $b); - list($a) = $b; - list($a[]) = $b; - list(list($a)) = $b; - - $a->foo(); - new Foo(); - new namespace\Foo(); - new \Foo(); - new class ($a, ...$b) {}; - print($a); - $a->foo; - ` + "`cmd $a`;" + ` - ` + "`cmd`;" + ` - ` + "``;" + ` - []; - [1]; - [1=>1, &$b,]; - - [$a] = $b; - [$a[]] = $b; - [list($a)] = $b; - Foo::bar(); - namespace\Foo::bar(); - \Foo::bar(); - Foo::$bar; - $foo::$bar; - namespace\Foo::$bar; - \Foo::$bar; - $a ? $b : $c; - $a ? : $c; - $a ? $b ? $c : $d : $e; - $a ? $b : $c ? $d : $e; - -$a; - +$a; - $$a; - yield; - yield $a; - yield $a => $b; - yield from $a; - - (array)$a; - (boolean)$a; - (bool)$a; - (double)$a; - (float)$a; - (integer)$a; - (int)$a; - (object)$a; - (string)$a; - (unset)$a; - - $a & $b; - $a | $b; - $a ^ $b; - $a && $b; - $a || $b; - $a ?? $b; - $a . $b; - $a / $b; - $a == $b; - $a >= $b; - $a > $b; - $a === $b; - $a and $b; - $a or $b; - $a xor $b; - $a - $b; - $a % $b; - $a * $b; - $a != $b; - $a !== $b; - $a + $b; - $a ** $b; - $a << $b; - $a >> $b; - $a <= $b; - $a < $b; - $a <=> $b; - - $a =& $b; - $a = $b; - $a &= $b; - $a |= $b; - $a ^= $b; - $a .= $b; - $a /= $b; - $a -= $b; - $a %= $b; - $a *= $b; - $a += $b; - $a **= $b; - $a <<= $b; - $a >>= $b; - - class foo {public function class() {} } - \foo\bar(); - - function foo(&$a, ...$b) { - __halt_compiler(); - function bar() {} - class Baz {} - trait Quux{} - interface Quuux {} - } - - function foo(&$a = 1, ...$b = 1, $c = 1) {} - function foo(array $a, callable $b) {} - abstract final class foo { abstract protected static function bar(); final private function baz() {} } - - (new Foo)->bar; - (new Foo)(); - [$foo][0](); - foo[1](); - "foo"(); - [1]{$foo}(); - ${foo()}; - - Foo::$bar(); - Foo::{$bar[0]}(); - - $foo->$bar; - $foo->{$bar[0]}; - - [1=>&$a, 2=>list($b)]; - ` + if err != nil { + b.Fatal("can not read test.php: " + err.Error()) + } for n := 0; n < b.N; n++ { - lexer := scanner.NewLexer([]byte(src), "7.4", nil) + lexer := scanner.NewLexer(src, "7.4", nil) php7parser := php7.NewParser(lexer, nil) php7parser.Parse() } diff --git a/internal/php7/php7_test.go b/internal/php7/php7_test.go deleted file mode 100644 index 452a0a3..0000000 --- a/internal/php7/php7_test.go +++ /dev/null @@ -1,19703 +0,0 @@ -package php7_test - -import ( - "io/ioutil" - "testing" - - "gotest.tools/assert" - - "github.com/z7zmey/php-parser/internal/php7" - "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/errors" - "github.com/z7zmey/php-parser/pkg/position" -) - -func TestPhp7(t *testing.T) { - src, err := ioutil.ReadFile("test.php") - assert.NilError(t, err) - - expected := &ast.Root{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 2, - EndLine: 348, - StartPos: 3, - EndPos: 5706, - }, - }, - Stmts: []ast.Vertex{ - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 2, - EndLine: 2, - StartPos: 3, - EndPos: 18, - }, - }, - Expr: &ast.ExprFunctionCall{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 2, - EndLine: 2, - StartPos: 3, - EndPos: 17, - }, - }, - Function: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 2, - EndLine: 2, - StartPos: 3, - EndPos: 6, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 2, - EndLine: 2, - StartPos: 3, - EndPos: 6, - }, - }, - Value: []byte("foo"), - }, - }, - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 2, - EndLine: 2, - StartPos: 6, - EndPos: 17, - }, - }, - Arguments: []ast.Vertex{ - &ast.Argument{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 2, - EndLine: 2, - StartPos: 7, - EndPos: 9, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 2, - EndLine: 2, - StartPos: 7, - EndPos: 9, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 2, - EndLine: 2, - StartPos: 7, - EndPos: 9, - }, - }, - Value: []byte("$a"), - }, - }, - }, - &ast.Argument{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 2, - EndLine: 2, - StartPos: 11, - EndPos: 16, - }, - }, - Variadic: true, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 2, - EndLine: 2, - StartPos: 14, - EndPos: 16, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 2, - EndLine: 2, - StartPos: 14, - EndPos: 16, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 3, - EndLine: 3, - StartPos: 19, - EndPos: 35, - }, - }, - Expr: &ast.ExprFunctionCall{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 3, - EndLine: 3, - StartPos: 19, - EndPos: 34, - }, - }, - Function: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 3, - EndLine: 3, - StartPos: 19, - EndPos: 23, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 3, - EndLine: 3, - StartPos: 19, - EndPos: 23, - }, - }, - Value: []byte("$foo"), - }, - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 3, - EndLine: 3, - StartPos: 23, - EndPos: 34, - }, - }, - Arguments: []ast.Vertex{ - &ast.Argument{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 3, - EndLine: 3, - StartPos: 24, - EndPos: 26, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 3, - EndLine: 3, - StartPos: 24, - EndPos: 26, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 3, - EndLine: 3, - StartPos: 24, - EndPos: 26, - }, - }, - Value: []byte("$a"), - }, - }, - }, - &ast.Argument{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 3, - EndLine: 3, - StartPos: 28, - EndPos: 33, - }, - }, - Variadic: true, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 3, - EndLine: 3, - StartPos: 31, - EndPos: 33, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 3, - EndLine: 3, - StartPos: 31, - EndPos: 33, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 4, - EndLine: 4, - StartPos: 36, - EndPos: 57, - }, - }, - Expr: &ast.ExprMethodCall{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 4, - EndLine: 4, - StartPos: 36, - EndPos: 56, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 4, - EndLine: 4, - StartPos: 36, - EndPos: 40, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 4, - EndLine: 4, - StartPos: 36, - EndPos: 40, - }, - }, - Value: []byte("$foo"), - }, - }, - Method: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 4, - EndLine: 4, - StartPos: 42, - EndPos: 45, - }, - }, - Value: []byte("bar"), - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 4, - EndLine: 4, - StartPos: 45, - EndPos: 56, - }, - }, - Arguments: []ast.Vertex{ - &ast.Argument{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 4, - EndLine: 4, - StartPos: 46, - EndPos: 48, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 4, - EndLine: 4, - StartPos: 46, - EndPos: 48, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 4, - EndLine: 4, - StartPos: 46, - EndPos: 48, - }, - }, - Value: []byte("$a"), - }, - }, - }, - &ast.Argument{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 4, - EndLine: 4, - StartPos: 50, - EndPos: 55, - }, - }, - Variadic: true, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 4, - EndLine: 4, - StartPos: 53, - EndPos: 55, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 4, - EndLine: 4, - StartPos: 53, - EndPos: 55, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 5, - EndLine: 5, - StartPos: 58, - EndPos: 78, - }, - }, - Expr: &ast.ExprStaticCall{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 5, - EndLine: 5, - StartPos: 58, - EndPos: 77, - }, - }, - Class: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 5, - EndLine: 5, - StartPos: 58, - EndPos: 61, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 5, - EndLine: 5, - StartPos: 58, - EndPos: 61, - }, - }, - Value: []byte("foo"), - }, - }, - }, - Call: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 5, - EndLine: 5, - StartPos: 63, - EndPos: 66, - }, - }, - Value: []byte("bar"), - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 5, - EndLine: 5, - StartPos: 66, - EndPos: 77, - }, - }, - Arguments: []ast.Vertex{ - &ast.Argument{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 5, - EndLine: 5, - StartPos: 67, - EndPos: 69, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 5, - EndLine: 5, - StartPos: 67, - EndPos: 69, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 5, - EndLine: 5, - StartPos: 67, - EndPos: 69, - }, - }, - Value: []byte("$a"), - }, - }, - }, - &ast.Argument{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 5, - EndLine: 5, - StartPos: 71, - EndPos: 76, - }, - }, - Variadic: true, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 5, - EndLine: 5, - StartPos: 74, - EndPos: 76, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 5, - EndLine: 5, - StartPos: 74, - EndPos: 76, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 6, - EndLine: 6, - StartPos: 79, - EndPos: 100, - }, - }, - Expr: &ast.ExprStaticCall{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 6, - EndLine: 6, - StartPos: 79, - EndPos: 99, - }, - }, - Class: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 6, - EndLine: 6, - StartPos: 79, - EndPos: 83, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 6, - EndLine: 6, - StartPos: 79, - EndPos: 83, - }, - }, - Value: []byte("$foo"), - }, - }, - Call: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 6, - EndLine: 6, - StartPos: 85, - EndPos: 88, - }, - }, - Value: []byte("bar"), - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 6, - EndLine: 6, - StartPos: 88, - EndPos: 99, - }, - }, - Arguments: []ast.Vertex{ - &ast.Argument{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 6, - EndLine: 6, - StartPos: 89, - EndPos: 91, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 6, - EndLine: 6, - StartPos: 89, - EndPos: 91, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 6, - EndLine: 6, - StartPos: 89, - EndPos: 91, - }, - }, - Value: []byte("$a"), - }, - }, - }, - &ast.Argument{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 6, - EndLine: 6, - StartPos: 93, - EndPos: 98, - }, - }, - Variadic: true, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 6, - EndLine: 6, - StartPos: 96, - EndPos: 98, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 6, - EndLine: 6, - StartPos: 96, - EndPos: 98, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 101, - EndPos: 120, - }, - }, - Expr: &ast.ExprNew{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 101, - EndPos: 119, - }, - }, - Class: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 105, - EndPos: 108, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 105, - EndPos: 108, - }, - }, - Value: []byte("foo"), - }, - }, - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 108, - EndPos: 119, - }, - }, - Arguments: []ast.Vertex{ - &ast.Argument{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 109, - EndPos: 111, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 109, - EndPos: 111, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 109, - EndPos: 111, - }, - }, - Value: []byte("$a"), - }, - }, - }, - &ast.Argument{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 113, - EndPos: 118, - }, - }, - Variadic: true, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 116, - EndPos: 118, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 7, - EndLine: 7, - StartPos: 116, - EndPos: 118, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 144, - EndPos: 169, - }, - }, - Expr: &ast.ExprNew{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 144, - EndPos: 168, - }, - }, - Class: &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 148, - EndPos: 168, - }, - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 154, - EndPos: 165, - }, - }, - Arguments: []ast.Vertex{ - &ast.Argument{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 155, - EndPos: 157, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 155, - EndPos: 157, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 155, - EndPos: 157, - }, - }, - Value: []byte("$a"), - }, - }, - }, - &ast.Argument{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 159, - EndPos: 164, - }, - }, - Variadic: true, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 162, - EndPos: 164, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 9, - EndLine: 9, - StartPos: 162, - EndPos: 164, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 10, - EndLine: 10, - StartPos: 170, - EndPos: 183, - }, - }, - Expr: &ast.ExprNew{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 10, - EndLine: 10, - StartPos: 170, - EndPos: 182, - }, - }, - Class: &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 10, - EndLine: 10, - StartPos: 174, - EndPos: 182, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 11, - EndLine: 11, - StartPos: 184, - EndPos: 193, - }, - }, - Expr: &ast.ExprNew{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 11, - EndLine: 11, - StartPos: 184, - EndPos: 192, - }, - }, - Class: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 11, - EndLine: 11, - StartPos: 188, - EndPos: 192, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 11, - EndLine: 11, - StartPos: 188, - EndPos: 192, - }, - }, - Value: []byte("$foo"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 12, - EndLine: 12, - StartPos: 194, - EndPos: 206, - }, - }, - Expr: &ast.ExprNew{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 12, - EndLine: 12, - StartPos: 194, - EndPos: 205, - }, - }, - Class: &ast.ExprArrayDimFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 12, - EndLine: 12, - StartPos: 198, - EndPos: 205, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 12, - EndLine: 12, - StartPos: 198, - EndPos: 202, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 12, - EndLine: 12, - StartPos: 198, - EndPos: 202, - }, - }, - Value: []byte("$foo"), - }, - }, - Dim: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 12, - EndLine: 12, - StartPos: 203, - EndPos: 204, - }, - }, - Value: []byte("1"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 13, - EndLine: 13, - StartPos: 207, - EndPos: 222, - }, - }, - Expr: &ast.ExprNew{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 13, - EndLine: 13, - StartPos: 207, - EndPos: 221, - }, - }, - Class: &ast.ExprArrayDimFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 13, - EndLine: 13, - StartPos: 211, - EndPos: 221, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 13, - EndLine: 13, - StartPos: 211, - EndPos: 215, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 13, - EndLine: 13, - StartPos: 211, - EndPos: 215, - }, - }, - Value: []byte("$foo"), - }, - }, - Dim: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 13, - EndLine: 13, - StartPos: 216, - EndPos: 220, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 13, - EndLine: 13, - StartPos: 216, - EndPos: 220, - }, - }, - Value: []byte("$bar"), - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 14, - EndLine: 14, - StartPos: 223, - EndPos: 237, - }, - }, - Expr: &ast.ExprNew{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 14, - EndLine: 14, - StartPos: 223, - EndPos: 236, - }, - }, - Class: &ast.ExprPropertyFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 14, - EndLine: 14, - StartPos: 227, - EndPos: 236, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 14, - EndLine: 14, - StartPos: 227, - EndPos: 231, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 14, - EndLine: 14, - StartPos: 227, - EndPos: 231, - }, - }, - Value: []byte("$foo"), - }, - }, - Property: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 14, - EndLine: 14, - StartPos: 233, - EndPos: 236, - }, - }, - Value: []byte("bar"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 15, - EndLine: 15, - StartPos: 238, - EndPos: 253, - }, - }, - Expr: &ast.ExprNew{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 15, - EndLine: 15, - StartPos: 238, - EndPos: 252, - }, - }, - Class: &ast.ExprStaticPropertyFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 15, - EndLine: 15, - StartPos: 242, - EndPos: 252, - }, - }, - Class: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 15, - EndLine: 15, - StartPos: 242, - EndPos: 246, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 15, - EndLine: 15, - StartPos: 242, - EndPos: 246, - }, - }, - Value: []byte("$foo"), - }, - }, - Property: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 15, - EndLine: 15, - StartPos: 248, - EndPos: 252, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 15, - EndLine: 15, - StartPos: 248, - EndPos: 252, - }, - }, - Value: []byte("$bar"), - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 16, - EndLine: 16, - StartPos: 254, - EndPos: 271, - }, - }, - Expr: &ast.ExprNew{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 16, - EndLine: 16, - StartPos: 254, - EndPos: 270, - }, - }, - Class: &ast.ExprStaticPropertyFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 16, - EndLine: 16, - StartPos: 258, - EndPos: 270, - }, - }, - Class: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 16, - EndLine: 16, - StartPos: 258, - EndPos: 264, - }, - }, - Value: []byte("static"), - }, - Property: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 16, - EndLine: 16, - StartPos: 266, - EndPos: 270, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 16, - EndLine: 16, - StartPos: 266, - EndPos: 270, - }, - }, - Value: []byte("$bar"), - }, - }, - }, - }, - }, - &ast.StmtFunction{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 18, - EndLine: 18, - StartPos: 273, - EndPos: 318, - }, - }, - FunctionName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 18, - EndLine: 18, - StartPos: 282, - EndPos: 285, - }, - }, - Value: []byte("foo"), - }, - Params: []ast.Vertex{ - &ast.Parameter{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 18, - EndLine: 18, - StartPos: 286, - EndPos: 300, - }, - }, - Type: &ast.Nullable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 18, - EndLine: 18, - StartPos: 286, - EndPos: 290, - }, - }, - Expr: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 18, - EndLine: 18, - StartPos: 287, - EndPos: 290, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 18, - EndLine: 18, - StartPos: 287, - EndPos: 290, - }, - }, - Value: []byte("bar"), - }, - }, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 18, - EndLine: 18, - StartPos: 291, - EndPos: 295, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 18, - EndLine: 18, - StartPos: 291, - EndPos: 295, - }, - }, - Value: []byte("$bar"), - }, - }, - DefaultValue: &ast.ExprConstFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 18, - EndLine: 18, - StartPos: 296, - EndPos: 300, - }, - }, - Const: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 18, - EndLine: 18, - StartPos: 296, - EndPos: 300, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 18, - EndLine: 18, - StartPos: 296, - EndPos: 300, - }, - }, - Value: []byte("null"), - }, - }, - }, - }, - }, - &ast.Parameter{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 18, - EndLine: 18, - StartPos: 302, - EndPos: 314, - }, - }, - Type: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 18, - EndLine: 18, - StartPos: 302, - EndPos: 305, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 18, - EndLine: 18, - StartPos: 302, - EndPos: 305, - }, - }, - Value: []byte("baz"), - }, - }, - }, - Var: &ast.Reference{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 18, - EndLine: 18, - StartPos: 306, - EndPos: 314, - }, - }, - Var: &ast.Variadic{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 18, - EndLine: 18, - StartPos: 307, - EndPos: 314, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 18, - EndLine: 18, - StartPos: 310, - EndPos: 314, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 18, - EndLine: 18, - StartPos: 310, - EndPos: 314, - }, - }, - Value: []byte("$baz"), - }, - }, - }, - }, - }, - }, - Stmts: []ast.Vertex{}, - }, - &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 19, - EndLine: 19, - StartPos: 319, - EndPos: 383, - }, - }, - ClassName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 19, - EndLine: 19, - StartPos: 325, - EndPos: 328, - }, - }, - Value: []byte("foo"), - }, - Stmts: []ast.Vertex{ - &ast.StmtClassMethod{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 19, - EndLine: 19, - StartPos: 330, - EndPos: 382, - }, - }, - MethodName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 19, - EndLine: 19, - StartPos: 346, - EndPos: 349, - }, - }, - Value: []byte("foo"), - }, - Modifiers: []ast.Vertex{ - &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 19, - EndLine: 19, - StartPos: 330, - EndPos: 336, - }, - }, - Value: []byte("public"), - }, - }, - Params: []ast.Vertex{ - &ast.Parameter{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 19, - EndLine: 19, - StartPos: 350, - EndPos: 364, - }, - }, - Type: &ast.Nullable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 19, - EndLine: 19, - StartPos: 350, - EndPos: 354, - }, - }, - Expr: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 19, - EndLine: 19, - StartPos: 351, - EndPos: 354, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 19, - EndLine: 19, - StartPos: 351, - EndPos: 354, - }, - }, - Value: []byte("bar"), - }, - }, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 19, - EndLine: 19, - StartPos: 355, - EndPos: 359, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 19, - EndLine: 19, - StartPos: 355, - EndPos: 359, - }, - }, - Value: []byte("$bar"), - }, - }, - DefaultValue: &ast.ExprConstFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 19, - EndLine: 19, - StartPos: 360, - EndPos: 364, - }, - }, - Const: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 19, - EndLine: 19, - StartPos: 360, - EndPos: 364, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 19, - EndLine: 19, - StartPos: 360, - EndPos: 364, - }, - }, - Value: []byte("null"), - }, - }, - }, - }, - }, - &ast.Parameter{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 19, - EndLine: 19, - StartPos: 366, - EndPos: 378, - }, - }, - Type: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 19, - EndLine: 19, - StartPos: 366, - EndPos: 369, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 19, - EndLine: 19, - StartPos: 366, - EndPos: 369, - }, - }, - Value: []byte("baz"), - }, - }, - }, - Var: &ast.Reference{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 19, - EndLine: 19, - StartPos: 370, - EndPos: 378, - }, - }, - Var: &ast.Variadic{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 19, - EndLine: 19, - StartPos: 371, - EndPos: 378, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 19, - EndLine: 19, - StartPos: 374, - EndPos: 378, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 19, - EndLine: 19, - StartPos: 374, - EndPos: 378, - }, - }, - Value: []byte("$baz"), - }, - }, - }, - }, - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 19, - EndLine: 19, - StartPos: 380, - EndPos: 382, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 20, - EndLine: 20, - StartPos: 384, - EndPos: 426, - }, - }, - Expr: &ast.ExprClosure{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 20, - EndLine: 20, - StartPos: 384, - EndPos: 425, - }, - }, - Params: []ast.Vertex{ - &ast.Parameter{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 20, - EndLine: 20, - StartPos: 393, - EndPos: 407, - }, - }, - Type: &ast.Nullable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 20, - EndLine: 20, - StartPos: 393, - EndPos: 397, - }, - }, - Expr: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 20, - EndLine: 20, - StartPos: 394, - EndPos: 397, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 20, - EndLine: 20, - StartPos: 394, - EndPos: 397, - }, - }, - Value: []byte("bar"), - }, - }, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 20, - EndLine: 20, - StartPos: 398, - EndPos: 402, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 20, - EndLine: 20, - StartPos: 398, - EndPos: 402, - }, - }, - Value: []byte("$bar"), - }, - }, - DefaultValue: &ast.ExprConstFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 20, - EndLine: 20, - StartPos: 403, - EndPos: 407, - }, - }, - Const: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 20, - EndLine: 20, - StartPos: 403, - EndPos: 407, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 20, - EndLine: 20, - StartPos: 403, - EndPos: 407, - }, - }, - Value: []byte("null"), - }, - }, - }, - }, - }, - &ast.Parameter{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 20, - EndLine: 20, - StartPos: 409, - EndPos: 421, - }, - }, - Type: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 20, - EndLine: 20, - StartPos: 409, - EndPos: 412, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 20, - EndLine: 20, - StartPos: 409, - EndPos: 412, - }, - }, - Value: []byte("baz"), - }, - }, - }, - Var: &ast.Reference{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 20, - EndLine: 20, - StartPos: 413, - EndPos: 421, - }, - }, - Var: &ast.Variadic{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 20, - EndLine: 20, - StartPos: 414, - EndPos: 421, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 20, - EndLine: 20, - StartPos: 417, - EndPos: 421, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 20, - EndLine: 20, - StartPos: 417, - EndPos: 421, - }, - }, - Value: []byte("$baz"), - }, - }, - }, - }, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 21, - EndLine: 21, - StartPos: 427, - EndPos: 476, - }, - }, - Expr: &ast.ExprClosure{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 21, - EndLine: 21, - StartPos: 427, - EndPos: 475, - }, - }, - Static: true, - Params: []ast.Vertex{ - &ast.Parameter{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 21, - EndLine: 21, - StartPos: 443, - EndPos: 457, - }, - }, - Type: &ast.Nullable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 21, - EndLine: 21, - StartPos: 443, - EndPos: 447, - }, - }, - Expr: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 21, - EndLine: 21, - StartPos: 444, - EndPos: 447, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 21, - EndLine: 21, - StartPos: 444, - EndPos: 447, - }, - }, - Value: []byte("bar"), - }, - }, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 21, - EndLine: 21, - StartPos: 448, - EndPos: 452, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 21, - EndLine: 21, - StartPos: 448, - EndPos: 452, - }, - }, - Value: []byte("$bar"), - }, - }, - DefaultValue: &ast.ExprConstFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 21, - EndLine: 21, - StartPos: 453, - EndPos: 457, - }, - }, - Const: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 21, - EndLine: 21, - StartPos: 453, - EndPos: 457, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 21, - EndLine: 21, - StartPos: 453, - EndPos: 457, - }, - }, - Value: []byte("null"), - }, - }, - }, - }, - }, - &ast.Parameter{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 21, - EndLine: 21, - StartPos: 459, - EndPos: 471, - }, - }, - Type: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 21, - EndLine: 21, - StartPos: 459, - EndPos: 462, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 21, - EndLine: 21, - StartPos: 459, - EndPos: 462, - }, - }, - Value: []byte("baz"), - }, - }, - }, - Var: &ast.Reference{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 21, - EndLine: 21, - StartPos: 463, - EndPos: 471, - }, - }, - Var: &ast.Variadic{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 21, - EndLine: 21, - StartPos: 464, - EndPos: 471, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 21, - EndLine: 21, - StartPos: 467, - EndPos: 471, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 21, - EndLine: 21, - StartPos: 467, - EndPos: 471, - }, - }, - Value: []byte("$baz"), - }, - }, - }, - }, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 23, - EndLine: 23, - StartPos: 478, - EndPos: 498, - }, - }, - Expr: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 23, - EndLine: 23, - StartPos: 478, - EndPos: 497, - }, - }, - Value: []byte("1234567890123456789"), - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 24, - EndLine: 24, - StartPos: 499, - EndPos: 520, - }, - }, - Expr: &ast.ScalarDnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 24, - EndLine: 24, - StartPos: 499, - EndPos: 519, - }, - }, - Value: []byte("12345678901234567890"), - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 25, - EndLine: 25, - StartPos: 521, - EndPos: 524, - }, - }, - Expr: &ast.ScalarDnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 25, - EndLine: 25, - StartPos: 521, - EndPos: 523, - }, - }, - Value: []byte("0."), - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 26, - EndLine: 26, - StartPos: 525, - EndPos: 592, - }, - }, - Expr: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 26, - EndLine: 26, - StartPos: 525, - EndPos: 591, - }, - }, - Value: []byte("0b0111111111111111111111111111111111111111111111111111111111111111"), - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 27, - EndLine: 27, - StartPos: 593, - EndPos: 660, - }, - }, - Expr: &ast.ScalarDnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 27, - EndLine: 27, - StartPos: 593, - EndPos: 659, - }, - }, - Value: []byte("0b1111111111111111111111111111111111111111111111111111111111111111"), - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 28, - EndLine: 28, - StartPos: 661, - EndPos: 682, - }, - }, - Expr: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 28, - EndLine: 28, - StartPos: 661, - EndPos: 681, - }, - }, - Value: []byte("0x007111111111111111"), - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 29, - EndLine: 29, - StartPos: 683, - EndPos: 702, - }, - }, - Expr: &ast.ScalarDnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 29, - EndLine: 29, - StartPos: 683, - EndPos: 701, - }, - }, - Value: []byte("0x8111111111111111"), - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 30, - EndLine: 30, - StartPos: 703, - EndPos: 713, - }, - }, - Expr: &ast.ScalarMagicConstant{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 30, - EndLine: 30, - StartPos: 703, - EndPos: 712, - }, - }, - Value: []byte("__CLASS__"), - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 31, - EndLine: 31, - StartPos: 714, - EndPos: 722, - }, - }, - Expr: &ast.ScalarMagicConstant{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 31, - EndLine: 31, - StartPos: 714, - EndPos: 721, - }, - }, - Value: []byte("__DIR__"), - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 32, - EndLine: 32, - StartPos: 723, - EndPos: 732, - }, - }, - Expr: &ast.ScalarMagicConstant{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 32, - EndLine: 32, - StartPos: 723, - EndPos: 731, - }, - }, - Value: []byte("__FILE__"), - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 33, - EndLine: 33, - StartPos: 733, - EndPos: 746, - }, - }, - Expr: &ast.ScalarMagicConstant{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 33, - EndLine: 33, - StartPos: 733, - EndPos: 745, - }, - }, - Value: []byte("__FUNCTION__"), - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 34, - EndLine: 34, - StartPos: 747, - EndPos: 756, - }, - }, - Expr: &ast.ScalarMagicConstant{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 34, - EndLine: 34, - StartPos: 747, - EndPos: 755, - }, - }, - Value: []byte("__LINE__"), - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 35, - EndLine: 35, - StartPos: 757, - EndPos: 771, - }, - }, - Expr: &ast.ScalarMagicConstant{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 35, - EndLine: 35, - StartPos: 757, - EndPos: 770, - }, - }, - Value: []byte("__NAMESPACE__"), - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 36, - EndLine: 36, - StartPos: 772, - EndPos: 783, - }, - }, - Expr: &ast.ScalarMagicConstant{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 36, - EndLine: 36, - StartPos: 772, - EndPos: 782, - }, - }, - Value: []byte("__METHOD__"), - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 37, - EndLine: 37, - StartPos: 784, - EndPos: 794, - }, - }, - Expr: &ast.ScalarMagicConstant{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 37, - EndLine: 37, - StartPos: 784, - EndPos: 793, - }, - }, - Value: []byte("__TRAIT__"), - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 39, - EndLine: 39, - StartPos: 796, - EndPos: 808, - }, - }, - Expr: &ast.ScalarEncapsed{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 39, - EndLine: 39, - StartPos: 796, - EndPos: 807, - }, - }, - Parts: []ast.Vertex{ - &ast.ScalarEncapsedStringPart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 39, - EndLine: 39, - StartPos: 797, - EndPos: 802, - }, - }, - Value: []byte("test "), - }, - &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 39, - EndLine: 39, - StartPos: 802, - EndPos: 806, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 39, - EndLine: 39, - StartPos: 802, - EndPos: 806, - }, - }, - Value: []byte("$var"), - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 40, - EndLine: 40, - StartPos: 809, - EndPos: 824, - }, - }, - Expr: &ast.ScalarEncapsed{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 40, - EndLine: 40, - StartPos: 809, - EndPos: 823, - }, - }, - Parts: []ast.Vertex{ - &ast.ScalarEncapsedStringPart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 40, - EndLine: 40, - StartPos: 810, - EndPos: 815, - }, - }, - Value: []byte("test "), - }, - &ast.ExprArrayDimFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 40, - EndLine: 40, - StartPos: 815, - EndPos: 822, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 40, - EndLine: 40, - StartPos: 815, - EndPos: 819, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 40, - EndLine: 40, - StartPos: 815, - EndPos: 819, - }, - }, - Value: []byte("$var"), - }, - }, - Dim: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 40, - EndLine: 40, - StartPos: 820, - EndPos: 821, - }, - }, - Value: []byte("1"), - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 41, - EndLine: 41, - StartPos: 825, - EndPos: 841, - }, - }, - Expr: &ast.ScalarEncapsed{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 41, - EndLine: 41, - StartPos: 825, - EndPos: 840, - }, - }, - Parts: []ast.Vertex{ - &ast.ScalarEncapsedStringPart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 41, - EndLine: 41, - StartPos: 826, - EndPos: 831, - }, - }, - Value: []byte("test "), - }, - &ast.ExprArrayDimFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 41, - EndLine: 41, - StartPos: 831, - EndPos: 839, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 41, - EndLine: 41, - StartPos: 831, - EndPos: 835, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 41, - EndLine: 41, - StartPos: 831, - EndPos: 835, - }, - }, - Value: []byte("$var"), - }, - }, - Dim: &ast.ExprUnaryMinus{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 41, - EndLine: 41, - StartPos: 836, - EndPos: 838, - }, - }, - Expr: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 41, - EndLine: 41, - StartPos: 836, - EndPos: 838, - }, - }, - Value: []byte("1"), - }, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 42, - EndLine: 42, - StartPos: 842, - EndPos: 896, - }, - }, - Expr: &ast.ScalarEncapsed{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 42, - EndLine: 42, - StartPos: 842, - EndPos: 895, - }, - }, - Parts: []ast.Vertex{ - &ast.ScalarEncapsedStringPart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 42, - EndLine: 42, - StartPos: 843, - EndPos: 848, - }, - }, - Value: []byte("test "), - }, - &ast.ExprArrayDimFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 42, - EndLine: 42, - StartPos: 848, - EndPos: 894, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 42, - EndLine: 42, - StartPos: 848, - EndPos: 852, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 42, - EndLine: 42, - StartPos: 848, - EndPos: 852, - }, - }, - Value: []byte("$var"), - }, - }, - Dim: &ast.ScalarString{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 42, - EndLine: 42, - StartPos: 853, - EndPos: 893, - }, - }, - Value: []byte("1234567890123456789012345678901234567890"), - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 43, - EndLine: 43, - StartPos: 897, - EndPos: 952, - }, - }, - Expr: &ast.ScalarEncapsed{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 43, - EndLine: 43, - StartPos: 897, - EndPos: 951, - }, - }, - Parts: []ast.Vertex{ - &ast.ScalarEncapsedStringPart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 43, - EndLine: 43, - StartPos: 898, - EndPos: 903, - }, - }, - Value: []byte("test "), - }, - &ast.ExprArrayDimFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 43, - EndLine: 43, - StartPos: 903, - EndPos: 950, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 43, - EndLine: 43, - StartPos: 903, - EndPos: 907, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 43, - EndLine: 43, - StartPos: 903, - EndPos: 907, - }, - }, - Value: []byte("$var"), - }, - }, - Dim: &ast.ScalarString{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 43, - EndLine: 43, - StartPos: 908, - EndPos: 949, - }, - }, - Value: []byte("-1234567890123456789012345678901234567890"), - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 44, - EndLine: 44, - StartPos: 953, - EndPos: 970, - }, - }, - Expr: &ast.ScalarEncapsed{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 44, - EndLine: 44, - StartPos: 953, - EndPos: 969, - }, - }, - Parts: []ast.Vertex{ - &ast.ScalarEncapsedStringPart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 44, - EndLine: 44, - StartPos: 954, - EndPos: 959, - }, - }, - Value: []byte("test "), - }, - &ast.ExprArrayDimFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 44, - EndLine: 44, - StartPos: 959, - EndPos: 968, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 44, - EndLine: 44, - StartPos: 959, - EndPos: 963, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 44, - EndLine: 44, - StartPos: 959, - EndPos: 963, - }, - }, - Value: []byte("$var"), - }, - }, - Dim: &ast.ScalarString{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 44, - EndLine: 44, - StartPos: 964, - EndPos: 967, - }, - }, - Value: []byte("bar"), - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 45, - EndLine: 45, - StartPos: 971, - EndPos: 989, - }, - }, - Expr: &ast.ScalarEncapsed{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 45, - EndLine: 45, - StartPos: 971, - EndPos: 988, - }, - }, - Parts: []ast.Vertex{ - &ast.ScalarEncapsedStringPart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 45, - EndLine: 45, - StartPos: 972, - EndPos: 977, - }, - }, - Value: []byte("test "), - }, - &ast.ExprArrayDimFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 45, - EndLine: 45, - StartPos: 977, - EndPos: 987, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 45, - EndLine: 45, - StartPos: 977, - EndPos: 981, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 45, - EndLine: 45, - StartPos: 977, - EndPos: 981, - }, - }, - Value: []byte("$var"), - }, - }, - Dim: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 45, - EndLine: 45, - StartPos: 982, - EndPos: 986, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 45, - EndLine: 45, - StartPos: 982, - EndPos: 986, - }, - }, - Value: []byte("$bar"), - }, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 46, - EndLine: 46, - StartPos: 990, - EndPos: 1002, - }, - }, - Expr: &ast.ScalarEncapsed{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 46, - EndLine: 46, - StartPos: 990, - EndPos: 1001, - }, - }, - Parts: []ast.Vertex{ - &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 46, - EndLine: 46, - StartPos: 991, - EndPos: 995, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 46, - EndLine: 46, - StartPos: 991, - EndPos: 995, - }, - }, - Value: []byte("$foo"), - }, - }, - &ast.ScalarEncapsedStringPart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 46, - EndLine: 46, - StartPos: 995, - EndPos: 996, - }, - }, - Value: []byte(" "), - }, - &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 46, - EndLine: 46, - StartPos: 996, - EndPos: 1000, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 46, - EndLine: 46, - StartPos: 996, - EndPos: 1000, - }, - }, - Value: []byte("$bar"), - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 47, - EndLine: 47, - StartPos: 1003, - EndPos: 1022, - }, - }, - Expr: &ast.ScalarEncapsed{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 47, - EndLine: 47, - StartPos: 1003, - EndPos: 1021, - }, - }, - Parts: []ast.Vertex{ - &ast.ScalarEncapsedStringPart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 47, - EndLine: 47, - StartPos: 1004, - EndPos: 1009, - }, - }, - Value: []byte("test "), - }, - &ast.ExprPropertyFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 47, - EndLine: 47, - StartPos: 1009, - EndPos: 1018, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 47, - EndLine: 47, - StartPos: 1009, - EndPos: 1013, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 47, - EndLine: 47, - StartPos: 1009, - EndPos: 1013, - }, - }, - Value: []byte("$foo"), - }, - }, - Property: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 47, - EndLine: 47, - StartPos: 1015, - EndPos: 1018, - }, - }, - Value: []byte("bar"), - }, - }, - &ast.ScalarEncapsedStringPart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 47, - EndLine: 47, - StartPos: 1018, - EndPos: 1020, - }, - }, - Value: []byte("()"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 48, - EndLine: 48, - StartPos: 1023, - EndPos: 1037, - }, - }, - Expr: &ast.ScalarEncapsed{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 48, - EndLine: 48, - StartPos: 1023, - EndPos: 1036, - }, - }, - Parts: []ast.Vertex{ - &ast.ScalarEncapsedStringPart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 48, - EndLine: 48, - StartPos: 1024, - EndPos: 1029, - }, - }, - Value: []byte("test "), - }, - &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 48, - EndLine: 48, - StartPos: 1029, - EndPos: 1035, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 48, - EndLine: 48, - StartPos: 1031, - EndPos: 1034, - }, - }, - Value: []byte("foo"), - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 49, - EndLine: 49, - StartPos: 1038, - EndPos: 1055, - }, - }, - Expr: &ast.ScalarEncapsed{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 49, - EndLine: 49, - StartPos: 1038, - EndPos: 1054, - }, - }, - Parts: []ast.Vertex{ - &ast.ScalarEncapsedStringPart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 49, - EndLine: 49, - StartPos: 1039, - EndPos: 1044, - }, - }, - Value: []byte("test "), - }, - &ast.ExprArrayDimFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 49, - EndLine: 49, - StartPos: 1044, - EndPos: 1053, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 49, - EndLine: 49, - StartPos: 1046, - EndPos: 1049, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 49, - EndLine: 49, - StartPos: 1046, - EndPos: 1049, - }, - }, - Value: []byte("foo"), - }, - }, - Dim: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 49, - EndLine: 49, - StartPos: 1050, - EndPos: 1051, - }, - }, - Value: []byte("0"), - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 50, - EndLine: 50, - StartPos: 1056, - EndPos: 1071, - }, - }, - Expr: &ast.ScalarEncapsed{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 50, - EndLine: 50, - StartPos: 1056, - EndPos: 1070, - }, - }, - Parts: []ast.Vertex{ - &ast.ScalarEncapsedStringPart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 50, - EndLine: 50, - StartPos: 1057, - EndPos: 1062, - }, - }, - Value: []byte("test "), - }, - &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 50, - EndLine: 50, - StartPos: 1062, - EndPos: 1069, - }, - }, - VarName: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 50, - EndLine: 50, - StartPos: 1064, - EndPos: 1068, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 50, - EndLine: 50, - StartPos: 1064, - EndPos: 1068, - }, - }, - Value: []byte("$foo"), - }, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 51, - EndLine: 51, - StartPos: 1072, - EndPos: 1093, - }, - }, - Expr: &ast.ScalarEncapsed{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 51, - EndLine: 51, - StartPos: 1072, - EndPos: 1092, - }, - }, - Parts: []ast.Vertex{ - &ast.ScalarEncapsedStringPart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 51, - EndLine: 51, - StartPos: 1073, - EndPos: 1078, - }, - }, - Value: []byte("test "), - }, - &ast.ExprMethodCall{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 51, - EndLine: 51, - StartPos: 1079, - EndPos: 1090, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 51, - EndLine: 51, - StartPos: 1079, - EndPos: 1083, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 51, - EndLine: 51, - StartPos: 1079, - EndPos: 1083, - }, - }, - Value: []byte("$foo"), - }, - }, - Method: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 51, - EndLine: 51, - StartPos: 1085, - EndPos: 1088, - }, - }, - Value: []byte("bar"), - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 51, - EndLine: 51, - StartPos: 1088, - EndPos: 1090, - }, - }, - }, - }, - }, - }, - }, - &ast.StmtIf{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 53, - EndLine: 54, - StartPos: 1095, - EndPos: 1111, - }, - }, - Alt: true, - Cond: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 53, - EndLine: 53, - StartPos: 1099, - EndPos: 1101, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 53, - EndLine: 53, - StartPos: 1099, - EndPos: 1101, - }, - }, - Value: []byte("$a"), - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: -1, - EndLine: -1, - StartPos: -1, - EndPos: -1, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - &ast.StmtIf{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 55, - EndLine: 57, - StartPos: 1112, - EndPos: 1141, - }, - }, - Alt: true, - Cond: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 55, - EndLine: 55, - StartPos: 1116, - EndPos: 1118, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 55, - EndLine: 55, - StartPos: 1116, - EndPos: 1118, - }, - }, - Value: []byte("$a"), - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: -1, - EndLine: -1, - StartPos: -1, - EndPos: -1, - }, - }, - Stmts: []ast.Vertex{}, - }, - ElseIf: []ast.Vertex{ - &ast.StmtElseIf{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 56, - EndLine: -1, - StartPos: 1122, - EndPos: -1, - }, - }, - Alt: true, - Cond: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 56, - EndLine: 56, - StartPos: 1130, - EndPos: 1132, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 56, - EndLine: 56, - StartPos: 1130, - EndPos: 1132, - }, - }, - Value: []byte("$b"), - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: -1, - EndLine: -1, - StartPos: -1, - EndPos: -1, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - }, - &ast.StmtIf{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 58, - EndLine: 60, - StartPos: 1142, - EndPos: 1164, - }, - }, - Alt: true, - Cond: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 58, - EndLine: 58, - StartPos: 1146, - EndPos: 1148, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 58, - EndLine: 58, - StartPos: 1146, - EndPos: 1148, - }, - }, - Value: []byte("$a"), - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: -1, - EndLine: -1, - StartPos: -1, - EndPos: -1, - }, - }, - Stmts: []ast.Vertex{}, - }, - Else: &ast.StmtElse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 59, - EndLine: -1, - StartPos: 1152, - EndPos: -1, - }, - }, - Alt: true, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: -1, - EndLine: -1, - StartPos: -1, - EndPos: -1, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - &ast.StmtIf{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 61, - EndLine: 65, - StartPos: 1165, - EndPos: 1213, - }, - }, - Alt: true, - Cond: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 61, - EndLine: 61, - StartPos: 1169, - EndPos: 1171, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 61, - EndLine: 61, - StartPos: 1169, - EndPos: 1171, - }, - }, - Value: []byte("$a"), - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: -1, - EndLine: -1, - StartPos: -1, - EndPos: -1, - }, - }, - Stmts: []ast.Vertex{}, - }, - ElseIf: []ast.Vertex{ - &ast.StmtElseIf{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 62, - EndLine: -1, - StartPos: 1175, - EndPos: -1, - }, - }, - Alt: true, - Cond: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 62, - EndLine: 62, - StartPos: 1183, - EndPos: 1185, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 62, - EndLine: 62, - StartPos: 1183, - EndPos: 1185, - }, - }, - Value: []byte("$b"), - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: -1, - EndLine: -1, - StartPos: -1, - EndPos: -1, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - &ast.StmtElseIf{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 63, - EndLine: -1, - StartPos: 1188, - EndPos: -1, - }, - }, - Alt: true, - Cond: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 63, - EndLine: 63, - StartPos: 1196, - EndPos: 1198, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 63, - EndLine: 63, - StartPos: 1196, - EndPos: 1198, - }, - }, - Value: []byte("$c"), - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: -1, - EndLine: -1, - StartPos: -1, - EndPos: -1, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - Else: &ast.StmtElse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 64, - EndLine: -1, - StartPos: 1201, - EndPos: -1, - }, - }, - Alt: true, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: -1, - EndLine: -1, - StartPos: -1, - EndPos: -1, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - &ast.StmtWhile{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 67, - EndLine: 67, - StartPos: 1215, - EndPos: 1235, - }, - }, - Cond: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 67, - EndLine: 67, - StartPos: 1222, - EndPos: 1223, - }, - }, - Value: []byte("1"), - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 67, - EndLine: 67, - StartPos: 1225, - EndPos: 1235, - }, - }, - Stmts: []ast.Vertex{ - &ast.StmtBreak{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 67, - EndLine: 67, - StartPos: 1227, - EndPos: 1233, - }, - }, - }, - }, - }, - }, - &ast.StmtWhile{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 68, - EndLine: 68, - StartPos: 1236, - EndPos: 1258, - }, - }, - Cond: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 68, - EndLine: 68, - StartPos: 1243, - EndPos: 1244, - }, - }, - Value: []byte("1"), - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 68, - EndLine: 68, - StartPos: 1246, - EndPos: 1258, - }, - }, - Stmts: []ast.Vertex{ - &ast.StmtBreak{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 68, - EndLine: 68, - StartPos: 1248, - EndPos: 1256, - }, - }, - Expr: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 68, - EndLine: 68, - StartPos: 1254, - EndPos: 1255, - }, - }, - Value: []byte("2"), - }, - }, - }, - }, - }, - &ast.StmtWhile{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 69, - EndLine: 69, - StartPos: 1259, - EndPos: 1290, - }, - }, - Alt: true, - Cond: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 69, - EndLine: 69, - StartPos: 1266, - EndPos: 1267, - }, - }, - Value: []byte("1"), - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 69, - EndLine: 69, - StartPos: 1271, - EndPos: 1280, - }, - }, - Stmts: []ast.Vertex{ - &ast.StmtBreak{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 69, - EndLine: 69, - StartPos: 1271, - EndPos: 1280, - }, - }, - Expr: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 69, - EndLine: 69, - StartPos: 1277, - EndPos: 1278, - }, - }, - Value: []byte("3"), - }, - }, - }, - }, - }, - &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 70, - EndLine: 70, - StartPos: 1291, - EndPos: 1334, - }, - }, - ClassName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 70, - EndLine: 70, - StartPos: 1297, - EndPos: 1300, - }, - }, - Value: []byte("foo"), - }, - Stmts: []ast.Vertex{ - &ast.StmtClassConstList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 70, - EndLine: 70, - StartPos: 1302, - EndPos: 1332, - }, - }, - Modifiers: []ast.Vertex{ - &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 70, - EndLine: 70, - StartPos: 1302, - EndPos: 1308, - }, - }, - Value: []byte("public"), - }, - }, - Consts: []ast.Vertex{ - &ast.StmtConstant{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 70, - EndLine: 70, - StartPos: 1315, - EndPos: 1322, - }, - }, - Name: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 70, - EndLine: 70, - StartPos: 1315, - EndPos: 1318, - }, - }, - Value: []byte("FOO"), - }, - Expr: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 70, - EndLine: 70, - StartPos: 1321, - EndPos: 1322, - }, - }, - Value: []byte("1"), - }, - }, - &ast.StmtConstant{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 70, - EndLine: 70, - StartPos: 1324, - EndPos: 1331, - }, - }, - Name: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 70, - EndLine: 70, - StartPos: 1324, - EndPos: 1327, - }, - }, - Value: []byte("BAR"), - }, - Expr: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 70, - EndLine: 70, - StartPos: 1330, - EndPos: 1331, - }, - }, - Value: []byte("2"), - }, - }, - }, - }, - }, - }, - &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 71, - EndLine: 71, - StartPos: 1335, - EndPos: 1371, - }, - }, - ClassName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 71, - EndLine: 71, - StartPos: 1341, - EndPos: 1344, - }, - }, - Value: []byte("foo"), - }, - Stmts: []ast.Vertex{ - &ast.StmtClassConstList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 71, - EndLine: 71, - StartPos: 1346, - EndPos: 1369, - }, - }, - Consts: []ast.Vertex{ - &ast.StmtConstant{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 71, - EndLine: 71, - StartPos: 1352, - EndPos: 1359, - }, - }, - Name: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 71, - EndLine: 71, - StartPos: 1352, - EndPos: 1355, - }, - }, - Value: []byte("FOO"), - }, - Expr: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 71, - EndLine: 71, - StartPos: 1358, - EndPos: 1359, - }, - }, - Value: []byte("1"), - }, - }, - &ast.StmtConstant{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 71, - EndLine: 71, - StartPos: 1361, - EndPos: 1368, - }, - }, - Name: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 71, - EndLine: 71, - StartPos: 1361, - EndPos: 1364, - }, - }, - Value: []byte("BAR"), - }, - Expr: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 71, - EndLine: 71, - StartPos: 1367, - EndPos: 1368, - }, - }, - Value: []byte("2"), - }, - }, - }, - }, - }, - }, - &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 72, - EndLine: 72, - StartPos: 1372, - EndPos: 1402, - }, - }, - ClassName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 72, - EndLine: 72, - StartPos: 1378, - EndPos: 1381, - }, - }, - Value: []byte("foo"), - }, - Stmts: []ast.Vertex{ - &ast.StmtClassMethod{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 72, - EndLine: 72, - StartPos: 1383, - EndPos: 1400, - }, - }, - MethodName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 72, - EndLine: 72, - StartPos: 1392, - EndPos: 1395, - }, - }, - Value: []byte("bar"), - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 72, - EndLine: 72, - StartPos: 1398, - EndPos: 1400, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - }, - &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 73, - EndLine: 73, - StartPos: 1403, - EndPos: 1448, - }, - }, - ClassName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 73, - EndLine: 73, - StartPos: 1409, - EndPos: 1412, - }, - }, - Value: []byte("foo"), - }, - Stmts: []ast.Vertex{ - &ast.StmtClassMethod{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 73, - EndLine: 73, - StartPos: 1414, - EndPos: 1446, - }, - }, - ReturnsRef: true, - MethodName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 73, - EndLine: 73, - StartPos: 1438, - EndPos: 1441, - }, - }, - Value: []byte("bar"), - }, - Modifiers: []ast.Vertex{ - &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 73, - EndLine: 73, - StartPos: 1414, - EndPos: 1420, - }, - }, - Value: []byte("public"), - }, - &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 73, - EndLine: 73, - StartPos: 1421, - EndPos: 1427, - }, - }, - Value: []byte("static"), - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 73, - EndLine: 73, - StartPos: 1444, - EndPos: 1446, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - }, - &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 74, - EndLine: 74, - StartPos: 1449, - EndPos: 1500, - }, - }, - ClassName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 74, - EndLine: 74, - StartPos: 1455, - EndPos: 1458, - }, - }, - Value: []byte("foo"), - }, - Stmts: []ast.Vertex{ - &ast.StmtClassMethod{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 74, - EndLine: 74, - StartPos: 1460, - EndPos: 1498, - }, - }, - ReturnsRef: true, - MethodName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 74, - EndLine: 74, - StartPos: 1484, - EndPos: 1487, - }, - }, - Value: []byte("bar"), - }, - Modifiers: []ast.Vertex{ - &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 74, - EndLine: 74, - StartPos: 1460, - EndPos: 1466, - }, - }, - Value: []byte("public"), - }, - &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 74, - EndLine: 74, - StartPos: 1467, - EndPos: 1473, - }, - }, - Value: []byte("static"), - }, - }, - ReturnType: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 74, - EndLine: 74, - StartPos: 1491, - EndPos: 1495, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 74, - EndLine: 74, - StartPos: 1491, - EndPos: 1495, - }, - }, - Value: []byte("void"), - }, - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 74, - EndLine: 74, - StartPos: 1496, - EndPos: 1498, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - }, - &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 75, - EndLine: 75, - StartPos: 1501, - EndPos: 1522, - }, - }, - ClassName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 75, - EndLine: 75, - StartPos: 1516, - EndPos: 1519, - }, - }, - Value: []byte("foo"), - }, - Modifiers: []ast.Vertex{ - &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 75, - EndLine: 75, - StartPos: 1501, - EndPos: 1509, - }, - }, - Value: []byte("abstract"), - }, - }, - Stmts: []ast.Vertex{}, - }, - &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 76, - EndLine: 76, - StartPos: 1523, - EndPos: 1554, - }, - }, - ClassName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 76, - EndLine: 76, - StartPos: 1535, - EndPos: 1538, - }, - }, - Value: []byte("foo"), - }, - Modifiers: []ast.Vertex{ - &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 76, - EndLine: 76, - StartPos: 1523, - EndPos: 1528, - }, - }, - Value: []byte("final"), - }, - }, - Extends: &ast.StmtClassExtends{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 76, - EndLine: 76, - StartPos: 1539, - EndPos: 1550, - }, - }, - ClassName: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 76, - EndLine: 76, - StartPos: 1547, - EndPos: 1550, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 76, - EndLine: 76, - StartPos: 1547, - EndPos: 1550, - }, - }, - Value: []byte("bar"), - }, - }, - }, - }, - Stmts: []ast.Vertex{}, - }, - &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 77, - EndLine: 77, - StartPos: 1555, - EndPos: 1589, - }, - }, - ClassName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 77, - EndLine: 77, - StartPos: 1567, - EndPos: 1570, - }, - }, - Value: []byte("foo"), - }, - Modifiers: []ast.Vertex{ - &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 77, - EndLine: 77, - StartPos: 1555, - EndPos: 1560, - }, - }, - Value: []byte("final"), - }, - }, - Implements: &ast.StmtClassImplements{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 77, - EndLine: 77, - StartPos: 1571, - EndPos: 1585, - }, - }, - InterfaceNames: []ast.Vertex{ - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 77, - EndLine: 77, - StartPos: 1582, - EndPos: 1585, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 77, - EndLine: 77, - StartPos: 1582, - EndPos: 1585, - }, - }, - Value: []byte("bar"), - }, - }, - }, - }, - }, - Stmts: []ast.Vertex{}, - }, - &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 78, - EndLine: 78, - StartPos: 1590, - EndPos: 1629, - }, - }, - ClassName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 78, - EndLine: 78, - StartPos: 1602, - EndPos: 1605, - }, - }, - Value: []byte("foo"), - }, - Modifiers: []ast.Vertex{ - &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 78, - EndLine: 78, - StartPos: 1590, - EndPos: 1595, - }, - }, - Value: []byte("final"), - }, - }, - Implements: &ast.StmtClassImplements{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 78, - EndLine: 78, - StartPos: 1606, - EndPos: 1625, - }, - }, - InterfaceNames: []ast.Vertex{ - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 78, - EndLine: 78, - StartPos: 1617, - EndPos: 1620, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 78, - EndLine: 78, - StartPos: 1617, - EndPos: 1620, - }, - }, - Value: []byte("bar"), - }, - }, - }, - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 78, - EndLine: 78, - StartPos: 1622, - EndPos: 1625, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 78, - EndLine: 78, - StartPos: 1622, - EndPos: 1625, - }, - }, - Value: []byte("baz"), - }, - }, - }, - }, - }, - Stmts: []ast.Vertex{}, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 79, - EndLine: 79, - StartPos: 1630, - EndPos: 1678, - }, - }, - Expr: &ast.ExprNew{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 79, - EndLine: 79, - StartPos: 1630, - EndPos: 1677, - }, - }, - Class: &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 79, - EndLine: 79, - StartPos: 1634, - EndPos: 1677, - }, - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 79, - EndLine: 79, - StartPos: 1639, - EndPos: 1641, - }, - }, - }, - Extends: &ast.StmtClassExtends{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 79, - EndLine: 79, - StartPos: 1642, - EndPos: 1653, - }, - }, - ClassName: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 79, - EndLine: 79, - StartPos: 1650, - EndPos: 1653, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 79, - EndLine: 79, - StartPos: 1650, - EndPos: 1653, - }, - }, - Value: []byte("foo"), - }, - }, - }, - }, - Implements: &ast.StmtClassImplements{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 79, - EndLine: 79, - StartPos: 1654, - EndPos: 1673, - }, - }, - InterfaceNames: []ast.Vertex{ - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 79, - EndLine: 79, - StartPos: 1665, - EndPos: 1668, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 79, - EndLine: 79, - StartPos: 1665, - EndPos: 1668, - }, - }, - Value: []byte("bar"), - }, - }, - }, - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 79, - EndLine: 79, - StartPos: 1670, - EndPos: 1673, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 79, - EndLine: 79, - StartPos: 1670, - EndPos: 1673, - }, - }, - Value: []byte("baz"), - }, - }, - }, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - &ast.StmtConstList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 81, - EndLine: 81, - StartPos: 1680, - EndPos: 1703, - }, - }, - Consts: []ast.Vertex{ - &ast.StmtConstant{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 81, - EndLine: 81, - StartPos: 1686, - EndPos: 1693, - }, - }, - Name: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 81, - EndLine: 81, - StartPos: 1686, - EndPos: 1689, - }, - }, - Value: []byte("FOO"), - }, - Expr: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 81, - EndLine: 81, - StartPos: 1692, - EndPos: 1693, - }, - }, - Value: []byte("1"), - }, - }, - &ast.StmtConstant{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 81, - EndLine: 81, - StartPos: 1695, - EndPos: 1702, - }, - }, - Name: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 81, - EndLine: 81, - StartPos: 1695, - EndPos: 1698, - }, - }, - Value: []byte("BAR"), - }, - Expr: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 81, - EndLine: 81, - StartPos: 1701, - EndPos: 1702, - }, - }, - Value: []byte("2"), - }, - }, - }, - }, - &ast.StmtWhile{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 82, - EndLine: 82, - StartPos: 1704, - EndPos: 1727, - }, - }, - Cond: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 82, - EndLine: 82, - StartPos: 1711, - EndPos: 1712, - }, - }, - Value: []byte("1"), - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 82, - EndLine: 82, - StartPos: 1714, - EndPos: 1727, - }, - }, - Stmts: []ast.Vertex{ - &ast.StmtContinue{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 82, - EndLine: 82, - StartPos: 1716, - EndPos: 1725, - }, - }, - }, - }, - }, - }, - &ast.StmtWhile{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 83, - EndLine: 83, - StartPos: 1728, - EndPos: 1753, - }, - }, - Cond: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 83, - EndLine: 83, - StartPos: 1735, - EndPos: 1736, - }, - }, - Value: []byte("1"), - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 83, - EndLine: 83, - StartPos: 1738, - EndPos: 1753, - }, - }, - Stmts: []ast.Vertex{ - &ast.StmtContinue{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 83, - EndLine: 83, - StartPos: 1740, - EndPos: 1751, - }, - }, - Expr: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 83, - EndLine: 83, - StartPos: 1749, - EndPos: 1750, - }, - }, - Value: []byte("2"), - }, - }, - }, - }, - }, - &ast.StmtWhile{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 84, - EndLine: 84, - StartPos: 1754, - EndPos: 1780, - }, - }, - Cond: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 84, - EndLine: 84, - StartPos: 1761, - EndPos: 1762, - }, - }, - Value: []byte("1"), - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 84, - EndLine: 84, - StartPos: 1764, - EndPos: 1780, - }, - }, - Stmts: []ast.Vertex{ - &ast.StmtContinue{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 84, - EndLine: 84, - StartPos: 1766, - EndPos: 1778, - }, - }, - Expr: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 84, - EndLine: 84, - StartPos: 1775, - EndPos: 1776, - }, - }, - Value: []byte("3"), - }, - }, - }, - }, - }, - &ast.StmtDeclare{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 85, - EndLine: 85, - StartPos: 1781, - EndPos: 1798, - }, - }, - Consts: []ast.Vertex{ - &ast.StmtConstant{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 85, - EndLine: 85, - StartPos: 1789, - EndPos: 1796, - }, - }, - Name: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 85, - EndLine: 85, - StartPos: 1789, - EndPos: 1794, - }, - }, - Value: []byte("ticks"), - }, - Expr: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 85, - EndLine: 85, - StartPos: 1795, - EndPos: 1796, - }, - }, - Value: []byte("1"), - }, - }, - }, - Stmt: &ast.StmtNop{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 85, - EndLine: 85, - StartPos: 1797, - EndPos: 1798, - }, - }, - }, - }, - &ast.StmtDeclare{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 86, - EndLine: 86, - StartPos: 1799, - EndPos: 1818, - }, - }, - Consts: []ast.Vertex{ - &ast.StmtConstant{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 86, - EndLine: 86, - StartPos: 1807, - EndPos: 1814, - }, - }, - Name: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 86, - EndLine: 86, - StartPos: 1807, - EndPos: 1812, - }, - }, - Value: []byte("ticks"), - }, - Expr: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 86, - EndLine: 86, - StartPos: 1813, - EndPos: 1814, - }, - }, - Value: []byte("1"), - }, - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 86, - EndLine: 86, - StartPos: 1816, - EndPos: 1818, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - &ast.StmtDeclare{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 87, - EndLine: 87, - StartPos: 1819, - EndPos: 1848, - }, - }, - Alt: true, - Consts: []ast.Vertex{ - &ast.StmtConstant{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 87, - EndLine: 87, - StartPos: 1827, - EndPos: 1834, - }, - }, - Name: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 87, - EndLine: 87, - StartPos: 1827, - EndPos: 1832, - }, - }, - Value: []byte("ticks"), - }, - Expr: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 87, - EndLine: 87, - StartPos: 1833, - EndPos: 1834, - }, - }, - Value: []byte("1"), - }, - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: -1, - EndLine: -1, - StartPos: -1, - EndPos: -1, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - &ast.StmtDo{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 88, - EndLine: 88, - StartPos: 1849, - EndPos: 1864, - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 88, - EndLine: 88, - StartPos: 1852, - EndPos: 1854, - }, - }, - Stmts: []ast.Vertex{}, - }, - Cond: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 88, - EndLine: 88, - StartPos: 1861, - EndPos: 1862, - }, - }, - Value: []byte("1"), - }, - }, - &ast.StmtEcho{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 89, - EndLine: 89, - StartPos: 1865, - EndPos: 1876, - }, - }, - Exprs: []ast.Vertex{ - &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 89, - EndLine: 89, - StartPos: 1870, - EndPos: 1872, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 89, - EndLine: 89, - StartPos: 1870, - EndPos: 1872, - }, - }, - Value: []byte("$a"), - }, - }, - &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 89, - EndLine: 89, - StartPos: 1874, - EndPos: 1875, - }, - }, - Value: []byte("1"), - }, - }, - }, - &ast.StmtEcho{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 90, - EndLine: 90, - StartPos: 1877, - EndPos: 1886, - }, - }, - Exprs: []ast.Vertex{ - &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 90, - EndLine: 90, - StartPos: 1882, - EndPos: 1884, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 90, - EndLine: 90, - StartPos: 1882, - EndPos: 1884, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtFor{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 91, - EndLine: 91, - StartPos: 1887, - EndPos: 1922, - }, - }, - Init: []ast.Vertex{ - &ast.ExprAssign{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 91, - EndLine: 91, - StartPos: 1891, - EndPos: 1897, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 91, - EndLine: 91, - StartPos: 1891, - EndPos: 1893, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 91, - EndLine: 91, - StartPos: 1891, - EndPos: 1893, - }, - }, - Value: []byte("$i"), - }, - }, - Expr: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 91, - EndLine: 91, - StartPos: 1896, - EndPos: 1897, - }, - }, - Value: []byte("0"), - }, - }, - }, - Cond: []ast.Vertex{ - &ast.ExprBinarySmaller{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 91, - EndLine: 91, - StartPos: 1899, - EndPos: 1906, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 91, - EndLine: 91, - StartPos: 1899, - EndPos: 1901, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 91, - EndLine: 91, - StartPos: 1899, - EndPos: 1901, - }, - }, - Value: []byte("$i"), - }, - }, - Right: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 91, - EndLine: 91, - StartPos: 1904, - EndPos: 1906, - }, - }, - Value: []byte("10"), - }, - }, - }, - Loop: []ast.Vertex{ - &ast.ExprPostInc{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 91, - EndLine: 91, - StartPos: 1908, - EndPos: 1912, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 91, - EndLine: 91, - StartPos: 1908, - EndPos: 1910, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 91, - EndLine: 91, - StartPos: 1908, - EndPos: 1910, - }, - }, - Value: []byte("$i"), - }, - }, - }, - &ast.ExprPostInc{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 91, - EndLine: 91, - StartPos: 1914, - EndPos: 1918, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 91, - EndLine: 91, - StartPos: 1914, - EndPos: 1916, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 91, - EndLine: 91, - StartPos: 1914, - EndPos: 1916, - }, - }, - Value: []byte("$i"), - }, - }, - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 91, - EndLine: 91, - StartPos: 1920, - EndPos: 1922, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - &ast.StmtFor{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 92, - EndLine: 92, - StartPos: 1923, - EndPos: 1959, - }, - }, - Alt: true, - Cond: []ast.Vertex{ - &ast.ExprBinarySmaller{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 92, - EndLine: 92, - StartPos: 1929, - EndPos: 1936, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 92, - EndLine: 92, - StartPos: 1929, - EndPos: 1931, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 92, - EndLine: 92, - StartPos: 1929, - EndPos: 1931, - }, - }, - Value: []byte("$i"), - }, - }, - Right: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 92, - EndLine: 92, - StartPos: 1934, - EndPos: 1936, - }, - }, - Value: []byte("10"), - }, - }, - }, - Loop: []ast.Vertex{ - &ast.ExprPostInc{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 92, - EndLine: 92, - StartPos: 1938, - EndPos: 1942, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 92, - EndLine: 92, - StartPos: 1938, - EndPos: 1940, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 92, - EndLine: 92, - StartPos: 1938, - EndPos: 1940, - }, - }, - Value: []byte("$i"), - }, - }, - }, - &ast.ExprPostInc{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 92, - EndLine: 92, - StartPos: 1944, - EndPos: 1948, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 92, - EndLine: 92, - StartPos: 1944, - EndPos: 1946, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 92, - EndLine: 92, - StartPos: 1944, - EndPos: 1946, - }, - }, - Value: []byte("$i"), - }, - }, - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: -1, - EndLine: -1, - StartPos: -1, - EndPos: -1, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - &ast.StmtForeach{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 93, - EndLine: 93, - StartPos: 1960, - EndPos: 1981, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 93, - EndLine: 93, - StartPos: 1969, - EndPos: 1971, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 93, - EndLine: 93, - StartPos: 1969, - EndPos: 1971, - }, - }, - Value: []byte("$a"), - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 93, - EndLine: 93, - StartPos: 1975, - EndPos: 1977, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 93, - EndLine: 93, - StartPos: 1975, - EndPos: 1977, - }, - }, - Value: []byte("$v"), - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 93, - EndLine: 93, - StartPos: 1979, - EndPos: 1981, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - &ast.StmtForeach{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 94, - EndLine: 94, - StartPos: 1982, - EndPos: 2014, - }, - }, - Alt: true, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 94, - EndLine: 94, - StartPos: 1991, - EndPos: 1993, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 94, - EndLine: 94, - StartPos: 1991, - EndPos: 1993, - }, - }, - Value: []byte("$a"), - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 94, - EndLine: 94, - StartPos: 1997, - EndPos: 1999, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 94, - EndLine: 94, - StartPos: 1997, - EndPos: 1999, - }, - }, - Value: []byte("$v"), - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: -1, - EndLine: -1, - StartPos: -1, - EndPos: -1, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - &ast.StmtForeach{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 95, - EndLine: 95, - StartPos: 2015, - EndPos: 2042, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 95, - EndLine: 95, - StartPos: 2024, - EndPos: 2026, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 95, - EndLine: 95, - StartPos: 2024, - EndPos: 2026, - }, - }, - Value: []byte("$a"), - }, - }, - Key: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 95, - EndLine: 95, - StartPos: 2030, - EndPos: 2032, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 95, - EndLine: 95, - StartPos: 2030, - EndPos: 2032, - }, - }, - Value: []byte("$k"), - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 95, - EndLine: 95, - StartPos: 2036, - EndPos: 2038, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 95, - EndLine: 95, - StartPos: 2036, - EndPos: 2038, - }, - }, - Value: []byte("$v"), - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 95, - EndLine: 95, - StartPos: 2040, - EndPos: 2042, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - &ast.StmtForeach{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 96, - EndLine: 96, - StartPos: 2043, - EndPos: 2071, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 96, - EndLine: 96, - StartPos: 2052, - EndPos: 2054, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 96, - EndLine: 96, - StartPos: 2052, - EndPos: 2054, - }, - }, - Value: []byte("$a"), - }, - }, - Key: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 96, - EndLine: 96, - StartPos: 2058, - EndPos: 2060, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 96, - EndLine: 96, - StartPos: 2058, - EndPos: 2060, - }, - }, - Value: []byte("$k"), - }, - }, - Var: &ast.ExprReference{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 96, - EndLine: 96, - StartPos: 2064, - EndPos: 2067, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 96, - EndLine: 96, - StartPos: 2065, - EndPos: 2067, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 96, - EndLine: 96, - StartPos: 2065, - EndPos: 2067, - }, - }, - Value: []byte("$v"), - }, - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 96, - EndLine: 96, - StartPos: 2069, - EndPos: 2071, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - &ast.StmtForeach{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 97, - EndLine: 97, - StartPos: 2072, - EndPos: 2105, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 97, - EndLine: 97, - StartPos: 2081, - EndPos: 2083, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 97, - EndLine: 97, - StartPos: 2081, - EndPos: 2083, - }, - }, - Value: []byte("$a"), - }, - }, - Key: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 97, - EndLine: 97, - StartPos: 2087, - EndPos: 2089, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 97, - EndLine: 97, - StartPos: 2087, - EndPos: 2089, - }, - }, - Value: []byte("$k"), - }, - }, - Var: &ast.ExprList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 97, - EndLine: 97, - StartPos: 2093, - EndPos: 2101, - }, - }, - Items: []ast.Vertex{ - &ast.ExprArrayItem{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 97, - EndLine: 97, - StartPos: 2098, - EndPos: 2100, - }, - }, - Val: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 97, - EndLine: 97, - StartPos: 2098, - EndPos: 2100, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 97, - EndLine: 97, - StartPos: 2098, - EndPos: 2100, - }, - }, - Value: []byte("$v"), - }, - }, - }, - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 97, - EndLine: 97, - StartPos: 2103, - EndPos: 2105, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - &ast.StmtForeach{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 98, - EndLine: 98, - StartPos: 2106, - EndPos: 2135, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 98, - EndLine: 98, - StartPos: 2115, - EndPos: 2117, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 98, - EndLine: 98, - StartPos: 2115, - EndPos: 2117, - }, - }, - Value: []byte("$a"), - }, - }, - Key: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 98, - EndLine: 98, - StartPos: 2121, - EndPos: 2123, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 98, - EndLine: 98, - StartPos: 2121, - EndPos: 2123, - }, - }, - Value: []byte("$k"), - }, - }, - Var: &ast.ExprShortList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 98, - EndLine: 98, - StartPos: 2127, - EndPos: 2131, - }, - }, - Items: []ast.Vertex{ - &ast.ExprArrayItem{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 98, - EndLine: 98, - StartPos: 2128, - EndPos: 2130, - }, - }, - Val: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 98, - EndLine: 98, - StartPos: 2128, - EndPos: 2130, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 98, - EndLine: 98, - StartPos: 2128, - EndPos: 2130, - }, - }, - Value: []byte("$v"), - }, - }, - }, - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 98, - EndLine: 98, - StartPos: 2133, - EndPos: 2135, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - &ast.StmtFunction{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 99, - EndLine: 99, - StartPos: 2136, - EndPos: 2153, - }, - }, - FunctionName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 99, - EndLine: 99, - StartPos: 2145, - EndPos: 2148, - }, - }, - Value: []byte("foo"), - }, - Stmts: []ast.Vertex{}, - }, - &ast.StmtFunction{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 100, - EndLine: 100, - StartPos: 2154, - EndPos: 2178, - }, - }, - FunctionName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 100, - EndLine: 100, - StartPos: 2163, - EndPos: 2166, - }, - }, - Value: []byte("foo"), - }, - Stmts: []ast.Vertex{ - &ast.StmtReturn{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 100, - EndLine: 100, - StartPos: 2170, - EndPos: 2177, - }, - }, - }, - }, - }, - &ast.StmtFunction{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 101, - EndLine: 101, - StartPos: 2179, - EndPos: 2206, - }, - }, - ReturnsRef: true, - FunctionName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 101, - EndLine: 101, - StartPos: 2189, - EndPos: 2192, - }, - }, - Value: []byte("foo"), - }, - Stmts: []ast.Vertex{ - &ast.StmtReturn{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 101, - EndLine: 101, - StartPos: 2196, - EndPos: 2205, - }, - }, - Expr: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 101, - EndLine: 101, - StartPos: 2203, - EndPos: 2204, - }, - }, - Value: []byte("1"), - }, - }, - }, - }, - &ast.StmtFunction{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 102, - EndLine: 102, - StartPos: 2207, - EndPos: 2231, - }, - }, - ReturnsRef: true, - FunctionName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 102, - EndLine: 102, - StartPos: 2217, - EndPos: 2220, - }, - }, - Value: []byte("foo"), - }, - ReturnType: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 102, - EndLine: 102, - StartPos: 2224, - EndPos: 2228, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 102, - EndLine: 102, - StartPos: 2224, - EndPos: 2228, - }, - }, - Value: []byte("void"), - }, - }, - }, - Stmts: []ast.Vertex{}, - }, - &ast.StmtGlobal{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 103, - EndLine: 103, - StartPos: 2232, - EndPos: 2246, - }, - }, - Vars: []ast.Vertex{ - &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 103, - EndLine: 103, - StartPos: 2239, - EndPos: 2241, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 103, - EndLine: 103, - StartPos: 2239, - EndPos: 2241, - }, - }, - Value: []byte("$a"), - }, - }, - &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 103, - EndLine: 103, - StartPos: 2243, - EndPos: 2245, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 103, - EndLine: 103, - StartPos: 2243, - EndPos: 2245, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtLabel{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 104, - EndLine: 104, - StartPos: 2247, - EndPos: 2249, - }, - }, - LabelName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 104, - EndLine: 104, - StartPos: 2247, - EndPos: 2248, - }, - }, - Value: []byte("a"), - }, - }, - &ast.StmtGoto{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 105, - EndLine: 105, - StartPos: 2250, - EndPos: 2257, - }, - }, - Label: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 105, - EndLine: 105, - StartPos: 2255, - EndPos: 2256, - }, - }, - Value: []byte("a"), - }, - }, - &ast.StmtIf{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 106, - EndLine: 106, - StartPos: 2258, - EndPos: 2268, - }, - }, - Cond: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 106, - EndLine: 106, - StartPos: 2262, - EndPos: 2264, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 106, - EndLine: 106, - StartPos: 2262, - EndPos: 2264, - }, - }, - Value: []byte("$a"), - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 106, - EndLine: 106, - StartPos: 2266, - EndPos: 2268, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - &ast.StmtIf{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 107, - EndLine: 107, - StartPos: 2269, - EndPos: 2294, - }, - }, - Cond: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 107, - EndLine: 107, - StartPos: 2273, - EndPos: 2275, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 107, - EndLine: 107, - StartPos: 2273, - EndPos: 2275, - }, - }, - Value: []byte("$a"), - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 107, - EndLine: 107, - StartPos: 2277, - EndPos: 2279, - }, - }, - Stmts: []ast.Vertex{}, - }, - ElseIf: []ast.Vertex{ - &ast.StmtElseIf{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 107, - EndLine: 107, - StartPos: 2280, - EndPos: 2294, - }, - }, - Cond: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 107, - EndLine: 107, - StartPos: 2288, - EndPos: 2290, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 107, - EndLine: 107, - StartPos: 2288, - EndPos: 2290, - }, - }, - Value: []byte("$b"), - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 107, - EndLine: 107, - StartPos: 2292, - EndPos: 2294, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - }, - &ast.StmtIf{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 108, - EndLine: 108, - StartPos: 2295, - EndPos: 2313, - }, - }, - Cond: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 108, - EndLine: 108, - StartPos: 2299, - EndPos: 2301, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 108, - EndLine: 108, - StartPos: 2299, - EndPos: 2301, - }, - }, - Value: []byte("$a"), - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 108, - EndLine: 108, - StartPos: 2303, - EndPos: 2305, - }, - }, - Stmts: []ast.Vertex{}, - }, - Else: &ast.StmtElse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 108, - EndLine: 108, - StartPos: 2306, - EndPos: 2313, - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 108, - EndLine: 108, - StartPos: 2311, - EndPos: 2313, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - &ast.StmtIf{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 109, - EndLine: 109, - StartPos: 2314, - EndPos: 2362, - }, - }, - Cond: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 109, - EndLine: 109, - StartPos: 2318, - EndPos: 2320, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 109, - EndLine: 109, - StartPos: 2318, - EndPos: 2320, - }, - }, - Value: []byte("$a"), - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 109, - EndLine: 109, - StartPos: 2322, - EndPos: 2324, - }, - }, - Stmts: []ast.Vertex{}, - }, - ElseIf: []ast.Vertex{ - &ast.StmtElseIf{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 109, - EndLine: 109, - StartPos: 2325, - EndPos: 2339, - }, - }, - Cond: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 109, - EndLine: 109, - StartPos: 2333, - EndPos: 2335, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 109, - EndLine: 109, - StartPos: 2333, - EndPos: 2335, - }, - }, - Value: []byte("$b"), - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 109, - EndLine: 109, - StartPos: 2337, - EndPos: 2339, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - &ast.StmtElseIf{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 109, - EndLine: 109, - StartPos: 2340, - EndPos: 2354, - }, - }, - Cond: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 109, - EndLine: 109, - StartPos: 2348, - EndPos: 2350, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 109, - EndLine: 109, - StartPos: 2348, - EndPos: 2350, - }, - }, - Value: []byte("$c"), - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 109, - EndLine: 109, - StartPos: 2352, - EndPos: 2354, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - Else: &ast.StmtElse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 109, - EndLine: 109, - StartPos: 2355, - EndPos: 2362, - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 109, - EndLine: 109, - StartPos: 2360, - EndPos: 2362, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - &ast.StmtIf{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 110, - EndLine: 110, - StartPos: 2363, - EndPos: 2412, - }, - }, - Cond: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 110, - EndLine: 110, - StartPos: 2367, - EndPos: 2369, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 110, - EndLine: 110, - StartPos: 2367, - EndPos: 2369, - }, - }, - Value: []byte("$a"), - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 110, - EndLine: 110, - StartPos: 2371, - EndPos: 2373, - }, - }, - Stmts: []ast.Vertex{}, - }, - ElseIf: []ast.Vertex{ - &ast.StmtElseIf{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 110, - EndLine: 110, - StartPos: 2374, - EndPos: 2388, - }, - }, - Cond: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 110, - EndLine: 110, - StartPos: 2382, - EndPos: 2384, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 110, - EndLine: 110, - StartPos: 2382, - EndPos: 2384, - }, - }, - Value: []byte("$b"), - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 110, - EndLine: 110, - StartPos: 2386, - EndPos: 2388, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - Else: &ast.StmtElse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 110, - EndLine: 110, - StartPos: 2389, - EndPos: 2412, - }, - }, - Stmt: &ast.StmtIf{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 110, - EndLine: 110, - StartPos: 2394, - EndPos: 2412, - }, - }, - Cond: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 110, - EndLine: 110, - StartPos: 2398, - EndPos: 2400, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 110, - EndLine: 110, - StartPos: 2398, - EndPos: 2400, - }, - }, - Value: []byte("$c"), - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 110, - EndLine: 110, - StartPos: 2402, - EndPos: 2404, - }, - }, - Stmts: []ast.Vertex{}, - }, - Else: &ast.StmtElse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 110, - EndLine: 110, - StartPos: 2405, - EndPos: 2412, - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 110, - EndLine: 110, - StartPos: 2410, - EndPos: 2412, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - }, - }, - &ast.StmtNop{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 111, - EndLine: 111, - StartPos: 2413, - EndPos: 2415, - }, - }, - }, - &ast.StmtInlineHtml{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 111, - EndLine: 111, - StartPos: 2415, - EndPos: 2428, - }, - }, - Value: []byte("
"), - }, - &ast.StmtInterface{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 112, - EndLine: 112, - StartPos: 2431, - EndPos: 2447, - }, - }, - InterfaceName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 112, - EndLine: 112, - StartPos: 2441, - EndPos: 2444, - }, - }, - Value: []byte("Foo"), - }, - Stmts: []ast.Vertex{}, - }, - &ast.StmtInterface{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 113, - EndLine: 113, - StartPos: 2448, - EndPos: 2476, - }, - }, - InterfaceName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 113, - EndLine: 113, - StartPos: 2458, - EndPos: 2461, - }, - }, - Value: []byte("Foo"), - }, - Extends: &ast.StmtInterfaceExtends{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 113, - EndLine: 113, - StartPos: 2462, - EndPos: 2473, - }, - }, - InterfaceNames: []ast.Vertex{ - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 113, - EndLine: 113, - StartPos: 2470, - EndPos: 2473, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 113, - EndLine: 113, - StartPos: 2470, - EndPos: 2473, - }, - }, - Value: []byte("Bar"), - }, - }, - }, - }, - }, - Stmts: []ast.Vertex{}, - }, - &ast.StmtInterface{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 114, - EndLine: 114, - StartPos: 2477, - EndPos: 2510, - }, - }, - InterfaceName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 114, - EndLine: 114, - StartPos: 2487, - EndPos: 2490, - }, - }, - Value: []byte("Foo"), - }, - Extends: &ast.StmtInterfaceExtends{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 114, - EndLine: 114, - StartPos: 2491, - EndPos: 2507, - }, - }, - InterfaceNames: []ast.Vertex{ - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 114, - EndLine: 114, - StartPos: 2499, - EndPos: 2502, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 114, - EndLine: 114, - StartPos: 2499, - EndPos: 2502, - }, - }, - Value: []byte("Bar"), - }, - }, - }, - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 114, - EndLine: 114, - StartPos: 2504, - EndPos: 2507, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 114, - EndLine: 114, - StartPos: 2504, - EndPos: 2507, - }, - }, - Value: []byte("Baz"), - }, - }, - }, - }, - }, - Stmts: []ast.Vertex{}, - }, - &ast.StmtNamespace{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 115, - EndLine: 115, - StartPos: 2511, - EndPos: 2525, - }, - }, - Name: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 115, - EndLine: 115, - StartPos: 2521, - EndPos: 2524, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 115, - EndLine: 115, - StartPos: 2521, - EndPos: 2524, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - }, - &ast.StmtNamespace{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 116, - EndLine: 116, - StartPos: 2526, - EndPos: 2542, - }, - }, - Name: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 116, - EndLine: 116, - StartPos: 2536, - EndPos: 2539, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 116, - EndLine: 116, - StartPos: 2536, - EndPos: 2539, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - Stmts: []ast.Vertex{}, - }, - &ast.StmtNamespace{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 117, - EndLine: 117, - StartPos: 2543, - EndPos: 2555, - }, - }, - Stmts: []ast.Vertex{}, - }, - &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 118, - EndLine: 118, - StartPos: 2556, - EndPos: 2575, - }, - }, - ClassName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 118, - EndLine: 118, - StartPos: 2562, - EndPos: 2565, - }, - }, - Value: []byte("foo"), - }, - Stmts: []ast.Vertex{ - &ast.StmtPropertyList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 118, - EndLine: 118, - StartPos: 2567, - EndPos: 2574, - }, - }, - Modifiers: []ast.Vertex{ - &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 118, - EndLine: 118, - StartPos: 2567, - EndPos: 2570, - }, - }, - Value: []byte("var"), - }, - }, - Properties: []ast.Vertex{ - &ast.StmtProperty{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 118, - EndLine: 118, - StartPos: 2571, - EndPos: 2573, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 118, - EndLine: 118, - StartPos: 2571, - EndPos: 2573, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 118, - EndLine: 118, - StartPos: 2571, - EndPos: 2573, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - }, - }, - }, - &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 119, - EndLine: 119, - StartPos: 2576, - EndPos: 2613, - }, - }, - ClassName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 119, - EndLine: 119, - StartPos: 2582, - EndPos: 2585, - }, - }, - Value: []byte("foo"), - }, - Stmts: []ast.Vertex{ - &ast.StmtPropertyList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 119, - EndLine: 119, - StartPos: 2587, - EndPos: 2612, - }, - }, - Modifiers: []ast.Vertex{ - &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 119, - EndLine: 119, - StartPos: 2587, - EndPos: 2593, - }, - }, - Value: []byte("public"), - }, - &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 119, - EndLine: 119, - StartPos: 2594, - EndPos: 2600, - }, - }, - Value: []byte("static"), - }, - }, - Properties: []ast.Vertex{ - &ast.StmtProperty{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 119, - EndLine: 119, - StartPos: 2601, - EndPos: 2603, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 119, - EndLine: 119, - StartPos: 2601, - EndPos: 2603, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 119, - EndLine: 119, - StartPos: 2601, - EndPos: 2603, - }, - }, - Value: []byte("$a"), - }, - }, - }, - &ast.StmtProperty{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 119, - EndLine: 119, - StartPos: 2605, - EndPos: 2611, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 119, - EndLine: 119, - StartPos: 2605, - EndPos: 2607, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 119, - EndLine: 119, - StartPos: 2605, - EndPos: 2607, - }, - }, - Value: []byte("$b"), - }, - }, - Expr: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 119, - EndLine: 119, - StartPos: 2610, - EndPos: 2611, - }, - }, - Value: []byte("1"), - }, - }, - }, - }, - }, - }, - &ast.StmtStatic{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 120, - EndLine: 120, - StartPos: 2614, - EndPos: 2632, - }, - }, - Vars: []ast.Vertex{ - &ast.StmtStaticVar{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 120, - EndLine: 120, - StartPos: 2621, - EndPos: 2623, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 120, - EndLine: 120, - StartPos: 2621, - EndPos: 2623, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 120, - EndLine: 120, - StartPos: 2621, - EndPos: 2623, - }, - }, - Value: []byte("$a"), - }, - }, - }, - &ast.StmtStaticVar{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 120, - EndLine: 120, - StartPos: 2625, - EndPos: 2631, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 120, - EndLine: 120, - StartPos: 2625, - EndPos: 2627, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 120, - EndLine: 120, - StartPos: 2625, - EndPos: 2627, - }, - }, - Value: []byte("$b"), - }, - }, - Expr: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 120, - EndLine: 120, - StartPos: 2630, - EndPos: 2631, - }, - }, - Value: []byte("1"), - }, - }, - }, - }, - &ast.StmtSwitch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 122, - EndLine: 126, - StartPos: 2634, - EndPos: 2694, - }, - }, - Alt: true, - Cond: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 122, - EndLine: 122, - StartPos: 2642, - EndPos: 2643, - }, - }, - Value: []byte("1"), - }, - CaseList: []ast.Vertex{ - &ast.StmtCase{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 123, - EndLine: -1, - StartPos: 2651, - EndPos: -1, - }, - }, - Cond: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 123, - EndLine: 123, - StartPos: 2656, - EndPos: 2657, - }, - }, - Value: []byte("1"), - }, - Stmts: []ast.Vertex{}, - }, - &ast.StmtDefault{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 124, - EndLine: -1, - StartPos: 2663, - EndPos: -1, - }, - }, - Stmts: []ast.Vertex{}, - }, - &ast.StmtCase{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 125, - EndLine: -1, - StartPos: 2676, - EndPos: -1, - }, - }, - Cond: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 125, - EndLine: 125, - StartPos: 2681, - EndPos: 2682, - }, - }, - Value: []byte("2"), - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - &ast.StmtSwitch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 128, - EndLine: 131, - StartPos: 2696, - EndPos: 2744, - }, - }, - Alt: true, - Cond: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 128, - EndLine: 128, - StartPos: 2704, - EndPos: 2705, - }, - }, - Value: []byte("1"), - }, - CaseList: []ast.Vertex{ - &ast.StmtCase{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 129, - EndLine: -1, - StartPos: 2714, - EndPos: -1, - }, - }, - Cond: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 129, - EndLine: 129, - StartPos: 2719, - EndPos: 2720, - }, - }, - Value: []byte("1"), - }, - Stmts: []ast.Vertex{}, - }, - &ast.StmtCase{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 130, - EndLine: -1, - StartPos: 2726, - EndPos: -1, - }, - }, - Cond: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 130, - EndLine: 130, - StartPos: 2731, - EndPos: 2732, - }, - }, - Value: []byte("2"), - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - &ast.StmtSwitch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 133, - EndLine: 136, - StartPos: 2746, - EndPos: 2798, - }, - }, - Cond: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 133, - EndLine: 133, - StartPos: 2754, - EndPos: 2755, - }, - }, - Value: []byte("1"), - }, - CaseList: []ast.Vertex{ - &ast.StmtCase{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 134, - EndLine: 134, - StartPos: 2763, - EndPos: 2777, - }, - }, - Cond: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 134, - EndLine: 134, - StartPos: 2768, - EndPos: 2769, - }, - }, - Value: []byte("1"), - }, - Stmts: []ast.Vertex{ - &ast.StmtBreak{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 134, - EndLine: 134, - StartPos: 2771, - EndPos: 2777, - }, - }, - }, - }, - }, - &ast.StmtCase{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 135, - EndLine: 135, - StartPos: 2782, - EndPos: 2796, - }, - }, - Cond: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 135, - EndLine: 135, - StartPos: 2787, - EndPos: 2788, - }, - }, - Value: []byte("2"), - }, - Stmts: []ast.Vertex{ - &ast.StmtBreak{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 135, - EndLine: 135, - StartPos: 2790, - EndPos: 2796, - }, - }, - }, - }, - }, - }, - }, - &ast.StmtSwitch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 138, - EndLine: 141, - StartPos: 2800, - EndPos: 2853, - }, - }, - Cond: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 138, - EndLine: 138, - StartPos: 2808, - EndPos: 2809, - }, - }, - Value: []byte("1"), - }, - CaseList: []ast.Vertex{ - &ast.StmtCase{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 139, - EndLine: 139, - StartPos: 2818, - EndPos: 2832, - }, - }, - Cond: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 139, - EndLine: 139, - StartPos: 2823, - EndPos: 2824, - }, - }, - Value: []byte("1"), - }, - Stmts: []ast.Vertex{ - &ast.StmtBreak{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 139, - EndLine: 139, - StartPos: 2826, - EndPos: 2832, - }, - }, - }, - }, - }, - &ast.StmtCase{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 140, - EndLine: 140, - StartPos: 2837, - EndPos: 2851, - }, - }, - Cond: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 140, - EndLine: 140, - StartPos: 2842, - EndPos: 2843, - }, - }, - Value: []byte("2"), - }, - Stmts: []ast.Vertex{ - &ast.StmtBreak{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 140, - EndLine: 140, - StartPos: 2845, - EndPos: 2851, - }, - }, - }, - }, - }, - }, - }, - &ast.StmtThrow{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 143, - EndLine: 143, - StartPos: 2855, - EndPos: 2864, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 143, - EndLine: 143, - StartPos: 2861, - EndPos: 2863, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 143, - EndLine: 143, - StartPos: 2861, - EndPos: 2863, - }, - }, - Value: []byte("$e"), - }, - }, - }, - &ast.StmtTrait{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 145, - EndLine: 145, - StartPos: 2866, - EndPos: 2878, - }, - }, - TraitName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 145, - EndLine: 145, - StartPos: 2872, - EndPos: 2875, - }, - }, - Value: []byte("Foo"), - }, - Stmts: []ast.Vertex{}, - }, - &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 146, - EndLine: 146, - StartPos: 2879, - EndPos: 2901, - }, - }, - ClassName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 146, - EndLine: 146, - StartPos: 2885, - EndPos: 2888, - }, - }, - Value: []byte("Foo"), - }, - Stmts: []ast.Vertex{ - &ast.StmtTraitUse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 146, - EndLine: 146, - StartPos: 2891, - EndPos: 2899, - }, - }, - Traits: []ast.Vertex{ - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 146, - EndLine: 146, - StartPos: 2895, - EndPos: 2898, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 146, - EndLine: 146, - StartPos: 2895, - EndPos: 2898, - }, - }, - Value: []byte("Bar"), - }, - }, - }, - }, - TraitAdaptationList: &ast.StmtNop{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 146, - EndLine: 146, - StartPos: 2898, - EndPos: 2899, - }, - }, - }, - }, - }, - }, - &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 147, - EndLine: 147, - StartPos: 2902, - EndPos: 2931, - }, - }, - ClassName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 147, - EndLine: 147, - StartPos: 2908, - EndPos: 2911, - }, - }, - Value: []byte("Foo"), - }, - Stmts: []ast.Vertex{ - &ast.StmtTraitUse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 147, - EndLine: 147, - StartPos: 2914, - EndPos: 2929, - }, - }, - Traits: []ast.Vertex{ - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 147, - EndLine: 147, - StartPos: 2918, - EndPos: 2921, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 147, - EndLine: 147, - StartPos: 2918, - EndPos: 2921, - }, - }, - Value: []byte("Bar"), - }, - }, - }, - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 147, - EndLine: 147, - StartPos: 2923, - EndPos: 2926, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 147, - EndLine: 147, - StartPos: 2923, - EndPos: 2926, - }, - }, - Value: []byte("Baz"), - }, - }, - }, - }, - TraitAdaptationList: &ast.StmtTraitAdaptationList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 147, - EndLine: 147, - StartPos: 2927, - EndPos: 2929, - }, - }, - }, - }, - }, - }, - &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 148, - EndLine: 148, - StartPos: 2932, - EndPos: 2978, - }, - }, - ClassName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 148, - EndLine: 148, - StartPos: 2938, - EndPos: 2941, - }, - }, - Value: []byte("Foo"), - }, - Stmts: []ast.Vertex{ - &ast.StmtTraitUse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 148, - EndLine: 148, - StartPos: 2944, - EndPos: 2976, - }, - }, - Traits: []ast.Vertex{ - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 148, - EndLine: 148, - StartPos: 2948, - EndPos: 2951, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 148, - EndLine: 148, - StartPos: 2948, - EndPos: 2951, - }, - }, - Value: []byte("Bar"), - }, - }, - }, - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 148, - EndLine: 148, - StartPos: 2953, - EndPos: 2956, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 148, - EndLine: 148, - StartPos: 2953, - EndPos: 2956, - }, - }, - Value: []byte("Baz"), - }, - }, - }, - }, - TraitAdaptationList: &ast.StmtTraitAdaptationList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 148, - EndLine: 148, - StartPos: 2957, - EndPos: 2976, - }, - }, - Adaptations: []ast.Vertex{ - &ast.StmtTraitUseAlias{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 148, - EndLine: 148, - StartPos: 2959, - EndPos: 2973, - }, - }, - Ref: &ast.StmtTraitMethodRef{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 148, - EndLine: 148, - StartPos: 2959, - EndPos: 2962, - }, - }, - Method: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 148, - EndLine: 148, - StartPos: 2959, - EndPos: 2962, - }, - }, - Value: []byte("one"), - }, - }, - Alias: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 148, - EndLine: 148, - StartPos: 2966, - EndPos: 2973, - }, - }, - Value: []byte("include"), - }, - }, - }, - }, - }, - }, - }, - &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 2979, - EndPos: 3024, - }, - }, - ClassName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 2985, - EndPos: 2988, - }, - }, - Value: []byte("Foo"), - }, - Stmts: []ast.Vertex{ - &ast.StmtTraitUse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 2991, - EndPos: 3022, - }, - }, - Traits: []ast.Vertex{ - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 2995, - EndPos: 2998, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 2995, - EndPos: 2998, - }, - }, - Value: []byte("Bar"), - }, - }, - }, - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 3000, - EndPos: 3003, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 3000, - EndPos: 3003, - }, - }, - Value: []byte("Baz"), - }, - }, - }, - }, - TraitAdaptationList: &ast.StmtTraitAdaptationList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 3004, - EndPos: 3022, - }, - }, - Adaptations: []ast.Vertex{ - &ast.StmtTraitUseAlias{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 3006, - EndPos: 3019, - }, - }, - Ref: &ast.StmtTraitMethodRef{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 3006, - EndPos: 3009, - }, - }, - Method: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 3006, - EndPos: 3009, - }, - }, - Value: []byte("one"), - }, - }, - Modifier: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 149, - EndLine: 149, - StartPos: 3013, - EndPos: 3019, - }, - }, - Value: []byte("public"), - }, - }, - }, - }, - }, - }, - }, - &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 150, - EndLine: 150, - StartPos: 3025, - EndPos: 3074, - }, - }, - ClassName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 150, - EndLine: 150, - StartPos: 3031, - EndPos: 3034, - }, - }, - Value: []byte("Foo"), - }, - Stmts: []ast.Vertex{ - &ast.StmtTraitUse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 150, - EndLine: 150, - StartPos: 3037, - EndPos: 3072, - }, - }, - Traits: []ast.Vertex{ - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 150, - EndLine: 150, - StartPos: 3041, - EndPos: 3044, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 150, - EndLine: 150, - StartPos: 3041, - EndPos: 3044, - }, - }, - Value: []byte("Bar"), - }, - }, - }, - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 150, - EndLine: 150, - StartPos: 3046, - EndPos: 3049, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 150, - EndLine: 150, - StartPos: 3046, - EndPos: 3049, - }, - }, - Value: []byte("Baz"), - }, - }, - }, - }, - TraitAdaptationList: &ast.StmtTraitAdaptationList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 150, - EndLine: 150, - StartPos: 3050, - EndPos: 3072, - }, - }, - Adaptations: []ast.Vertex{ - &ast.StmtTraitUseAlias{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 150, - EndLine: 150, - StartPos: 3052, - EndPos: 3069, - }, - }, - Ref: &ast.StmtTraitMethodRef{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 150, - EndLine: 150, - StartPos: 3052, - EndPos: 3055, - }, - }, - Method: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 150, - EndLine: 150, - StartPos: 3052, - EndPos: 3055, - }, - }, - Value: []byte("one"), - }, - }, - Modifier: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 150, - EndLine: 150, - StartPos: 3059, - EndPos: 3065, - }, - }, - Value: []byte("public"), - }, - Alias: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 150, - EndLine: 150, - StartPos: 3066, - EndPos: 3069, - }, - }, - Value: []byte("two"), - }, - }, - }, - }, - }, - }, - }, - &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 151, - EndLine: 151, - StartPos: 3075, - EndPos: 3152, - }, - }, - ClassName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 151, - EndLine: 151, - StartPos: 3081, - EndPos: 3084, - }, - }, - Value: []byte("Foo"), - }, - Stmts: []ast.Vertex{ - &ast.StmtTraitUse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 151, - EndLine: 151, - StartPos: 3087, - EndPos: 3150, - }, - }, - Traits: []ast.Vertex{ - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 151, - EndLine: 151, - StartPos: 3091, - EndPos: 3094, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 151, - EndLine: 151, - StartPos: 3091, - EndPos: 3094, - }, - }, - Value: []byte("Bar"), - }, - }, - }, - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 151, - EndLine: 151, - StartPos: 3096, - EndPos: 3099, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 151, - EndLine: 151, - StartPos: 3096, - EndPos: 3099, - }, - }, - Value: []byte("Baz"), - }, - }, - }, - }, - TraitAdaptationList: &ast.StmtTraitAdaptationList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 151, - EndLine: 151, - StartPos: 3100, - EndPos: 3150, - }, - }, - Adaptations: []ast.Vertex{ - &ast.StmtTraitUsePrecedence{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 151, - EndLine: 151, - StartPos: 3102, - EndPos: 3130, - }, - }, - Ref: &ast.StmtTraitMethodRef{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 151, - EndLine: 151, - StartPos: 3102, - EndPos: 3110, - }, - }, - Trait: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 151, - EndLine: 151, - StartPos: 3102, - EndPos: 3105, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 151, - EndLine: 151, - StartPos: 3102, - EndPos: 3105, - }, - }, - Value: []byte("Bar"), - }, - }, - }, - Method: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 151, - EndLine: 151, - StartPos: 3107, - EndPos: 3110, - }, - }, - Value: []byte("one"), - }, - }, - Insteadof: []ast.Vertex{ - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 151, - EndLine: 151, - StartPos: 3121, - EndPos: 3124, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 151, - EndLine: 151, - StartPos: 3121, - EndPos: 3124, - }, - }, - Value: []byte("Baz"), - }, - }, - }, - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 151, - EndLine: 151, - StartPos: 3126, - EndPos: 3130, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 151, - EndLine: 151, - StartPos: 3126, - EndPos: 3130, - }, - }, - Value: []byte("Quux"), - }, - }, - }, - }, - }, - &ast.StmtTraitUseAlias{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 151, - EndLine: 151, - StartPos: 3132, - EndPos: 3147, - }, - }, - Ref: &ast.StmtTraitMethodRef{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 151, - EndLine: 151, - StartPos: 3132, - EndPos: 3140, - }, - }, - Trait: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 151, - EndLine: 151, - StartPos: 3132, - EndPos: 3135, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 151, - EndLine: 151, - StartPos: 3132, - EndPos: 3135, - }, - }, - Value: []byte("Baz"), - }, - }, - }, - Method: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 151, - EndLine: 151, - StartPos: 3137, - EndPos: 3140, - }, - }, - Value: []byte("one"), - }, - }, - Alias: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 151, - EndLine: 151, - StartPos: 3144, - EndPos: 3147, - }, - }, - Value: []byte("two"), - }, - }, - }, - }, - }, - }, - }, - &ast.StmtTry{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 153, - EndLine: -1, - StartPos: 3154, - EndPos: -1, - }, - }, - Stmts: []ast.Vertex{}, - Catches: []ast.Vertex{}, - }, - &ast.StmtTry{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 154, - EndLine: 154, - StartPos: 3161, - EndPos: 3191, - }, - }, - Stmts: []ast.Vertex{}, - Catches: []ast.Vertex{ - &ast.StmtCatch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 154, - EndLine: 154, - StartPos: 3168, - EndPos: 3191, - }, - }, - Types: []ast.Vertex{ - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 154, - EndLine: 154, - StartPos: 3175, - EndPos: 3184, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 154, - EndLine: 154, - StartPos: 3175, - EndPos: 3184, - }, - }, - Value: []byte("Exception"), - }, - }, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 154, - EndLine: 154, - StartPos: 3185, - EndPos: 3187, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 154, - EndLine: 154, - StartPos: 3185, - EndPos: 3187, - }, - }, - Value: []byte("$e"), - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - &ast.StmtTry{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 155, - EndLine: 155, - StartPos: 3192, - EndPos: 3239, - }, - }, - Stmts: []ast.Vertex{}, - Catches: []ast.Vertex{ - &ast.StmtCatch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 155, - EndLine: 155, - StartPos: 3199, - EndPos: 3239, - }, - }, - Types: []ast.Vertex{ - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 155, - EndLine: 155, - StartPos: 3206, - EndPos: 3215, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 155, - EndLine: 155, - StartPos: 3206, - EndPos: 3215, - }, - }, - Value: []byte("Exception"), - }, - }, - }, - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 155, - EndLine: 155, - StartPos: 3216, - EndPos: 3232, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 155, - EndLine: 155, - StartPos: 3216, - EndPos: 3232, - }, - }, - Value: []byte("RuntimeException"), - }, - }, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 155, - EndLine: 155, - StartPos: 3233, - EndPos: 3235, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 155, - EndLine: 155, - StartPos: 3233, - EndPos: 3235, - }, - }, - Value: []byte("$e"), - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - &ast.StmtTry{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 156, - EndLine: 156, - StartPos: 3240, - EndPos: 3301, - }, - }, - Stmts: []ast.Vertex{}, - Catches: []ast.Vertex{ - &ast.StmtCatch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 156, - EndLine: 156, - StartPos: 3247, - EndPos: 3270, - }, - }, - Types: []ast.Vertex{ - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 156, - EndLine: 156, - StartPos: 3254, - EndPos: 3263, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 156, - EndLine: 156, - StartPos: 3254, - EndPos: 3263, - }, - }, - Value: []byte("Exception"), - }, - }, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 156, - EndLine: 156, - StartPos: 3264, - EndPos: 3266, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 156, - EndLine: 156, - StartPos: 3264, - EndPos: 3266, - }, - }, - Value: []byte("$e"), - }, - }, - Stmts: []ast.Vertex{}, - }, - &ast.StmtCatch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 156, - EndLine: 156, - StartPos: 3271, - EndPos: 3301, - }, - }, - Types: []ast.Vertex{ - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 156, - EndLine: 156, - StartPos: 3278, - EndPos: 3294, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 156, - EndLine: 156, - StartPos: 3278, - EndPos: 3294, - }, - }, - Value: []byte("RuntimeException"), - }, - }, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 156, - EndLine: 156, - StartPos: 3295, - EndPos: 3297, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 156, - EndLine: 156, - StartPos: 3295, - EndPos: 3297, - }, - }, - Value: []byte("$e"), - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - &ast.StmtTry{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 157, - EndLine: 157, - StartPos: 3302, - EndPos: 3343, - }, - }, - Stmts: []ast.Vertex{}, - Catches: []ast.Vertex{ - &ast.StmtCatch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 157, - EndLine: 157, - StartPos: 3309, - EndPos: 3332, - }, - }, - Types: []ast.Vertex{ - &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 157, - EndLine: 157, - StartPos: 3316, - EndPos: 3325, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 157, - EndLine: 157, - StartPos: 3316, - EndPos: 3325, - }, - }, - Value: []byte("Exception"), - }, - }, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 157, - EndLine: 157, - StartPos: 3326, - EndPos: 3328, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 157, - EndLine: 157, - StartPos: 3326, - EndPos: 3328, - }, - }, - Value: []byte("$e"), - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - Finally: &ast.StmtFinally{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 157, - EndLine: 157, - StartPos: 3333, - EndPos: 3343, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - &ast.StmtUnset{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 159, - EndLine: 159, - StartPos: 3345, - EndPos: 3360, - }, - }, - Vars: []ast.Vertex{ - &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 159, - EndLine: 159, - StartPos: 3351, - EndPos: 3353, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 159, - EndLine: 159, - StartPos: 3351, - EndPos: 3353, - }, - }, - Value: []byte("$a"), - }, - }, - &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 159, - EndLine: 159, - StartPos: 3355, - EndPos: 3357, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 159, - EndLine: 159, - StartPos: 3355, - EndPos: 3357, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtUse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 161, - EndLine: 161, - StartPos: 3362, - EndPos: 3370, - }, - }, - UseDeclarations: []ast.Vertex{ - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 161, - EndLine: 161, - StartPos: 3366, - EndPos: 3369, - }, - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 161, - EndLine: 161, - StartPos: 3366, - EndPos: 3369, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 161, - EndLine: 161, - StartPos: 3366, - EndPos: 3369, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - }, - }, - }, - &ast.StmtUse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 162, - EndLine: 162, - StartPos: 3371, - EndPos: 3380, - }, - }, - UseDeclarations: []ast.Vertex{ - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 162, - EndLine: 162, - StartPos: 3375, - EndPos: 3379, - }, - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 162, - EndLine: 162, - StartPos: 3376, - EndPos: 3379, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 162, - EndLine: 162, - StartPos: 3376, - EndPos: 3379, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - }, - }, - }, - &ast.StmtUse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 163, - EndLine: 163, - StartPos: 3381, - EndPos: 3397, - }, - }, - UseDeclarations: []ast.Vertex{ - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 163, - EndLine: 163, - StartPos: 3385, - EndPos: 3396, - }, - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 163, - EndLine: 163, - StartPos: 3386, - EndPos: 3389, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 163, - EndLine: 163, - StartPos: 3386, - EndPos: 3389, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - Alias: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 163, - EndLine: 163, - StartPos: 3393, - EndPos: 3396, - }, - }, - Value: []byte("Bar"), - }, - }, - }, - }, - &ast.StmtUse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 164, - EndLine: 164, - StartPos: 3398, - EndPos: 3411, - }, - }, - UseDeclarations: []ast.Vertex{ - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 164, - EndLine: 164, - StartPos: 3402, - EndPos: 3405, - }, - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 164, - EndLine: 164, - StartPos: 3402, - EndPos: 3405, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 164, - EndLine: 164, - StartPos: 3402, - EndPos: 3405, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - }, - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 164, - EndLine: 164, - StartPos: 3407, - EndPos: 3410, - }, - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 164, - EndLine: 164, - StartPos: 3407, - EndPos: 3410, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 164, - EndLine: 164, - StartPos: 3407, - EndPos: 3410, - }, - }, - Value: []byte("Bar"), - }, - }, - }, - }, - }, - }, - &ast.StmtUse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 165, - EndLine: 165, - StartPos: 3412, - EndPos: 3432, - }, - }, - UseDeclarations: []ast.Vertex{ - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 165, - EndLine: 165, - StartPos: 3416, - EndPos: 3419, - }, - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 165, - EndLine: 165, - StartPos: 3416, - EndPos: 3419, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 165, - EndLine: 165, - StartPos: 3416, - EndPos: 3419, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - }, - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 165, - EndLine: 165, - StartPos: 3421, - EndPos: 3431, - }, - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 165, - EndLine: 165, - StartPos: 3421, - EndPos: 3424, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 165, - EndLine: 165, - StartPos: 3421, - EndPos: 3424, - }, - }, - Value: []byte("Bar"), - }, - }, - }, - Alias: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 165, - EndLine: 165, - StartPos: 3428, - EndPos: 3431, - }, - }, - Value: []byte("Baz"), - }, - }, - }, - }, - &ast.StmtUse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 166, - EndLine: 166, - StartPos: 3433, - EndPos: 3456, - }, - }, - Type: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 166, - EndLine: 166, - StartPos: 3437, - EndPos: 3445, - }, - }, - Value: []byte("function"), - }, - UseDeclarations: []ast.Vertex{ - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 166, - EndLine: 166, - StartPos: 3446, - EndPos: 3449, - }, - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 166, - EndLine: 166, - StartPos: 3446, - EndPos: 3449, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 166, - EndLine: 166, - StartPos: 3446, - EndPos: 3449, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - }, - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 166, - EndLine: 166, - StartPos: 3451, - EndPos: 3455, - }, - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 166, - EndLine: 166, - StartPos: 3452, - EndPos: 3455, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 166, - EndLine: 166, - StartPos: 3452, - EndPos: 3455, - }, - }, - Value: []byte("Bar"), - }, - }, - }, - }, - }, - }, - &ast.StmtUse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 167, - EndLine: 167, - StartPos: 3457, - EndPos: 3494, - }, - }, - Type: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 167, - EndLine: 167, - StartPos: 3461, - EndPos: 3469, - }, - }, - Value: []byte("function"), - }, - UseDeclarations: []ast.Vertex{ - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 167, - EndLine: 167, - StartPos: 3470, - EndPos: 3480, - }, - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 167, - EndLine: 167, - StartPos: 3470, - EndPos: 3473, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 167, - EndLine: 167, - StartPos: 3470, - EndPos: 3473, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - Alias: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 167, - EndLine: 167, - StartPos: 3477, - EndPos: 3480, - }, - }, - Value: []byte("foo"), - }, - }, - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 167, - EndLine: 167, - StartPos: 3482, - EndPos: 3493, - }, - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 167, - EndLine: 167, - StartPos: 3483, - EndPos: 3486, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 167, - EndLine: 167, - StartPos: 3483, - EndPos: 3486, - }, - }, - Value: []byte("Bar"), - }, - }, - }, - Alias: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 167, - EndLine: 167, - StartPos: 3490, - EndPos: 3493, - }, - }, - Value: []byte("bar"), - }, - }, - }, - }, - &ast.StmtUse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 168, - EndLine: 168, - StartPos: 3495, - EndPos: 3515, - }, - }, - Type: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 168, - EndLine: 168, - StartPos: 3499, - EndPos: 3504, - }, - }, - Value: []byte("const"), - }, - UseDeclarations: []ast.Vertex{ - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 168, - EndLine: 168, - StartPos: 3505, - EndPos: 3508, - }, - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 168, - EndLine: 168, - StartPos: 3505, - EndPos: 3508, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 168, - EndLine: 168, - StartPos: 3505, - EndPos: 3508, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - }, - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 168, - EndLine: 168, - StartPos: 3510, - EndPos: 3514, - }, - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 168, - EndLine: 168, - StartPos: 3511, - EndPos: 3514, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 168, - EndLine: 168, - StartPos: 3511, - EndPos: 3514, - }, - }, - Value: []byte("Bar"), - }, - }, - }, - }, - }, - }, - &ast.StmtUse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 169, - EndLine: 169, - StartPos: 3516, - EndPos: 3550, - }, - }, - Type: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 169, - EndLine: 169, - StartPos: 3520, - EndPos: 3525, - }, - }, - Value: []byte("const"), - }, - UseDeclarations: []ast.Vertex{ - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 169, - EndLine: 169, - StartPos: 3526, - EndPos: 3536, - }, - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 169, - EndLine: 169, - StartPos: 3526, - EndPos: 3529, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 169, - EndLine: 169, - StartPos: 3526, - EndPos: 3529, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - Alias: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 169, - EndLine: 169, - StartPos: 3533, - EndPos: 3536, - }, - }, - Value: []byte("foo"), - }, - }, - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 169, - EndLine: 169, - StartPos: 3538, - EndPos: 3549, - }, - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 169, - EndLine: 169, - StartPos: 3539, - EndPos: 3542, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 169, - EndLine: 169, - StartPos: 3539, - EndPos: 3542, - }, - }, - Value: []byte("Bar"), - }, - }, - }, - Alias: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 169, - EndLine: 169, - StartPos: 3546, - EndPos: 3549, - }, - }, - Value: []byte("bar"), - }, - }, - }, - }, - &ast.StmtGroupUse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 171, - EndLine: 171, - StartPos: 3552, - EndPos: 3572, - }, - }, - Prefix: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 171, - EndLine: 171, - StartPos: 3557, - EndPos: 3560, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 171, - EndLine: 171, - StartPos: 3557, - EndPos: 3560, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - UseDeclarations: []ast.Vertex{ - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 171, - EndLine: 171, - StartPos: 3562, - EndPos: 3565, - }, - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 171, - EndLine: 171, - StartPos: 3562, - EndPos: 3565, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 171, - EndLine: 171, - StartPos: 3562, - EndPos: 3565, - }, - }, - Value: []byte("Bar"), - }, - }, - }, - }, - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 171, - EndLine: 171, - StartPos: 3567, - EndPos: 3570, - }, - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 171, - EndLine: 171, - StartPos: 3567, - EndPos: 3570, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 171, - EndLine: 171, - StartPos: 3567, - EndPos: 3570, - }, - }, - Value: []byte("Baz"), - }, - }, - }, - }, - }, - }, - &ast.StmtGroupUse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 172, - EndLine: 172, - StartPos: 3573, - EndPos: 3600, - }, - }, - Prefix: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 172, - EndLine: 172, - StartPos: 3577, - EndPos: 3580, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 172, - EndLine: 172, - StartPos: 3577, - EndPos: 3580, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - UseDeclarations: []ast.Vertex{ - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 172, - EndLine: 172, - StartPos: 3582, - EndPos: 3585, - }, - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 172, - EndLine: 172, - StartPos: 3582, - EndPos: 3585, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 172, - EndLine: 172, - StartPos: 3582, - EndPos: 3585, - }, - }, - Value: []byte("Bar"), - }, - }, - }, - }, - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 172, - EndLine: 172, - StartPos: 3587, - EndPos: 3598, - }, - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 172, - EndLine: 172, - StartPos: 3587, - EndPos: 3590, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 172, - EndLine: 172, - StartPos: 3587, - EndPos: 3590, - }, - }, - Value: []byte("Baz"), - }, - }, - }, - Alias: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 172, - EndLine: 172, - StartPos: 3594, - EndPos: 3598, - }, - }, - Value: []byte("quux"), - }, - }, - }, - }, - &ast.StmtGroupUse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 173, - EndLine: 173, - StartPos: 3601, - EndPos: 3629, - }, - }, - Type: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 173, - EndLine: 173, - StartPos: 3605, - EndPos: 3613, - }, - }, - Value: []byte("function"), - }, - Prefix: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 173, - EndLine: 173, - StartPos: 3614, - EndPos: 3617, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 173, - EndLine: 173, - StartPos: 3614, - EndPos: 3617, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - UseDeclarations: []ast.Vertex{ - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 173, - EndLine: 173, - StartPos: 3619, - EndPos: 3622, - }, - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 173, - EndLine: 173, - StartPos: 3619, - EndPos: 3622, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 173, - EndLine: 173, - StartPos: 3619, - EndPos: 3622, - }, - }, - Value: []byte("Bar"), - }, - }, - }, - }, - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 173, - EndLine: 173, - StartPos: 3624, - EndPos: 3627, - }, - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 173, - EndLine: 173, - StartPos: 3624, - EndPos: 3627, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 173, - EndLine: 173, - StartPos: 3624, - EndPos: 3627, - }, - }, - Value: []byte("Baz"), - }, - }, - }, - }, - }, - }, - &ast.StmtGroupUse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 174, - EndLine: 174, - StartPos: 3630, - EndPos: 3656, - }, - }, - Type: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 174, - EndLine: 174, - StartPos: 3634, - EndPos: 3639, - }, - }, - Value: []byte("const"), - }, - Prefix: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 174, - EndLine: 174, - StartPos: 3641, - EndPos: 3644, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 174, - EndLine: 174, - StartPos: 3641, - EndPos: 3644, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - UseDeclarations: []ast.Vertex{ - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 174, - EndLine: 174, - StartPos: 3646, - EndPos: 3649, - }, - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 174, - EndLine: 174, - StartPos: 3646, - EndPos: 3649, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 174, - EndLine: 174, - StartPos: 3646, - EndPos: 3649, - }, - }, - Value: []byte("Bar"), - }, - }, - }, - }, - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 174, - EndLine: 174, - StartPos: 3651, - EndPos: 3654, - }, - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 174, - EndLine: 174, - StartPos: 3651, - EndPos: 3654, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 174, - EndLine: 174, - StartPos: 3651, - EndPos: 3654, - }, - }, - Value: []byte("Baz"), - }, - }, - }, - }, - }, - }, - &ast.StmtGroupUse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 175, - EndLine: 175, - StartPos: 3657, - EndPos: 3691, - }, - }, - Prefix: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 175, - EndLine: 175, - StartPos: 3661, - EndPos: 3664, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 175, - EndLine: 175, - StartPos: 3661, - EndPos: 3664, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - UseDeclarations: []ast.Vertex{ - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 175, - EndLine: 175, - StartPos: 3666, - EndPos: 3675, - }, - }, - Type: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 175, - EndLine: 175, - StartPos: 3666, - EndPos: 3671, - }, - }, - Value: []byte("const"), - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 175, - EndLine: 175, - StartPos: 3672, - EndPos: 3675, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 175, - EndLine: 175, - StartPos: 3672, - EndPos: 3675, - }, - }, - Value: []byte("Bar"), - }, - }, - }, - }, - &ast.StmtUseDeclaration{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 175, - EndLine: 175, - StartPos: 3677, - EndPos: 3689, - }, - }, - Type: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 175, - EndLine: 175, - StartPos: 3677, - EndPos: 3685, - }, - }, - Value: []byte("function"), - }, - Use: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 175, - EndLine: 175, - StartPos: 3686, - EndPos: 3689, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 175, - EndLine: 175, - StartPos: 3686, - EndPos: 3689, - }, - }, - Value: []byte("Baz"), - }, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 177, - EndLine: 177, - StartPos: 3693, - EndPos: 3699, - }, - }, - Expr: &ast.ExprArrayDimFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 177, - EndLine: 177, - StartPos: 3693, - EndPos: 3698, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 177, - EndLine: 177, - StartPos: 3693, - EndPos: 3695, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 177, - EndLine: 177, - StartPos: 3693, - EndPos: 3695, - }, - }, - Value: []byte("$a"), - }, - }, - Dim: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 177, - EndLine: 177, - StartPos: 3696, - EndPos: 3697, - }, - }, - Value: []byte("1"), - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 178, - EndLine: 178, - StartPos: 3700, - EndPos: 3709, - }, - }, - Expr: &ast.ExprArrayDimFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 178, - EndLine: 178, - StartPos: 3700, - EndPos: 3708, - }, - }, - Var: &ast.ExprArrayDimFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 178, - EndLine: 178, - StartPos: 3700, - EndPos: 3705, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 178, - EndLine: 178, - StartPos: 3700, - EndPos: 3702, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 178, - EndLine: 178, - StartPos: 3700, - EndPos: 3702, - }, - }, - Value: []byte("$a"), - }, - }, - Dim: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 178, - EndLine: 178, - StartPos: 3703, - EndPos: 3704, - }, - }, - Value: []byte("1"), - }, - }, - Dim: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 178, - EndLine: 178, - StartPos: 3706, - EndPos: 3707, - }, - }, - Value: []byte("2"), - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 179, - EndLine: 179, - StartPos: 3710, - EndPos: 3718, - }, - }, - Expr: &ast.ExprArray{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 179, - EndLine: 179, - StartPos: 3710, - EndPos: 3717, - }, - }, - Items: []ast.Vertex{}, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 180, - EndLine: 180, - StartPos: 3719, - EndPos: 3728, - }, - }, - Expr: &ast.ExprArray{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 180, - EndLine: 180, - StartPos: 3719, - EndPos: 3727, - }, - }, - Items: []ast.Vertex{ - &ast.ExprArrayItem{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 180, - EndLine: 180, - StartPos: 3725, - EndPos: 3726, - }, - }, - Val: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 180, - EndLine: 180, - StartPos: 3725, - EndPos: 3726, - }, - }, - Value: []byte("1"), - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 181, - EndLine: 181, - StartPos: 3729, - EndPos: 3747, - }, - }, - Expr: &ast.ExprArray{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 181, - EndLine: 181, - StartPos: 3729, - EndPos: 3746, - }, - }, - Items: []ast.Vertex{ - &ast.ExprArrayItem{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 181, - EndLine: 181, - StartPos: 3735, - EndPos: 3739, - }, - }, - Key: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 181, - EndLine: 181, - StartPos: 3735, - EndPos: 3736, - }, - }, - Value: []byte("1"), - }, - Val: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 181, - EndLine: 181, - StartPos: 3738, - EndPos: 3739, - }, - }, - Value: []byte("1"), - }, - }, - &ast.ExprArrayItem{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 181, - EndLine: 181, - StartPos: 3741, - EndPos: 3744, - }, - }, - Val: &ast.ExprReference{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 181, - EndLine: 181, - StartPos: 3741, - EndPos: 3744, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 181, - EndLine: 181, - StartPos: 3742, - EndPos: 3744, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 181, - EndLine: 181, - StartPos: 3742, - EndPos: 3744, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.ExprArrayItem{}, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 182, - EndLine: 182, - StartPos: 3748, - EndPos: 3752, - }, - }, - Expr: &ast.ExprBitwiseNot{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 182, - EndLine: 182, - StartPos: 3748, - EndPos: 3751, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 182, - EndLine: 182, - StartPos: 3749, - EndPos: 3751, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 182, - EndLine: 182, - StartPos: 3749, - EndPos: 3751, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 183, - EndLine: 183, - StartPos: 3753, - EndPos: 3757, - }, - }, - Expr: &ast.ExprBooleanNot{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 183, - EndLine: 183, - StartPos: 3753, - EndPos: 3756, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 183, - EndLine: 183, - StartPos: 3754, - EndPos: 3756, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 183, - EndLine: 183, - StartPos: 3754, - EndPos: 3756, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 185, - EndLine: 185, - StartPos: 3759, - EndPos: 3768, - }, - }, - Expr: &ast.ExprClassConstFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 185, - EndLine: 185, - StartPos: 3759, - EndPos: 3767, - }, - }, - Class: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 185, - EndLine: 185, - StartPos: 3759, - EndPos: 3762, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 185, - EndLine: 185, - StartPos: 3759, - EndPos: 3762, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - ConstantName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 185, - EndLine: 185, - StartPos: 3764, - EndPos: 3767, - }, - }, - Value: []byte("Bar"), - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 186, - EndLine: 186, - StartPos: 3769, - EndPos: 3779, - }, - }, - Expr: &ast.ExprClassConstFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 186, - EndLine: 186, - StartPos: 3769, - EndPos: 3778, - }, - }, - Class: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 186, - EndLine: 186, - StartPos: 3769, - EndPos: 3773, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 186, - EndLine: 186, - StartPos: 3769, - EndPos: 3773, - }, - }, - Value: []byte("$foo"), - }, - }, - ConstantName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 186, - EndLine: 186, - StartPos: 3775, - EndPos: 3778, - }, - }, - Value: []byte("Bar"), - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 187, - EndLine: 187, - StartPos: 3780, - EndPos: 3790, - }, - }, - Expr: &ast.ExprClone{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 187, - EndLine: 187, - StartPos: 3780, - EndPos: 3789, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 187, - EndLine: 187, - StartPos: 3786, - EndPos: 3788, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 187, - EndLine: 187, - StartPos: 3786, - EndPos: 3788, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 188, - EndLine: 188, - StartPos: 3791, - EndPos: 3800, - }, - }, - Expr: &ast.ExprClone{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 188, - EndLine: 188, - StartPos: 3791, - EndPos: 3799, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 188, - EndLine: 188, - StartPos: 3797, - EndPos: 3799, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 188, - EndLine: 188, - StartPos: 3797, - EndPos: 3799, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 189, - EndLine: 189, - StartPos: 3801, - EndPos: 3814, - }, - }, - Expr: &ast.ExprClosure{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 189, - EndLine: 189, - StartPos: 3801, - EndPos: 3813, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 190, - EndLine: 190, - StartPos: 3815, - EndPos: 3849, - }, - }, - Expr: &ast.ExprClosure{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 190, - EndLine: 190, - StartPos: 3815, - EndPos: 3848, - }, - }, - Params: []ast.Vertex{ - &ast.Parameter{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 190, - EndLine: 190, - StartPos: 3824, - EndPos: 3826, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 190, - EndLine: 190, - StartPos: 3824, - EndPos: 3826, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 190, - EndLine: 190, - StartPos: 3824, - EndPos: 3826, - }, - }, - Value: []byte("$a"), - }, - }, - }, - &ast.Parameter{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 190, - EndLine: 190, - StartPos: 3828, - EndPos: 3830, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 190, - EndLine: 190, - StartPos: 3828, - EndPos: 3830, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 190, - EndLine: 190, - StartPos: 3828, - EndPos: 3830, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - ClosureUse: &ast.ExprClosureUse{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 190, - EndLine: 190, - StartPos: 3832, - EndPos: 3845, - }, - }, - Uses: []ast.Vertex{ - &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 190, - EndLine: 190, - StartPos: 3837, - EndPos: 3839, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 190, - EndLine: 190, - StartPos: 3837, - EndPos: 3839, - }, - }, - Value: []byte("$c"), - }, - }, - &ast.ExprReference{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 190, - EndLine: 190, - StartPos: 3841, - EndPos: 3844, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 190, - EndLine: 190, - StartPos: 3842, - EndPos: 3844, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 190, - EndLine: 190, - StartPos: 3842, - EndPos: 3844, - }, - }, - Value: []byte("$d"), - }, - }, - }, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 191, - EndLine: 191, - StartPos: 3850, - EndPos: 3870, - }, - }, - Expr: &ast.ExprClosure{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 191, - EndLine: 191, - StartPos: 3850, - EndPos: 3869, - }, - }, - ReturnType: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 191, - EndLine: 191, - StartPos: 3862, - EndPos: 3866, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 191, - EndLine: 191, - StartPos: 3862, - EndPos: 3866, - }, - }, - Value: []byte("void"), - }, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 192, - EndLine: 192, - StartPos: 3871, - EndPos: 3875, - }, - }, - Expr: &ast.ExprConstFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 192, - EndLine: 192, - StartPos: 3871, - EndPos: 3874, - }, - }, - Const: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 192, - EndLine: 192, - StartPos: 3871, - EndPos: 3874, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 192, - EndLine: 192, - StartPos: 3871, - EndPos: 3874, - }, - }, - Value: []byte("foo"), - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 193, - EndLine: 193, - StartPos: 3876, - EndPos: 3890, - }, - }, - Expr: &ast.ExprConstFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 193, - EndLine: 193, - StartPos: 3876, - EndPos: 3889, - }, - }, - Const: &ast.NameRelative{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 193, - EndLine: 193, - StartPos: 3876, - EndPos: 3889, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 193, - EndLine: 193, - StartPos: 3886, - EndPos: 3889, - }, - }, - Value: []byte("foo"), - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 194, - EndLine: 194, - StartPos: 3891, - EndPos: 3896, - }, - }, - Expr: &ast.ExprConstFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 194, - EndLine: 194, - StartPos: 3891, - EndPos: 3895, - }, - }, - Const: &ast.NameFullyQualified{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 194, - EndLine: 194, - StartPos: 3891, - EndPos: 3895, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 194, - EndLine: 194, - StartPos: 3892, - EndPos: 3895, - }, - }, - Value: []byte("foo"), - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 196, - EndLine: 196, - StartPos: 3898, - EndPos: 3908, - }, - }, - Expr: &ast.ExprEmpty{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 196, - EndLine: 196, - StartPos: 3898, - EndPos: 3907, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 196, - EndLine: 196, - StartPos: 3904, - EndPos: 3906, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 196, - EndLine: 196, - StartPos: 3904, - EndPos: 3906, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 197, - EndLine: 197, - StartPos: 3909, - EndPos: 3913, - }, - }, - Expr: &ast.ExprErrorSuppress{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 197, - EndLine: 197, - StartPos: 3909, - EndPos: 3912, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 197, - EndLine: 197, - StartPos: 3910, - EndPos: 3912, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 197, - EndLine: 197, - StartPos: 3910, - EndPos: 3912, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 198, - EndLine: 198, - StartPos: 3914, - EndPos: 3923, - }, - }, - Expr: &ast.ExprEval{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 198, - EndLine: 198, - StartPos: 3914, - EndPos: 3922, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 198, - EndLine: 198, - StartPos: 3919, - EndPos: 3921, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 198, - EndLine: 198, - StartPos: 3919, - EndPos: 3921, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 199, - EndLine: 199, - StartPos: 3924, - EndPos: 3929, - }, - }, - Expr: &ast.ExprExit{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 199, - EndLine: 199, - StartPos: 3924, - EndPos: 3928, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 200, - EndLine: 200, - StartPos: 3930, - EndPos: 3939, - }, - }, - Expr: &ast.ExprExit{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 200, - EndLine: 200, - StartPos: 3930, - EndPos: 3938, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 200, - EndLine: 200, - StartPos: 3935, - EndPos: 3937, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 200, - EndLine: 200, - StartPos: 3935, - EndPos: 3937, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 201, - EndLine: 201, - StartPos: 3940, - EndPos: 3944, - }, - }, - Expr: &ast.ExprExit{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 201, - EndLine: 201, - StartPos: 3940, - EndPos: 3943, - }, - }, - Die: true, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 202, - EndLine: 202, - StartPos: 3945, - EndPos: 3953, - }, - }, - Expr: &ast.ExprExit{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 202, - EndLine: 202, - StartPos: 3945, - EndPos: 3952, - }, - }, - Die: true, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 202, - EndLine: 202, - StartPos: 3949, - EndPos: 3951, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 202, - EndLine: 202, - StartPos: 3949, - EndPos: 3951, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 203, - EndLine: 203, - StartPos: 3954, - EndPos: 3960, - }, - }, - Expr: &ast.ExprFunctionCall{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 203, - EndLine: 203, - StartPos: 3954, - EndPos: 3959, - }, - }, - Function: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 203, - EndLine: 203, - StartPos: 3954, - EndPos: 3957, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 203, - EndLine: 203, - StartPos: 3954, - EndPos: 3957, - }, - }, - Value: []byte("foo"), - }, - }, - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 203, - EndLine: 203, - StartPos: 3957, - EndPos: 3959, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 204, - EndLine: 204, - StartPos: 3961, - EndPos: 3977, - }, - }, - Expr: &ast.ExprFunctionCall{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 204, - EndLine: 204, - StartPos: 3961, - EndPos: 3976, - }, - }, - Function: &ast.NameRelative{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 204, - EndLine: 204, - StartPos: 3961, - EndPos: 3974, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 204, - EndLine: 204, - StartPos: 3971, - EndPos: 3974, - }, - }, - Value: []byte("foo"), - }, - }, - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 204, - EndLine: 204, - StartPos: 3974, - EndPos: 3976, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 205, - EndLine: 205, - StartPos: 3978, - EndPos: 3985, - }, - }, - Expr: &ast.ExprFunctionCall{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 205, - EndLine: 205, - StartPos: 3978, - EndPos: 3984, - }, - }, - Function: &ast.NameFullyQualified{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 205, - EndLine: 205, - StartPos: 3978, - EndPos: 3982, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 205, - EndLine: 205, - StartPos: 3979, - EndPos: 3982, - }, - }, - Value: []byte("foo"), - }, - }, - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 205, - EndLine: 205, - StartPos: 3982, - EndPos: 3984, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 206, - EndLine: 206, - StartPos: 3986, - EndPos: 3993, - }, - }, - Expr: &ast.ExprFunctionCall{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 206, - EndLine: 206, - StartPos: 3986, - EndPos: 3992, - }, - }, - Function: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 206, - EndLine: 206, - StartPos: 3986, - EndPos: 3990, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 206, - EndLine: 206, - StartPos: 3986, - EndPos: 3990, - }, - }, - Value: []byte("$foo"), - }, - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 206, - EndLine: 206, - StartPos: 3990, - EndPos: 3992, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 208, - EndLine: 208, - StartPos: 3995, - EndPos: 4000, - }, - }, - Expr: &ast.ExprPostDec{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 208, - EndLine: 208, - StartPos: 3995, - EndPos: 3999, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 208, - EndLine: 208, - StartPos: 3995, - EndPos: 3997, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 208, - EndLine: 208, - StartPos: 3995, - EndPos: 3997, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 209, - EndLine: 209, - StartPos: 4001, - EndPos: 4006, - }, - }, - Expr: &ast.ExprPostInc{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 209, - EndLine: 209, - StartPos: 4001, - EndPos: 4005, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 209, - EndLine: 209, - StartPos: 4001, - EndPos: 4003, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 209, - EndLine: 209, - StartPos: 4001, - EndPos: 4003, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 210, - EndLine: 210, - StartPos: 4007, - EndPos: 4012, - }, - }, - Expr: &ast.ExprPreDec{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 210, - EndLine: 210, - StartPos: 4007, - EndPos: 4011, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 210, - EndLine: 210, - StartPos: 4009, - EndPos: 4011, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 210, - EndLine: 210, - StartPos: 4009, - EndPos: 4011, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 211, - EndLine: 211, - StartPos: 4013, - EndPos: 4018, - }, - }, - Expr: &ast.ExprPreInc{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 211, - EndLine: 211, - StartPos: 4013, - EndPos: 4017, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 211, - EndLine: 211, - StartPos: 4015, - EndPos: 4017, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 211, - EndLine: 211, - StartPos: 4015, - EndPos: 4017, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 213, - EndLine: 213, - StartPos: 4020, - EndPos: 4031, - }, - }, - Expr: &ast.ExprInclude{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 213, - EndLine: 213, - StartPos: 4020, - EndPos: 4030, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 213, - EndLine: 213, - StartPos: 4028, - EndPos: 4030, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 213, - EndLine: 213, - StartPos: 4028, - EndPos: 4030, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 214, - EndLine: 214, - StartPos: 4032, - EndPos: 4048, - }, - }, - Expr: &ast.ExprIncludeOnce{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 214, - EndLine: 214, - StartPos: 4032, - EndPos: 4047, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 214, - EndLine: 214, - StartPos: 4045, - EndPos: 4047, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 214, - EndLine: 214, - StartPos: 4045, - EndPos: 4047, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 215, - EndLine: 215, - StartPos: 4049, - EndPos: 4060, - }, - }, - Expr: &ast.ExprRequire{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 215, - EndLine: 215, - StartPos: 4049, - EndPos: 4059, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 215, - EndLine: 215, - StartPos: 4057, - EndPos: 4059, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 215, - EndLine: 215, - StartPos: 4057, - EndPos: 4059, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 216, - EndLine: 216, - StartPos: 4061, - EndPos: 4077, - }, - }, - Expr: &ast.ExprRequireOnce{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 216, - EndLine: 216, - StartPos: 4061, - EndPos: 4076, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 216, - EndLine: 216, - StartPos: 4074, - EndPos: 4076, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 216, - EndLine: 216, - StartPos: 4074, - EndPos: 4076, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 218, - EndLine: 218, - StartPos: 4079, - EndPos: 4097, - }, - }, - Expr: &ast.ExprInstanceOf{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 218, - EndLine: 218, - StartPos: 4079, - EndPos: 4096, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 218, - EndLine: 218, - StartPos: 4079, - EndPos: 4081, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 218, - EndLine: 218, - StartPos: 4079, - EndPos: 4081, - }, - }, - Value: []byte("$a"), - }, - }, - Class: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 218, - EndLine: 218, - StartPos: 4093, - EndPos: 4096, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 218, - EndLine: 218, - StartPos: 4093, - EndPos: 4096, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 219, - EndLine: 219, - StartPos: 4098, - EndPos: 4126, - }, - }, - Expr: &ast.ExprInstanceOf{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 219, - EndLine: 219, - StartPos: 4098, - EndPos: 4125, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 219, - EndLine: 219, - StartPos: 4098, - EndPos: 4100, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 219, - EndLine: 219, - StartPos: 4098, - EndPos: 4100, - }, - }, - Value: []byte("$a"), - }, - }, - Class: &ast.NameRelative{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 219, - EndLine: 219, - StartPos: 4112, - EndPos: 4125, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 219, - EndLine: 219, - StartPos: 4122, - EndPos: 4125, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 220, - EndLine: 220, - StartPos: 4127, - EndPos: 4146, - }, - }, - Expr: &ast.ExprInstanceOf{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 220, - EndLine: 220, - StartPos: 4127, - EndPos: 4145, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 220, - EndLine: 220, - StartPos: 4127, - EndPos: 4129, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 220, - EndLine: 220, - StartPos: 4127, - EndPos: 4129, - }, - }, - Value: []byte("$a"), - }, - }, - Class: &ast.NameFullyQualified{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 220, - EndLine: 220, - StartPos: 4141, - EndPos: 4145, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 220, - EndLine: 220, - StartPos: 4142, - EndPos: 4145, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 222, - EndLine: 222, - StartPos: 4148, - EndPos: 4162, - }, - }, - Expr: &ast.ExprIsset{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 222, - EndLine: 222, - StartPos: 4148, - EndPos: 4161, - }, - }, - Vars: []ast.Vertex{ - &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 222, - EndLine: 222, - StartPos: 4154, - EndPos: 4156, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 222, - EndLine: 222, - StartPos: 4154, - EndPos: 4156, - }, - }, - Value: []byte("$a"), - }, - }, - &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 222, - EndLine: 222, - StartPos: 4158, - EndPos: 4160, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 222, - EndLine: 222, - StartPos: 4158, - EndPos: 4160, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 223, - EndLine: 223, - StartPos: 4163, - EndPos: 4177, - }, - }, - Expr: &ast.ExprAssign{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 223, - EndLine: 223, - StartPos: 4163, - EndPos: 4176, - }, - }, - Var: &ast.ExprList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 223, - EndLine: 223, - StartPos: 4163, - EndPos: 4171, - }, - }, - Items: []ast.Vertex{ - &ast.ExprArrayItem{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 223, - EndLine: 223, - StartPos: 4168, - EndPos: 4170, - }, - }, - Val: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 223, - EndLine: 223, - StartPos: 4168, - EndPos: 4170, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 223, - EndLine: 223, - StartPos: 4168, - EndPos: 4170, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 223, - EndLine: 223, - StartPos: 4174, - EndPos: 4176, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 223, - EndLine: 223, - StartPos: 4174, - EndPos: 4176, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 224, - EndLine: 224, - StartPos: 4178, - EndPos: 4194, - }, - }, - Expr: &ast.ExprAssign{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 224, - EndLine: 224, - StartPos: 4178, - EndPos: 4193, - }, - }, - Var: &ast.ExprList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 224, - EndLine: 224, - StartPos: 4178, - EndPos: 4188, - }, - }, - Items: []ast.Vertex{ - &ast.ExprArrayItem{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 224, - EndLine: 224, - StartPos: 4183, - EndPos: 4187, - }, - }, - Val: &ast.ExprArrayDimFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 224, - EndLine: 224, - StartPos: 4183, - EndPos: 4187, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 224, - EndLine: 224, - StartPos: 4183, - EndPos: 4185, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 224, - EndLine: 224, - StartPos: 4183, - EndPos: 4185, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 224, - EndLine: 224, - StartPos: 4191, - EndPos: 4193, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 224, - EndLine: 224, - StartPos: 4191, - EndPos: 4193, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 225, - EndLine: 225, - StartPos: 4195, - EndPos: 4215, - }, - }, - Expr: &ast.ExprAssign{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 225, - EndLine: 225, - StartPos: 4195, - EndPos: 4214, - }, - }, - Var: &ast.ExprList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 225, - EndLine: 225, - StartPos: 4195, - EndPos: 4209, - }, - }, - Items: []ast.Vertex{ - &ast.ExprArrayItem{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 225, - EndLine: 225, - StartPos: 4200, - EndPos: 4208, - }, - }, - Val: &ast.ExprList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 225, - EndLine: 225, - StartPos: 4200, - EndPos: 4208, - }, - }, - Items: []ast.Vertex{ - &ast.ExprArrayItem{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 225, - EndLine: 225, - StartPos: 4205, - EndPos: 4207, - }, - }, - Val: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 225, - EndLine: 225, - StartPos: 4205, - EndPos: 4207, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 225, - EndLine: 225, - StartPos: 4205, - EndPos: 4207, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - }, - }, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 225, - EndLine: 225, - StartPos: 4212, - EndPos: 4214, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 225, - EndLine: 225, - StartPos: 4212, - EndPos: 4214, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 227, - EndLine: 227, - StartPos: 4217, - EndPos: 4227, - }, - }, - Expr: &ast.ExprMethodCall{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 227, - EndLine: 227, - StartPos: 4217, - EndPos: 4226, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 227, - EndLine: 227, - StartPos: 4217, - EndPos: 4219, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 227, - EndLine: 227, - StartPos: 4217, - EndPos: 4219, - }, - }, - Value: []byte("$a"), - }, - }, - Method: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 227, - EndLine: 227, - StartPos: 4221, - EndPos: 4224, - }, - }, - Value: []byte("foo"), - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 227, - EndLine: 227, - StartPos: 4224, - EndPos: 4226, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 228, - EndLine: 228, - StartPos: 4228, - EndPos: 4238, - }, - }, - Expr: &ast.ExprNew{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 228, - EndLine: 228, - StartPos: 4228, - EndPos: 4237, - }, - }, - Class: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 228, - EndLine: 228, - StartPos: 4232, - EndPos: 4235, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 228, - EndLine: 228, - StartPos: 4232, - EndPos: 4235, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 228, - EndLine: 228, - StartPos: 4235, - EndPos: 4237, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 229, - EndLine: 229, - StartPos: 4239, - EndPos: 4259, - }, - }, - Expr: &ast.ExprNew{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 229, - EndLine: 229, - StartPos: 4239, - EndPos: 4258, - }, - }, - Class: &ast.NameRelative{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 229, - EndLine: 229, - StartPos: 4243, - EndPos: 4256, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 229, - EndLine: 229, - StartPos: 4253, - EndPos: 4256, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 229, - EndLine: 229, - StartPos: 4256, - EndPos: 4258, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 230, - EndLine: 230, - StartPos: 4260, - EndPos: 4271, - }, - }, - Expr: &ast.ExprNew{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 230, - EndLine: 230, - StartPos: 4260, - EndPos: 4270, - }, - }, - Class: &ast.NameFullyQualified{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 230, - EndLine: 230, - StartPos: 4264, - EndPos: 4268, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 230, - EndLine: 230, - StartPos: 4265, - EndPos: 4268, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 230, - EndLine: 230, - StartPos: 4268, - EndPos: 4270, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 231, - EndLine: 231, - StartPos: 4272, - EndPos: 4297, - }, - }, - Expr: &ast.ExprNew{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 231, - EndLine: 231, - StartPos: 4272, - EndPos: 4296, - }, - }, - Class: &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 231, - EndLine: 231, - StartPos: 4276, - EndPos: 4296, - }, - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 231, - EndLine: 231, - StartPos: 4282, - EndPos: 4293, - }, - }, - Arguments: []ast.Vertex{ - &ast.Argument{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 231, - EndLine: 231, - StartPos: 4283, - EndPos: 4285, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 231, - EndLine: 231, - StartPos: 4283, - EndPos: 4285, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 231, - EndLine: 231, - StartPos: 4283, - EndPos: 4285, - }, - }, - Value: []byte("$a"), - }, - }, - }, - &ast.Argument{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 231, - EndLine: 231, - StartPos: 4287, - EndPos: 4292, - }, - }, - Variadic: true, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 231, - EndLine: 231, - StartPos: 4290, - EndPos: 4292, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 231, - EndLine: 231, - StartPos: 4290, - EndPos: 4292, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 232, - EndLine: 232, - StartPos: 4298, - EndPos: 4308, - }, - }, - Expr: &ast.ExprPrint{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 232, - EndLine: 232, - StartPos: 4298, - EndPos: 4307, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 232, - EndLine: 232, - StartPos: 4304, - EndPos: 4306, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 232, - EndLine: 232, - StartPos: 4304, - EndPos: 4306, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 233, - EndLine: 233, - StartPos: 4309, - EndPos: 4317, - }, - }, - Expr: &ast.ExprPropertyFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 233, - EndLine: 233, - StartPos: 4309, - EndPos: 4316, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 233, - EndLine: 233, - StartPos: 4309, - EndPos: 4311, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 233, - EndLine: 233, - StartPos: 4309, - EndPos: 4311, - }, - }, - Value: []byte("$a"), - }, - }, - Property: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 233, - EndLine: 233, - StartPos: 4313, - EndPos: 4316, - }, - }, - Value: []byte("foo"), - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 234, - EndLine: 234, - StartPos: 4318, - EndPos: 4327, - }, - }, - Expr: &ast.ExprShellExec{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 234, - EndLine: 234, - StartPos: 4318, - EndPos: 4326, - }, - }, - Parts: []ast.Vertex{ - &ast.ScalarEncapsedStringPart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 234, - EndLine: 234, - StartPos: 4319, - EndPos: 4323, - }, - }, - Value: []byte("cmd "), - }, - &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 234, - EndLine: 234, - StartPos: 4323, - EndPos: 4325, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 234, - EndLine: 234, - StartPos: 4323, - EndPos: 4325, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 235, - EndLine: 235, - StartPos: 4328, - EndPos: 4334, - }, - }, - Expr: &ast.ExprShellExec{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 235, - EndLine: 235, - StartPos: 4328, - EndPos: 4333, - }, - }, - Parts: []ast.Vertex{ - &ast.ScalarEncapsedStringPart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 235, - EndLine: 235, - StartPos: 4329, - EndPos: 4332, - }, - }, - Value: []byte("cmd"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 236, - EndLine: 236, - StartPos: 4335, - EndPos: 4338, - }, - }, - Expr: &ast.ExprShellExec{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 236, - EndLine: 236, - StartPos: 4335, - EndPos: 4337, - }, - }, - Parts: []ast.Vertex{}, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 237, - EndLine: 237, - StartPos: 4339, - EndPos: 4342, - }, - }, - Expr: &ast.ExprShortArray{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 237, - EndLine: 237, - StartPos: 4339, - EndPos: 4341, - }, - }, - Items: []ast.Vertex{}, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 238, - EndLine: 238, - StartPos: 4343, - EndPos: 4347, - }, - }, - Expr: &ast.ExprShortArray{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 238, - EndLine: 238, - StartPos: 4343, - EndPos: 4346, - }, - }, - Items: []ast.Vertex{ - &ast.ExprArrayItem{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 238, - EndLine: 238, - StartPos: 4344, - EndPos: 4345, - }, - }, - Val: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 238, - EndLine: 238, - StartPos: 4344, - EndPos: 4345, - }, - }, - Value: []byte("1"), - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 239, - EndLine: 239, - StartPos: 4348, - EndPos: 4361, - }, - }, - Expr: &ast.ExprShortArray{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 239, - EndLine: 239, - StartPos: 4348, - EndPos: 4360, - }, - }, - Items: []ast.Vertex{ - &ast.ExprArrayItem{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 239, - EndLine: 239, - StartPos: 4349, - EndPos: 4353, - }, - }, - Key: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 239, - EndLine: 239, - StartPos: 4349, - EndPos: 4350, - }, - }, - Value: []byte("1"), - }, - Val: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 239, - EndLine: 239, - StartPos: 4352, - EndPos: 4353, - }, - }, - Value: []byte("1"), - }, - }, - &ast.ExprArrayItem{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 239, - EndLine: 239, - StartPos: 4355, - EndPos: 4358, - }, - }, - Val: &ast.ExprReference{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 239, - EndLine: 239, - StartPos: 4355, - EndPos: 4358, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 239, - EndLine: 239, - StartPos: 4356, - EndPos: 4358, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 239, - EndLine: 239, - StartPos: 4356, - EndPos: 4358, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.ExprArrayItem{}, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 241, - EndLine: 241, - StartPos: 4363, - EndPos: 4373, - }, - }, - Expr: &ast.ExprAssign{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 241, - EndLine: 241, - StartPos: 4363, - EndPos: 4372, - }, - }, - Var: &ast.ExprShortList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 241, - EndLine: 241, - StartPos: 4363, - EndPos: 4367, - }, - }, - Items: []ast.Vertex{ - &ast.ExprArrayItem{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 241, - EndLine: 241, - StartPos: 4364, - EndPos: 4366, - }, - }, - Val: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 241, - EndLine: 241, - StartPos: 4364, - EndPos: 4366, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 241, - EndLine: 241, - StartPos: 4364, - EndPos: 4366, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 241, - EndLine: 241, - StartPos: 4370, - EndPos: 4372, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 241, - EndLine: 241, - StartPos: 4370, - EndPos: 4372, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 242, - EndLine: 242, - StartPos: 4374, - EndPos: 4386, - }, - }, - Expr: &ast.ExprAssign{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 242, - EndLine: 242, - StartPos: 4374, - EndPos: 4385, - }, - }, - Var: &ast.ExprShortList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 242, - EndLine: 242, - StartPos: 4374, - EndPos: 4380, - }, - }, - Items: []ast.Vertex{ - &ast.ExprArrayItem{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 242, - EndLine: 242, - StartPos: 4375, - EndPos: 4379, - }, - }, - Val: &ast.ExprArrayDimFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 242, - EndLine: 242, - StartPos: 4375, - EndPos: 4379, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 242, - EndLine: 242, - StartPos: 4375, - EndPos: 4377, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 242, - EndLine: 242, - StartPos: 4375, - EndPos: 4377, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 242, - EndLine: 242, - StartPos: 4383, - EndPos: 4385, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 242, - EndLine: 242, - StartPos: 4383, - EndPos: 4385, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 243, - EndLine: 243, - StartPos: 4387, - EndPos: 4403, - }, - }, - Expr: &ast.ExprAssign{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 243, - EndLine: 243, - StartPos: 4387, - EndPos: 4402, - }, - }, - Var: &ast.ExprShortList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 243, - EndLine: 243, - StartPos: 4387, - EndPos: 4397, - }, - }, - Items: []ast.Vertex{ - &ast.ExprArrayItem{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 243, - EndLine: 243, - StartPos: 4388, - EndPos: 4396, - }, - }, - Val: &ast.ExprList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 243, - EndLine: 243, - StartPos: 4388, - EndPos: 4396, - }, - }, - Items: []ast.Vertex{ - &ast.ExprArrayItem{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 243, - EndLine: 243, - StartPos: 4393, - EndPos: 4395, - }, - }, - Val: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 243, - EndLine: 243, - StartPos: 4393, - EndPos: 4395, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 243, - EndLine: 243, - StartPos: 4393, - EndPos: 4395, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - }, - }, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 243, - EndLine: 243, - StartPos: 4400, - EndPos: 4402, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 243, - EndLine: 243, - StartPos: 4400, - EndPos: 4402, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 244, - EndLine: 244, - StartPos: 4404, - EndPos: 4415, - }, - }, - Expr: &ast.ExprStaticCall{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 244, - EndLine: 244, - StartPos: 4404, - EndPos: 4414, - }, - }, - Class: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 244, - EndLine: 244, - StartPos: 4404, - EndPos: 4407, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 244, - EndLine: 244, - StartPos: 4404, - EndPos: 4407, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - Call: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 244, - EndLine: 244, - StartPos: 4409, - EndPos: 4412, - }, - }, - Value: []byte("bar"), - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 244, - EndLine: 244, - StartPos: 4412, - EndPos: 4414, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 245, - EndLine: 245, - StartPos: 4416, - EndPos: 4437, - }, - }, - Expr: &ast.ExprStaticCall{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 245, - EndLine: 245, - StartPos: 4416, - EndPos: 4436, - }, - }, - Class: &ast.NameRelative{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 245, - EndLine: 245, - StartPos: 4416, - EndPos: 4429, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 245, - EndLine: 245, - StartPos: 4426, - EndPos: 4429, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - Call: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 245, - EndLine: 245, - StartPos: 4431, - EndPos: 4434, - }, - }, - Value: []byte("bar"), - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 245, - EndLine: 245, - StartPos: 4434, - EndPos: 4436, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 246, - EndLine: 246, - StartPos: 4438, - EndPos: 4450, - }, - }, - Expr: &ast.ExprStaticCall{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 246, - EndLine: 246, - StartPos: 4438, - EndPos: 4449, - }, - }, - Class: &ast.NameFullyQualified{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 246, - EndLine: 246, - StartPos: 4438, - EndPos: 4442, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 246, - EndLine: 246, - StartPos: 4439, - EndPos: 4442, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - Call: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 246, - EndLine: 246, - StartPos: 4444, - EndPos: 4447, - }, - }, - Value: []byte("bar"), - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 246, - EndLine: 246, - StartPos: 4447, - EndPos: 4449, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 247, - EndLine: 247, - StartPos: 4451, - EndPos: 4461, - }, - }, - Expr: &ast.ExprStaticPropertyFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 247, - EndLine: 247, - StartPos: 4451, - EndPos: 4460, - }, - }, - Class: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 247, - EndLine: 247, - StartPos: 4451, - EndPos: 4454, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 247, - EndLine: 247, - StartPos: 4451, - EndPos: 4454, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - Property: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 247, - EndLine: 247, - StartPos: 4456, - EndPos: 4460, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 247, - EndLine: 247, - StartPos: 4456, - EndPos: 4460, - }, - }, - Value: []byte("$bar"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 248, - EndLine: 248, - StartPos: 4462, - EndPos: 4473, - }, - }, - Expr: &ast.ExprStaticPropertyFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 248, - EndLine: 248, - StartPos: 4462, - EndPos: 4472, - }, - }, - Class: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 248, - EndLine: 248, - StartPos: 4462, - EndPos: 4466, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 248, - EndLine: 248, - StartPos: 4462, - EndPos: 4466, - }, - }, - Value: []byte("$foo"), - }, - }, - Property: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 248, - EndLine: 248, - StartPos: 4468, - EndPos: 4472, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 248, - EndLine: 248, - StartPos: 4468, - EndPos: 4472, - }, - }, - Value: []byte("$bar"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 249, - EndLine: 249, - StartPos: 4474, - EndPos: 4494, - }, - }, - Expr: &ast.ExprStaticPropertyFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 249, - EndLine: 249, - StartPos: 4474, - EndPos: 4493, - }, - }, - Class: &ast.NameRelative{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 249, - EndLine: 249, - StartPos: 4474, - EndPos: 4487, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 249, - EndLine: 249, - StartPos: 4484, - EndPos: 4487, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - Property: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 249, - EndLine: 249, - StartPos: 4489, - EndPos: 4493, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 249, - EndLine: 249, - StartPos: 4489, - EndPos: 4493, - }, - }, - Value: []byte("$bar"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 250, - EndLine: 250, - StartPos: 4495, - EndPos: 4506, - }, - }, - Expr: &ast.ExprStaticPropertyFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 250, - EndLine: 250, - StartPos: 4495, - EndPos: 4505, - }, - }, - Class: &ast.NameFullyQualified{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 250, - EndLine: 250, - StartPos: 4495, - EndPos: 4499, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 250, - EndLine: 250, - StartPos: 4496, - EndPos: 4499, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - Property: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 250, - EndLine: 250, - StartPos: 4501, - EndPos: 4505, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 250, - EndLine: 250, - StartPos: 4501, - EndPos: 4505, - }, - }, - Value: []byte("$bar"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 251, - EndLine: 251, - StartPos: 4507, - EndPos: 4520, - }, - }, - Expr: &ast.ExprTernary{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 251, - EndLine: 251, - StartPos: 4507, - EndPos: 4519, - }, - }, - Condition: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 251, - EndLine: 251, - StartPos: 4507, - EndPos: 4509, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 251, - EndLine: 251, - StartPos: 4507, - EndPos: 4509, - }, - }, - Value: []byte("$a"), - }, - }, - IfTrue: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 251, - EndLine: 251, - StartPos: 4512, - EndPos: 4514, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 251, - EndLine: 251, - StartPos: 4512, - EndPos: 4514, - }, - }, - Value: []byte("$b"), - }, - }, - IfFalse: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 251, - EndLine: 251, - StartPos: 4517, - EndPos: 4519, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 251, - EndLine: 251, - StartPos: 4517, - EndPos: 4519, - }, - }, - Value: []byte("$c"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 252, - EndLine: 252, - StartPos: 4521, - EndPos: 4531, - }, - }, - Expr: &ast.ExprTernary{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 252, - EndLine: 252, - StartPos: 4521, - EndPos: 4530, - }, - }, - Condition: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 252, - EndLine: 252, - StartPos: 4521, - EndPos: 4523, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 252, - EndLine: 252, - StartPos: 4521, - EndPos: 4523, - }, - }, - Value: []byte("$a"), - }, - }, - IfFalse: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 252, - EndLine: 252, - StartPos: 4528, - EndPos: 4530, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 252, - EndLine: 252, - StartPos: 4528, - EndPos: 4530, - }, - }, - Value: []byte("$c"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 253, - EndLine: 253, - StartPos: 4532, - EndPos: 4555, - }, - }, - Expr: &ast.ExprTernary{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 253, - EndLine: 253, - StartPos: 4532, - EndPos: 4554, - }, - }, - Condition: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 253, - EndLine: 253, - StartPos: 4532, - EndPos: 4534, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 253, - EndLine: 253, - StartPos: 4532, - EndPos: 4534, - }, - }, - Value: []byte("$a"), - }, - }, - IfTrue: &ast.ExprTernary{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 253, - EndLine: 253, - StartPos: 4537, - EndPos: 4549, - }, - }, - Condition: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 253, - EndLine: 253, - StartPos: 4537, - EndPos: 4539, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 253, - EndLine: 253, - StartPos: 4537, - EndPos: 4539, - }, - }, - Value: []byte("$b"), - }, - }, - IfTrue: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 253, - EndLine: 253, - StartPos: 4542, - EndPos: 4544, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 253, - EndLine: 253, - StartPos: 4542, - EndPos: 4544, - }, - }, - Value: []byte("$c"), - }, - }, - IfFalse: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 253, - EndLine: 253, - StartPos: 4547, - EndPos: 4549, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 253, - EndLine: 253, - StartPos: 4547, - EndPos: 4549, - }, - }, - Value: []byte("$d"), - }, - }, - }, - IfFalse: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 253, - EndLine: 253, - StartPos: 4552, - EndPos: 4554, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 253, - EndLine: 253, - StartPos: 4552, - EndPos: 4554, - }, - }, - Value: []byte("$e"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 254, - EndLine: 254, - StartPos: 4556, - EndPos: 4579, - }, - }, - Expr: &ast.ExprTernary{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 254, - EndLine: 254, - StartPos: 4556, - EndPos: 4578, - }, - }, - Condition: &ast.ExprTernary{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 254, - EndLine: 254, - StartPos: 4556, - EndPos: 4568, - }, - }, - Condition: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 254, - EndLine: 254, - StartPos: 4556, - EndPos: 4558, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 254, - EndLine: 254, - StartPos: 4556, - EndPos: 4558, - }, - }, - Value: []byte("$a"), - }, - }, - IfTrue: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 254, - EndLine: 254, - StartPos: 4561, - EndPos: 4563, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 254, - EndLine: 254, - StartPos: 4561, - EndPos: 4563, - }, - }, - Value: []byte("$b"), - }, - }, - IfFalse: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 254, - EndLine: 254, - StartPos: 4566, - EndPos: 4568, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 254, - EndLine: 254, - StartPos: 4566, - EndPos: 4568, - }, - }, - Value: []byte("$c"), - }, - }, - }, - IfTrue: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 254, - EndLine: 254, - StartPos: 4571, - EndPos: 4573, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 254, - EndLine: 254, - StartPos: 4571, - EndPos: 4573, - }, - }, - Value: []byte("$d"), - }, - }, - IfFalse: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 254, - EndLine: 254, - StartPos: 4576, - EndPos: 4578, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 254, - EndLine: 254, - StartPos: 4576, - EndPos: 4578, - }, - }, - Value: []byte("$e"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 255, - EndLine: 255, - StartPos: 4580, - EndPos: 4584, - }, - }, - Expr: &ast.ExprUnaryMinus{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 255, - EndLine: 255, - StartPos: 4580, - EndPos: 4583, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 255, - EndLine: 255, - StartPos: 4581, - EndPos: 4583, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 255, - EndLine: 255, - StartPos: 4581, - EndPos: 4583, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 256, - EndLine: 256, - StartPos: 4585, - EndPos: 4589, - }, - }, - Expr: &ast.ExprUnaryPlus{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 256, - EndLine: 256, - StartPos: 4585, - EndPos: 4588, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 256, - EndLine: 256, - StartPos: 4586, - EndPos: 4588, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 256, - EndLine: 256, - StartPos: 4586, - EndPos: 4588, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 257, - EndLine: 257, - StartPos: 4590, - EndPos: 4594, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 257, - EndLine: 257, - StartPos: 4590, - EndPos: 4593, - }, - }, - VarName: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 257, - EndLine: 257, - StartPos: 4591, - EndPos: 4593, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 257, - EndLine: 257, - StartPos: 4591, - EndPos: 4593, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 258, - EndLine: 258, - StartPos: 4595, - EndPos: 4601, - }, - }, - Expr: &ast.ExprYield{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 258, - EndLine: 258, - StartPos: 4595, - EndPos: 4600, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 259, - EndLine: 259, - StartPos: 4602, - EndPos: 4611, - }, - }, - Expr: &ast.ExprYield{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 259, - EndLine: 259, - StartPos: 4602, - EndPos: 4610, - }, - }, - Value: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 259, - EndLine: 259, - StartPos: 4608, - EndPos: 4610, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 259, - EndLine: 259, - StartPos: 4608, - EndPos: 4610, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 260, - EndLine: 260, - StartPos: 4612, - EndPos: 4627, - }, - }, - Expr: &ast.ExprYield{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 260, - EndLine: 260, - StartPos: 4612, - EndPos: 4626, - }, - }, - Key: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 260, - EndLine: 260, - StartPos: 4618, - EndPos: 4620, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 260, - EndLine: 260, - StartPos: 4618, - EndPos: 4620, - }, - }, - Value: []byte("$a"), - }, - }, - Value: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 260, - EndLine: 260, - StartPos: 4624, - EndPos: 4626, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 260, - EndLine: 260, - StartPos: 4624, - EndPos: 4626, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 261, - EndLine: 261, - StartPos: 4628, - EndPos: 4642, - }, - }, - Expr: &ast.ExprYieldFrom{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 261, - EndLine: 261, - StartPos: 4628, - EndPos: 4641, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 261, - EndLine: 261, - StartPos: 4639, - EndPos: 4641, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 261, - EndLine: 261, - StartPos: 4639, - EndPos: 4641, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 263, - EndLine: 263, - StartPos: 4644, - EndPos: 4654, - }, - }, - Expr: &ast.ExprCastArray{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 263, - EndLine: 263, - StartPos: 4644, - EndPos: 4653, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 263, - EndLine: 263, - StartPos: 4651, - EndPos: 4653, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 263, - EndLine: 263, - StartPos: 4651, - EndPos: 4653, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 264, - EndLine: 264, - StartPos: 4655, - EndPos: 4667, - }, - }, - Expr: &ast.ExprCastBool{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 264, - EndLine: 264, - StartPos: 4655, - EndPos: 4666, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 264, - EndLine: 264, - StartPos: 4664, - EndPos: 4666, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 264, - EndLine: 264, - StartPos: 4664, - EndPos: 4666, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 265, - EndLine: 265, - StartPos: 4668, - EndPos: 4677, - }, - }, - Expr: &ast.ExprCastBool{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 265, - EndLine: 265, - StartPos: 4668, - EndPos: 4676, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 265, - EndLine: 265, - StartPos: 4674, - EndPos: 4676, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 265, - EndLine: 265, - StartPos: 4674, - EndPos: 4676, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 266, - EndLine: 266, - StartPos: 4678, - EndPos: 4689, - }, - }, - Expr: &ast.ExprCastDouble{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 266, - EndLine: 266, - StartPos: 4678, - EndPos: 4688, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 266, - EndLine: 266, - StartPos: 4686, - EndPos: 4688, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 266, - EndLine: 266, - StartPos: 4686, - EndPos: 4688, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 267, - EndLine: 267, - StartPos: 4690, - EndPos: 4700, - }, - }, - Expr: &ast.ExprCastDouble{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 267, - EndLine: 267, - StartPos: 4690, - EndPos: 4699, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 267, - EndLine: 267, - StartPos: 4697, - EndPos: 4699, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 267, - EndLine: 267, - StartPos: 4697, - EndPos: 4699, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 268, - EndLine: 268, - StartPos: 4701, - EndPos: 4713, - }, - }, - Expr: &ast.ExprCastInt{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 268, - EndLine: 268, - StartPos: 4701, - EndPos: 4712, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 268, - EndLine: 268, - StartPos: 4710, - EndPos: 4712, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 268, - EndLine: 268, - StartPos: 4710, - EndPos: 4712, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 269, - EndLine: 269, - StartPos: 4714, - EndPos: 4722, - }, - }, - Expr: &ast.ExprCastInt{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 269, - EndLine: 269, - StartPos: 4714, - EndPos: 4721, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 269, - EndLine: 269, - StartPos: 4719, - EndPos: 4721, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 269, - EndLine: 269, - StartPos: 4719, - EndPos: 4721, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 270, - EndLine: 270, - StartPos: 4723, - EndPos: 4734, - }, - }, - Expr: &ast.ExprCastObject{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 270, - EndLine: 270, - StartPos: 4723, - EndPos: 4733, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 270, - EndLine: 270, - StartPos: 4731, - EndPos: 4733, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 270, - EndLine: 270, - StartPos: 4731, - EndPos: 4733, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 271, - EndLine: 271, - StartPos: 4735, - EndPos: 4746, - }, - }, - Expr: &ast.ExprCastString{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 271, - EndLine: 271, - StartPos: 4735, - EndPos: 4745, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 271, - EndLine: 271, - StartPos: 4743, - EndPos: 4745, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 271, - EndLine: 271, - StartPos: 4743, - EndPos: 4745, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 272, - EndLine: 272, - StartPos: 4747, - EndPos: 4757, - }, - }, - Expr: &ast.ExprCastUnset{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 272, - EndLine: 272, - StartPos: 4747, - EndPos: 4756, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 272, - EndLine: 272, - StartPos: 4754, - EndPos: 4756, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 272, - EndLine: 272, - StartPos: 4754, - EndPos: 4756, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 274, - EndLine: 274, - StartPos: 4759, - EndPos: 4767, - }, - }, - Expr: &ast.ExprBinaryBitwiseAnd{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 274, - EndLine: 274, - StartPos: 4759, - EndPos: 4766, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 274, - EndLine: 274, - StartPos: 4759, - EndPos: 4761, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 274, - EndLine: 274, - StartPos: 4759, - EndPos: 4761, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 274, - EndLine: 274, - StartPos: 4764, - EndPos: 4766, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 274, - EndLine: 274, - StartPos: 4764, - EndPos: 4766, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 275, - EndLine: 275, - StartPos: 4768, - EndPos: 4776, - }, - }, - Expr: &ast.ExprBinaryBitwiseOr{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 275, - EndLine: 275, - StartPos: 4768, - EndPos: 4775, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 275, - EndLine: 275, - StartPos: 4768, - EndPos: 4770, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 275, - EndLine: 275, - StartPos: 4768, - EndPos: 4770, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 275, - EndLine: 275, - StartPos: 4773, - EndPos: 4775, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 275, - EndLine: 275, - StartPos: 4773, - EndPos: 4775, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 276, - EndLine: 276, - StartPos: 4777, - EndPos: 4785, - }, - }, - Expr: &ast.ExprBinaryBitwiseXor{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 276, - EndLine: 276, - StartPos: 4777, - EndPos: 4784, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 276, - EndLine: 276, - StartPos: 4777, - EndPos: 4779, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 276, - EndLine: 276, - StartPos: 4777, - EndPos: 4779, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 276, - EndLine: 276, - StartPos: 4782, - EndPos: 4784, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 276, - EndLine: 276, - StartPos: 4782, - EndPos: 4784, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 277, - EndLine: 277, - StartPos: 4786, - EndPos: 4795, - }, - }, - Expr: &ast.ExprBinaryBooleanAnd{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 277, - EndLine: 277, - StartPos: 4786, - EndPos: 4794, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 277, - EndLine: 277, - StartPos: 4786, - EndPos: 4788, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 277, - EndLine: 277, - StartPos: 4786, - EndPos: 4788, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 277, - EndLine: 277, - StartPos: 4792, - EndPos: 4794, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 277, - EndLine: 277, - StartPos: 4792, - EndPos: 4794, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 278, - EndLine: 278, - StartPos: 4796, - EndPos: 4805, - }, - }, - Expr: &ast.ExprBinaryBooleanOr{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 278, - EndLine: 278, - StartPos: 4796, - EndPos: 4804, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 278, - EndLine: 278, - StartPos: 4796, - EndPos: 4798, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 278, - EndLine: 278, - StartPos: 4796, - EndPos: 4798, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 278, - EndLine: 278, - StartPos: 4802, - EndPos: 4804, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 278, - EndLine: 278, - StartPos: 4802, - EndPos: 4804, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 279, - EndLine: 279, - StartPos: 4806, - EndPos: 4815, - }, - }, - Expr: &ast.ExprBinaryCoalesce{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 279, - EndLine: 279, - StartPos: 4806, - EndPos: 4814, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 279, - EndLine: 279, - StartPos: 4806, - EndPos: 4808, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 279, - EndLine: 279, - StartPos: 4806, - EndPos: 4808, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 279, - EndLine: 279, - StartPos: 4812, - EndPos: 4814, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 279, - EndLine: 279, - StartPos: 4812, - EndPos: 4814, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 280, - EndLine: 280, - StartPos: 4816, - EndPos: 4824, - }, - }, - Expr: &ast.ExprBinaryConcat{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 280, - EndLine: 280, - StartPos: 4816, - EndPos: 4823, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 280, - EndLine: 280, - StartPos: 4816, - EndPos: 4818, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 280, - EndLine: 280, - StartPos: 4816, - EndPos: 4818, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 280, - EndLine: 280, - StartPos: 4821, - EndPos: 4823, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 280, - EndLine: 280, - StartPos: 4821, - EndPos: 4823, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 281, - EndLine: 281, - StartPos: 4825, - EndPos: 4833, - }, - }, - Expr: &ast.ExprBinaryDiv{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 281, - EndLine: 281, - StartPos: 4825, - EndPos: 4832, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 281, - EndLine: 281, - StartPos: 4825, - EndPos: 4827, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 281, - EndLine: 281, - StartPos: 4825, - EndPos: 4827, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 281, - EndLine: 281, - StartPos: 4830, - EndPos: 4832, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 281, - EndLine: 281, - StartPos: 4830, - EndPos: 4832, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 282, - EndLine: 282, - StartPos: 4834, - EndPos: 4843, - }, - }, - Expr: &ast.ExprBinaryEqual{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 282, - EndLine: 282, - StartPos: 4834, - EndPos: 4842, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 282, - EndLine: 282, - StartPos: 4834, - EndPos: 4836, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 282, - EndLine: 282, - StartPos: 4834, - EndPos: 4836, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 282, - EndLine: 282, - StartPos: 4840, - EndPos: 4842, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 282, - EndLine: 282, - StartPos: 4840, - EndPos: 4842, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 283, - EndLine: 283, - StartPos: 4844, - EndPos: 4853, - }, - }, - Expr: &ast.ExprBinaryGreaterOrEqual{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 283, - EndLine: 283, - StartPos: 4844, - EndPos: 4852, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 283, - EndLine: 283, - StartPos: 4844, - EndPos: 4846, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 283, - EndLine: 283, - StartPos: 4844, - EndPos: 4846, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 283, - EndLine: 283, - StartPos: 4850, - EndPos: 4852, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 283, - EndLine: 283, - StartPos: 4850, - EndPos: 4852, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 284, - EndLine: 284, - StartPos: 4854, - EndPos: 4862, - }, - }, - Expr: &ast.ExprBinaryGreater{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 284, - EndLine: 284, - StartPos: 4854, - EndPos: 4861, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 284, - EndLine: 284, - StartPos: 4854, - EndPos: 4856, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 284, - EndLine: 284, - StartPos: 4854, - EndPos: 4856, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 284, - EndLine: 284, - StartPos: 4859, - EndPos: 4861, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 284, - EndLine: 284, - StartPos: 4859, - EndPos: 4861, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 285, - EndLine: 285, - StartPos: 4863, - EndPos: 4873, - }, - }, - Expr: &ast.ExprBinaryIdentical{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 285, - EndLine: 285, - StartPos: 4863, - EndPos: 4872, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 285, - EndLine: 285, - StartPos: 4863, - EndPos: 4865, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 285, - EndLine: 285, - StartPos: 4863, - EndPos: 4865, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 285, - EndLine: 285, - StartPos: 4870, - EndPos: 4872, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 285, - EndLine: 285, - StartPos: 4870, - EndPos: 4872, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 286, - EndLine: 286, - StartPos: 4874, - EndPos: 4884, - }, - }, - Expr: &ast.ExprBinaryLogicalAnd{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 286, - EndLine: 286, - StartPos: 4874, - EndPos: 4883, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 286, - EndLine: 286, - StartPos: 4874, - EndPos: 4876, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 286, - EndLine: 286, - StartPos: 4874, - EndPos: 4876, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 286, - EndLine: 286, - StartPos: 4881, - EndPos: 4883, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 286, - EndLine: 286, - StartPos: 4881, - EndPos: 4883, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 287, - EndLine: 287, - StartPos: 4885, - EndPos: 4894, - }, - }, - Expr: &ast.ExprBinaryLogicalOr{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 287, - EndLine: 287, - StartPos: 4885, - EndPos: 4893, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 287, - EndLine: 287, - StartPos: 4885, - EndPos: 4887, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 287, - EndLine: 287, - StartPos: 4885, - EndPos: 4887, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 287, - EndLine: 287, - StartPos: 4891, - EndPos: 4893, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 287, - EndLine: 287, - StartPos: 4891, - EndPos: 4893, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 288, - EndLine: 288, - StartPos: 4895, - EndPos: 4905, - }, - }, - Expr: &ast.ExprBinaryLogicalXor{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 288, - EndLine: 288, - StartPos: 4895, - EndPos: 4904, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 288, - EndLine: 288, - StartPos: 4895, - EndPos: 4897, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 288, - EndLine: 288, - StartPos: 4895, - EndPos: 4897, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 288, - EndLine: 288, - StartPos: 4902, - EndPos: 4904, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 288, - EndLine: 288, - StartPos: 4902, - EndPos: 4904, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 289, - EndLine: 289, - StartPos: 4906, - EndPos: 4914, - }, - }, - Expr: &ast.ExprBinaryMinus{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 289, - EndLine: 289, - StartPos: 4906, - EndPos: 4913, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 289, - EndLine: 289, - StartPos: 4906, - EndPos: 4908, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 289, - EndLine: 289, - StartPos: 4906, - EndPos: 4908, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 289, - EndLine: 289, - StartPos: 4911, - EndPos: 4913, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 289, - EndLine: 289, - StartPos: 4911, - EndPos: 4913, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 290, - EndLine: 290, - StartPos: 4915, - EndPos: 4923, - }, - }, - Expr: &ast.ExprBinaryMod{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 290, - EndLine: 290, - StartPos: 4915, - EndPos: 4922, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 290, - EndLine: 290, - StartPos: 4915, - EndPos: 4917, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 290, - EndLine: 290, - StartPos: 4915, - EndPos: 4917, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 290, - EndLine: 290, - StartPos: 4920, - EndPos: 4922, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 290, - EndLine: 290, - StartPos: 4920, - EndPos: 4922, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 291, - EndLine: 291, - StartPos: 4924, - EndPos: 4932, - }, - }, - Expr: &ast.ExprBinaryMul{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 291, - EndLine: 291, - StartPos: 4924, - EndPos: 4931, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 291, - EndLine: 291, - StartPos: 4924, - EndPos: 4926, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 291, - EndLine: 291, - StartPos: 4924, - EndPos: 4926, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 291, - EndLine: 291, - StartPos: 4929, - EndPos: 4931, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 291, - EndLine: 291, - StartPos: 4929, - EndPos: 4931, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 292, - EndLine: 292, - StartPos: 4933, - EndPos: 4942, - }, - }, - Expr: &ast.ExprBinaryNotEqual{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 292, - EndLine: 292, - StartPos: 4933, - EndPos: 4941, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 292, - EndLine: 292, - StartPos: 4933, - EndPos: 4935, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 292, - EndLine: 292, - StartPos: 4933, - EndPos: 4935, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 292, - EndLine: 292, - StartPos: 4939, - EndPos: 4941, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 292, - EndLine: 292, - StartPos: 4939, - EndPos: 4941, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 293, - EndLine: 293, - StartPos: 4943, - EndPos: 4953, - }, - }, - Expr: &ast.ExprBinaryNotIdentical{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 293, - EndLine: 293, - StartPos: 4943, - EndPos: 4952, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 293, - EndLine: 293, - StartPos: 4943, - EndPos: 4945, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 293, - EndLine: 293, - StartPos: 4943, - EndPos: 4945, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 293, - EndLine: 293, - StartPos: 4950, - EndPos: 4952, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 293, - EndLine: 293, - StartPos: 4950, - EndPos: 4952, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 294, - EndLine: 294, - StartPos: 4954, - EndPos: 4962, - }, - }, - Expr: &ast.ExprBinaryPlus{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 294, - EndLine: 294, - StartPos: 4954, - EndPos: 4961, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 294, - EndLine: 294, - StartPos: 4954, - EndPos: 4956, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 294, - EndLine: 294, - StartPos: 4954, - EndPos: 4956, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 294, - EndLine: 294, - StartPos: 4959, - EndPos: 4961, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 294, - EndLine: 294, - StartPos: 4959, - EndPos: 4961, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 295, - EndLine: 295, - StartPos: 4963, - EndPos: 4972, - }, - }, - Expr: &ast.ExprBinaryPow{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 295, - EndLine: 295, - StartPos: 4963, - EndPos: 4971, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 295, - EndLine: 295, - StartPos: 4963, - EndPos: 4965, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 295, - EndLine: 295, - StartPos: 4963, - EndPos: 4965, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 295, - EndLine: 295, - StartPos: 4969, - EndPos: 4971, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 295, - EndLine: 295, - StartPos: 4969, - EndPos: 4971, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 296, - EndLine: 296, - StartPos: 4973, - EndPos: 4982, - }, - }, - Expr: &ast.ExprBinaryShiftLeft{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 296, - EndLine: 296, - StartPos: 4973, - EndPos: 4981, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 296, - EndLine: 296, - StartPos: 4973, - EndPos: 4975, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 296, - EndLine: 296, - StartPos: 4973, - EndPos: 4975, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 296, - EndLine: 296, - StartPos: 4979, - EndPos: 4981, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 296, - EndLine: 296, - StartPos: 4979, - EndPos: 4981, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 297, - EndLine: 297, - StartPos: 4983, - EndPos: 4992, - }, - }, - Expr: &ast.ExprBinaryShiftRight{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 297, - EndLine: 297, - StartPos: 4983, - EndPos: 4991, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 297, - EndLine: 297, - StartPos: 4983, - EndPos: 4985, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 297, - EndLine: 297, - StartPos: 4983, - EndPos: 4985, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 297, - EndLine: 297, - StartPos: 4989, - EndPos: 4991, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 297, - EndLine: 297, - StartPos: 4989, - EndPos: 4991, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 298, - EndLine: 298, - StartPos: 4993, - EndPos: 5002, - }, - }, - Expr: &ast.ExprBinarySmallerOrEqual{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 298, - EndLine: 298, - StartPos: 4993, - EndPos: 5001, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 298, - EndLine: 298, - StartPos: 4993, - EndPos: 4995, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 298, - EndLine: 298, - StartPos: 4993, - EndPos: 4995, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 298, - EndLine: 298, - StartPos: 4999, - EndPos: 5001, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 298, - EndLine: 298, - StartPos: 4999, - EndPos: 5001, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 299, - EndLine: 299, - StartPos: 5003, - EndPos: 5011, - }, - }, - Expr: &ast.ExprBinarySmaller{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 299, - EndLine: 299, - StartPos: 5003, - EndPos: 5010, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 299, - EndLine: 299, - StartPos: 5003, - EndPos: 5005, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 299, - EndLine: 299, - StartPos: 5003, - EndPos: 5005, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 299, - EndLine: 299, - StartPos: 5008, - EndPos: 5010, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 299, - EndLine: 299, - StartPos: 5008, - EndPos: 5010, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 300, - EndLine: 300, - StartPos: 5012, - EndPos: 5022, - }, - }, - Expr: &ast.ExprBinarySpaceship{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 300, - EndLine: 300, - StartPos: 5012, - EndPos: 5021, - }, - }, - Left: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 300, - EndLine: 300, - StartPos: 5012, - EndPos: 5014, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 300, - EndLine: 300, - StartPos: 5012, - EndPos: 5014, - }, - }, - Value: []byte("$a"), - }, - }, - Right: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 300, - EndLine: 300, - StartPos: 5019, - EndPos: 5021, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 300, - EndLine: 300, - StartPos: 5019, - EndPos: 5021, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 302, - EndLine: 302, - StartPos: 5024, - EndPos: 5033, - }, - }, - Expr: &ast.ExprAssignReference{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 302, - EndLine: 302, - StartPos: 5024, - EndPos: 5032, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 302, - EndLine: 302, - StartPos: 5024, - EndPos: 5026, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 302, - EndLine: 302, - StartPos: 5024, - EndPos: 5026, - }, - }, - Value: []byte("$a"), - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 302, - EndLine: 302, - StartPos: 5030, - EndPos: 5032, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 302, - EndLine: 302, - StartPos: 5030, - EndPos: 5032, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 303, - EndLine: 303, - StartPos: 5034, - EndPos: 5042, - }, - }, - Expr: &ast.ExprAssign{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 303, - EndLine: 303, - StartPos: 5034, - EndPos: 5041, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 303, - EndLine: 303, - StartPos: 5034, - EndPos: 5036, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 303, - EndLine: 303, - StartPos: 5034, - EndPos: 5036, - }, - }, - Value: []byte("$a"), - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 303, - EndLine: 303, - StartPos: 5039, - EndPos: 5041, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 303, - EndLine: 303, - StartPos: 5039, - EndPos: 5041, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 304, - EndLine: 304, - StartPos: 5043, - EndPos: 5052, - }, - }, - Expr: &ast.ExprAssignBitwiseAnd{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 304, - EndLine: 304, - StartPos: 5043, - EndPos: 5051, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 304, - EndLine: 304, - StartPos: 5043, - EndPos: 5045, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 304, - EndLine: 304, - StartPos: 5043, - EndPos: 5045, - }, - }, - Value: []byte("$a"), - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 304, - EndLine: 304, - StartPos: 5049, - EndPos: 5051, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 304, - EndLine: 304, - StartPos: 5049, - EndPos: 5051, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 305, - EndLine: 305, - StartPos: 5053, - EndPos: 5062, - }, - }, - Expr: &ast.ExprAssignBitwiseOr{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 305, - EndLine: 305, - StartPos: 5053, - EndPos: 5061, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 305, - EndLine: 305, - StartPos: 5053, - EndPos: 5055, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 305, - EndLine: 305, - StartPos: 5053, - EndPos: 5055, - }, - }, - Value: []byte("$a"), - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 305, - EndLine: 305, - StartPos: 5059, - EndPos: 5061, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 305, - EndLine: 305, - StartPos: 5059, - EndPos: 5061, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 306, - EndLine: 306, - StartPos: 5063, - EndPos: 5072, - }, - }, - Expr: &ast.ExprAssignBitwiseXor{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 306, - EndLine: 306, - StartPos: 5063, - EndPos: 5071, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 306, - EndLine: 306, - StartPos: 5063, - EndPos: 5065, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 306, - EndLine: 306, - StartPos: 5063, - EndPos: 5065, - }, - }, - Value: []byte("$a"), - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 306, - EndLine: 306, - StartPos: 5069, - EndPos: 5071, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 306, - EndLine: 306, - StartPos: 5069, - EndPos: 5071, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 307, - EndLine: 307, - StartPos: 5073, - EndPos: 5082, - }, - }, - Expr: &ast.ExprAssignConcat{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 307, - EndLine: 307, - StartPos: 5073, - EndPos: 5081, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 307, - EndLine: 307, - StartPos: 5073, - EndPos: 5075, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 307, - EndLine: 307, - StartPos: 5073, - EndPos: 5075, - }, - }, - Value: []byte("$a"), - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 307, - EndLine: 307, - StartPos: 5079, - EndPos: 5081, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 307, - EndLine: 307, - StartPos: 5079, - EndPos: 5081, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 308, - EndLine: 308, - StartPos: 5083, - EndPos: 5092, - }, - }, - Expr: &ast.ExprAssignDiv{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 308, - EndLine: 308, - StartPos: 5083, - EndPos: 5091, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 308, - EndLine: 308, - StartPos: 5083, - EndPos: 5085, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 308, - EndLine: 308, - StartPos: 5083, - EndPos: 5085, - }, - }, - Value: []byte("$a"), - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 308, - EndLine: 308, - StartPos: 5089, - EndPos: 5091, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 308, - EndLine: 308, - StartPos: 5089, - EndPos: 5091, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 309, - EndLine: 309, - StartPos: 5093, - EndPos: 5102, - }, - }, - Expr: &ast.ExprAssignMinus{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 309, - EndLine: 309, - StartPos: 5093, - EndPos: 5101, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 309, - EndLine: 309, - StartPos: 5093, - EndPos: 5095, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 309, - EndLine: 309, - StartPos: 5093, - EndPos: 5095, - }, - }, - Value: []byte("$a"), - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 309, - EndLine: 309, - StartPos: 5099, - EndPos: 5101, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 309, - EndLine: 309, - StartPos: 5099, - EndPos: 5101, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 310, - EndLine: 310, - StartPos: 5103, - EndPos: 5112, - }, - }, - Expr: &ast.ExprAssignMod{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 310, - EndLine: 310, - StartPos: 5103, - EndPos: 5111, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 310, - EndLine: 310, - StartPos: 5103, - EndPos: 5105, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 310, - EndLine: 310, - StartPos: 5103, - EndPos: 5105, - }, - }, - Value: []byte("$a"), - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 310, - EndLine: 310, - StartPos: 5109, - EndPos: 5111, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 310, - EndLine: 310, - StartPos: 5109, - EndPos: 5111, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 311, - EndLine: 311, - StartPos: 5113, - EndPos: 5122, - }, - }, - Expr: &ast.ExprAssignMul{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 311, - EndLine: 311, - StartPos: 5113, - EndPos: 5121, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 311, - EndLine: 311, - StartPos: 5113, - EndPos: 5115, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 311, - EndLine: 311, - StartPos: 5113, - EndPos: 5115, - }, - }, - Value: []byte("$a"), - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 311, - EndLine: 311, - StartPos: 5119, - EndPos: 5121, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 311, - EndLine: 311, - StartPos: 5119, - EndPos: 5121, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 312, - EndLine: 312, - StartPos: 5123, - EndPos: 5132, - }, - }, - Expr: &ast.ExprAssignPlus{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 312, - EndLine: 312, - StartPos: 5123, - EndPos: 5131, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 312, - EndLine: 312, - StartPos: 5123, - EndPos: 5125, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 312, - EndLine: 312, - StartPos: 5123, - EndPos: 5125, - }, - }, - Value: []byte("$a"), - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 312, - EndLine: 312, - StartPos: 5129, - EndPos: 5131, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 312, - EndLine: 312, - StartPos: 5129, - EndPos: 5131, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 313, - EndLine: 313, - StartPos: 5133, - EndPos: 5143, - }, - }, - Expr: &ast.ExprAssignPow{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 313, - EndLine: 313, - StartPos: 5133, - EndPos: 5142, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 313, - EndLine: 313, - StartPos: 5133, - EndPos: 5135, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 313, - EndLine: 313, - StartPos: 5133, - EndPos: 5135, - }, - }, - Value: []byte("$a"), - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 313, - EndLine: 313, - StartPos: 5140, - EndPos: 5142, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 313, - EndLine: 313, - StartPos: 5140, - EndPos: 5142, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 314, - EndLine: 314, - StartPos: 5144, - EndPos: 5154, - }, - }, - Expr: &ast.ExprAssignShiftLeft{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 314, - EndLine: 314, - StartPos: 5144, - EndPos: 5153, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 314, - EndLine: 314, - StartPos: 5144, - EndPos: 5146, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 314, - EndLine: 314, - StartPos: 5144, - EndPos: 5146, - }, - }, - Value: []byte("$a"), - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 314, - EndLine: 314, - StartPos: 5151, - EndPos: 5153, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 314, - EndLine: 314, - StartPos: 5151, - EndPos: 5153, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 315, - EndLine: 315, - StartPos: 5155, - EndPos: 5165, - }, - }, - Expr: &ast.ExprAssignShiftRight{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 315, - EndLine: 315, - StartPos: 5155, - EndPos: 5164, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 315, - EndLine: 315, - StartPos: 5155, - EndPos: 5157, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 315, - EndLine: 315, - StartPos: 5155, - EndPos: 5157, - }, - }, - Value: []byte("$a"), - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 315, - EndLine: 315, - StartPos: 5162, - EndPos: 5164, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 315, - EndLine: 315, - StartPos: 5162, - EndPos: 5164, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 317, - EndLine: 317, - StartPos: 5167, - EndPos: 5206, - }, - }, - ClassName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 317, - EndLine: 317, - StartPos: 5173, - EndPos: 5176, - }, - }, - Value: []byte("foo"), - }, - Stmts: []ast.Vertex{ - &ast.StmtClassMethod{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 317, - EndLine: 317, - StartPos: 5178, - EndPos: 5204, - }, - }, - MethodName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 317, - EndLine: 317, - StartPos: 5194, - EndPos: 5199, - }, - }, - Value: []byte("class"), - }, - Modifiers: []ast.Vertex{ - &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 317, - EndLine: 317, - StartPos: 5178, - EndPos: 5184, - }, - }, - Value: []byte("public"), - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 317, - EndLine: 317, - StartPos: 5202, - EndPos: 5204, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 318, - EndLine: 318, - StartPos: 5207, - EndPos: 5218, - }, - }, - Expr: &ast.ExprFunctionCall{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 318, - EndLine: 318, - StartPos: 5207, - EndPos: 5217, - }, - }, - Function: &ast.NameFullyQualified{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 318, - EndLine: 318, - StartPos: 5207, - EndPos: 5215, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 318, - EndLine: 318, - StartPos: 5208, - EndPos: 5211, - }, - }, - Value: []byte("foo"), - }, - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 318, - EndLine: 318, - StartPos: 5211, - EndPos: 5215, - }, - }, - Value: []byte("bar"), - }, - }, - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 318, - EndLine: 318, - StartPos: 5215, - EndPos: 5217, - }, - }, - }, - }, - }, - &ast.StmtFunction{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 320, - EndLine: 326, - StartPos: 5220, - EndPos: 5328, - }, - }, - FunctionName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 320, - EndLine: 320, - StartPos: 5229, - EndPos: 5232, - }, - }, - Value: []byte("foo"), - }, - Params: []ast.Vertex{ - &ast.Parameter{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 320, - EndLine: 320, - StartPos: 5233, - EndPos: 5236, - }, - }, - Var: &ast.Reference{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 320, - EndLine: 320, - StartPos: 5233, - EndPos: 5236, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 320, - EndLine: 320, - StartPos: 5234, - EndPos: 5236, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 320, - EndLine: 320, - StartPos: 5234, - EndPos: 5236, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.Parameter{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 320, - EndLine: 320, - StartPos: 5238, - EndPos: 5243, - }, - }, - Var: &ast.Variadic{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 320, - EndLine: 320, - StartPos: 5238, - EndPos: 5243, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 320, - EndLine: 320, - StartPos: 5241, - EndPos: 5243, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 320, - EndLine: 320, - StartPos: 5241, - EndPos: 5243, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - }, - Stmts: []ast.Vertex{ - &ast.StmtFunction{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 322, - EndLine: 322, - StartPos: 5252, - EndPos: 5269, - }, - }, - FunctionName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 322, - EndLine: 322, - StartPos: 5261, - EndPos: 5264, - }, - }, - Value: []byte("bar"), - }, - Stmts: []ast.Vertex{}, - }, - &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 323, - EndLine: 323, - StartPos: 5274, - EndPos: 5286, - }, - }, - ClassName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 323, - EndLine: 323, - StartPos: 5280, - EndPos: 5283, - }, - }, - Value: []byte("Baz"), - }, - Stmts: []ast.Vertex{}, - }, - &ast.StmtTrait{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 324, - EndLine: 324, - StartPos: 5291, - EndPos: 5303, - }, - }, - TraitName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 324, - EndLine: 324, - StartPos: 5297, - EndPos: 5301, - }, - }, - Value: []byte("Quux"), - }, - Stmts: []ast.Vertex{}, - }, - &ast.StmtInterface{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5308, - EndPos: 5326, - }, - }, - InterfaceName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 325, - EndLine: 325, - StartPos: 5318, - EndPos: 5323, - }, - }, - Value: []byte("Quuux"), - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - &ast.StmtFunction{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 328, - EndLine: 328, - StartPos: 5330, - EndPos: 5373, - }, - }, - FunctionName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 328, - EndLine: 328, - StartPos: 5339, - EndPos: 5342, - }, - }, - Value: []byte("foo"), - }, - Params: []ast.Vertex{ - &ast.Parameter{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 328, - EndLine: 328, - StartPos: 5343, - EndPos: 5350, - }, - }, - Var: &ast.Reference{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 328, - EndLine: 328, - StartPos: 5343, - EndPos: 5346, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 328, - EndLine: 328, - StartPos: 5344, - EndPos: 5346, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 328, - EndLine: 328, - StartPos: 5344, - EndPos: 5346, - }, - }, - Value: []byte("$a"), - }, - }, - }, - DefaultValue: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 328, - EndLine: 328, - StartPos: 5349, - EndPos: 5350, - }, - }, - Value: []byte("1"), - }, - }, - &ast.Parameter{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 328, - EndLine: 328, - StartPos: 5352, - EndPos: 5361, - }, - }, - Var: &ast.Variadic{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 328, - EndLine: 328, - StartPos: 5352, - EndPos: 5357, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 328, - EndLine: 328, - StartPos: 5355, - EndPos: 5357, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 328, - EndLine: 328, - StartPos: 5355, - EndPos: 5357, - }, - }, - Value: []byte("$b"), - }, - }, - }, - DefaultValue: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 328, - EndLine: 328, - StartPos: 5360, - EndPos: 5361, - }, - }, - Value: []byte("1"), - }, - }, - &ast.Parameter{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 328, - EndLine: 328, - StartPos: 5363, - EndPos: 5369, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 328, - EndLine: 328, - StartPos: 5363, - EndPos: 5365, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 328, - EndLine: 328, - StartPos: 5363, - EndPos: 5365, - }, - }, - Value: []byte("$c"), - }, - }, - DefaultValue: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 328, - EndLine: 328, - StartPos: 5368, - EndPos: 5369, - }, - }, - Value: []byte("1"), - }, - }, - }, - Stmts: []ast.Vertex{}, - }, - &ast.StmtFunction{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 329, - EndLine: 329, - StartPos: 5374, - EndPos: 5412, - }, - }, - FunctionName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 329, - EndLine: 329, - StartPos: 5383, - EndPos: 5386, - }, - }, - Value: []byte("foo"), - }, - Params: []ast.Vertex{ - &ast.Parameter{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 329, - EndLine: 329, - StartPos: 5387, - EndPos: 5395, - }, - }, - Type: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 329, - EndLine: 329, - StartPos: 5387, - EndPos: 5392, - }, - }, - Value: []byte("array"), - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 329, - EndLine: 329, - StartPos: 5393, - EndPos: 5395, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 329, - EndLine: 329, - StartPos: 5393, - EndPos: 5395, - }, - }, - Value: []byte("$a"), - }, - }, - }, - &ast.Parameter{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 329, - EndLine: 329, - StartPos: 5397, - EndPos: 5408, - }, - }, - Type: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 329, - EndLine: 329, - StartPos: 5397, - EndPos: 5405, - }, - }, - Value: []byte("callable"), - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 329, - EndLine: 329, - StartPos: 5406, - EndPos: 5408, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 329, - EndLine: 329, - StartPos: 5406, - EndPos: 5408, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - Stmts: []ast.Vertex{}, - }, - &ast.StmtClass{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 330, - EndLine: 330, - StartPos: 5413, - EndPos: 5515, - }, - }, - ClassName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 330, - EndLine: 330, - StartPos: 5434, - EndPos: 5437, - }, - }, - Value: []byte("foo"), - }, - Modifiers: []ast.Vertex{ - &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 330, - EndLine: 330, - StartPos: 5413, - EndPos: 5421, - }, - }, - Value: []byte("abstract"), - }, - &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 330, - EndLine: 330, - StartPos: 5422, - EndPos: 5427, - }, - }, - Value: []byte("final"), - }, - }, - Stmts: []ast.Vertex{ - &ast.StmtClassMethod{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 330, - EndLine: 330, - StartPos: 5440, - EndPos: 5481, - }, - }, - MethodName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 330, - EndLine: 330, - StartPos: 5475, - EndPos: 5478, - }, - }, - Value: []byte("bar"), - }, - Modifiers: []ast.Vertex{ - &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 330, - EndLine: 330, - StartPos: 5440, - EndPos: 5448, - }, - }, - Value: []byte("abstract"), - }, - &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 330, - EndLine: 330, - StartPos: 5449, - EndPos: 5458, - }, - }, - Value: []byte("protected"), - }, - &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 330, - EndLine: 330, - StartPos: 5459, - EndPos: 5465, - }, - }, - Value: []byte("static"), - }, - }, - Stmt: &ast.StmtNop{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 330, - EndLine: 330, - StartPos: 5480, - EndPos: 5481, - }, - }, - }, - }, - &ast.StmtClassMethod{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 330, - EndLine: 330, - StartPos: 5482, - EndPos: 5513, - }, - }, - MethodName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 330, - EndLine: 330, - StartPos: 5505, - EndPos: 5508, - }, - }, - Value: []byte("baz"), - }, - Modifiers: []ast.Vertex{ - &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 330, - EndLine: 330, - StartPos: 5482, - EndPos: 5487, - }, - }, - Value: []byte("final"), - }, - &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 330, - EndLine: 330, - StartPos: 5488, - EndPos: 5495, - }, - }, - Value: []byte("private"), - }, - }, - Stmt: &ast.StmtStmtList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 330, - EndLine: 330, - StartPos: 5511, - EndPos: 5513, - }, - }, - Stmts: []ast.Vertex{}, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 332, - EndLine: 332, - StartPos: 5517, - EndPos: 5532, - }, - }, - Expr: &ast.ExprPropertyFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 332, - EndLine: 332, - StartPos: 5517, - EndPos: 5531, - }, - }, - Var: &ast.ExprNew{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 332, - EndLine: 332, - StartPos: 5518, - EndPos: 5525, - }, - }, - Class: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 332, - EndLine: 332, - StartPos: 5522, - EndPos: 5525, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 332, - EndLine: 332, - StartPos: 5522, - EndPos: 5525, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - }, - Property: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 332, - EndLine: 332, - StartPos: 5528, - EndPos: 5531, - }, - }, - Value: []byte("bar"), - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 333, - EndLine: 333, - StartPos: 5533, - EndPos: 5545, - }, - }, - Expr: &ast.ExprFunctionCall{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 333, - EndLine: 333, - StartPos: 5533, - EndPos: 5544, - }, - }, - Function: &ast.ExprNew{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 333, - EndLine: 333, - StartPos: 5534, - EndPos: 5541, - }, - }, - Class: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 333, - EndLine: 333, - StartPos: 5538, - EndPos: 5541, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 333, - EndLine: 333, - StartPos: 5538, - EndPos: 5541, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 333, - EndLine: 333, - StartPos: 5542, - EndPos: 5544, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 334, - EndLine: 334, - StartPos: 5546, - EndPos: 5558, - }, - }, - Expr: &ast.ExprFunctionCall{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 334, - EndLine: 334, - StartPos: 5546, - EndPos: 5557, - }, - }, - Function: &ast.ExprArrayDimFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 334, - EndLine: 334, - StartPos: 5546, - EndPos: 5555, - }, - }, - Var: &ast.ExprShortArray{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 334, - EndLine: 334, - StartPos: 5546, - EndPos: 5552, - }, - }, - Items: []ast.Vertex{ - &ast.ExprArrayItem{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 334, - EndLine: 334, - StartPos: 5547, - EndPos: 5551, - }, - }, - Val: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 334, - EndLine: 334, - StartPos: 5547, - EndPos: 5551, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 334, - EndLine: 334, - StartPos: 5547, - EndPos: 5551, - }, - }, - Value: []byte("$foo"), - }, - }, - }, - }, - }, - Dim: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 334, - EndLine: 334, - StartPos: 5553, - EndPos: 5554, - }, - }, - Value: []byte("0"), - }, - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 334, - EndLine: 334, - StartPos: 5555, - EndPos: 5557, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 335, - EndLine: 335, - StartPos: 5559, - EndPos: 5568, - }, - }, - Expr: &ast.ExprFunctionCall{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 335, - EndLine: 335, - StartPos: 5559, - EndPos: 5567, - }, - }, - Function: &ast.ExprArrayDimFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 335, - EndLine: 335, - StartPos: 5559, - EndPos: 5565, - }, - }, - Var: &ast.ExprConstFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 335, - EndLine: 335, - StartPos: 5559, - EndPos: 5562, - }, - }, - Const: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 335, - EndLine: 335, - StartPos: 5559, - EndPos: 5562, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 335, - EndLine: 335, - StartPos: 5559, - EndPos: 5562, - }, - }, - Value: []byte("foo"), - }, - }, - }, - }, - Dim: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 335, - EndLine: 335, - StartPos: 5563, - EndPos: 5564, - }, - }, - Value: []byte("1"), - }, - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 335, - EndLine: 335, - StartPos: 5565, - EndPos: 5567, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 336, - EndLine: 336, - StartPos: 5569, - EndPos: 5577, - }, - }, - Expr: &ast.ExprFunctionCall{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 336, - EndLine: 336, - StartPos: 5569, - EndPos: 5576, - }, - }, - Function: &ast.ScalarString{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 336, - EndLine: 336, - StartPos: 5569, - EndPos: 5574, - }, - }, - Value: []byte("\"foo\""), - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 336, - EndLine: 336, - StartPos: 5574, - EndPos: 5576, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 337, - EndLine: 337, - StartPos: 5578, - EndPos: 5590, - }, - }, - Expr: &ast.ExprFunctionCall{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 337, - EndLine: 337, - StartPos: 5578, - EndPos: 5589, - }, - }, - Function: &ast.ExprArrayDimFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 337, - EndLine: 337, - StartPos: 5578, - EndPos: 5587, - }, - }, - Var: &ast.ExprShortArray{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 337, - EndLine: 337, - StartPos: 5578, - EndPos: 5581, - }, - }, - Items: []ast.Vertex{ - &ast.ExprArrayItem{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 337, - EndLine: 337, - StartPos: 5579, - EndPos: 5580, - }, - }, - Val: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 337, - EndLine: 337, - StartPos: 5579, - EndPos: 5580, - }, - }, - Value: []byte("1"), - }, - }, - }, - }, - Dim: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 337, - EndLine: 337, - StartPos: 5582, - EndPos: 5586, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 337, - EndLine: 337, - StartPos: 5582, - EndPos: 5586, - }, - }, - Value: []byte("$foo"), - }, - }, - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 337, - EndLine: 337, - StartPos: 5587, - EndPos: 5589, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 338, - EndLine: 338, - StartPos: 5591, - EndPos: 5600, - }, - }, - Expr: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 338, - EndLine: 338, - StartPos: 5591, - EndPos: 5599, - }, - }, - VarName: &ast.ExprFunctionCall{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 338, - EndLine: 338, - StartPos: 5593, - EndPos: 5598, - }, - }, - Function: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 338, - EndLine: 338, - StartPos: 5593, - EndPos: 5596, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 338, - EndLine: 338, - StartPos: 5593, - EndPos: 5596, - }, - }, - Value: []byte("foo"), - }, - }, - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 338, - EndLine: 338, - StartPos: 5596, - EndPos: 5598, - }, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 340, - EndLine: 340, - StartPos: 5602, - EndPos: 5614, - }, - }, - Expr: &ast.ExprStaticCall{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 340, - EndLine: 340, - StartPos: 5602, - EndPos: 5613, - }, - }, - Class: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 340, - EndLine: 340, - StartPos: 5602, - EndPos: 5605, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 340, - EndLine: 340, - StartPos: 5602, - EndPos: 5605, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - Call: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 340, - EndLine: 340, - StartPos: 5607, - EndPos: 5611, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 340, - EndLine: 340, - StartPos: 5607, - EndPos: 5611, - }, - }, - Value: []byte("$bar"), - }, - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 340, - EndLine: 340, - StartPos: 5611, - EndPos: 5613, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 341, - EndLine: 341, - StartPos: 5615, - EndPos: 5632, - }, - }, - Expr: &ast.ExprStaticCall{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 341, - EndLine: 341, - StartPos: 5615, - EndPos: 5631, - }, - }, - Class: &ast.NameName{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 341, - EndLine: 341, - StartPos: 5615, - EndPos: 5618, - }, - }, - Parts: []ast.Vertex{ - &ast.NameNamePart{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 341, - EndLine: 341, - StartPos: 5615, - EndPos: 5618, - }, - }, - Value: []byte("Foo"), - }, - }, - }, - Call: &ast.ExprArrayDimFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 341, - EndLine: 341, - StartPos: 5621, - EndPos: 5628, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 341, - EndLine: 341, - StartPos: 5621, - EndPos: 5625, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 341, - EndLine: 341, - StartPos: 5621, - EndPos: 5625, - }, - }, - Value: []byte("$bar"), - }, - }, - Dim: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 341, - EndLine: 341, - StartPos: 5626, - EndPos: 5627, - }, - }, - Value: []byte("0"), - }, - }, - ArgumentList: &ast.ArgumentList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 341, - EndLine: 341, - StartPos: 5629, - EndPos: 5631, - }, - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 343, - EndLine: 343, - StartPos: 5634, - EndPos: 5645, - }, - }, - Expr: &ast.ExprPropertyFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 343, - EndLine: 343, - StartPos: 5634, - EndPos: 5644, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 343, - EndLine: 343, - StartPos: 5634, - EndPos: 5638, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 343, - EndLine: 343, - StartPos: 5634, - EndPos: 5638, - }, - }, - Value: []byte("$foo"), - }, - }, - Property: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 343, - EndLine: 343, - StartPos: 5640, - EndPos: 5644, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 343, - EndLine: 343, - StartPos: 5640, - EndPos: 5644, - }, - }, - Value: []byte("$bar"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 344, - EndLine: 344, - StartPos: 5646, - EndPos: 5662, - }, - }, - Expr: &ast.ExprPropertyFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 344, - EndLine: 344, - StartPos: 5646, - EndPos: 5660, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 344, - EndLine: 344, - StartPos: 5646, - EndPos: 5650, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 344, - EndLine: 344, - StartPos: 5646, - EndPos: 5650, - }, - }, - Value: []byte("$foo"), - }, - }, - Property: &ast.ExprArrayDimFetch{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 344, - EndLine: 344, - StartPos: 5653, - EndPos: 5660, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 344, - EndLine: 344, - StartPos: 5653, - EndPos: 5657, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 344, - EndLine: 344, - StartPos: 5653, - EndPos: 5657, - }, - }, - Value: []byte("$bar"), - }, - }, - Dim: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 344, - EndLine: 344, - StartPos: 5658, - EndPos: 5659, - }, - }, - Value: []byte("0"), - }, - }, - }, - }, - &ast.StmtExpression{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 346, - EndLine: 346, - StartPos: 5664, - EndPos: 5686, - }, - }, - Expr: &ast.ExprShortArray{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 346, - EndLine: 346, - StartPos: 5664, - EndPos: 5685, - }, - }, - Items: []ast.Vertex{ - &ast.ExprArrayItem{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 346, - EndLine: 346, - StartPos: 5665, - EndPos: 5671, - }, - }, - Key: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 346, - EndLine: 346, - StartPos: 5665, - EndPos: 5666, - }, - }, - Value: []byte("1"), - }, - Val: &ast.ExprReference{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 346, - EndLine: 346, - StartPos: 5668, - EndPos: 5671, - }, - }, - Var: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 346, - EndLine: 346, - StartPos: 5669, - EndPos: 5671, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 346, - EndLine: 346, - StartPos: 5669, - EndPos: 5671, - }, - }, - Value: []byte("$a"), - }, - }, - }, - }, - &ast.ExprArrayItem{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 346, - EndLine: 346, - StartPos: 5673, - EndPos: 5684, - }, - }, - Key: &ast.ScalarLnumber{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 346, - EndLine: 346, - StartPos: 5673, - EndPos: 5674, - }, - }, - Value: []byte("2"), - }, - Val: &ast.ExprList{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 346, - EndLine: 346, - StartPos: 5676, - EndPos: 5684, - }, - }, - Items: []ast.Vertex{ - &ast.ExprArrayItem{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 346, - EndLine: 346, - StartPos: 5681, - EndPos: 5683, - }, - }, - Val: &ast.ExprVariable{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 346, - EndLine: 346, - StartPos: 5681, - EndPos: 5683, - }, - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 346, - EndLine: 346, - StartPos: 5681, - EndPos: 5683, - }, - }, - Value: []byte("$b"), - }, - }, - }, - }, - }, - }, - }, - }, - }, - &ast.StmtHaltCompiler{ - Node: ast.Node{ - Position: &position.Position{ - StartLine: 348, - EndLine: 348, - StartPos: 5688, - EndPos: 5706, - }, - }, - }, - }, - } - - lexer := scanner.NewLexer(src, "7.4", nil) - php7parser := php7.NewParser(lexer, nil) - php7parser.Parse() - actual := php7parser.GetRootNode() - traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual) - traverser.NewDFS(new(visitor.FilterTokens)).Traverse(actual) - assert.DeepEqual(t, expected, actual) -} - -func TestPhp5Strings(t *testing.T) { - src := `