Skip to content

Commit 893a5bc

Browse files
committed
Fix nikic#741 incorrect varvar positions
1 parent bec74ac commit 893a5bc

File tree

3 files changed

+352
-345
lines changed

3 files changed

+352
-345
lines changed

grammar/php7.y

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,7 @@ non_empty_global_var_list:
601601
;
602602

603603
global_var:
604-
simple_variable { $$ = Expr\Variable[$1]; }
604+
simple_variable { $$ = $1; }
605605
;
606606

607607
static_var_list:
@@ -1007,7 +1007,7 @@ callable_expr:
10071007
;
10081008

10091009
callable_variable:
1010-
simple_variable { $$ = Expr\Variable[$1]; }
1010+
simple_variable { $$ = $1; }
10111011
| array_object_dereferencable '[' optional_expr ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
10121012
| array_object_dereferencable '{' expr '}' { $$ = Expr\ArrayDimFetch[$1, $3]; }
10131013
| function_call { $$ = $1; }
@@ -1032,15 +1032,15 @@ variable:
10321032
;
10331033

10341034
simple_variable:
1035-
T_VARIABLE { $$ = parseVar($1); }
1036-
| '$' '{' expr '}' { $$ = $3; }
1035+
plain_variable { $$ = $1; }
1036+
| '$' '{' expr '}' { $$ = Expr\Variable[$3]; }
10371037
| '$' simple_variable { $$ = Expr\Variable[$2]; }
1038-
| '$' error { $$ = Expr\Error[]; $this->errorState = 2; }
1038+
| '$' error { $$ = Expr\Variable[Expr\Error[]]; $this->errorState = 2; }
10391039
;
10401040

10411041
static_member_prop_name:
10421042
simple_variable
1043-
{ $var = $1; $$ = \is_string($var) ? Node\VarLikeIdentifier[$var] : $var; }
1043+
{ $var = $1->name; $$ = \is_string($var) ? Node\VarLikeIdentifier[$var] : $var; }
10441044
;
10451045

10461046
static_member:
@@ -1049,7 +1049,7 @@ static_member:
10491049
;
10501050

10511051
new_variable:
1052-
simple_variable { $$ = Expr\Variable[$1]; }
1052+
simple_variable { $$ = $1; }
10531053
| new_variable '[' optional_expr ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
10541054
| new_variable '{' expr '}' { $$ = Expr\ArrayDimFetch[$1, $3]; }
10551055
| new_variable T_OBJECT_OPERATOR property_name { $$ = Expr\PropertyFetch[$1, $3]; }
@@ -1063,13 +1063,13 @@ new_variable:
10631063
member_name:
10641064
identifier_ex { $$ = $1; }
10651065
| '{' expr '}' { $$ = $2; }
1066-
| simple_variable { $$ = Expr\Variable[$1]; }
1066+
| simple_variable { $$ = $1; }
10671067
;
10681068

10691069
property_name:
10701070
identifier { $$ = $1; }
10711071
| '{' expr '}' { $$ = $2; }
1072-
| simple_variable { $$ = Expr\Variable[$1]; }
1072+
| simple_variable { $$ = $1; }
10731073
| error { $$ = Expr\Error[]; $this->errorState = 2; }
10741074
;
10751075

0 commit comments

Comments
 (0)