File tree 3 files changed +17
-3
lines changed
3 files changed +17
-3
lines changed Original file line number Diff line number Diff line change 14
14
15
15
/**
16
16
* This trait provides helpers to compare enums
17
+ *
18
+ * @template TEnum of \UnitEnum
17
19
*/
18
20
trait Comparable
19
21
{
@@ -114,7 +116,10 @@ public static function hasNot(string $name): bool
114
116
*/
115
117
public static function hasValue (string |int $ value ): bool
116
118
{
117
- $ caseValues = is_subclass_of (static ::class, BackedEnum::class)
119
+ /** @var class-string<TEnum> */
120
+ $ class = static ::class;
121
+
122
+ $ caseValues = is_subclass_of ($ class , BackedEnum::class)
118
123
? array_column (static ::cases (), 'value ' )
119
124
: array_column (static ::cases (), 'name ' );
120
125
Original file line number Diff line number Diff line change 10
10
11
11
/**
12
12
* This trait provides some useful methods for enums
13
+ *
14
+ * @template TEnum of \UnitEnum
13
15
*/
14
16
trait HelperMethods
15
17
{
@@ -32,7 +34,10 @@ public static function names(): array
32
34
*/
33
35
public static function values (): array
34
36
{
35
- return is_subclass_of (static ::class, BackedEnum::class)
37
+ /** @var class-string<TEnum> */
38
+ $ class = static ::class;
39
+
40
+ return is_subclass_of ($ class , BackedEnum::class)
36
41
? array_column (static ::cases (), 'value ' )
37
42
: array_column (static ::cases (), 'name ' );
38
43
}
@@ -55,7 +60,10 @@ public static function collect(): ArrayHelper
55
60
*/
56
61
public static function options (): array
57
62
{
58
- return is_subclass_of (static ::class, BackedEnum::class)
63
+ /** @var class-string<TEnum> */
64
+ $ class = static ::class;
65
+
66
+ return is_subclass_of ($ class , BackedEnum::class)
59
67
? array_column (static ::cases (), 'value ' , 'name ' )
60
68
: self ::values ();
61
69
}
Original file line number Diff line number Diff line change @@ -102,6 +102,7 @@ public function try_from_method_with_backed_enum(): void
102
102
);
103
103
104
104
// It's case sensitive
105
+ // @phpstan-ignore method.alreadyNarrowedType ( Because it's a regression test )
105
106
$ this ->assertNull (
106
107
SampleStatusBackedEnum::tryFrom ('PUBLISH ' ),
107
108
);
You can’t perform that action at this time.
0 commit comments