Skip to content

Commit 2be7838

Browse files
committed
Correctly assign attrs for encaps vars
1 parent f6eb341 commit 2be7838

File tree

4 files changed

+314
-296
lines changed

4 files changed

+314
-296
lines changed

grammar/php5.y

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -961,10 +961,14 @@ encaps_string_part:
961961
T_ENCAPSED_AND_WHITESPACE { $$ = Scalar\EncapsedStringPart[$1]; }
962962
;
963963

964-
encaps_var:
964+
encaps_base_var:
965965
T_VARIABLE { $$ = Expr\Variable[parseVar($1)]; }
966-
| T_VARIABLE '[' encaps_var_offset ']' { $$ = Expr\ArrayDimFetch[Expr\Variable[parseVar($1)], $3]; }
967-
| T_VARIABLE T_OBJECT_OPERATOR T_STRING { $$ = Expr\PropertyFetch[Expr\Variable[parseVar($1)], $3]; }
966+
;
967+
968+
encaps_var:
969+
encaps_base_var { $$ = $1; }
970+
| encaps_base_var '[' encaps_var_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
971+
| encaps_base_var T_OBJECT_OPERATOR T_STRING { $$ = Expr\PropertyFetch[$1, $3]; }
968972
| T_DOLLAR_OPEN_CURLY_BRACES expr '}' { $$ = Expr\Variable[$2]; }
969973
| T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '}' { $$ = Expr\Variable[$2]; }
970974
| T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr ']' '}'

grammar/php7.y

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -841,10 +841,14 @@ encaps_string_part:
841841
T_ENCAPSED_AND_WHITESPACE { $$ = Scalar\EncapsedStringPart[$1]; }
842842
;
843843

844-
encaps_var:
844+
encaps_base_var:
845845
T_VARIABLE { $$ = Expr\Variable[parseVar($1)]; }
846-
| T_VARIABLE '[' encaps_var_offset ']' { $$ = Expr\ArrayDimFetch[Expr\Variable[parseVar($1)], $3]; }
847-
| T_VARIABLE T_OBJECT_OPERATOR T_STRING { $$ = Expr\PropertyFetch[Expr\Variable[parseVar($1)], $3]; }
846+
;
847+
848+
encaps_var:
849+
encaps_base_var { $$ = $1; }
850+
| encaps_base_var '[' encaps_var_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
851+
| encaps_base_var T_OBJECT_OPERATOR T_STRING { $$ = Expr\PropertyFetch[$1, $3]; }
848852
| T_DOLLAR_OPEN_CURLY_BRACES expr '}' { $$ = Expr\Variable[$2]; }
849853
| T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '}' { $$ = Expr\Variable[$2]; }
850854
| T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr ']' '}'

0 commit comments

Comments
 (0)