com php-src: Fixed bug #72395 (list() regression): NEWS Zend/tests/bug72395.phpt Zend/zend_language_parser.y

From: 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:

« previous php.cvs (#92369) next »