com php-src: Fixed bug #72395 (list() regression): NEWS Zend/tests/bug72395.phpt Zend/zend_language_parser.y
| From: | Xinchen Hui | Date: | Mon, 13 Jun 2016 16:21:14 +0000 |
| Subject: | com php-src: Fixed bug #72395 (list() regression): NEWS Zend/tests/bug72395.phpt Zend/zend_language_parser.y | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-92369@lists.php.net to get a copy of this message | ||
Commit: dcd1c29f793e36c4595257644857809d2250ec49
Author: Xinchen Hui <laruence@gmail.com> Mon, 13 Jun 2016 09:21:14 -0700
Parents: 1cca3eb7c8e3623f60f3e5019ef29f2eca55ab5d
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=dcd1c29f793e36c4595257644857809d2250ec49
Log:
Fixed bug #72395 (list() regression)
Bugs:
https://bugs.php.net/72395
Changed paths:
M NEWS
A Zend/tests/bug72395.phpt
M Zend/zend_language_parser.y
Diff:
diff --git a/NEWS b/NEWS
index e67720a..88dac1e 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,7 @@ PHP NEWS
?? ??? 2016, PHP 7.1.0alpha2
- Core:
+ . Fixed bug #72395 (list() regression). (Laruence)
. Fixed bug #72373 (TypeError after Generator function w/declared return type
finishes). (Nikita)
diff --git a/Zend/tests/bug72395.phpt b/Zend/tests/bug72395.phpt
new file mode 100644
index 0000000..e89ecdd
--- /dev/null
+++ b/Zend/tests/bug72395.phpt
@@ -0,0 +1,10 @@
+--TEST--
+Bug #72395 (list() regression)
+--FILE--
+<?php
+list(,,$a,,$b,) = array(1, 2, 3, 4, 5, 6);
+var_dump($a, $b);
+?>
+--EXPECT--
+int(3)
+int(5)
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y
index 44c5cfb..c37bd7f 100644
--- a/Zend/zend_language_parser.y
+++ b/Zend/zend_language_parser.y
@@ -250,7 +250,7 @@ static YYSIZE_T zend_yytnamerr(char*, const char*);
%type <ast> class_const_list class_const_decl name_list trait_adaptations method_body
non_empty_for_exprs
%type <ast> ctor_arguments alt_if_stmt_without_else trait_adaptation_list lexical_vars
%type <ast> lexical_var_list encaps_list
-%type <ast> array_pair non_empty_array_pair_list array_pair_list
+%type <ast> array_pair non_empty_array_pair_list array_pair_list possible_array_pair
%type <ast> isset_variable type return_type type_expr
%type <ast> identifier
@@ -1183,21 +1183,19 @@ property_name:
;
array_pair_list:
- /* empty */ { $$ = zend_ast_create_list(0, ZEND_AST_ARRAY); }
- | non_empty_array_pair_list { /* allow single trailing comma */ zend_ast_list *list =
zend_ast_get_list($$ = $1); if (list->child[list->children - 1] == NULL) {
list->children--; } }
+ non_empty_array_pair_list { /* allow single trailing comma */ zend_ast_list *list =
zend_ast_get_list($$ = $1); if (list->child[list->children - 1] == NULL) {
list->children--; } }
+;
+
+possible_array_pair:
+ /* empty */ { $$ = NULL; }
+ | array_pair { $$ = $1; }
;
non_empty_array_pair_list:
- non_empty_array_pair_list ',' array_pair
+ non_empty_array_pair_list ',' possible_array_pair
{ $$ = zend_ast_list_add($1, $3); }
- | array_pair
+ | possible_array_pair
{ $$ = zend_ast_create_list(1, ZEND_AST_ARRAY, $1); }
- | non_empty_array_pair_list ',' /* empty, for LHS array lists */
- { $$ = zend_ast_list_add($1, NULL); }
- | ','
- { $$ = zend_ast_create_list(1, ZEND_AST_ARRAY, NULL); }
- | ',' array_pair
- { $$ = zend_ast_create_list(2, ZEND_AST_ARRAY, NULL, $2); }
;
array_pair: