|
6 | 6 |
|
7 | 7 | use function PHPStan\Testing\assertType;
|
8 | 8 |
|
9 |
| -$fields = $_GET['fields'] ?? 'all'; |
10 |
| -$key = $_GET['key'] ?? 'fields'; |
11 |
| -$count = ! empty( $_GET['count'] ); |
12 |
| - |
13 | 9 | // Default argument values
|
14 | 10 | assertType('array<int, WP_Term>|WP_Error', get_terms());
|
15 | 11 | assertType('array<int, WP_Term>|WP_Error', get_terms([]));
|
16 | 12 |
|
17 |
| -// Unknown values |
18 |
| -assertType('array<int, int|string|WP_Term>|string|WP_Error', get_terms(['fields'=>$fields])); |
19 |
| -assertType('array<int, int|string|WP_Term>|string|WP_Error', get_terms(['foo'=>'bar','fields'=>$fields])); |
20 |
| -assertType('array<int, int|string|WP_Term>|string|WP_Error', get_terms(['count'=>$count])); |
21 |
| -assertType('array<int, int|string|WP_Term>|string|WP_Error', get_terms(['count'=>$count,'fields'=>'ids'])); |
22 |
| -assertType('array<int, int|string|WP_Term>|string|WP_Error', get_terms(['fields'=>$fields,'count'=>false])); |
23 |
| - |
24 |
| -// Unknown keys |
25 |
| -assertType('array<int, int|string|WP_Term>|string|WP_Error', get_terms([$key=>'all'])); |
26 |
| -assertType('array<int, int|string|WP_Term>|string|WP_Error', get_terms(['foo'=>'bar',$key=>'all'])); |
27 |
| - |
28 | 13 | // Requesting a count
|
29 | 14 | assertType('string|WP_Error', get_terms(['fields'=>'count']));
|
30 | 15 | assertType('string|WP_Error', get_terms(['foo'=>'bar','fields'=>'count']));
|
31 |
| -assertType('string|WP_Error', get_terms(['count'=>true])); |
32 |
| -assertType('string|WP_Error', get_terms(['foo'=>'bar','count'=>true])); |
33 |
| -assertType('string|WP_Error', get_terms(['fields'=>'ids','count'=>true])); |
34 |
| -assertType('string|WP_Error', get_terms(['fields'=>$fields,'count'=>true])); |
35 | 16 |
|
36 | 17 | // Requesting names or slugs
|
37 | 18 | assertType('array<int, string>|WP_Error', get_terms(['fields'=>'names']));
|
|
44 | 25 | assertType('array<int, int>|WP_Error', get_terms(['fields'=>'tt_ids']));
|
45 | 26 |
|
46 | 27 | // Requesting parent IDs (numeric strings)
|
47 |
| -assertType('array<int, string>|WP_Error', get_terms(['fields'=>'id=>parent'])); |
| 28 | +assertType('array<int, numeric-string>|WP_Error', get_terms(['fields'=>'id=>parent'])); |
48 | 29 |
|
49 | 30 | // Requesting objects
|
50 | 31 | assertType('array<int, WP_Term>|WP_Error', get_terms(['fields'=>'all']));
|
|
60 | 41 | assertType('array<int, WP_Term>|WP_Error', wp_get_post_categories(123));
|
61 | 42 | assertType('array<int, WP_Term>|WP_Error', wp_get_post_tags(123));
|
62 | 43 | assertType('array<int, WP_Term>|WP_Error', wp_get_post_terms(123, 'category'));
|
| 44 | + |
| 45 | +// Unions - nonexhaustive list |
| 46 | +$fields = $_GET['foo'] ? (string)$_GET['string'] : 'all'; |
| 47 | +$key = $_GET['foo'] ? (string)$_GET['string'] : 'fields'; |
| 48 | +$count = ! empty( $_GET['count'] ); |
| 49 | + |
| 50 | +$union = $_GET['foo'] ? ['key'=>'value'] : ['some'=>'thing']; |
| 51 | +assertType('array<int, WP_Term>|WP_Error', get_terms($union)); |
| 52 | + |
| 53 | +$union = $_GET['foo'] ? ['key'=>'value'] : ['fields'=>'count']; |
| 54 | +assertType('array<int, WP_Term>|string|WP_Error', get_terms($union)); |
| 55 | + |
| 56 | +$union = $_GET['foo'] ? ['key'=>'value'] : ['fields'=>'names']; |
| 57 | +assertType('array<int, string|WP_Term>|WP_Error', get_terms($union)); |
| 58 | + |
| 59 | +$union = $_GET['foo'] ? ['key'=>'value'] : ['fields'=>'ids']; |
| 60 | +assertType('array<int, int|WP_Term>|WP_Error', get_terms($union)); |
| 61 | + |
| 62 | +$union = $_GET['foo'] ? ['key'=>'value'] : ['fields'=>'id=>parent']; |
| 63 | +assertType('array<int, WP_Term|numeric-string>|WP_Error', get_terms($union)); |
| 64 | + |
| 65 | +$union = $_GET['foo'] ? ['key'=>'value'] : ['fields'=>'all']; |
| 66 | +assertType('array<int, WP_Term>|WP_Error', get_terms($union)); |
| 67 | + |
| 68 | +$union = $_GET['foo'] ? ['fields'=>'names'] : ['fields'=>'count']; |
| 69 | +assertType('array<int, string>|string|WP_Error', get_terms($union)); |
| 70 | + |
| 71 | +$union = $_GET['foo'] ? ['fields'=>'id=>parent'] : ['fields'=>'ids']; |
| 72 | +assertType('array<int, int|numeric-string>|WP_Error', get_terms($union)); |
| 73 | + |
| 74 | +$union = $_GET['foo'] ? ['fields'=>'all'] : ['fields'=>'count']; |
| 75 | +assertType('array<int, WP_Term>|string|WP_Error', get_terms($union)); |
| 76 | + |
| 77 | +// Unions with unknown fields value |
| 78 | +$union = $_GET['foo'] ? (string)$_GET['string'] : 'all'; |
| 79 | +assertType('array<int, int|string|WP_Term>|string|WP_Error', get_terms(['fields'=>$union])); |
| 80 | + |
| 81 | +$union = $_GET['foo'] ? (string)$_GET['string'] : 'ids'; |
| 82 | +assertType('array<int, int|string|WP_Term>|string|WP_Error', get_terms(['fields'=>$union])); |
| 83 | + |
| 84 | +$union = $_GET['foo'] ? (string)$_GET['string'] : 'id=>parent'; |
| 85 | +assertType('array<int, int|string|WP_Term>|string|WP_Error', get_terms(['fields'=>$union])); |
| 86 | + |
| 87 | +$union = $_GET['foo'] ? (string)$_GET['string'] : 'count'; |
| 88 | +assertType('array<int, int|string|WP_Term>|string|WP_Error', get_terms(['fields'=>$union])); |
| 89 | + |
| 90 | +$union = $_GET['foo'] ? (string)$_GET['string'] : 'names'; |
| 91 | +assertType('array<int, int|string|WP_Term>|string|WP_Error', get_terms(['fields'=>$union])); |
| 92 | + |
| 93 | +$union = $_GET['foo'] ? (string)$_GET['string'] : 'all'; |
| 94 | +assertType('array<int, int|string|WP_Term>|string|WP_Error', get_terms(['foo'=>'bar','fields'=>$union])); |
| 95 | + |
| 96 | +// Unions with unknown fields key - not supported |
| 97 | +$union = $_GET['foo'] ? (string)$_GET['string'] : 'fields'; |
| 98 | +assertType('array<int, int|string|WP_Term>|string|WP_Error', get_terms([$union=>'all'])); |
| 99 | + |
| 100 | +$union = $_GET['foo'] ? (string)$_GET['string'] : 'fields'; |
| 101 | +assertType('array<int, int|string|WP_Term>|string|WP_Error', get_terms([$union=>'ids'])); |
| 102 | + |
| 103 | +$union = $_GET['foo'] ? (string)$_GET['string'] : 'fields'; |
| 104 | +assertType('array<int, int|string|WP_Term>|string|WP_Error', get_terms([$union=>'id=>parent'])); |
| 105 | + |
| 106 | +$union = $_GET['foo'] ? (string)$_GET['string'] : 'fields'; |
| 107 | +assertType('array<int, int|string|WP_Term>|string|WP_Error', get_terms([$union=>'count'])); |
| 108 | + |
| 109 | +$union = $_GET['foo'] ? (string)$_GET['string'] : 'fields'; |
| 110 | +assertType('array<int, int|string|WP_Term>|string|WP_Error', get_terms([$union=>'names'])); |
| 111 | + |
| 112 | +$union = $_GET['foo'] ? (string)$_GET['string'] : 'fields'; |
| 113 | +assertType('array<int, int|string|WP_Term>|string|WP_Error', get_terms(['foo'=>'bar',$union=>'all'])); |
0 commit comments