summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-09-09 11:36:38 +0200
committerNikita Popov <nikita.ppv@gmail.com>2020-09-09 11:36:38 +0200
commitd37d2228353ff152245efde193f1fde0857ecaea (patch)
tree62edccea7d5e46b8429a781d7a3580cfe99245fe /ext
parent0222204e7fc532a5710fbe823df562cb287ca39c (diff)
downloadphp-git-d37d2228353ff152245efde193f1fde0857ecaea.tar.gz
Make array_multisort() signature more variadic
The second and third arguments are not always the sort_order and sort_flags -- they can also be in reverse order, or be arrays altogether. Move them into the variadic parameter to avoid awkward error messages.
Diffstat (limited to 'ext')
-rw-r--r--ext/reflection/tests/ReflectionParameter_canBePassedByValue.phpt10
-rwxr-xr-xext/standard/basic_functions.stub.php10
-rwxr-xr-xext/standard/basic_functions_arginfo.h6
-rw-r--r--ext/standard/tests/array/array_multisort_error.phpt4
-rw-r--r--ext/standard/tests/array/array_multisort_variation2.phpt46
-rw-r--r--ext/standard/tests/array/array_multisort_variation3.phpt50
6 files changed, 56 insertions, 70 deletions
diff --git a/ext/reflection/tests/ReflectionParameter_canBePassedByValue.phpt b/ext/reflection/tests/ReflectionParameter_canBePassedByValue.phpt
index c5a7b72714..c7f823e423 100644
--- a/ext/reflection/tests/ReflectionParameter_canBePassedByValue.phpt
+++ b/ext/reflection/tests/ReflectionParameter_canBePassedByValue.phpt
@@ -41,15 +41,7 @@ Name: array1
Is passed by reference: yes
Can be passed by value: yes
-Name: sort_order
-Is passed by reference: yes
-Can be passed by value: yes
-
-Name: sort_flags
-Is passed by reference: yes
-Can be passed by value: yes
-
-Name: arrays
+Name: rest
Is passed by reference: yes
Can be passed by value: yes
diff --git a/ext/standard/basic_functions.stub.php b/ext/standard/basic_functions.stub.php
index e9aa1b0c62..92406e22be 100755
--- a/ext/standard/basic_functions.stub.php
+++ b/ext/standard/basic_functions.stub.php
@@ -222,15 +222,11 @@ function array_udiff_uassoc(array $array, ...$rest): array {}
/**
* @param array $array1
- * @param int $sort_order
- * @param int $sort_flags
- * @param array $arrays
+ * @param array|int $rest
* @prefer-ref $array1
- * @prefer-ref $sort_order
- * @prefer-ref $sort_flags
- * @prefer-ref $arrays
+ * @prefer-ref $rest
*/
-function array_multisort(&$array1, $sort_order = SORT_ASC, $sort_flags = SORT_REGULAR, &...$arrays): bool {}
+function array_multisort(&$array1, &...$rest): bool {}
function array_rand(array $array, int $num_req = 1): int|string|array {}
diff --git a/ext/standard/basic_functions_arginfo.h b/ext/standard/basic_functions_arginfo.h
index 46204d773b..fe4c07518c 100755
--- a/ext/standard/basic_functions_arginfo.h
+++ b/ext/standard/basic_functions_arginfo.h
@@ -1,5 +1,5 @@
/* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 56f49d359d2b11383a3f1401d0a3730192c28fc0 */
+ * Stub hash: 251fc9f272492ab76c4a1a1dabcd768269cf1bde */
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_set_time_limit, 0, 1, _IS_BOOL, 0)
ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 0)
@@ -313,9 +313,7 @@ ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_multisort, 0, 1, _IS_BOOL, 0)
ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, array1)
- ZEND_ARG_INFO_WITH_DEFAULT_VALUE(ZEND_SEND_PREFER_REF, sort_order, "SORT_ASC")
- ZEND_ARG_INFO_WITH_DEFAULT_VALUE(ZEND_SEND_PREFER_REF, sort_flags, "SORT_REGULAR")
- ZEND_ARG_VARIADIC_INFO(ZEND_SEND_PREFER_REF, arrays)
+ ZEND_ARG_VARIADIC_INFO(ZEND_SEND_PREFER_REF, rest)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_array_rand, 0, 1, MAY_BE_LONG|MAY_BE_STRING|MAY_BE_ARRAY)
diff --git a/ext/standard/tests/array/array_multisort_error.phpt b/ext/standard/tests/array/array_multisort_error.phpt
index 6df4216337..4f2d979f71 100644
--- a/ext/standard/tests/array/array_multisort_error.phpt
+++ b/ext/standard/tests/array/array_multisort_error.phpt
@@ -25,7 +25,7 @@ try {
*** Testing array_multisort() : error conditions ***
-- Testing array_multisort() function with repeated flags --
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag that has not already been specified
+array_multisort(): Argument #3 must be an array or a sort flag that has not already been specified
-- Testing array_multisort() function with repeated flags --
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag that has not already been specified
+array_multisort(): Argument #3 must be an array or a sort flag that has not already been specified
diff --git a/ext/standard/tests/array/array_multisort_variation2.phpt b/ext/standard/tests/array/array_multisort_variation2.phpt
index ff19956610..b491b87bfd 100644
--- a/ext/standard/tests/array/array_multisort_variation2.phpt
+++ b/ext/standard/tests/array/array_multisort_variation2.phpt
@@ -117,25 +117,25 @@ bool(true)
bool(true)
--int 12345--
-array_multisort(): Argument #2 ($sort_order) must be a valid sort flag
+array_multisort(): Argument #2 must be a valid sort flag
--int -12345--
-array_multisort(): Argument #2 ($sort_order) must be a valid sort flag
+array_multisort(): Argument #2 must be a valid sort flag
--float 10.5--
-array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
+array_multisort(): Argument #2 must be an array or a sort flag
--float -10.5--
-array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
+array_multisort(): Argument #2 must be an array or a sort flag
--float 12.3456789000e10--
-array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
+array_multisort(): Argument #2 must be an array or a sort flag
--float -12.3456789000e10--
-array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
+array_multisort(): Argument #2 must be an array or a sort flag
--float .5--
-array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
+array_multisort(): Argument #2 must be an array or a sort flag
--empty array--
Array sizes are inconsistent
@@ -150,49 +150,49 @@ bool(true)
Array sizes are inconsistent
--uppercase NULL--
-array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
+array_multisort(): Argument #2 must be an array or a sort flag
--lowercase null--
-array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
+array_multisort(): Argument #2 must be an array or a sort flag
--lowercase true--
-array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
+array_multisort(): Argument #2 must be an array or a sort flag
--lowercase false--
-array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
+array_multisort(): Argument #2 must be an array or a sort flag
--uppercase TRUE--
-array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
+array_multisort(): Argument #2 must be an array or a sort flag
--uppercase FALSE--
-array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
+array_multisort(): Argument #2 must be an array or a sort flag
--empty string DQ--
-array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
+array_multisort(): Argument #2 must be an array or a sort flag
--empty string SQ--
-array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
+array_multisort(): Argument #2 must be an array or a sort flag
--string DQ--
-array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
+array_multisort(): Argument #2 must be an array or a sort flag
--string SQ--
-array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
+array_multisort(): Argument #2 must be an array or a sort flag
--mixed case string--
-array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
+array_multisort(): Argument #2 must be an array or a sort flag
--heredoc--
-array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
+array_multisort(): Argument #2 must be an array or a sort flag
--instance of classWithToString--
-array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
+array_multisort(): Argument #2 must be an array or a sort flag
--instance of classWithoutToString--
-array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
+array_multisort(): Argument #2 must be an array or a sort flag
--undefined var--
-array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
+array_multisort(): Argument #2 must be an array or a sort flag
--unset var--
-array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
+array_multisort(): Argument #2 must be an array or a sort flag
diff --git a/ext/standard/tests/array/array_multisort_variation3.phpt b/ext/standard/tests/array/array_multisort_variation3.phpt
index 891a9d9097..71f837acd8 100644
--- a/ext/standard/tests/array/array_multisort_variation3.phpt
+++ b/ext/standard/tests/array/array_multisort_variation3.phpt
@@ -103,76 +103,76 @@ foreach($inputs as $key =>$value) {
*** Testing array_multisort() : usage variation ***
--int 0--
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag that has not already been specified
+array_multisort(): Argument #3 must be an array or a sort flag that has not already been specified
--int 1--
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag that has not already been specified
+array_multisort(): Argument #3 must be an array or a sort flag that has not already been specified
--int 12345--
-array_multisort(): Argument #3 ($sort_flags) must be a valid sort flag
+array_multisort(): Argument #3 must be a valid sort flag
--int -12345--
-array_multisort(): Argument #3 ($sort_flags) must be a valid sort flag
+array_multisort(): Argument #3 must be a valid sort flag
--float 10.5--
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
+array_multisort(): Argument #3 must be an array or a sort flag
--float -10.5--
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
+array_multisort(): Argument #3 must be an array or a sort flag
--float 12.3456789000e10--
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
+array_multisort(): Argument #3 must be an array or a sort flag
--float -12.3456789000e10--
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
+array_multisort(): Argument #3 must be an array or a sort flag
--float .5--
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
+array_multisort(): Argument #3 must be an array or a sort flag
--uppercase NULL--
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
+array_multisort(): Argument #3 must be an array or a sort flag
--lowercase null--
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
+array_multisort(): Argument #3 must be an array or a sort flag
--lowercase true--
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
+array_multisort(): Argument #3 must be an array or a sort flag
--lowercase false--
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
+array_multisort(): Argument #3 must be an array or a sort flag
--uppercase TRUE--
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
+array_multisort(): Argument #3 must be an array or a sort flag
--uppercase FALSE--
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
+array_multisort(): Argument #3 must be an array or a sort flag
--empty string DQ--
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
+array_multisort(): Argument #3 must be an array or a sort flag
--empty string SQ--
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
+array_multisort(): Argument #3 must be an array or a sort flag
--string DQ--
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
+array_multisort(): Argument #3 must be an array or a sort flag
--string SQ--
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
+array_multisort(): Argument #3 must be an array or a sort flag
--mixed case string--
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
+array_multisort(): Argument #3 must be an array or a sort flag
--heredoc--
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
+array_multisort(): Argument #3 must be an array or a sort flag
--instance of classWithToString--
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
+array_multisort(): Argument #3 must be an array or a sort flag
--instance of classWithoutToString--
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
+array_multisort(): Argument #3 must be an array or a sort flag
--undefined var--
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
+array_multisort(): Argument #3 must be an array or a sort flag
--unset var--
-array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
+array_multisort(): Argument #3 must be an array or a sort flag