Skip to content

Commit da91b07

Browse files
committed
Increase the specificity of the return type of _get_list_table().
1 parent 3e47be6 commit da91b07

File tree

3 files changed

+21
-19
lines changed

3 files changed

+21
-19
lines changed

functionMap.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
* @link https://github.com/phpstan/phpstan-src/blob/1.10.x/resources/functionMap.php
3333
*/
3434
return [
35-
'_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}'],
35+
'_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<T>', 'args' => 'array{screen?: string}'],
3636
'addslashes_gpc' => ['T', '@phpstan-template' => 'T', 'gpc' => 'T'],
3737
'add_submenu_page' => [null, 'callback' => "''|callable"],
3838
'have_posts' => [null, '@phpstan-impure' => ''],

tests/data/_get_list_table.php

+17-17
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,20 @@
99

1010
assertType('false', _get_list_table('Not_WP_List_Table'));
1111

12-
assertType('WP_List_Table', _get_list_table('WP_Posts_List_Table'));
13-
assertType('WP_List_Table', _get_list_table('WP_Media_List_Table'));
14-
assertType('WP_List_Table', _get_list_table('WP_Terms_List_Table'));
15-
assertType('WP_List_Table', _get_list_table('WP_Users_List_Table'));
16-
assertType('WP_List_Table', _get_list_table('WP_Comments_List_Table'));
17-
assertType('WP_List_Table', _get_list_table('WP_Post_Comments_List_Table'));
18-
assertType('WP_List_Table', _get_list_table('WP_Links_List_Table'));
19-
assertType('WP_List_Table', _get_list_table('WP_Plugin_Install_List_Table'));
20-
assertType('WP_List_Table', _get_list_table('WP_Themes_List_Table'));
21-
assertType('WP_List_Table', _get_list_table('WP_Theme_Install_List_Table'));
22-
assertType('WP_List_Table', _get_list_table('WP_Plugins_List_Table'));
23-
assertType('WP_List_Table', _get_list_table('WP_Application_Passwords_List_Table'));
24-
assertType('WP_List_Table', _get_list_table('WP_MS_Sites_List_Table'));
25-
assertType('WP_List_Table', _get_list_table('WP_MS_Users_List_Table'));
26-
assertType('WP_List_Table', _get_list_table('WP_MS_Themes_List_Table'));
27-
assertType('WP_List_Table', _get_list_table('WP_Privacy_Data_Export_Requests_List_Table'));
28-
assertType('WP_List_Table', _get_list_table('WP_Privacy_Data_Removal_Requests_List_Table'));
12+
assertType('WP_Posts_List_Table', _get_list_table('WP_Posts_List_Table'));
13+
assertType('WP_Media_List_Table', _get_list_table('WP_Media_List_Table'));
14+
assertType('WP_Terms_List_Table', _get_list_table('WP_Terms_List_Table'));
15+
assertType('WP_Users_List_Table', _get_list_table('WP_Users_List_Table'));
16+
assertType('WP_Comments_List_Table', _get_list_table('WP_Comments_List_Table'));
17+
assertType('WP_Post_Comments_List_Table', _get_list_table('WP_Post_Comments_List_Table'));
18+
assertType('WP_Links_List_Table', _get_list_table('WP_Links_List_Table'));
19+
assertType('WP_Plugin_Install_List_Table', _get_list_table('WP_Plugin_Install_List_Table'));
20+
assertType('WP_Themes_List_Table', _get_list_table('WP_Themes_List_Table'));
21+
assertType('WP_Theme_Install_List_Table', _get_list_table('WP_Theme_Install_List_Table'));
22+
assertType('WP_Plugins_List_Table', _get_list_table('WP_Plugins_List_Table'));
23+
assertType('WP_Application_Passwords_List_Table', _get_list_table('WP_Application_Passwords_List_Table'));
24+
assertType('WP_MS_Sites_List_Table', _get_list_table('WP_MS_Sites_List_Table'));
25+
assertType('WP_MS_Users_List_Table', _get_list_table('WP_MS_Users_List_Table'));
26+
assertType('WP_MS_Themes_List_Table', _get_list_table('WP_MS_Themes_List_Table'));
27+
assertType('WP_Privacy_Data_Export_Requests_List_Table', _get_list_table('WP_Privacy_Data_Export_Requests_List_Table'));
28+
assertType('WP_Privacy_Data_Removal_Requests_List_Table', _get_list_table('WP_Privacy_Data_Removal_Requests_List_Table'));

wordpress-stubs.php

+3-1
Original file line numberDiff line numberDiff line change
@@ -86439,8 +86439,10 @@ function wp_get_popular_importers()
8643986439
* @param string $class_name The type of the list table, which is the class name.
8644086440
* @param array $args Optional. Arguments to pass to the class. Accepts 'screen'.
8644186441
* @return WP_List_Table|false List table object on success, false if the class does not exist.
86442+
* @phpstan-template T
86443+
* @phpstan-param class-string<T> $class_name
8644286444
* @phpstan-param array{screen?: string} $args
86443-
* @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)
86445+
* @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)
8644486446
*/
8644586447
function _get_list_table($class_name, $args = array())
8644686448
{

0 commit comments

Comments
 (0)