@@ -35,17 +35,25 @@ class MissingTypehintCheck
35
35
36
36
private bool $ checkMissingCallableSignature ;
37
37
38
+ /** @var string[] */
39
+ private array $ skipCheckGenericClasses ;
40
+
41
+ /**
42
+ * @param string[] $skipCheckGenericClasses
43
+ */
38
44
public function __construct (
39
45
ReflectionProvider $ reflectionProvider ,
40
46
bool $ checkMissingIterableValueType ,
41
47
bool $ checkGenericClassInNonGenericObjectType ,
42
- bool $ checkMissingCallableSignature
48
+ bool $ checkMissingCallableSignature ,
49
+ array $ skipCheckGenericClasses = []
43
50
)
44
51
{
45
52
$ this ->reflectionProvider = $ reflectionProvider ;
46
53
$ this ->checkMissingIterableValueType = $ checkMissingIterableValueType ;
47
54
$ this ->checkGenericClassInNonGenericObjectType = $ checkGenericClassInNonGenericObjectType ;
48
55
$ this ->checkMissingCallableSignature = $ checkMissingCallableSignature ;
56
+ $ this ->skipCheckGenericClasses = $ skipCheckGenericClasses ;
49
57
}
50
58
51
59
/**
@@ -97,7 +105,7 @@ public function getNonGenericObjectTypesWithGenericClass(Type $type): array
97
105
}
98
106
99
107
$ objectTypes = [];
100
- TypeTraverser::map ($ type , static function (Type $ type , callable $ traverse ) use (&$ objectTypes ): Type {
108
+ TypeTraverser::map ($ type , function (Type $ type , callable $ traverse ) use (&$ objectTypes ): Type {
101
109
if ($ type instanceof GenericObjectType) {
102
110
$ traverse ($ type );
103
111
return $ type ;
@@ -114,6 +122,9 @@ public function getNonGenericObjectTypesWithGenericClass(Type $type): array
114
122
// checked by getIterableTypesWithMissingValueTypehint() already
115
123
return $ type ;
116
124
}
125
+ if (in_array ($ classReflection ->getName (), $ this ->skipCheckGenericClasses , true )) {
126
+ return $ type ;
127
+ }
117
128
if ($ classReflection ->isTrait ()) {
118
129
return $ type ;
119
130
}
0 commit comments