From da91b0729868334ad8cae19f162d8438d6a94f23 Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Tue, 27 Aug 2024 10:35:32 +0100 Subject: [PATCH] Increase the specificity of the return type of `_get_list_table()`. --- functionMap.php | 2 +- tests/data/_get_list_table.php | 34 +++++++++++++++++----------------- wordpress-stubs.php | 4 +++- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/functionMap.php b/functionMap.php index e4b18db..8c8e353 100644 --- a/functionMap.php +++ b/functionMap.php @@ -32,7 +32,7 @@ * @link https://github.com/phpstan/phpstan-src/blob/1.10.x/resources/functionMap.php */ return [ - '_get_list_table' => ["(\$class_name is 'WP_Posts_List_Table'|'WP_Media_List_Table'|'WP_Terms_List_Table'|'WP_Users_List_Table'|'WP_Comments_List_Table'|'WP_Post_Comments_List_Table'|'WP_Links_List_Table'|'WP_Plugin_Install_List_Table'|'WP_Themes_List_Table'|'WP_Theme_Install_List_Table'|'WP_Plugins_List_Table'|'WP_Application_Passwords_List_Table'|'WP_MS_Sites_List_Table'|'WP_MS_Users_List_Table'|'WP_MS_Themes_List_Table'|'WP_Privacy_Data_Export_Requests_List_Table'|'WP_Privacy_Data_Removal_Requests_List_Table' ? \WP_List_Table : false)", 'args' => 'array{screen?: string}'], + '_get_list_table' => ["(\$class_name is 'WP_Posts_List_Table'|'WP_Media_List_Table'|'WP_Terms_List_Table'|'WP_Users_List_Table'|'WP_Comments_List_Table'|'WP_Post_Comments_List_Table'|'WP_Links_List_Table'|'WP_Plugin_Install_List_Table'|'WP_Themes_List_Table'|'WP_Theme_Install_List_Table'|'WP_Plugins_List_Table'|'WP_Application_Passwords_List_Table'|'WP_MS_Sites_List_Table'|'WP_MS_Users_List_Table'|'WP_MS_Themes_List_Table'|'WP_Privacy_Data_Export_Requests_List_Table'|'WP_Privacy_Data_Removal_Requests_List_Table' ? T : false)", '@phpstan-template' => 'T', 'class_name' => 'class-string', 'args' => 'array{screen?: string}'], 'addslashes_gpc' => ['T', '@phpstan-template' => 'T', 'gpc' => 'T'], 'add_submenu_page' => [null, 'callback' => "''|callable"], 'have_posts' => [null, '@phpstan-impure' => ''], diff --git a/tests/data/_get_list_table.php b/tests/data/_get_list_table.php index d075c1c..ec355b6 100644 --- a/tests/data/_get_list_table.php +++ b/tests/data/_get_list_table.php @@ -9,20 +9,20 @@ assertType('false', _get_list_table('Not_WP_List_Table')); -assertType('WP_List_Table', _get_list_table('WP_Posts_List_Table')); -assertType('WP_List_Table', _get_list_table('WP_Media_List_Table')); -assertType('WP_List_Table', _get_list_table('WP_Terms_List_Table')); -assertType('WP_List_Table', _get_list_table('WP_Users_List_Table')); -assertType('WP_List_Table', _get_list_table('WP_Comments_List_Table')); -assertType('WP_List_Table', _get_list_table('WP_Post_Comments_List_Table')); -assertType('WP_List_Table', _get_list_table('WP_Links_List_Table')); -assertType('WP_List_Table', _get_list_table('WP_Plugin_Install_List_Table')); -assertType('WP_List_Table', _get_list_table('WP_Themes_List_Table')); -assertType('WP_List_Table', _get_list_table('WP_Theme_Install_List_Table')); -assertType('WP_List_Table', _get_list_table('WP_Plugins_List_Table')); -assertType('WP_List_Table', _get_list_table('WP_Application_Passwords_List_Table')); -assertType('WP_List_Table', _get_list_table('WP_MS_Sites_List_Table')); -assertType('WP_List_Table', _get_list_table('WP_MS_Users_List_Table')); -assertType('WP_List_Table', _get_list_table('WP_MS_Themes_List_Table')); -assertType('WP_List_Table', _get_list_table('WP_Privacy_Data_Export_Requests_List_Table')); -assertType('WP_List_Table', _get_list_table('WP_Privacy_Data_Removal_Requests_List_Table')); +assertType('WP_Posts_List_Table', _get_list_table('WP_Posts_List_Table')); +assertType('WP_Media_List_Table', _get_list_table('WP_Media_List_Table')); +assertType('WP_Terms_List_Table', _get_list_table('WP_Terms_List_Table')); +assertType('WP_Users_List_Table', _get_list_table('WP_Users_List_Table')); +assertType('WP_Comments_List_Table', _get_list_table('WP_Comments_List_Table')); +assertType('WP_Post_Comments_List_Table', _get_list_table('WP_Post_Comments_List_Table')); +assertType('WP_Links_List_Table', _get_list_table('WP_Links_List_Table')); +assertType('WP_Plugin_Install_List_Table', _get_list_table('WP_Plugin_Install_List_Table')); +assertType('WP_Themes_List_Table', _get_list_table('WP_Themes_List_Table')); +assertType('WP_Theme_Install_List_Table', _get_list_table('WP_Theme_Install_List_Table')); +assertType('WP_Plugins_List_Table', _get_list_table('WP_Plugins_List_Table')); +assertType('WP_Application_Passwords_List_Table', _get_list_table('WP_Application_Passwords_List_Table')); +assertType('WP_MS_Sites_List_Table', _get_list_table('WP_MS_Sites_List_Table')); +assertType('WP_MS_Users_List_Table', _get_list_table('WP_MS_Users_List_Table')); +assertType('WP_MS_Themes_List_Table', _get_list_table('WP_MS_Themes_List_Table')); +assertType('WP_Privacy_Data_Export_Requests_List_Table', _get_list_table('WP_Privacy_Data_Export_Requests_List_Table')); +assertType('WP_Privacy_Data_Removal_Requests_List_Table', _get_list_table('WP_Privacy_Data_Removal_Requests_List_Table')); diff --git a/wordpress-stubs.php b/wordpress-stubs.php index d8fdbf6..1496324 100644 --- a/wordpress-stubs.php +++ b/wordpress-stubs.php @@ -86439,8 +86439,10 @@ function wp_get_popular_importers() * @param string $class_name The type of the list table, which is the class name. * @param array $args Optional. Arguments to pass to the class. Accepts 'screen'. * @return WP_List_Table|false List table object on success, false if the class does not exist. + * @phpstan-template T + * @phpstan-param class-string $class_name * @phpstan-param array{screen?: string} $args - * @phpstan-return ($class_name is 'WP_Posts_List_Table'|'WP_Media_List_Table'|'WP_Terms_List_Table'|'WP_Users_List_Table'|'WP_Comments_List_Table'|'WP_Post_Comments_List_Table'|'WP_Links_List_Table'|'WP_Plugin_Install_List_Table'|'WP_Themes_List_Table'|'WP_Theme_Install_List_Table'|'WP_Plugins_List_Table'|'WP_Application_Passwords_List_Table'|'WP_MS_Sites_List_Table'|'WP_MS_Users_List_Table'|'WP_MS_Themes_List_Table'|'WP_Privacy_Data_Export_Requests_List_Table'|'WP_Privacy_Data_Removal_Requests_List_Table' ? \WP_List_Table : false) + * @phpstan-return ($class_name is 'WP_Posts_List_Table'|'WP_Media_List_Table'|'WP_Terms_List_Table'|'WP_Users_List_Table'|'WP_Comments_List_Table'|'WP_Post_Comments_List_Table'|'WP_Links_List_Table'|'WP_Plugin_Install_List_Table'|'WP_Themes_List_Table'|'WP_Theme_Install_List_Table'|'WP_Plugins_List_Table'|'WP_Application_Passwords_List_Table'|'WP_MS_Sites_List_Table'|'WP_MS_Users_List_Table'|'WP_MS_Themes_List_Table'|'WP_Privacy_Data_Export_Requests_List_Table'|'WP_Privacy_Data_Removal_Requests_List_Table' ? T : false) */ function _get_list_table($class_name, $args = array()) {