Skip to content

Commit

Permalink
Add functions to echo parameter extension (#143)
Browse files Browse the repository at this point in the history
  • Loading branch information
IanDelMar committed Feb 4, 2023
1 parent 52ef877 commit 979dcb8
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 0 deletions.
9 changes: 9 additions & 0 deletions src/EchoParameterDynamicFunctionReturnTypeExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,29 @@ class EchoParameterDynamicFunctionReturnTypeExtension implements \PHPStan\Type\D
* Function name and position of `$echo` parameter.
*/
private const SUPPORTED_FUNCTIONS = [
'checked' => 2,
'comment_class' => 3,
'disabled' => 2,
'edit_term_link' => 4,
'get_calendar' => 1,
'menu_page_url' => 1,
'next_posts' => 1,
'post_type_archive_title' => 1,
'previous_posts' => 0,
'selected' => 2,
'single_cat_title' => 1,
'single_month_title' => 1,
'single_post_title' => 1,
'single_tag_title' => 1,
'single_term_title' => 1,
'the_date' => 3,
'the_modified_date' => 3,
'the_title' => 2,
'wp_loginout' => 1,
'wp_nonce_field' => 3,
'wp_original_referer_field' => 0,
'wp_readonly' => 2,
'wp_referer_field' => 0,
'wp_register' => 2,
'wp_title' => 1,
];
Expand Down
36 changes: 36 additions & 0 deletions tests/data/echo_parameter.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,76 +7,112 @@
use function PHPStan\Testing\assertType;

// Default value of true
assertType('void', checked($_GET['foo']));
assertType('void', comment_class());
assertType('void', disabled($_GET['foo']));
assertType('void', edit_term_link());
assertType('void', get_calendar());
assertType('void', menu_page_url(''));
assertType('void', next_posts());
assertType('void', post_type_archive_title());
assertType('void', previous_posts());
assertType('void', selected($_GET['foo']));
assertType('void', single_cat_title());
assertType('void', single_month_title());
assertType('void', single_post_title());
assertType('void', single_tag_title());
assertType('void', single_term_title());
assertType('void', the_date());
assertType('void', the_modified_date());
assertType('void', the_title());
assertType('void', wp_loginout());
assertType('void', wp_nonce_field(-1, '_wpnonce', true));
assertType('void', wp_original_referer_field());
assertType('void', wp_readonly($_GET['foo']));
assertType('void', wp_referer_field());
assertType('void', wp_register());
assertType('void', wp_title());

// Explicit value of true
$value = true;
assertType('void', checked($_GET['foo'], true, $value));
assertType('void', comment_class('', null, null, $value));
assertType('void', disabled($_GET['foo'], true, $value));
assertType('void', edit_term_link('', '', '', null, $value));
assertType('void', get_calendar(true, $value));
assertType('void', menu_page_url('', $value));
assertType('void', next_posts(0, $value));
assertType('void', post_type_archive_title('', $value));
assertType('void', previous_posts($value));
assertType('void', selected($_GET['foo'], true, $value));
assertType('void', single_cat_title('', $value));
assertType('void', single_month_title('', $value));
assertType('void', single_post_title('', $value));
assertType('void', single_tag_title('', $value));
assertType('void', single_term_title('', $value));
assertType('void', the_date('', '', '', $value));
assertType('void', the_modified_date('', '', '', $value));
assertType('void', the_title('', '', $value));
assertType('void', wp_loginout('', $value));
assertType('void', wp_nonce_field(-1, '_wpnonce', true, $value));
assertType('void', wp_original_referer_field($value));
assertType('void', wp_readonly($_GET['foo'], true, $value));
assertType('void', wp_referer_field($value));
assertType('void', wp_register('', '', $value));
assertType('void', wp_title('', $value));

// Explicit value of false
$value = false;
assertType('string', checked($_GET['foo'], true, $value));
assertType('string', comment_class('', null, null, $value));
assertType('string', disabled($_GET['foo'], true, $value));
assertType('string', edit_term_link('', '', '', null, $value));
assertType('string', get_calendar(true, $value));
assertType('string', menu_page_url('', $value));
assertType('string', next_posts(0, $value));
assertType('string', post_type_archive_title('', $value));
assertType('string', previous_posts(false));
assertType('string', selected($_GET['foo'], true, $value));
assertType('string', single_cat_title('', $value));
assertType('string', single_month_title('', $value));
assertType('string', single_post_title('', $value));
assertType('string', single_tag_title('', $value));
assertType('string', single_term_title('', $value));
assertType('string', the_date('', '', '', $value));
assertType('string', the_modified_date('', '', '', $value));
assertType('string', the_title('', '', $value));
assertType('string', wp_loginout('', $value));
assertType('string', wp_nonce_field(-1, '_wpnonce', true, $value));
assertType('string', wp_original_referer_field($value));
assertType('string', wp_readonly($_GET['foo'], true, $value));
assertType('string', wp_referer_field($value));
assertType('string', wp_register('', '', $value));
assertType('string', wp_title('', $value));

// Unknown value
$value = isset($_GET['foo']);
assertType('string|void', checked($_GET['foo'], true, $value));
assertType('string|void', comment_class('', null, null, $value));
assertType('string|void', disabled($_GET['foo'], true, $value));
assertType('string|void', edit_term_link('', '', '', null, $value));
assertType('string|void', get_calendar(true, $value));
assertType('string|void', menu_page_url('', $value));
assertType('string|void', next_posts(0, $value));
assertType('string|void', post_type_archive_title('', $value));
assertType('string|void', previous_posts($value));
assertType('string|void', selected($_GET['foo'], true, $value));
assertType('string|void', single_cat_title('', $value));
assertType('string|void', single_month_title('', $value));
assertType('string|void', single_post_title('', $value));
assertType('string|void', single_tag_title('', $value));
assertType('string|void', single_term_title('', $value));
assertType('string|void', the_date('', '', '', $value));
assertType('string|void', the_modified_date('', '', '', $value));
assertType('string|void', the_title('', '', $value));
assertType('string|void', wp_loginout('', $value));
assertType('string|void', wp_nonce_field(-1, '_wpnonce', true, $value));
assertType('string|void', wp_original_referer_field($value));
assertType('string|void', wp_readonly($_GET['foo'], true, $value));
assertType('string|void', wp_referer_field($value));
assertType('string|void', wp_register('', '', $value));
assertType('string|void', wp_title('', $value));

0 comments on commit 979dcb8

Please sign in to comment.