Skip to content

Commit 56476a6

Browse files
committed
Address review comments
1 parent b274415 commit 56476a6

File tree

3 files changed

+115
-114
lines changed

3 files changed

+115
-114
lines changed

ext/standard/basic_functions.stub.php

Lines changed: 53 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -85,24 +85,46 @@ function uasort(array &$arg, callable $cmp_function): bool {}
8585

8686
function uksort(array &$arg, callable $cmp_function): bool {}
8787

88+
/**
89+
* @param array|object $arg
90+
* @return mixed
91+
*/
8892
function end(array &$arg) {}
8993

90-
/** @param array|object $arg */
94+
/**
95+
* @param array|object $arg
96+
* @return mixed
97+
*/
9198
function prev(&$arg) {}
9299

93-
/** @param array|object $arg */
100+
/**
101+
* @param array|object $arg
102+
* @return mixed
103+
*/
94104
function next(&$arg) {}
95105

96-
function reset(array &$arg) {}
106+
/**
107+
* @param array|object $arg
108+
* @return mixed
109+
*/
110+
function reset(&$arg) {}
97111

98-
/** @param array|object $arg */
112+
/**
113+
* @param array|object $arg
114+
* @return mixed
115+
*/
99116
function current($arg) {}
100117

101-
/** @return int|string|null */
102-
function key(array $arg) {}
118+
/**
119+
* @param array|object $arg
120+
* @return int|string|null
121+
*/
122+
function key($arg) {}
103123

124+
/** @return mixed */
104125
function min($arg, ...$args) {}
105126

127+
/** @return mixed */
106128
function max($arg, ...$args) {}
107129

108130
/** @param array|object $input */
@@ -117,7 +139,7 @@ function in_array($needle, array $haystack, bool $strict = false): bool {}
117139
function array_search($needle, array $haystack, bool $strict = false) {}
118140

119141
/** @prefer-ref $arg */
120-
function extract(array &$arg, $extract_type = EXTR_OVERWRITE, string $prefix = null): ?int {}
142+
function extract(array &$arg, $extract_type = EXTR_OVERWRITE, string $prefix = ""): ?int {}
121143

122144
function compact($var_name, ...$var_names): ?array {}
123145

@@ -136,8 +158,10 @@ function range($low, $high, $step = 1) {}
136158

137159
function shuffle(array &$arg): bool {}
138160

161+
/** @return mixed */
139162
function array_pop(array &$stack) {}
140163

164+
/** @return mixed */
141165
function array_shift(array &$stack) {}
142166

143167
function array_unshift(array &$stack, ...$vars): int {}
@@ -168,7 +192,7 @@ function array_count_values(array $arg): array {}
168192

169193
/**
170194
* @param int|string|null $column_key
171-
* @param int|string $index_key
195+
* @param int|string|null $index_key
172196
* @return array|false
173197
*/
174198
function array_column(array $arg, $column_key, $index_key = null) {}
@@ -186,40 +210,35 @@ function array_unique(array $arg, int $flags = SORT_STRING): array {}
186210

187211
function array_intersect_key(array $arr1, array $arr2, array ...$arrays): array {}
188212

189-
// tests break if $arr2 is variadic
190-
function array_intersect_ukey(array $arr1, array $arr2, $callback_key_compare_func): array {}
213+
function array_intersect_ukey(array $arr1, array $arr2, ...$rest): array {}
191214

192-
function array_intersect(array $arr1, array ...$arrays): array {}
215+
function array_intersect(array $arr1, array $arr2, array ...$arrays): array {}
193216

194-
// tests break if $arr2 is variadic
195-
function array_uintersect(array $arr1, array $arr2, $callback_data_compare_func): array {}
217+
function array_uintersect(array $arr1, array $arr2, ...$rest): array {}
196218

197-
function array_intersect_assoc(array $arr1, array ...$arrays): array {}
219+
function array_intersect_assoc(array $arr1, array $arr2, array ...$arrays): array {}
198220

199-
// tests break if $arr2 is variadic
200-
function array_uintersect_assoc(array $arr1, array $arr2, $callback_data_compare_func): array {}
221+
function array_uintersect_assoc(array $arr1, array $arr2, ...$rest): array {}
201222

202-
function array_intersect_uassoc(array $arr1, array ...$arr2, callable $callback_key_compare_func): array {}
223+
function array_intersect_uassoc(array $arr1, array $arr2, ...$rest): array {}
203224

