Skip to content

Commit 04f312a

Browse files
authored
Add array function parameter type providers (#11247)
* Improve dictionary types * Add param providers * cs-fix
1 parent 920455c commit 04f312a

24 files changed

+432
-397
lines changed

bin/gen_callmap.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,33 @@
142142
) {
143143
unset($data[$func]);
144144
}
145+
if (str_starts_with($func, 'array_udiff')
146+
|| str_starts_with($func, 'array_uintersect')
147+
|| str_starts_with($func, 'array_intersect_u')
148+
|| str_starts_with($func, 'array_diff_u')
149+
) {
150+
if ($version < 80) {
151+
$params = $customMaps[80][$func];
152+
continue;
153+
} elseif (!str_ends_with($func, "'1")) {
154+
unset($params['...rest=']);
155+
unset($params['...rest']);
156+
if (str_starts_with($func, 'array_diff_u')
157+
|| str_starts_with($func, 'array_intersect_u')
158+
) {
159+
$params['...rest'] = "array<array-key, mixed>|callable(string, string):int|".
160+
"callable(int, int):int|callable(array-key, array-key):int";
161+
} elseif ($func === 'array_udiff_uassoc'
162+
|| $func === 'array_uintersect_uassoc') {
163+
$params['arr2'] = "array<array-key, mixed>";
164+
$params['value_compare_func'] = "callable(mixed, mixed):int";
165+
$params['key_compare_func'] = "callable(string, string):int|callable(int, int):int|".
166+
"callable(array-key, array-key):int";
167+
} else {
168+
$params['...rest'] = "array<array-key, mixed>|callable(mixed, mixed):int";
169+
}
170+
}
171+
}
145172
} unset($params);
146173
$data = normalizeCallMap($data);
147174
} unset($data);

