Skip to content

Commit 9d44edf

Browse files
committed
Recover from error inside alternative array deref syntax
This is to improve error recovery for cases like nikic#545.
1 parent aa97a9b commit 9d44edf

File tree

3 files changed

+506
-441
lines changed

3 files changed

+506
-441
lines changed

grammar/php7.y

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -891,6 +891,7 @@ callable_variable:
891891
| dereferencable '[' optional_expr ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
892892
| constant '[' optional_expr ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
893893
| dereferencable '{' expr '}' { $$ = Expr\ArrayDimFetch[$1, $3]; }
894+
| dereferencable '{' error '}' { $$ = Expr\ArrayDimFetch[$1, new Expr\Error(stackAttributes(#3))]; }
894895
| function_call { $$ = $1; }
895896
| dereferencable T_OBJECT_OPERATOR property_name argument_list
896897
{ $$ = Expr\MethodCall[$1, $3, $4]; }

0 commit comments

Comments
 (0)