204-
function array_uintersect_uassoc(array $arr1, array ...$arr2, callable $callback_data_compare_func, callable $callback_key_compare_func): array {}
225+
function array_uintersect_uassoc(array $arr1, array $arr2, ...$rest): array {}
205226

206-
function array_diff_key(array $arr1, array ...$arrays): array {}
227+
function array_diff_key(array $arr1, array $arr2, array ...$arrays): array {}
207228

208-
// tests break if $arr2 is variadic
209-
function array_diff_ukey(array $arr1, array $arr2, $callback_key_comp_func): array {}
229+
function array_diff_ukey(array $arr1, array $arr2, ...$rest): array {}
210230

211-
function array_diff(array $arr1, array ...$arrays): array {}
231+
function array_diff(array $arr1, array $arr2, array ...$arrays): array {}
212232

213-
function array_udiff(array $arr1, array ...$arr2, callable $callback_data_comp_func): array {}
233+
function array_udiff(array $arr1, array $arr2, ...$rest): array {}
214234

215-
function array_diff_assoc(array $arr1, array ...$arrays): array {}
235+
function array_diff_assoc(array $arr1, array $arr2, array ...$arrays): array {}
216236

217-
function array_diff_uassoc(array $arr1, array ...$arr2, callable $callback_data_comp_func): array {}
237+
function array_diff_uassoc(array $arr1, array $arr2, ...$rest): array {}
218238

219-
// tests break if $arr2 is variadic
220-
function array_udiff_assoc(array $arr1, array $arr2, $callback_key_comp_func): array {}
239+
function array_udiff_assoc(array $arr1, array $arr2, ...$rest): array {}
221240

222-
function array_udiff_uassoc(array $arr1, array ...$arr2, callable $callback_data_comp_func, callable $callback_key_comp_func): array {}
241+
function array_udiff_uassoc(array $arr1, array $arr2, ...$rest): array {}
223242

224243
/**
225244
* @prefer-ref $arr1
@@ -242,10 +261,13 @@ function array_reduce(array $arg, callable $callback, $initial = null) {}
242261

243262
function array_filter(array $arg, callable $callback, int $use_keys = 0): array {}
244263

245-
function array_map(?callable $callback, array ...$arrays): array {}
264+
function array_map(?callable $callback, array $arr1, array ...$arrays): array {}
246265

247-
/** @param int|string $key */
248-
function array_key_exists($key, array $search): bool {}
266+
/**
267+
* @param int|string $key
268+
* @param array|object $search
269+
*/
270+
function array_key_exists($key, $search): bool {}
249271

250272
function array_chunk(array $arg, int $size, bool $preserve_keys = false): ?array {}
251273

ext/standard/basic_functions_arginfo.h

Lines changed: 32 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -115,15 +115,13 @@ ZEND_END_ARG_INFO()
115115

116116
#define arginfo_next arginfo_prev
117117

118-
#define arginfo_reset arginfo_end
118+
#define arginfo_reset arginfo_prev
119119

120120
ZEND_BEGIN_ARG_INFO_EX(arginfo_current, 0, 0, 1)
121121
ZEND_ARG_INFO(0, arg)
122122
ZEND_END_ARG_INFO()
123123

124-
ZEND_BEGIN_ARG_INFO_EX(arginfo_key, 0, 0, 1)
125-
ZEND_ARG_TYPE_INFO(0, arg, IS_ARRAY, 0)
126-
ZEND_END_ARG_INFO()
124+
#define arginfo_key arginfo_current
127125

128126
ZEND_BEGIN_ARG_INFO_EX(arginfo_min, 0, 0, 1)
129127
ZEND_ARG_INFO(0, arg)
@@ -153,7 +151,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_array_search, 0, 0, 2)
153151
ZEND_END_ARG_INFO()
154152

155153
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_extract, 0, 1, IS_LONG, 1)
156-
ZEND_ARG_TYPE_INFO(ZEND_SEND_PREFER_REF, arg, IS_ARRAY, 0)
154+
ZEND_ARG_TYPE_INFO(2, arg, IS_ARRAY, 0)
157155
ZEND_ARG_INFO(0, extract_type)
158156
ZEND_ARG_TYPE_INFO(0, prefix, IS_STRING, 0)
159157
ZEND_END_ARG_INFO()
@@ -226,9 +224,11 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_keys, 0, 1, IS_ARRAY, 0)
226224
ZEND_ARG_TYPE_INFO(0, strict, _IS_BOOL, 0)
227225
ZEND_END_ARG_INFO()
228226