dictionaries/CallMap_70.php

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1715,9 +1715,8 @@
17151715
'array_diff_uassoc' =>
17161716
array (
17171717
0 => 'array<array-key, mixed>',
1718-
'arr1' => 'array<array-key, mixed>',
1719-
'arr2' => 'array<array-key, mixed>',
1720-
'callback_data_comp_func' => 'callable(mixed, mixed):int',
1718+
'array' => 'array<array-key, mixed>',
1719+
'...rest' => 'array<array-key, mixed>|callable(array-key, array-key):int|callable(int, int):int|callable(string, string):int',
17211720
),
17221721
'array_diff_uassoc\'1' =>
17231722
array (
@@ -1731,9 +1730,8 @@
17311730
'array_diff_ukey' =>
17321731
array (
17331732
0 => 'array<array-key, mixed>',
1734-
'arr1' => 'array<array-key, mixed>',
1735-
'arr2' => 'array<array-key, mixed>',
1736-
'callback_key_comp_func' => 'callable(mixed, mixed):int',
1733+
'array' => 'array<array-key, mixed>',
1734+
'...rest' => 'array<array-key, mixed>|callable(array-key, array-key):int|callable(int, int):int|callable(string, string):int',
17371735
),
17381736
'array_diff_ukey\'1' =>
17391737
array (
@@ -1790,9 +1788,8 @@
17901788
'array_intersect_uassoc' =>
17911789
array (
17921790
0 => 'array<array-key, mixed>',
1793-
'arr1' => 'array<array-key, mixed>',
1794-
'arr2' => 'array<array-key, mixed>',
1795-
'callback_key_compare_func' => 'callable(mixed, mixed):int',
1791+
'array' => 'array<array-key, mixed>',
1792+
'...rest' => 'array<array-key, mixed>|callable(array-key, array-key):int|callable(int, int):int|callable(string, string):int',
17961793
),
17971794
'array_intersect_uassoc\'1' =>
17981795
array (
@@ -1806,9 +1803,8 @@
18061803
'array_intersect_ukey' =>
18071804
array (
18081805
0 => 'array<array-key, mixed>',
1809-
'arr1' => 'array<array-key, mixed>',
1810-
'arr2' => 'array<array-key, mixed>',
1811-
'callback_key_compare_func' => 'callable(mixed, mixed):int',
1806+
'array' => 'array<array-key, mixed>',
1807+
'...rest' => 'array<array-key, mixed>|callable(array-key, array-key):int|callable(int, int):int|callable(string, string):int',
18121808
),
18131809
'array_intersect_ukey\'1' =>
18141810
array (
@@ -1953,9 +1949,8 @@
19531949
'array_udiff' =>
19541950
array (
19551951
0 => 'array<array-key, mixed>',
1956-
'arr1' => 'array<array-key, mixed>',
1957-
'arr2' => 'array<array-key, mixed>',
1958-
'callback_data_comp_func' => 'callable(mixed, mixed):int',
1952+
'array' => 'array<array-key, mixed>',
1953+
'...rest' => 'array<array-key, mixed>|callable(mixed, mixed):int',
19591954
),
19601955
'array_udiff\'1' =>
19611956
array (
@@ -1969,9 +1964,8 @@
19691964
'array_udiff_assoc' =>
19701965
array (
19711966
0 => 'array<array-key, mixed>',
1972-
'arr1' => 'array<array-key, mixed>',
1973-
'arr2' => 'array<array-key, mixed>',
1974-
'callback_key_comp_func' => 'callable(mixed, mixed):int',
1967+
'array' => 'array<array-key, mixed>',
1968+
'...rest' => 'array<array-key, mixed>|callable(mixed, mixed):int',
19751969
),
19761970
'array_udiff_assoc\'1' =>
19771971
array (
@@ -1985,10 +1979,10 @@
19851979
'array_udiff_uassoc' =>
19861980
array (
19871981
0 => 'array<array-key, mixed>',
1988-
'arr1' => 'array<array-key, mixed>',
1982+
'array' => 'array<array-key, mixed>',
19891983
'arr2' => 'array<array-key, mixed>',
1990-
'callback_data_comp_func' => 'callable(mixed, mixed):int',
1991-
'callback_key_comp_func' => 'callable(mixed, mixed):int',
1984+
'value_compare_func' => 'callable(mixed, mixed):int',
1985+
'key_compare_func' => 'callable(array-key, array-key):int|callable(int, int):int|callable(string, string):int',
19921986
),
19931987
'array_udiff_uassoc\'1' =>
19941988
array (
@@ -2003,9 +1997,8 @@
20031997
'array_uintersect' =>
20041998
array (
20051999
0 => 'array<array-key, mixed>',
2006-
'arr1' => 'array<array-key, mixed>',
2007-
'arr2' => 'array<array-key, mixed>',
2008-
'callback_data_compare_func' => 'callable(mixed, mixed):int',
2000+
'array' => 'array<array-key, mixed>',
2001+
'...rest' => 'array<array-key, mixed>|callable(mixed, mixed):int',
20092002
),
20102003
'array_uintersect\'1' =>
20112004
array (
@@ -2019,9 +2012,8 @@
20192012
'array_uintersect_assoc' =>
20202013
array (
20212014
0 => 'array<array-key, mixed>',
2022-
'arr1' => 'array<array-key, mixed>',
2023-
'arr2' => 'array<array-key, mixed>',
2024-
'callback_data_compare_func' => 'callable(mixed, mixed):int',
2015+
'array' => 'array<array-key, mixed>',
2016+
'...rest' => 'array<array-key, mixed>|callable(mixed, mixed):int',
20252017
),
20262018
'array_uintersect_assoc\'1' =>
20272019
array (
@@ -2035,10 +2027,10 @@
20352027
'array_uintersect_uassoc' =>
20362028
array (
20372029
0 => 'array<array-key, mixed>',
2038-
'arr1' => 'array<array-key, mixed>',
2030+
'array' => 'array<array-key, mixed>',
20392031
'arr2' => 'array<array-key, mixed>',
2040-
'callback_data_compare_func' => 'callable(mixed, mixed):int',
2041-
'callback_key_compare_func' => 'callable(mixed, mixed):int',
2032+
'value_compare_func' => 'callable(mixed, mixed):int',
2033+
'key_compare_func' => 'callable(array-key, array-key):int|callable(int, int):int|callable(string, string):int',
20422034
),
20432035
'array_uintersect_uassoc\'1' =>
20442036
array (

dictionaries/CallMap_71.php

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1777,9 +1777,8 @@
17771777
'array_diff_uassoc' =>
17781778
array (
17791779
0 => 'array<array-key, mixed>',
1780-
'arr1' => 'array<array-key, mixed>',
1781-
'arr2' => 'array<array-key, mixed>',
1782-
'callback_data_comp_func' => 'callable(mixed, mixed):int',
1780+
'array' => 'array<array-key, mixed>',
1781+
'...rest' => 'array<array-key, mixed>|callable(array-key, array-key):int|callable(int, int):int|callable(string, string):int',
17831782
),
17841783
'array_diff_uassoc\'1' =>
17851784
array (
@@ -1793,9 +1792,8 @@
17931792
'array_diff_ukey' =>
17941793
array (
17951794
0 => 'array<array-key, mixed>',
1796-
'arr1' => 'array<array-key, mixed>',
1797-
'arr2' => 'array<array-key, mixed>',
1798-
'callback_key_comp_func' => 'callable(mixed, mixed):int',
1795+
'array' => 'array<array-key, mixed>',
1796+
'...rest' => 'array<array-key, mixed>|callable(array-key, array-key):int|callable(int, int):int|callable(string, string):int',
17991797
),
18001798
'array_diff_ukey\'1' =>
18011799
array (
@@ -1852,9 +1850,8 @@
18521850
'array_intersect_uassoc' =>
18531851
array (
18541852
0 => 'array<array-key, mixed>',
1855-
'arr1' => 'array<array-key, mixed>',
1856-
'arr2' => 'array<array-key, mixed>',
1857-
'callback_key_compare_func' => 'callable(mixed, mixed):int',
1853+
'array' => 'array<array-key, mixed>',
1854+
'...rest' => 'array<array-key, mixed>|callable(array-key, array-key):int|callable(int, int):int|callable(string, string):int',
18581855
),
18591856
'array_intersect_uassoc\'1' =>
18601857
array (
@@ -1868,9 +1865,8 @@
18681865
'array_intersect_ukey' =>
18691866
array (
18701867
0 => 'array<array-key, mixed>',
1871-
'arr1' => 'array<array-key, mixed>',
1872-
'arr2' => 'array<array-key, mixed>',
1873-
'callback_key_compare_func' => 'callable(mixed, mixed):int',
1868+
'array' => 'array<array-key, mixed>',
1869+
'...rest' => 'array<array-key, mixed>|callable(array-key, array-key):int|callable(int, int):int|callable(string, string):int',
18741870
),
18751871
'array_intersect_ukey\'1' =>
18761872
array (
@@ -2025,9 +2021,8 @@
20252021
'array_udiff' =>
20262022
array (
20272023
0 => 'array<array-key, mixed>',
2028-
'arr1' => 'array<array-key, mixed>',
2029-
'arr2' => 'array<array-key, mixed>',
2030-
'callback_data_comp_func' => 'callable(mixed, mixed):int',
2024+
'array' => 'array<array-key, mixed>',
2025+
'...rest' => 'array<array-key, mixed>|callable(mixed, mixed):int',
20312026
),
20322027
'array_udiff\'1' =>
20332028
array (
@@ -2041,9 +2036,8 @@
20412036
'array_udiff_assoc' =>
20422037
array (
20432038
0 => 'array<array-key, mixed>',
2044-
'arr1' => 'array<array-key, mixed>',
2045-
'arr2' => 'array<array-key, mixed>',
2046-
'callback_key_comp_func' => 'callable(mixed, mixed):int',
2039+
'array' => 'array<array-key, mixed>',
2040+
'...rest' => 'array<array-key, mixed>|callable(mixed, mixed):int',
20472041
),
20482042
'array_udiff_assoc\'1' =>
20492043
array (
@@ -2057,10 +2051,10 @@
20572051
'array_udiff_uassoc' =>
20582052
array (
20592053
0 => 'array<array-key, mixed>',
2060-
'arr1' => 'array<array-key, mixed>',
2054+
'array' => 'array<array-key, mixed>',
20612055
'arr2' => 'array<array-key, mixed>',
2062-
'callback_data_comp_func' => 'callable(mixed, mixed):int',
2063-
'callback_key_comp_func' => 'callable(mixed, mixed):int',
2056+
'value_compare_func' => 'callable(mixed, mixed):int',
2057+
'key_compare_func' => 'callable(array-key, array-key):int|callable(int, int):int|callable(string, string):int',
20642058
),
20652059
'array_udiff_uassoc\'1' =>
20662060
array (
@@ -2075,9 +2069,8 @@
20752069
'array_uintersect' =>
20762070
array (
20772071
0 => 'array<array-key, mixed>',
2078-
'arr1' => 'array<array-key, mixed>',
2079-
'arr2' => 'array<array-key, mixed>',
2080-
'callback_data_compare_func' => 'callable(mixed, mixed):int',
2072+
'array' => 'array<array-key, mixed>',
2073+
'...rest' => 'array<array-key, mixed>|callable(mixed, mixed):int',
20812074
),
20822075
'array_uintersect\'1' =>
20832076
array (
@@ -2091,9 +2084,8 @@
20912084
'array_uintersect_assoc' =>
20922085
array (
20932086
0 => 'array<array-key, mixed>',
2094-
'arr1' => 'array<array-key, mixed>',
2095-
'arr2' => 'array<array-key, mixed>',
2096-
'callback_data_compare_func' => 'callable(mixed, mixed):int',
2087+
'array' => 'array<array-key, mixed>',
2088+
'...rest' => 'array<array-key, mixed>|callable(mixed, mixed):int',
20972089
),
20982090
'array_uintersect_assoc\'1' =>
20992091
array (
@@ -2107,10 +2099,10 @@
21072099
'array_uintersect_uassoc' =>
21082100
array (
21092101
0 => 'array<array-key, mixed>',
2110-
'arr1' => 'array<array-key, mixed>',
2102+
'array' => 'array<array-key, mixed>',
21112103
'arr2' => 'array<array-key, mixed>',
2112-
'callback_data_compare_func' => 'callable(mixed, mixed):int',
2113-
'callback_key_compare_func' => 'callable(mixed, mixed):int',
2104+
'value_compare_func' => 'callable(mixed, mixed):int',
2105+
'key_compare_func' => 'callable(array-key, array-key):int|callable(int, int):int|callable(string, string):int',
21142106
),
21152107
'array_uintersect_uassoc\'1' =>
21162108
array (

0 commit comments

Comments
 (0)