Skip to content

Commit 9878bb1

Browse files
committed
Do not report non-generic RecursiveIterator usage without bleeding edge
1 parent 55ac578 commit 9878bb1

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

conf/bleedingEdge.neon

+1
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,4 @@ parameters:
1515
wrongVarUsage: true
1616
arrayDestructuring: true
1717
objectFromNewClass: true
18+
skipCheckGenericClasses: []

conf/config.neon

+5-1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ parameters:
2828
wrongVarUsage: false
2929
arrayDestructuring: false
3030
objectFromNewClass: false
31+
skipCheckGenericClasses:
32+
- RecursiveIterator
3133
fileExtensions:
3234
- php
3335
checkAlwaysTrueCheckTypeFunctionCall: false
@@ -182,7 +184,8 @@ parametersSchema:
182184
checkMissingTemplateTypeInParameter: bool(),
183185
wrongVarUsage: bool(),
184186
arrayDestructuring: bool(),
185-
objectFromNewClass: bool()
187+
objectFromNewClass: bool(),
188+
skipCheckGenericClasses: listOf(string())
186189
])
187190
fileExtensions: listOf(string())
188191
checkAlwaysTrueCheckTypeFunctionCall: bool()
@@ -725,6 +728,7 @@ services:
725728
class: PHPStan\Rules\Generics\GenericAncestorsCheck
726729
arguments:
727730
checkGenericClassInNonGenericObjectType: %checkGenericClassInNonGenericObjectType%
731+
skipCheckGenericClasses: %featureToggles.skipCheckGenericClasses%
728732

729733
-
730734
class: PHPStan\Rules\Generics\GenericObjectTypeCheck

src/Rules/Generics/GenericAncestorsCheck.php

+12-1
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,25 @@ class GenericAncestorsCheck
2121

2222
private bool $checkGenericClassInNonGenericObjectType;
2323

24+
/** @var string[] */
25+
private array $skipCheckGenericClasses;
26+
27+
/**
28+
* @param string[] $skipCheckGenericClasses
29+
*/
2430
public function __construct(
2531
ReflectionProvider $reflectionProvider,
2632
GenericObjectTypeCheck $genericObjectTypeCheck,
2733
VarianceCheck $varianceCheck,
28-
bool $checkGenericClassInNonGenericObjectType
34+
bool $checkGenericClassInNonGenericObjectType,
35+
array $skipCheckGenericClasses = []
2936
)
3037
{
3138
$this->reflectionProvider = $reflectionProvider;
3239
$this->genericObjectTypeCheck = $genericObjectTypeCheck;
3340
$this->varianceCheck = $varianceCheck;
3441
$this->checkGenericClassInNonGenericObjectType = $checkGenericClassInNonGenericObjectType;
42+
$this->skipCheckGenericClasses = $skipCheckGenericClasses;
3543
}
3644

3745
/**
@@ -114,6 +122,9 @@ public function check(
114122
}
115123

116124
$unusedNameClassReflection = $this->reflectionProvider->getClass($unusedName);
125+
if (in_array($unusedNameClassReflection->getName(), $this->skipCheckGenericClasses, true)) {
126+
continue;
127+
}
117128
if (!$unusedNameClassReflection->isGeneric()) {
118129
continue;
119130
}

0 commit comments

Comments
 (0)