229-
#define arginfo_array_key_first arginfo_key
227+
ZEND_BEGIN_ARG_INFO_EX(arginfo_array_key_first, 0, 0, 1)
228+
ZEND_ARG_TYPE_INFO(0, arg, IS_ARRAY, 0)
229+
ZEND_END_ARG_INFO()
230230

231-
#define arginfo_array_key_last arginfo_key
231+
#define arginfo_array_key_last arginfo_array_key_first
232232

233233
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_values, 0, 1, IS_ARRAY, 0)
234234
ZEND_ARG_TYPE_INFO(0, arg, IS_ARRAY, 0)
@@ -271,81 +271,55 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_intersect_key, 0, 2, IS_AR
271271
ZEND_ARG_VARIADIC_TYPE_INFO(0, arrays, IS_ARRAY, 0)
272272
ZEND_END_ARG_INFO()
273273

274-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_intersect_ukey, 0, 3, IS_ARRAY, 0)
274+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_intersect_ukey, 0, 2, IS_ARRAY, 0)
275275
ZEND_ARG_TYPE_INFO(0, arr1, IS_ARRAY, 0)
276276
ZEND_ARG_TYPE_INFO(0, arr2, IS_ARRAY, 0)
277-
ZEND_ARG_INFO(0, callback_key_compare_func)
277+
ZEND_ARG_VARIADIC_INFO(0, rest)
278278
ZEND_END_ARG_INFO()
279279

280-
#define arginfo_array_intersect arginfo_array_replace
280+
#define arginfo_array_intersect arginfo_array_intersect_key
281281

282-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_uintersect, 0, 3, IS_ARRAY, 0)
283-
ZEND_ARG_TYPE_INFO(0, arr1, IS_ARRAY, 0)
284-
ZEND_ARG_TYPE_INFO(0, arr2, IS_ARRAY, 0)
285-
ZEND_ARG_INFO(0, callback_data_compare_func)
286-
ZEND_END_ARG_INFO()
282+
#define arginfo_array_uintersect arginfo_array_intersect_ukey
287283

288-
#define arginfo_array_intersect_assoc arginfo_array_replace
284+
#define arginfo_array_intersect_assoc arginfo_array_intersect_key
289285

290-
#define arginfo_array_uintersect_assoc arginfo_array_uintersect
286+
#define arginfo_array_uintersect_assoc arginfo_array_intersect_ukey
291287

292-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_intersect_uassoc, 0, 3, IS_ARRAY, 0)
293-
ZEND_ARG_TYPE_INFO(0, arr1, IS_ARRAY, 0)
294-
ZEND_ARG_VARIADIC_TYPE_INFO(0, arr2, IS_ARRAY, 0)
295-
ZEND_ARG_TYPE_INFO(0, callback_key_compare_func, IS_CALLABLE, 0)
296-
ZEND_END_ARG_INFO()
288+
#define arginfo_array_intersect_uassoc arginfo_array_intersect_ukey
297289

298-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_uintersect_uassoc, 0, 4, IS_ARRAY, 0)
299-
ZEND_ARG_TYPE_INFO(0, arr1, IS_ARRAY, 0)
300-
ZEND_ARG_VARIADIC_TYPE_INFO(0, arr2, IS_ARRAY, 0)
301-
ZEND_ARG_TYPE_INFO(0, callback_data_compare_func, IS_CALLABLE, 0)
302-
ZEND_ARG_TYPE_INFO(0, callback_key_compare_func, IS_CALLABLE, 0)
303-
ZEND_END_ARG_INFO()
290+
#define arginfo_array_uintersect_uassoc arginfo_array_intersect_ukey
304291

305-
#define arginfo_array_diff_key arginfo_array_replace
292+
#define arginfo_array_diff_key arginfo_array_intersect_key
306293

307-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_diff_ukey, 0, 3, IS_ARRAY, 0)
308-
ZEND_ARG_TYPE_INFO(0, arr1, IS_ARRAY, 0)
309-
ZEND_ARG_TYPE_INFO(0, arr2, IS_ARRAY, 0)
310-
ZEND_ARG_INFO(0, callback_key_comp_func)
311-
ZEND_END_ARG_INFO()
294+
#define arginfo_array_diff_ukey arginfo_array_intersect_ukey
312295

