From 417bf87df0a407b7f932ef5e07d60b39b67314c5 Mon Sep 17 00:00:00 2001 From: Corey Taylor Date: Thu, 23 Jun 2022 16:46:47 -0500 Subject: [PATCH] Fix array_* function signatures --- dictionaries/CallMap.php | 28 ++++++++-------- dictionaries/CallMap_73_delta.php | 8 +++++ dictionaries/CallMap_74_delta.php | 8 +++++ dictionaries/CallMap_80_delta.php | 32 +++++++++++++++++++ dictionaries/CallMap_historical.php | 26 +++++++-------- .../Codebase/InternalCallMapHandlerTest.php | 15 --------- 6 files changed, 75 insertions(+), 42 deletions(-) diff --git a/dictionaries/CallMap.php b/dictionaries/CallMap.php index cbb5ed7ab1b..0ba97abb4b8 100644 --- a/dictionaries/CallMap.php +++ b/dictionaries/CallMap.php @@ -361,12 +361,12 @@ 'ArithmeticError::getTraceAsString' => ['string'], 'array_change_key_case' => ['associative-array', 'array'=>'array', 'case='=>'int'], 'array_chunk' => ['list', 'array'=>'array', 'length'=>'int', 'preserve_keys='=>'bool'], -'array_column' => ['array', 'array'=>'array', 'column_key'=>'mixed', 'index_key='=>'mixed'], +'array_column' => ['array', 'array'=>'array', 'column_key'=>'int|string|null', 'index_key='=>'int|string|null'], 'array_combine' => ['associative-array', 'keys'=>'string[]|int[]', 'values'=>'array'], 'array_count_values' => ['associative-array', 'array'=>'array'], -'array_diff' => ['associative-array', 'array'=>'array', 'arrays'=>'array', '...args='=>'array'], -'array_diff_assoc' => ['associative-array', 'array'=>'array', 'arrays'=>'array', '...args='=>'array'], -'array_diff_key' => ['associative-array', 'array'=>'array', 'arrays'=>'array', '...args='=>'array'], +'array_diff' => ['associative-array', 'array'=>'array', '...arrays='=>'array'], +'array_diff_assoc' => ['associative-array', 'array'=>'array', '...arrays='=>'array'], +'array_diff_key' => ['associative-array', 'array'=>'array', '...arrays='=>'array'], 'array_diff_uassoc' => ['associative-array', 'array'=>'array', 'rest'=>'array', 'data_comp_func'=>'callable(mixed,mixed):int'], 'array_diff_uassoc\'1' => ['associative-array', 'array'=>'array', 'rest'=>'array', 'arr3'=>'array', 'arg4'=>'array|callable(mixed,mixed):int', '...rest='=>'array|callable(mixed,mixed):int'], 'array_diff_ukey' => ['associative-array', 'array'=>'array', 'rest'=>'array', 'key_comp_func'=>'callable(mixed,mixed):int'], @@ -375,31 +375,31 @@ 'array_fill_keys' => ['array', 'keys'=>'array', 'value'=>'mixed'], 'array_filter' => ['associative-array', 'array'=>'array', 'callback='=>'callable(mixed,mixed=):scalar', 'mode='=>'int'], 'array_flip' => ['associative-array|associative-array', 'array'=>'array'], -'array_intersect' => ['associative-array', 'array'=>'array', 'arrays'=>'array', '...args='=>'array'], -'array_intersect_assoc' => ['associative-array', 'array'=>'array', 'arrays'=>'array', '...args='=>'array'], -'array_intersect_key' => ['associative-array', 'array'=>'array', 'arrays'=>'array', '...args='=>'array'], +'array_intersect' => ['associative-array', 'array'=>'array', '...arrays='=>'array'], +'array_intersect_assoc' => ['associative-array', 'array'=>'array', '...arrays='=>'array'], +'array_intersect_key' => ['associative-array', 'array'=>'array', '...arrays='=>'array'], 'array_intersect_uassoc' => ['associative-array', 'array'=>'array', 'rest'=>'array', 'key_compare_func'=>'callable(mixed,mixed):int'], 'array_intersect_uassoc\'1' => ['associative-array', 'array'=>'array', 'rest'=>'array', 'arr3'=>'array', 'arg4'=>'array|callable(mixed,mixed):int', '...rest'=>'array|callable(mixed,mixed):int'], 'array_intersect_ukey' => ['associative-array', 'array'=>'array', 'rest'=>'array', 'key_compare_func'=>'callable(mixed,mixed):int'], 'array_intersect_ukey\'1' => ['associative-array', 'array'=>'array', 'rest'=>'array', 'arr3'=>'array', 'arg4'=>'array|callable(mixed,mixed):int', '...rest'=>'array|callable(mixed,mixed):int'], 'array_is_list' => ['bool', 'array'=>'array'], -'array_key_exists' => ['bool', 'key'=>'string|int', 'array'=>'array|ArrayObject'], +'array_key_exists' => ['bool', 'key'=>'string|int', 'array'=>'array'], 'array_key_first' => ['int|string|null', 'array'=>'array'], 'array_key_last' => ['int|string|null', 'array'=>'array'], 'array_keys' => ['list', 'array'=>'array', 'filter_value='=>'mixed', 'strict='=>'bool'], 'array_map' => ['array', 'callback'=>'?callable', 'array'=>'array', '...arrays='=>'array'], -'array_merge' => ['array', 'arrays'=>'array', '...args='=>'array'], -'array_merge_recursive' => ['array', 'arrays'=>'array', '...args='=>'array'], +'array_merge' => ['array', '...arrays='=>'array'], +'array_merge_recursive' => ['array', '...arrays='=>'array'], 'array_multisort' => ['bool', '&rw_array'=>'array', 'rest='=>'array|int', 'array1_sort_flags='=>'array|int', '...args='=>'array|int'], 'array_pad' => ['array', 'array'=>'array', 'length'=>'int', 'value'=>'mixed'], 'array_pop' => ['mixed', '&rw_array'=>'array'], 'array_product' => ['int|float', 'array'=>'array'], -'array_push' => ['int', '&rw_array'=>'array', 'values'=>'mixed', '...vars='=>'mixed'], +'array_push' => ['int', '&rw_array'=>'array', '...values='=>'mixed'], 'array_rand' => ['int|string|array|array', 'array'=>'non-empty-array', 'num'=>'int'], 'array_rand\'1' => ['int|string', 'array'=>'array'], 'array_reduce' => ['mixed', 'array'=>'array', 'callback'=>'callable(mixed,mixed):mixed', 'initial='=>'mixed'], -'array_replace' => ['array', 'array'=>'array', 'replacements'=>'array', '...args='=>'array'], -'array_replace_recursive' => ['array', 'array'=>'array', 'replacements'=>'array', '...args='=>'array'], +'array_replace' => ['array', 'array'=>'array', '...replacements='=>'array'], +'array_replace_recursive' => ['array', 'array'=>'array', '...replacements='=>'array'], 'array_reverse' => ['array', 'array'=>'array', 'preserve_keys='=>'bool'], 'array_search' => ['int|string|false', 'needle'=>'mixed', 'haystack'=>'array', 'strict='=>'bool'], 'array_shift' => ['mixed|null', '&rw_array'=>'array'], @@ -421,7 +421,7 @@ 'array_unique' => ['array', 'array'=>'array', 'flags='=>'0'], 'array_unique\'1' => ['array', 'array'=>'array', 'flags='=>'1'], 'array_unique\'2' => ['array', 'array'=>'array', 'flags='=>'2|5'], -'array_unshift' => ['int', '&rw_array'=>'array', 'values'=>'mixed', '...vars='=>'mixed'], +'array_unshift' => ['int', '&rw_array'=>'array', '...values='=>'mixed'], 'array_values' => ['list', 'array'=>'array'], 'array_walk' => ['bool', '&rw_array'=>'array', 'callback'=>'callable', 'arg='=>'mixed'], 'array_walk\'1' => ['bool', '&rw_array'=>'object', 'callback'=>'callable', 'arg='=>'mixed'], diff --git a/dictionaries/CallMap_73_delta.php b/dictionaries/CallMap_73_delta.php index c54758bbc0d..91002d47056 100644 --- a/dictionaries/CallMap_73_delta.php +++ b/dictionaries/CallMap_73_delta.php @@ -50,6 +50,14 @@ 'socket_wsaprotocol_info_release' => ['bool', 'info_id'=>'string'], ], 'changed' => [ + 'array_push' => [ + 'old' => ['int', '&rw_array'=>'array', '...values'=>'mixed'], + 'new' => ['int', '&rw_array'=>'array', '...values='=>'mixed'], + ], + 'array_unshift' => [ + 'old' => ['int', '&rw_array'=>'array', '...values'=>'mixed'], + 'new' => ['int', '&rw_array'=>'array', '...values='=>'mixed'], + ], 'bcscale' => [ 'old' => ['int', 'scale'=>'int'], 'new' => ['int', 'scale='=>'int'], diff --git a/dictionaries/CallMap_74_delta.php b/dictionaries/CallMap_74_delta.php index 83b9108bd27..af5e0d976bf 100644 --- a/dictionaries/CallMap_74_delta.php +++ b/dictionaries/CallMap_74_delta.php @@ -20,6 +20,14 @@ 'mb_str_split' => ['list|false', 'string'=>'string', 'length='=>'positive-int', 'encoding='=>'string'], ], 'changed' => [ + 'array_merge' => [ + 'old' => ['array', '...arrays'=>'array'], + 'new' => ['array', '...arrays='=>'array'], + ], + 'array_merge_recursive' => [ + 'old' => ['array', '...arrays'=>'array'], + 'new' => ['array', '...arrays='=>'array'], + ], 'gzread' => [ 'old' => ['string|0', 'stream'=>'resource', 'length'=>'int'], 'new' => ['string|false', 'stream'=>'resource', 'length'=>'int'], diff --git a/dictionaries/CallMap_80_delta.php b/dictionaries/CallMap_80_delta.php index 35d3518ac92..1e38f8cbda3 100644 --- a/dictionaries/CallMap_80_delta.php +++ b/dictionaries/CallMap_80_delta.php @@ -133,10 +133,42 @@ 'old' => ['bool', 'name'=>'string', 'content'=>'string', 'isParam'=>'bool', 'publicId'=>'string', 'systemId'=>'string', 'notationData'=>'string'], 'new' => ['bool', 'name'=>'string', 'content'=>'string', 'isParam='=>'bool', 'publicId='=>'?string', 'systemId='=>'?string', 'notationData='=>'?string'], ], + 'array_column' => [ + 'old' => ['array', 'array'=>'array', 'column_key'=>'mixed', 'index_key='=>'mixed'], + 'new' => ['array', 'array'=>'array', 'column_key'=>'int|string|null', 'index_key='=>'int|string|null'], + ], 'array_combine' => [ 'old' => ['associative-array|false', 'keys'=>'string[]|int[]', 'values'=>'array'], 'new' => ['associative-array', 'keys'=>'string[]|int[]', 'values'=>'array'], ], + 'array_diff' => [ + 'old' => ['associative-array', 'array'=>'array', '...arrays'=>'array'], + 'new' => ['associative-array', 'array'=>'array', '...arrays='=>'array'], + ], + 'array_diff_assoc' => [ + 'old' => ['associative-array', 'array'=>'array', '...arrays'=>'array'], + 'new' => ['associative-array', 'array'=>'array', '...arrays='=>'array'], + ], + 'array_diff_key' => [ + 'old' => ['associative-array', 'array'=>'array', '...arrays'=>'array'], + 'new' => ['associative-array', 'array'=>'array', '...arrays='=>'array'], + ], + 'array_key_exists' => [ + 'old' => ['bool', 'key'=>'string|int', 'array'=>'array|object'], + 'new' => ['bool', 'key'=>'string|int', 'array'=>'array'], + ], + 'array_intersect' => [ + 'old' => ['associative-array', 'array'=>'array', '...arrays'=>'array'], + 'new' => ['associative-array', 'array'=>'array', '...arrays='=>'array'], + ], + 'array_intersect_assoc' => [ + 'old' => ['associative-array', 'array'=>'array', '...arrays'=>'array'], + 'new' => ['associative-array', 'array'=>'array', '...arrays='=>'array'], + ], + 'array_intersect_key' => [ + 'old' => ['associative-array', 'array'=>'array', '...arrays'=>'array'], + 'new' => ['associative-array', 'array'=>'array', '...arrays='=>'array'], + ], 'bcadd' => [ 'old' => ['numeric-string', 'num1'=>'numeric-string', 'num2'=>'numeric-string', 'scale='=>'int'], 'new' => ['numeric-string', 'num1'=>'numeric-string', 'num2'=>'numeric-string', 'scale='=>'int|null'], diff --git a/dictionaries/CallMap_historical.php b/dictionaries/CallMap_historical.php index f77fa29f0c2..506a844ee92 100644 --- a/dictionaries/CallMap_historical.php +++ b/dictionaries/CallMap_historical.php @@ -9510,9 +9510,9 @@ 'array_column' => ['array', 'array'=>'array', 'column_key'=>'mixed', 'index_key='=>'mixed'], 'array_combine' => ['associative-array|false', 'keys'=>'string[]|int[]', 'values'=>'array'], 'array_count_values' => ['associative-array', 'array'=>'array'], - 'array_diff' => ['associative-array', 'array'=>'array', 'arrays'=>'array', '...args='=>'array'], - 'array_diff_assoc' => ['associative-array', 'array'=>'array', 'arrays'=>'array', '...args='=>'array'], - 'array_diff_key' => ['associative-array', 'array'=>'array', 'arrays'=>'array', '...args='=>'array'], + 'array_diff' => ['associative-array', 'array'=>'array', '...arrays'=>'array'], + 'array_diff_assoc' => ['associative-array', 'array'=>'array', '...arrays'=>'array'], + 'array_diff_key' => ['associative-array', 'array'=>'array', '...arrays'=>'array'], 'array_diff_uassoc' => ['associative-array', 'array'=>'array', 'rest'=>'array', 'data_comp_func'=>'callable(mixed,mixed):int'], 'array_diff_uassoc\'1' => ['associative-array', 'array'=>'array', 'rest'=>'array', 'arr3'=>'array', 'arg4'=>'array|callable(mixed,mixed):int', '...rest='=>'array|callable(mixed,mixed):int'], 'array_diff_ukey' => ['associative-array', 'array'=>'array', 'rest'=>'array', 'key_comp_func'=>'callable(mixed,mixed):int'], @@ -9521,28 +9521,28 @@ 'array_fill_keys' => ['array', 'keys'=>'array', 'value'=>'mixed'], 'array_filter' => ['associative-array', 'array'=>'array', 'callback='=>'callable(mixed,mixed=):scalar', 'mode='=>'int'], 'array_flip' => ['associative-array|associative-array', 'array'=>'array'], - 'array_intersect' => ['associative-array', 'array'=>'array', 'arrays'=>'array', '...args='=>'array'], - 'array_intersect_assoc' => ['associative-array', 'array'=>'array', 'arrays'=>'array', '...args='=>'array'], - 'array_intersect_key' => ['associative-array', 'array'=>'array', 'arrays'=>'array', '...args='=>'array'], + 'array_intersect' => ['associative-array', 'array'=>'array', '...arrays'=>'array'], + 'array_intersect_assoc' => ['associative-array', 'array'=>'array', '...arrays'=>'array'], + 'array_intersect_key' => ['associative-array', 'array'=>'array', '...arrays'=>'array'], 'array_intersect_uassoc' => ['associative-array', 'array'=>'array', 'rest'=>'array', 'key_compare_func'=>'callable(mixed,mixed):int'], 'array_intersect_uassoc\'1' => ['associative-array', 'array'=>'array', 'rest'=>'array', 'arr3'=>'array', 'arg4'=>'array|callable(mixed,mixed):int', '...rest'=>'array|callable(mixed,mixed):int'], 'array_intersect_ukey' => ['associative-array', 'array'=>'array', 'rest'=>'array', 'key_compare_func'=>'callable(mixed,mixed):int'], 'array_intersect_ukey\'1' => ['associative-array', 'array'=>'array', 'rest'=>'array', 'arr3'=>'array', 'arg4'=>'array|callable(mixed,mixed):int', '...rest'=>'array|callable(mixed,mixed):int'], - 'array_key_exists' => ['bool', 'key'=>'string|int', 'array'=>'array|ArrayObject'], + 'array_key_exists' => ['bool', 'key'=>'string|int', 'array'=>'array|object'], 'array_keys' => ['list', 'array'=>'array', 'filter_value='=>'mixed', 'strict='=>'bool'], 'array_map' => ['array', 'callback'=>'?callable', 'array'=>'array', '...arrays='=>'array'], - 'array_merge' => ['array', 'arrays'=>'array', '...args='=>'array'], - 'array_merge_recursive' => ['array', 'arrays'=>'array', '...args='=>'array'], + 'array_merge' => ['array', '...arrays'=>'array'], + 'array_merge_recursive' => ['array', '...arrays'=>'array'], 'array_multisort' => ['bool', '&rw_array'=>'array', 'rest='=>'array|int', 'array1_sort_flags='=>'array|int', '...args='=>'array|int'], 'array_pad' => ['array', 'array'=>'array', 'length'=>'int', 'value'=>'mixed'], 'array_pop' => ['mixed', '&rw_array'=>'array'], 'array_product' => ['int|float', 'array'=>'array'], - 'array_push' => ['int', '&rw_array'=>'array', 'values'=>'mixed', '...vars='=>'mixed'], + 'array_push' => ['int', '&rw_array'=>'array', '...values'=>'mixed'], 'array_rand' => ['int|string|array|array', 'array'=>'non-empty-array', 'num'=>'int'], 'array_rand\'1' => ['int|string', 'array'=>'array'], 'array_reduce' => ['mixed', 'array'=>'array', 'callback'=>'callable(mixed,mixed):mixed', 'initial='=>'mixed'], - 'array_replace' => ['array', 'array'=>'array', 'replacements'=>'array', '...args='=>'array'], - 'array_replace_recursive' => ['array', 'array'=>'array', 'replacements'=>'array', '...args='=>'array'], + 'array_replace' => ['array', 'array'=>'array', '...replacements='=>'array'], + 'array_replace_recursive' => ['array', 'array'=>'array', '...replacements='=>'array'], 'array_reverse' => ['array', 'array'=>'array', 'preserve_keys='=>'bool'], 'array_search' => ['int|string|false', 'needle'=>'mixed', 'haystack'=>'array', 'strict='=>'bool'], 'array_shift' => ['mixed|null', '&rw_array'=>'array'], @@ -9564,7 +9564,7 @@ 'array_unique' => ['array', 'array'=>'array', 'flags='=>'0'], 'array_unique\'1' => ['array', 'array'=>'array', 'flags='=>'1'], 'array_unique\'2' => ['array', 'array'=>'array', 'flags='=>'2|5'], - 'array_unshift' => ['int', '&rw_array'=>'array', 'values'=>'mixed', '...vars='=>'mixed'], + 'array_unshift' => ['int', '&rw_array'=>'array', '...values'=>'mixed'], 'array_values' => ['list', 'array'=>'array'], 'array_walk' => ['bool', '&rw_array'=>'array', 'callback'=>'callable', 'arg='=>'mixed'], 'array_walk\'1' => ['bool', '&rw_array'=>'object', 'callback'=>'callable', 'arg='=>'mixed'], diff --git a/tests/Internal/Codebase/InternalCallMapHandlerTest.php b/tests/Internal/Codebase/InternalCallMapHandlerTest.php index e843cf83fde..24b4bb44c1d 100644 --- a/tests/Internal/Codebase/InternalCallMapHandlerTest.php +++ b/tests/Internal/Codebase/InternalCallMapHandlerTest.php @@ -47,21 +47,7 @@ class InternalCallMapHandlerTest extends TestCase */ private static $ignoredFunctions = [ 'apcu_entry', - 'array_column', - 'array_diff', - 'array_diff_assoc', - 'array_diff_key', - 'array_intersect', - 'array_intersect_assoc', - 'array_intersect_key', - 'array_key_exists', - 'array_merge', - 'array_merge_recursive', 'array_multisort', - 'array_push', - 'array_replace', - 'array_replace_recursive', - 'array_unshift', 'bcdiv', 'bcmod', 'bcpowmod', @@ -355,7 +341,6 @@ class InternalCallMapHandlerTest extends TestCase 'yaml_emit_file', 'zip_entry_close', 'zlib_encode', - ]; /**