File tree 3 files changed +18
-2
lines changed
3 files changed +18
-2
lines changed Original file line number Diff line number Diff line change @@ -15,3 +15,4 @@ parameters:
15
15
wrongVarUsage : true
16
16
arrayDestructuring : true
17
17
objectFromNewClass : true
18
+ skipCheckGenericClasses : []
Original file line number Diff line number Diff line change @@ -28,6 +28,8 @@ parameters:
28
28
wrongVarUsage : false
29
29
arrayDestructuring : false
30
30
objectFromNewClass : false
31
+ skipCheckGenericClasses :
32
+ - RecursiveIterator
31
33
fileExtensions :
32
34
- php
33
35
checkAlwaysTrueCheckTypeFunctionCall : false
@@ -182,7 +184,8 @@ parametersSchema:
182
184
checkMissingTemplateTypeInParameter : bool (),
183
185
wrongVarUsage : bool (),
184
186
arrayDestructuring : bool (),
185
- objectFromNewClass : bool ()
187
+ objectFromNewClass : bool (),
188
+ skipCheckGenericClasses : listOf (string ())
186
189
])
187
190
fileExtensions : listOf (string ())
188
191
checkAlwaysTrueCheckTypeFunctionCall : bool ()
@@ -725,6 +728,7 @@ services:
725
728
class : PHPStan\Rules\Generics\GenericAncestorsCheck
726
729
arguments :
727
730
checkGenericClassInNonGenericObjectType : %checkGenericClassInNonGenericObjectType%
731
+ skipCheckGenericClasses : %featureToggles.skipCheckGenericClasses%
728
732
729
733
-
730
734
class : PHPStan\Rules\Generics\GenericObjectTypeCheck
Original file line number Diff line number Diff line change @@ -21,17 +21,25 @@ class GenericAncestorsCheck
21
21
22
22
private bool $ checkGenericClassInNonGenericObjectType ;
23
23
24
+ /** @var string[] */
25
+ private array $ skipCheckGenericClasses ;
26
+
27
+ /**
28
+ * @param string[] $skipCheckGenericClasses
29
+ */
24
30
public function __construct (
25
31
ReflectionProvider $ reflectionProvider ,
26
32
GenericObjectTypeCheck $ genericObjectTypeCheck ,
27
33
VarianceCheck $ varianceCheck ,
28
- bool $ checkGenericClassInNonGenericObjectType
34
+ bool $ checkGenericClassInNonGenericObjectType ,
35
+ array $ skipCheckGenericClasses = []
29
36
)
30
37
{
31
38
$ this ->reflectionProvider = $ reflectionProvider ;
32
39
$ this ->genericObjectTypeCheck = $ genericObjectTypeCheck ;
33
40
$ this ->varianceCheck = $ varianceCheck ;
34
41
$ this ->checkGenericClassInNonGenericObjectType = $ checkGenericClassInNonGenericObjectType ;
42
+ $ this ->skipCheckGenericClasses = $ skipCheckGenericClasses ;
35
43
}
36
44
37
45
/**
@@ -114,6 +122,9 @@ public function check(
114
122
}
115
123
116
124
$ unusedNameClassReflection = $ this ->reflectionProvider ->getClass ($ unusedName );
125
+ if (in_array ($ unusedNameClassReflection ->getName (), $ this ->skipCheckGenericClasses , true )) {
126
+ continue ;
127
+ }
117
128
if (!$ unusedNameClassReflection ->isGeneric ()) {
118
129
continue ;
119
130
}
You can’t perform that action at this time.
0 commit comments