313-
#define arginfo_array_diff arginfo_array_replace
296+
#define arginfo_array_diff arginfo_array_intersect_key
314297

315-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_udiff, 0, 3, IS_ARRAY, 0)
316-
ZEND_ARG_TYPE_INFO(0, arr1, IS_ARRAY, 0)
317-
ZEND_ARG_VARIADIC_TYPE_INFO(0, arr2, IS_ARRAY, 0)
318-
ZEND_ARG_TYPE_INFO(0, callback_data_comp_func, IS_CALLABLE, 0)
319-
ZEND_END_ARG_INFO()
298+
#define arginfo_array_udiff arginfo_array_intersect_ukey
320299

321-
#define arginfo_array_diff_assoc arginfo_array_replace
300+
#define arginfo_array_diff_assoc arginfo_array_intersect_key
322301

323-
#define arginfo_array_diff_uassoc arginfo_array_udiff
302+
#define arginfo_array_diff_uassoc arginfo_array_intersect_ukey
324303

325-
#define arginfo_array_udiff_assoc arginfo_array_diff_ukey
304+
#define arginfo_array_udiff_assoc arginfo_array_intersect_ukey
326305

327-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_udiff_uassoc, 0, 4, IS_ARRAY, 0)
328-
ZEND_ARG_TYPE_INFO(0, arr1, IS_ARRAY, 0)
329-
ZEND_ARG_VARIADIC_TYPE_INFO(0, arr2, IS_ARRAY, 0)
330-
ZEND_ARG_TYPE_INFO(0, callback_data_comp_func, IS_CALLABLE, 0)
331-
ZEND_ARG_TYPE_INFO(0, callback_key_comp_func, IS_CALLABLE, 0)
332-
ZEND_END_ARG_INFO()
306+
#define arginfo_array_udiff_uassoc arginfo_array_intersect_ukey
333307

334308
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_multisort, 0, 1, _IS_BOOL, 0)
335-
ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, arr1)
336-
ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, sort_order)
337-
ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, sort_flags)
338-
ZEND_ARG_VARIADIC_INFO(ZEND_SEND_PREFER_REF, arr2)
309+
ZEND_ARG_INFO(2, arr1)
310+
ZEND_ARG_INFO(2, sort_order)
311+
ZEND_ARG_INFO(2, sort_flags)
312+
ZEND_ARG_VARIADIC_INFO(2, arr2)
339313
ZEND_END_ARG_INFO()
340314

341315
ZEND_BEGIN_ARG_INFO_EX(arginfo_array_rand, 0, 0, 1)
342316
ZEND_ARG_TYPE_INFO(0, arg, IS_ARRAY, 0)
343317
ZEND_ARG_TYPE_INFO(0, num_req, IS_LONG, 0)
344318
ZEND_END_ARG_INFO()
345319

346-
#define arginfo_array_sum arginfo_key
320+
#define arginfo_array_sum arginfo_array_key_first
347321

348-
#define arginfo_array_product arginfo_key
322+
#define arginfo_array_product arginfo_array_key_first
349323

350324
ZEND_BEGIN_ARG_INFO_EX(arginfo_array_reduce, 0, 0, 2)
351325
ZEND_ARG_TYPE_INFO(0, arg, IS_ARRAY, 0)
@@ -359,14 +333,15 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_filter, 0, 2, IS_ARRAY, 0)
359333
ZEND_ARG_TYPE_INFO(0, use_keys, IS_LONG, 0)
360334
ZEND_END_ARG_INFO()
361335

362-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_map, 0, 1, IS_ARRAY, 0)
336+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_map, 0, 2, IS_ARRAY, 0)
363337
ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 1)
338+
ZEND_ARG_TYPE_INFO(0, arr1, IS_ARRAY, 0)
364339
ZEND_ARG_VARIADIC_TYPE_INFO(0, arrays, IS_ARRAY, 0)
365340
ZEND_END_ARG_INFO()
366341

367342
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_key_exists, 0, 2, _IS_BOOL, 0)
368343
ZEND_ARG_INFO(0, key)
369-
ZEND_ARG_TYPE_INFO(0, search, IS_ARRAY, 0)
344+
ZEND_ARG_INFO(0, search)
370345
ZEND_END_ARG_INFO()
371346

372347
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_chunk, 0, 2, IS_ARRAY, 1)

0 commit comments

Comments
 (0)