diff --git a/src/Psalm/Internal/Stubs/CoreGenericFunctions.phpstub b/src/Psalm/Internal/Stubs/CoreGenericFunctions.phpstub index b970253d187..07198ae7285 100644 --- a/src/Psalm/Internal/Stubs/CoreGenericFunctions.phpstub +++ b/src/Psalm/Internal/Stubs/CoreGenericFunctions.phpstub @@ -49,6 +49,25 @@ function array_intersect_key(array $arr, array $arr2, array ...$arr3) * @psalm-template TValue * * @param array $arr + * @param array $arr2 + * @param array ...$arr3 + * @param callable(TKey): int $keyCompareFunc + * + * @return array + * + * @psalm-pure + */ +function array_intersect_ukey(array $arr, array $arr2, array ...$arr3, callable $keyCompareFunc): array +{ +} + +/** + * @psalm-template TKey as array-key + * @psalm-template TValue + * + * @param array $arr + * @param array $arr2 + * @param array ...$arr3 * * @return array * @psalm-pure @@ -57,6 +76,23 @@ function array_intersect_assoc(array $arr, array $arr2, array ...$arr3) { } +/** + * @psalm-template TKey as array-key + * @psalm-template TValue + * + * @param array $arr + * @param array $arr2 + * @param array ...$arr3 + * @param callable(TKey): int $keyCompareFunc + * + * @return array + * + * @psalm-pure + */ +function array_intersect_uassoc(array $arr, array $arr2, array ...$arr3, callable $keyCompareFunc): array {} +{ +} + /** * @psalm-template TKey as array-key * @psalm-template TValue @@ -102,6 +138,22 @@ function array_diff_key(array $arr, array $arr2, array ...$arr3) { } +/** + * @psalm-template TKey as array-key + * @psalm-template TValue + * + * @param array $arr + * @param array $arr2 + * @param array ...$arr3 + * @param callable(TKey, TKey): int $keyCompareFunc + * + * @return array + * @psalm-pure + */ +function array_diff_ukey(array $arr, array $arr2, array ...$arr3, callable $keyCompareFunc): array {} +{ +} + /** * @psalm-template TKey as array-key * @psalm-template TValue @@ -117,6 +169,20 @@ function array_diff_assoc(array $arr, array $arr2, array ...$arr3) { } +/** + * @psalm-template TKey as array-key + * @psalm-template TValue + * + * @param array $arr + * @param array $arr2 + * @param array ...$arr3 + * @param callable(TKey, TKey): int $keyCompareFunc + * + * @return array + * @psalm-pure + */ +function array_diff_uassoc(array $arr, array $arr2, array ... $arr3, callable $keyCompareFunc): array {} + /** * @psalm-template TKey as array-key * @psalm-template TValue @@ -550,6 +616,20 @@ function explode(string $delimiter, string $string, int $limit = -1) : array {} */ function array_sum(array $input) {} +/** + * @param array $input + * + * @return ( + * $input is array + * ? int + * : ($input is array + * ? float + * : float|int + * ) + * ) + */ +function array_product(array $input) {} + /** * @psalm-pure * @@ -736,3 +816,14 @@ function str_getcsv(string $input, string $delimiter = ',', string $enclosure = * @return ($min is positive-int ? positive-int : int) */ function random_int(int $min, int $max): int {} + +/** + * @template TKey as array-key + * + * @param array $array + * + * @return array + * + * @psalm-pure + */ +function array_count_values(array $array): array {}