Skip to content

Commit

Permalink
Add cond. return type for _get_list_table() (#209)
Browse files Browse the repository at this point in the history
  • Loading branch information
IanDelMar authored Aug 27, 2024
1 parent 7ba67b1 commit 3e47be6
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 0 deletions.
1 change: 1 addition & 0 deletions functionMap.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +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}'],
'addslashes_gpc' => ['T', '@phpstan-template' => 'T', 'gpc' => 'T'],
'add_submenu_page' => [null, 'callback' => "''|callable"],
'have_posts' => [null, '@phpstan-impure' => ''],
Expand Down
1 change: 1 addition & 0 deletions tests/TypeInferenceTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ class TypeInferenceTest extends \PHPStan\Testing\TypeInferenceTestCase
/** @return iterable<mixed> */
public function dataFileAsserts(): iterable
{
yield from $this->gatherAssertTypes(__DIR__ . '/data/_get_list_table.php');
yield from $this->gatherAssertTypes(__DIR__ . '/data/current_time.php');
yield from $this->gatherAssertTypes(__DIR__ . '/data/echo_parameter.php');
yield from $this->gatherAssertTypes(__DIR__ . '/data/get_attachment_taxonomies.php');
Expand Down
28 changes: 28 additions & 0 deletions tests/data/_get_list_table.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php

declare(strict_types=1);

namespace PhpStubs\WordPress\Core\Tests;

use function _get_list_table;
use function PHPStan\Testing\assertType;

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'));
2 changes: 2 additions & 0 deletions wordpress-stubs.php
Original file line number Diff line number Diff line change
Expand Up @@ -86439,6 +86439,8 @@ 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-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)
*/
function _get_list_table($class_name, $args = array())
{
Expand Down

0 comments on commit 3e47be6

Please sign in to comment.