diff --git a/rules-tests/TypeDeclarationDocblocks/Rector/Class_/AddReturnDocblockDataProviderRector/Fixture/already_return_typed_generator.php.inc b/rules-tests/TypeDeclarationDocblocks/Rector/Class_/AddReturnDocblockDataProviderRector/Fixture/already_return_typed_generator.php.inc new file mode 100644 index 00000000000..647710a4407 --- /dev/null +++ b/rules-tests/TypeDeclarationDocblocks/Rector/Class_/AddReturnDocblockDataProviderRector/Fixture/already_return_typed_generator.php.inc @@ -0,0 +1,48 @@ + +----- +> + */ + public static function provideData(): \Generator + { + yield ['data1', 'data2']; + yield ['item4', 'item5']; + } +} + +?> diff --git a/rules/TypeDeclarationDocblocks/Rector/Class_/AddReturnDocblockDataProviderRector.php b/rules/TypeDeclarationDocblocks/Rector/Class_/AddReturnDocblockDataProviderRector.php index 19c3ac93acf..6ff34c31698 100644 --- a/rules/TypeDeclarationDocblocks/Rector/Class_/AddReturnDocblockDataProviderRector.php +++ b/rules/TypeDeclarationDocblocks/Rector/Class_/AddReturnDocblockDataProviderRector.php @@ -154,7 +154,7 @@ public function refactor(Node $node): ?Node if ($yields !== []) { $yieldType = $this->yieldTypeResolver->resolveFromYieldNodes($yields, $dataProviderClassMethod); - if ($yieldType instanceof FullyQualifiedGenericObjectType && $yieldType->getClassName() === 'Generator') { + if ($yieldType instanceof FullyQualifiedGenericObjectType && $yieldType->getClassName() === 'Generator' && ! $dataProviderClassMethod->returnType instanceof Node) { // most likely, a static iterator is used in data test fixtures $yieldType = new FullyQualifiedGenericObjectType('Iterator', $yieldType->getTypes()); }