From e8b72ee9b93be7018639a5449cf7ec00c0b62e86 Mon Sep 17 00:00:00 2001 From: Jorg Sowa Date: Thu, 22 Jan 2026 23:44:43 +0100 Subject: [PATCH 1/2] chore: improved errror message when passing names parameters for variadic parameter --- Zend/tests/named_params/internal_variadics.phpt | 11 +++++++++-- Zend/zend_API.c | 5 +++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Zend/tests/named_params/internal_variadics.phpt b/Zend/tests/named_params/internal_variadics.phpt index 3599f644ac977..e905b5d751a15 100644 --- a/Zend/tests/named_params/internal_variadics.phpt +++ b/Zend/tests/named_params/internal_variadics.phpt @@ -15,7 +15,14 @@ try { echo $e->getMessage(), "\n"; } +try { + $array = [1, 2]; + array_push($array, ...['values' => 3]); +} catch (ArgumentCountError $e) { + echo $e->getMessage(), "\n"; +} ?> --EXPECT-- -array_merge() does not accept unknown named parameters -array_diff_key() does not accept unknown named parameters +array_merge() does not accept named arguments for variadic parameters +array_diff_key() does not accept named arguments for variadic parameters +array_push() does not accept named arguments for variadic parameters diff --git a/Zend/zend_API.c b/Zend/zend_API.c index 0881a169dfa7d..8ddf981f04d8e 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -370,8 +370,9 @@ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_unexpected_extra_named_error(void) { const char *space; const char *class_name = get_active_class_name(&space); - zend_argument_count_error("%s%s%s() does not accept unknown named parameters", - class_name, space, get_active_function_name()); + zend_argument_count_error("%s%s%s() does not accept named arguments for variadic parameters", + class_name, space, get_active_function_name() + ); } ZEND_API ZEND_COLD void ZEND_FASTCALL zend_argument_error_variadic(zend_class_entry *error_ce, uint32_t arg_num, const char *format, va_list va) /* {{{ */ From a739069bc2ad6c7b951afc4cc9e66763dd9882c2 Mon Sep 17 00:00:00 2001 From: Jorg Sowa Date: Sat, 24 Jan 2026 19:30:39 +0100 Subject: [PATCH 2/2] changed the error wording --- Zend/tests/named_params/internal_variadics.phpt | 6 +++--- Zend/zend_API.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Zend/tests/named_params/internal_variadics.phpt b/Zend/tests/named_params/internal_variadics.phpt index e905b5d751a15..8312bde406d21 100644 --- a/Zend/tests/named_params/internal_variadics.phpt +++ b/Zend/tests/named_params/internal_variadics.phpt @@ -23,6 +23,6 @@ try { } ?> --EXPECT-- -array_merge() does not accept named arguments for variadic parameters -array_diff_key() does not accept named arguments for variadic parameters -array_push() does not accept named arguments for variadic parameters +Internal function array_merge() does not accept named variadic arguments +Internal function array_diff_key() does not accept named variadic arguments +Internal function array_push() does not accept named variadic arguments diff --git a/Zend/zend_API.c b/Zend/zend_API.c index 8ddf981f04d8e..5ae7c7a79340d 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -370,7 +370,7 @@ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_unexpected_extra_named_error(void) { const char *space; const char *class_name = get_active_class_name(&space); - zend_argument_count_error("%s%s%s() does not accept named arguments for variadic parameters", + zend_argument_count_error("Internal function %s%s%s() does not accept named variadic arguments", class_name, space, get_active_function_name() ); }