diff --git a/rules/PHPUnit100/Rector/Class_/AddProphecyTraitRector.php b/rules/PHPUnit100/Rector/Class_/AddProphecyTraitRector.php index 7c4cff55..fd4b5d46 100644 --- a/rules/PHPUnit100/Rector/Class_/AddProphecyTraitRector.php +++ b/rules/PHPUnit100/Rector/Class_/AddProphecyTraitRector.php @@ -119,6 +119,16 @@ private function shouldSkipClass(Class_ $class): bool return true; } + // structural check first, so the rule stays idempotent even when the class reflection is + // not yet aware of a trait added on a previous pass + foreach ($class->getTraitUses() as $traitUse) { + foreach ($traitUse->traits as $trait) { + if ($this->isName($trait, ProphecyClassName::PROPHECY_TRAIT)) { + return true; + } + } + } + $classReflection = $this->reflectionResolver->resolveClassReflection($class); if (! $classReflection instanceof ClassReflection) { return false;