php5 test coverage
This commit is contained in:
parent
75f952ad03
commit
30b6533864
74
diff
74
diff
@ -434,51 +434,88 @@
|
|||||||
434
|
434
|
||||||
435
|
435
|
||||||
436
|
436
|
||||||
|
-437
|
||||||
438
|
438
|
||||||
439
|
439
|
||||||
440
|
440
|
||||||
441
|
441
|
||||||
|
-442
|
||||||
443
|
443
|
||||||
444
|
444
|
||||||
|
-445
|
||||||
|
-446
|
||||||
|
-447
|
||||||
448
|
448
|
||||||
|
-449
|
||||||
450
|
450
|
||||||
|
-451
|
||||||
|
-452
|
||||||
|
-453
|
||||||
454
|
454
|
||||||
455
|
455
|
||||||
|
-456
|
||||||
457
|
457
|
||||||
458
|
458
|
||||||
|
-459
|
||||||
460
|
460
|
||||||
|
-461
|
||||||
|
-463
|
||||||
|
-464
|
||||||
462
|
462
|
||||||
465
|
465
|
||||||
|
-466
|
||||||
467
|
467
|
||||||
468
|
468
|
||||||
469
|
469
|
||||||
470
|
470
|
||||||
471
|
471
|
||||||
|
-472
|
||||||
473
|
473
|
||||||
474
|
474
|
||||||
|
-475
|
||||||
476
|
476
|
||||||
477
|
477
|
||||||
478
|
478
|
||||||
|
-479
|
||||||
|
-480
|
||||||
|
-481
|
||||||
482
|
482
|
||||||
483
|
483
|
||||||
|
-484
|
||||||
485
|
485
|
||||||
|
-486
|
||||||
|
-487
|
||||||
488
|
488
|
||||||
489
|
489
|
||||||
490
|
490
|
||||||
|
-491
|
||||||
492
|
492
|
||||||
493
|
493
|
||||||
|
-494
|
||||||
|
-495
|
||||||
496
|
496
|
||||||
497
|
497
|
||||||
|
-498
|
||||||
499
|
499
|
||||||
|
-500
|
||||||
|
-501
|
||||||
503
|
503
|
||||||
|
-502
|
||||||
505
|
505
|
||||||
|
-504
|
||||||
506
|
506
|
||||||
|
-507
|
||||||
508
|
508
|
||||||
509
|
509
|
||||||
510
|
510
|
||||||
511
|
511
|
||||||
|
-512
|
||||||
|
-513
|
||||||
|
-514
|
||||||
|
-515
|
||||||
516
|
516
|
||||||
517
|
517
|
||||||
|
-518
|
||||||
519
|
519
|
||||||
520
|
520
|
||||||
521
|
521
|
||||||
@ -490,41 +527,4 @@
|
|||||||
528
|
528
|
||||||
|
|
||||||
|
|
||||||
-437
|
|
||||||
-442
|
|
||||||
-445
|
|
||||||
-446
|
|
||||||
-447
|
|
||||||
-449
|
|
||||||
-451
|
|
||||||
-452
|
|
||||||
-453
|
|
||||||
-456
|
|
||||||
-459
|
|
||||||
-461
|
|
||||||
-463
|
|
||||||
-464
|
|
||||||
-466
|
|
||||||
-472
|
|
||||||
-475
|
|
||||||
-479
|
|
||||||
-480
|
|
||||||
-481
|
|
||||||
-484
|
|
||||||
-486
|
|
||||||
-487
|
|
||||||
-491
|
|
||||||
-494
|
|
||||||
-495
|
|
||||||
-498
|
|
||||||
-500
|
|
||||||
-501
|
|
||||||
-502
|
|
||||||
-504
|
|
||||||
-507
|
|
||||||
-512
|
|
||||||
-513
|
|
||||||
-514
|
|
||||||
-515
|
|
||||||
-518
|
|
||||||
-527
|
-527
|
@ -14,6 +14,29 @@ import (
|
|||||||
"github.com/z7zmey/php-parser/php7"
|
"github.com/z7zmey/php-parser/php7"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func TestEmptyList(t *testing.T) {
|
||||||
|
src := `<? list() = $b;`
|
||||||
|
|
||||||
|
expected := &stmt.StmtList{
|
||||||
|
Stmts: []node.Node{
|
||||||
|
&stmt.Expression{
|
||||||
|
Expr: &assign_op.Assign{
|
||||||
|
Variable: &expr.List{
|
||||||
|
Items: []node.Node{},
|
||||||
|
},
|
||||||
|
Expression: &expr.Variable{VarName: &node.Identifier{Value: "$b"}},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
actual, _, _ := php7.Parse(bytes.NewBufferString(src), "test.php")
|
||||||
|
assertEqual(t, expected, actual)
|
||||||
|
|
||||||
|
actual, _, _ = php5.Parse(bytes.NewBufferString(src), "test.php")
|
||||||
|
assertEqual(t, expected, actual)
|
||||||
|
}
|
||||||
|
|
||||||
func TestList(t *testing.T) {
|
func TestList(t *testing.T) {
|
||||||
src := `<? list($a) = $b;`
|
src := `<? list($a) = $b;`
|
||||||
|
|
||||||
|
374
php5/php5.go
374
php5/php5.go
File diff suppressed because it is too large
Load Diff
@ -3432,7 +3432,13 @@ assignment_list:
|
|||||||
assignment_list ',' assignment_list_element
|
assignment_list ',' assignment_list_element
|
||||||
{ fmt.Println("487"); $$ = append($1, $3) }
|
{ fmt.Println("487"); $$ = append($1, $3) }
|
||||||
| assignment_list_element
|
| assignment_list_element
|
||||||
{ fmt.Println("488"); $$ = []node.Node{$1} }
|
{
|
||||||
|
if $1 == nil {
|
||||||
|
$$ = []node.Node{}
|
||||||
|
} else {
|
||||||
|
fmt.Println("488"); $$ = []node.Node{$1}
|
||||||
|
}
|
||||||
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
|
@ -86,6 +86,11 @@ CAD;
|
|||||||
__TRAIT__;
|
__TRAIT__;
|
||||||
|
|
||||||
"test $var";
|
"test $var";
|
||||||
|
"test $var[1]";
|
||||||
|
"test $var[1234567890123456789012345678901234567890]";
|
||||||
|
"test $var[bar]";
|
||||||
|
"test $var[$bar]";
|
||||||
|
"$foo $bar";
|
||||||
"test $foo->bar()";
|
"test $foo->bar()";
|
||||||
"test ${foo}";
|
"test ${foo}";
|
||||||
"test ${foo[0]}";
|
"test ${foo[0]}";
|
||||||
@ -221,6 +226,8 @@ CAD;
|
|||||||
array();
|
array();
|
||||||
array(1);
|
array(1);
|
||||||
array(1=>1, &$b,);
|
array(1=>1, &$b,);
|
||||||
|
array(3 =>&$b);
|
||||||
|
array(&$b, 1=>1, 1, 3 =>&$b);
|
||||||
~$a;
|
~$a;
|
||||||
!$a;
|
!$a;
|
||||||
|
|
||||||
@ -236,6 +243,7 @@ CAD;
|
|||||||
\foo;
|
\foo;
|
||||||
|
|
||||||
empty($a);
|
empty($a);
|
||||||
|
empty(Foo);
|
||||||
@$a;
|
@$a;
|
||||||
eval($a);
|
eval($a);
|
||||||
exit;
|
exit;
|
||||||
@ -262,7 +270,9 @@ CAD;
|
|||||||
$a instanceof \Foo;
|
$a instanceof \Foo;
|
||||||
|
|
||||||
isset($a, $b);
|
isset($a, $b);
|
||||||
list($a) = $b;
|
isset(Foo);
|
||||||
|
list() = $b;
|
||||||
|
list($a, $b) = $b;
|
||||||
list($a[]) = $b;
|
list($a[]) = $b;
|
||||||
list(list($a)) = $b;
|
list(list($a)) = $b;
|
||||||
|
|
||||||
@ -272,6 +282,9 @@ CAD;
|
|||||||
new \Foo();
|
new \Foo();
|
||||||
print($a);
|
print($a);
|
||||||
$a->foo;
|
$a->foo;
|
||||||
|
$a->foo[1];
|
||||||
|
$a->foo->bar->baz()->quux[0];
|
||||||
|
$a->foo()[1][1];
|
||||||
` + "`cmd $a`;" + `
|
` + "`cmd $a`;" + `
|
||||||
` + "`cmd`;" + `
|
` + "`cmd`;" + `
|
||||||
` + "``;" + `
|
` + "``;" + `
|
||||||
@ -294,6 +307,7 @@ CAD;
|
|||||||
-$a;
|
-$a;
|
||||||
+$a;
|
+$a;
|
||||||
$$a;
|
$$a;
|
||||||
|
$$$a;
|
||||||
yield;
|
yield;
|
||||||
yield $a;
|
yield $a;
|
||||||
yield $a => $b;
|
yield $a => $b;
|
||||||
@ -366,6 +380,7 @@ CAD;
|
|||||||
static::foo;
|
static::foo;
|
||||||
|
|
||||||
new $foo;
|
new $foo;
|
||||||
|
new $foo::$bar;
|
||||||
new $a->b[0];
|
new $a->b[0];
|
||||||
new $a->b{$b ?: null}->$c->d[0];static $a = [1][0];
|
new $a->b{$b ?: null}->$c->d[0];static $a = [1][0];
|
||||||
|
|
||||||
@ -410,6 +425,16 @@ CAD;
|
|||||||
static $a = array();
|
static $a = array();
|
||||||
static $a = array(1 => 1, 2);
|
static $a = array(1 => 1, 2);
|
||||||
static $a = [1, 2 => 2][0];
|
static $a = [1, 2 => 2][0];
|
||||||
|
|
||||||
|
if (yield 1) {}
|
||||||
|
Foo::$$bar;
|
||||||
|
|
||||||
|
$foo();
|
||||||
|
$foo()[0][0];
|
||||||
|
$a{$b};
|
||||||
|
${$a};
|
||||||
|
$foo::{$bar}();
|
||||||
|
$foo::bar;
|
||||||
`
|
`
|
||||||
|
|
||||||
expectedParams := []node.Node{
|
expectedParams := []node.Node{
|
||||||
@ -611,6 +636,59 @@ CAD;
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
&stmt.Expression{
|
||||||
|
Expr: &scalar.Encapsed{
|
||||||
|
Parts: []node.Node{
|
||||||
|
&scalar.EncapsedStringPart{Value: "test "},
|
||||||
|
&expr.ArrayDimFetch{
|
||||||
|
Variable: &expr.Variable{VarName: &node.Identifier{Value: "$var"}},
|
||||||
|
Dim: &scalar.Lnumber{Value: "1"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&stmt.Expression{
|
||||||
|
Expr: &scalar.Encapsed{
|
||||||
|
Parts: []node.Node{
|
||||||
|
&scalar.EncapsedStringPart{Value: "test "},
|
||||||
|
&expr.ArrayDimFetch{
|
||||||
|
Variable: &expr.Variable{VarName: &node.Identifier{Value: "$var"}},
|
||||||
|
Dim: &scalar.String{Value: "1234567890123456789012345678901234567890"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&stmt.Expression{
|
||||||
|
Expr: &scalar.Encapsed{
|
||||||
|
Parts: []node.Node{
|
||||||
|
&scalar.EncapsedStringPart{Value: "test "},
|
||||||
|
&expr.ArrayDimFetch{
|
||||||
|
Variable: &expr.Variable{VarName: &node.Identifier{Value: "$var"}},
|
||||||
|
Dim: &scalar.String{Value: "bar"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&stmt.Expression{
|
||||||
|
Expr: &scalar.Encapsed{
|
||||||
|
Parts: []node.Node{
|
||||||
|
&scalar.EncapsedStringPart{Value: "test "},
|
||||||
|
&expr.ArrayDimFetch{
|
||||||
|
Variable: &expr.Variable{VarName: &node.Identifier{Value: "$var"}},
|
||||||
|
Dim: &expr.Variable{VarName: &node.Identifier{Value: "$bar"}},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&stmt.Expression{
|
||||||
|
Expr: &scalar.Encapsed{
|
||||||
|
Parts: []node.Node{
|
||||||
|
&expr.Variable{VarName: &node.Identifier{Value: "$foo"}},
|
||||||
|
&scalar.EncapsedStringPart{Value: " "},
|
||||||
|
&expr.Variable{VarName: &node.Identifier{Value: "$bar"}},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
&stmt.Expression{
|
&stmt.Expression{
|
||||||
Expr: &scalar.Encapsed{
|
Expr: &scalar.Encapsed{
|
||||||
Parts: []node.Node{
|
Parts: []node.Node{
|
||||||
@ -1860,6 +1938,41 @@ CAD;
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
&stmt.Expression{
|
||||||
|
Expr: &expr.Array{
|
||||||
|
Items: []node.Node{
|
||||||
|
&expr.ArrayItem{
|
||||||
|
ByRef: true,
|
||||||
|
Key: &scalar.Lnumber{Value: "3"},
|
||||||
|
Val: &expr.Variable{VarName: &node.Identifier{Value: "$b"}},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&stmt.Expression{
|
||||||
|
Expr: &expr.Array{
|
||||||
|
Items: []node.Node{
|
||||||
|
&expr.ArrayItem{
|
||||||
|
ByRef: true,
|
||||||
|
Val: &expr.Variable{VarName: &node.Identifier{Value: "$b"}},
|
||||||
|
},
|
||||||
|
&expr.ArrayItem{
|
||||||
|
ByRef: false,
|
||||||
|
Key: &scalar.Lnumber{Value: "1"},
|
||||||
|
Val: &scalar.Lnumber{Value: "1"},
|
||||||
|
},
|
||||||
|
&expr.ArrayItem{
|
||||||
|
ByRef: false,
|
||||||
|
Val: &scalar.Lnumber{Value: "1"},
|
||||||
|
},
|
||||||
|
&expr.ArrayItem{
|
||||||
|
ByRef: true,
|
||||||
|
Key: &scalar.Lnumber{Value: "3"},
|
||||||
|
Val: &expr.Variable{VarName: &node.Identifier{Value: "$b"}},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
&stmt.Expression{
|
&stmt.Expression{
|
||||||
Expr: &expr.BitwiseNot{
|
Expr: &expr.BitwiseNot{
|
||||||
Expr: &expr.Variable{VarName: &node.Identifier{Value: "$a"}},
|
Expr: &expr.Variable{VarName: &node.Identifier{Value: "$a"}},
|
||||||
@ -1988,6 +2101,13 @@ CAD;
|
|||||||
Expr: &expr.Variable{VarName: &node.Identifier{Value: "$a"}},
|
Expr: &expr.Variable{VarName: &node.Identifier{Value: "$a"}},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
&stmt.Expression{
|
||||||
|
Expr: &expr.Empty{
|
||||||
|
Expr: &expr.ConstFetch{
|
||||||
|
Constant: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
&stmt.Expression{
|
&stmt.Expression{
|
||||||
Expr: &expr.ErrorSuppress{
|
Expr: &expr.ErrorSuppress{
|
||||||
Expr: &expr.Variable{VarName: &node.Identifier{Value: "$a"}},
|
Expr: &expr.Variable{VarName: &node.Identifier{Value: "$a"}},
|
||||||
@ -2156,6 +2276,23 @@ CAD;
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
&stmt.Expression{
|
||||||
|
Expr: &expr.Isset{
|
||||||
|
Variables: []node.Node{
|
||||||
|
&expr.ConstFetch{
|
||||||
|
Constant: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&stmt.Expression{
|
||||||
|
Expr: &assign_op.Assign{
|
||||||
|
Variable: &expr.List{
|
||||||
|
Items: []node.Node{},
|
||||||
|
},
|
||||||
|
Expression: &expr.Variable{VarName: &node.Identifier{Value: "$b"}},
|
||||||
|
},
|
||||||
|
},
|
||||||
&stmt.Expression{
|
&stmt.Expression{
|
||||||
Expr: &assign_op.Assign{
|
Expr: &assign_op.Assign{
|
||||||
Variable: &expr.List{
|
Variable: &expr.List{
|
||||||
@ -2164,6 +2301,10 @@ CAD;
|
|||||||
ByRef: false,
|
ByRef: false,
|
||||||
Val: &expr.Variable{VarName: &node.Identifier{Value: "$a"}},
|
Val: &expr.Variable{VarName: &node.Identifier{Value: "$a"}},
|
||||||
},
|
},
|
||||||
|
&expr.ArrayItem{
|
||||||
|
ByRef: false,
|
||||||
|
Val: &expr.Variable{VarName: &node.Identifier{Value: "$b"}},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Expression: &expr.Variable{VarName: &node.Identifier{Value: "$b"}},
|
Expression: &expr.Variable{VarName: &node.Identifier{Value: "$b"}},
|
||||||
@ -2251,6 +2392,47 @@ CAD;
|
|||||||
Property: &node.Identifier{Value: "foo"},
|
Property: &node.Identifier{Value: "foo"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
&stmt.Expression{
|
||||||
|
Expr: &expr.ArrayDimFetch{
|
||||||
|
Variable: &expr.PropertyFetch{
|
||||||
|
Variable: &expr.Variable{VarName: &node.Identifier{Value: "$a"}},
|
||||||
|
Property: &node.Identifier{Value: "foo"},
|
||||||
|
},
|
||||||
|
Dim: &scalar.Lnumber{Value: "1"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&stmt.Expression{
|
||||||
|
Expr: &expr.ArrayDimFetch{
|
||||||
|
Variable: &expr.PropertyFetch{
|
||||||
|
Variable: &expr.MethodCall{
|
||||||
|
Variable: &expr.PropertyFetch{
|
||||||
|
Variable: &expr.PropertyFetch{
|
||||||
|
Variable: &expr.Variable{VarName: &node.Identifier{Value: "$a"}},
|
||||||
|
Property: &node.Identifier{Value: "foo"},
|
||||||
|
},
|
||||||
|
Property: &node.Identifier{Value: "bar"},
|
||||||
|
},
|
||||||
|
Method: &node.Identifier{Value: "baz"},
|
||||||
|
Arguments: []node.Node{},
|
||||||
|
},
|
||||||
|
Property: &node.Identifier{Value: "quux"},
|
||||||
|
},
|
||||||
|
Dim: &scalar.Lnumber{Value: "0"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&stmt.Expression{
|
||||||
|
Expr: &expr.ArrayDimFetch{
|
||||||
|
Variable: &expr.ArrayDimFetch{
|
||||||
|
Variable: &expr.MethodCall{
|
||||||
|
Variable: &expr.Variable{VarName: &node.Identifier{Value: "$a"}},
|
||||||
|
Method: &node.Identifier{Value: "foo"},
|
||||||
|
Arguments: []node.Node{},
|
||||||
|
},
|
||||||
|
Dim: &scalar.Lnumber{Value: "1"},
|
||||||
|
},
|
||||||
|
Dim: &scalar.Lnumber{Value: "1"},
|
||||||
|
},
|
||||||
|
},
|
||||||
&stmt.Expression{
|
&stmt.Expression{
|
||||||
Expr: &expr.ShellExec{
|
Expr: &expr.ShellExec{
|
||||||
Parts: []node.Node{
|
Parts: []node.Node{
|
||||||
@ -2430,6 +2612,9 @@ CAD;
|
|||||||
&stmt.Expression{
|
&stmt.Expression{
|
||||||
Expr: &expr.Variable{VarName: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}},
|
Expr: &expr.Variable{VarName: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}},
|
||||||
},
|
},
|
||||||
|
&stmt.Expression{
|
||||||
|
Expr: &expr.Variable{VarName: &expr.Variable{VarName: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}}},
|
||||||
|
},
|
||||||
&stmt.Expression{
|
&stmt.Expression{
|
||||||
Expr: &expr.Yield{},
|
Expr: &expr.Yield{},
|
||||||
},
|
},
|
||||||
@ -2896,6 +3081,14 @@ CAD;
|
|||||||
Class: &expr.Variable{VarName: &node.Identifier{Value: "$foo"}},
|
Class: &expr.Variable{VarName: &node.Identifier{Value: "$foo"}},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
&stmt.Expression{
|
||||||
|
Expr: &expr.New{
|
||||||
|
Class: &expr.StaticPropertyFetch{
|
||||||
|
Class: &expr.Variable{VarName: &node.Identifier{Value: "$foo"}},
|
||||||
|
Property: &expr.Variable{VarName: &node.Identifier{Value: "$bar"}},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
&stmt.Expression{
|
&stmt.Expression{
|
||||||
Expr: &expr.New{
|
Expr: &expr.New{
|
||||||
Class: &expr.ArrayDimFetch{
|
Class: &expr.ArrayDimFetch{
|
||||||
@ -3408,7 +3601,6 @@ CAD;
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
&stmt.Static{
|
&stmt.Static{
|
||||||
Vars: []node.Node{
|
Vars: []node.Node{
|
||||||
&stmt.StaticVar{
|
&stmt.StaticVar{
|
||||||
@ -3432,6 +3624,60 @@ CAD;
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
&stmt.If{
|
||||||
|
Cond: &expr.Yield{
|
||||||
|
Value: &scalar.Lnumber{Value: "1"},
|
||||||
|
},
|
||||||
|
Stmt: &stmt.StmtList{
|
||||||
|
Stmts: []node.Node{},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&stmt.Expression{
|
||||||
|
Expr: &expr.StaticPropertyFetch{
|
||||||
|
Class: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
|
||||||
|
Property: &expr.Variable{VarName: &expr.Variable{VarName: &node.Identifier{Value: "$bar"}}},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&stmt.Expression{
|
||||||
|
Expr: &expr.FunctionCall{
|
||||||
|
Function: &expr.Variable{VarName: &node.Identifier{Value: "$foo"}},
|
||||||
|
Arguments: []node.Node{},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&stmt.Expression{
|
||||||
|
Expr: &expr.ArrayDimFetch{
|
||||||
|
Variable: &expr.ArrayDimFetch{
|
||||||
|
Variable: &expr.FunctionCall{
|
||||||
|
Function: &expr.Variable{VarName: &node.Identifier{Value: "$foo"}},
|
||||||
|
Arguments: []node.Node{},
|
||||||
|
},
|
||||||
|
Dim: &scalar.Lnumber{Value: "0"},
|
||||||
|
},
|
||||||
|
Dim: &scalar.Lnumber{Value: "0"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&stmt.Expression{
|
||||||
|
Expr: &expr.ArrayDimFetch{
|
||||||
|
Variable: &expr.Variable{VarName: &node.Identifier{Value: "$a"}},
|
||||||
|
Dim: &expr.Variable{VarName: &node.Identifier{Value: "$b"}},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&stmt.Expression{
|
||||||
|
Expr: &expr.Variable{VarName: &expr.Variable{VarName: &node.Identifier{Value: "$a"}}},
|
||||||
|
},
|
||||||
|
&stmt.Expression{
|
||||||
|
Expr: &expr.StaticCall{
|
||||||
|
Class: &expr.Variable{VarName: &node.Identifier{Value: "$foo"}},
|
||||||
|
Call: &expr.Variable{VarName: &node.Identifier{Value: "$bar"}},
|
||||||
|
Arguments: []node.Node{},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&stmt.Expression{
|
||||||
|
Expr: &expr.ClassConstFetch{
|
||||||
|
Class: &expr.Variable{VarName: &node.Identifier{Value: "$foo"}},
|
||||||
|
ConstantName: &node.Identifier{Value: "bar"},
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user