]> granicus.if.org Git - php/commitdiff
Allow arrays + object access for new expressions
authorNikita Popov <nikic@php.net>
Fri, 30 May 2014 22:37:03 +0000 (00:37 +0200)
committerNikita Popov <nikic@php.net>
Fri, 30 May 2014 22:37:03 +0000 (00:37 +0200)
Zend/zend_language_parser.y

index 1b2026359c4fa567ec5bbd1a3eb420035ff6dbc5..04455cac9ee89de96222fe8836aa17cae6aa672e 100644 (file)
@@ -902,7 +902,7 @@ class_name_reference:
 
 
 dynamic_class_name_reference:
-               simple_variable                 { zend_do_begin_variable_parse(TSRMLS_C); fetch_simple_variable(&$$, &$1, 1 TSRMLS_CC); }
+               new_variable { $$ = $1; }
 ;
 
 exit_expr:
@@ -1104,6 +1104,15 @@ static_member:
 
 ;
 
+new_variable:
+               simple_variable
+                       { zend_do_begin_variable_parse(TSRMLS_C);
+                         fetch_simple_variable(&$$, &$1, 1 TSRMLS_CC); }
+       |       new_variable '[' dim_offset ']' { fetch_array_dim(&$$, &$1, &$3 TSRMLS_CC); }
+       |       new_variable '{' expr '}' { fetch_string_offset(&$$, &$1, &$3 TSRMLS_CC); }
+       |       new_variable T_OBJECT_OPERATOR object_member
+                       { zend_do_fetch_property(&$$, &$1, &$3 TSRMLS_CC); }
+;
 
 dim_offset:
                /* empty */             { $$.op_type = IS_UNUSED; }