From c2d4b811868a5d43ed92ac6e56abb13803af1bda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=9D=A6=E7=B1=B3?= Date: Wed, 19 Oct 2022 00:45:59 +0800 Subject: [PATCH 1/4] Only arrays can be unpacked in constant expression --- Zend/zend_ast.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Zend/zend_ast.c b/Zend/zend_ast.c index 07cb9c5fbb7c0..7d8a2862031f5 100644 --- a/Zend/zend_ast.c +++ b/Zend/zend_ast.c @@ -476,7 +476,7 @@ static zend_result zend_ast_add_unpacked_element(zval *result, zval *expr) { } /* Objects or references cannot occur in a constant expression. */ - zend_throw_error(NULL, "Only arrays and Traversables can be unpacked"); + zend_throw_error(NULL, "Only arrays can be unpacked in constant expression"); return FAILURE; } From 6ed7e6ed9151be916bc4ea3732362271b1a170b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=9D=A6=E7=B1=B3?= Date: Wed, 19 Oct 2022 01:02:44 +0800 Subject: [PATCH 2/4] remove outdated comment --- Zend/zend_ast.c | 1 - 1 file changed, 1 deletion(-) diff --git a/Zend/zend_ast.c b/Zend/zend_ast.c index 7d8a2862031f5..0e5e5ebac1688 100644 --- a/Zend/zend_ast.c +++ b/Zend/zend_ast.c @@ -475,7 +475,6 @@ static zend_result zend_ast_add_unpacked_element(zval *result, zval *expr) { return SUCCESS; } - /* Objects or references cannot occur in a constant expression. */ zend_throw_error(NULL, "Only arrays can be unpacked in constant expression"); return FAILURE; } From b7bbddd254ad98e21dbc1ac5358b2f76a9a63a96 Mon Sep 17 00:00:00 2001 From: jhdxr Date: Thu, 17 Nov 2022 02:13:20 +0800 Subject: [PATCH 3/4] add test --- Zend/tests/array_unpack/gh9769.phpt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 Zend/tests/array_unpack/gh9769.phpt diff --git a/Zend/tests/array_unpack/gh9769.phpt b/Zend/tests/array_unpack/gh9769.phpt new file mode 100644 index 0000000000000..0a56b90f4322e --- /dev/null +++ b/Zend/tests/array_unpack/gh9769.phpt @@ -0,0 +1,15 @@ +--TEST-- +Unpacking arrays in constant expression +--FILE-- +1, 'b'=>2, 'c'=>3]]; +const C = [...new ArrayObject()]; + +?> +--EXPECTF-- +Fatal error: Uncaught Error: Only arrays can be unpacked in constant expression in %sgh9769.php:5 +Stack trace: +#0 {main} + thrown in %sgh9769.php on line 5 \ No newline at end of file From 9e403fe405550d8d1de359632fc0255960ce31cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=9D=A6=E7=B1=B3?= Date: Thu, 17 Nov 2022 23:32:33 +0800 Subject: [PATCH 4/4] add new line at EOF --- Zend/tests/array_unpack/gh9769.phpt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Zend/tests/array_unpack/gh9769.phpt b/Zend/tests/array_unpack/gh9769.phpt index 0a56b90f4322e..9eb8c6aea7689 100644 --- a/Zend/tests/array_unpack/gh9769.phpt +++ b/Zend/tests/array_unpack/gh9769.phpt @@ -12,4 +12,4 @@ const C = [...new ArrayObject()]; Fatal error: Uncaught Error: Only arrays can be unpacked in constant expression in %sgh9769.php:5 Stack trace: #0 {main} - thrown in %sgh9769.php on line 5 \ No newline at end of file + thrown in %sgh9769.php on line 5