Skip to content

Commit f0e38bb

Browse files
authored
[TypeDeclarationDocblocks] Use existing NodeDocblockTypeDecorator service on AddReturnDocblockForCommonObjectDenominatorRector (#7386)
1 parent 0e80df4 commit f0e38bb

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

rules/TypeDeclarationDocblocks/Rector/ClassMethod/AddReturnDocblockForCommonObjectDenominatorRector.php

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@
1818
use PHPStan\Type\Type;
1919
use PHPStan\Type\UnionType;
2020
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
21-
use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger;
2221
use Rector\Rector\AbstractRector;
2322
use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
23+
use Rector\TypeDeclarationDocblocks\NodeDocblockTypeDecorator;
2424
use Rector\TypeDeclarationDocblocks\NodeFinder\ReturnNodeFinder;
25+
use Rector\TypeDeclarationDocblocks\TagNodeAnalyzer\UsefulArrayTagNodeAnalyzer;
2526
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
2627
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
2728

@@ -34,7 +35,8 @@ public function __construct(
3435
private readonly PhpDocInfoFactory $phpDocInfoFactory,
3536
private readonly ReturnNodeFinder $returnNodeFinder,
3637
private readonly ReflectionProvider $reflectionProvider,
37-
private readonly PhpDocTypeChanger $phpDocTypeChanger
38+
private readonly UsefulArrayTagNodeAnalyzer $usefulArrayTagNodeAnalyzer,
39+
private readonly NodeDocblockTypeDecorator $nodeDocblockTypeDecorator
3840
) {
3941
}
4042

@@ -108,9 +110,7 @@ public function getNodeTypes(): array
108110
public function refactor(Node $node): ?Node
109111
{
110112
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node);
111-
$returnType = $phpDocInfo->getReturnType();
112-
113-
if ($returnType instanceof ArrayType && ! $returnType->getItemType() instanceof MixedType) {
113+
if ($this->usefulArrayTagNodeAnalyzer->isUsefulArrayTag($phpDocInfo->getReturnTagValue())) {
114114
return null;
115115
}
116116

@@ -176,7 +176,11 @@ public function refactor(Node $node): ?Node
176176
new FullyQualifiedObjectType($firstSharedType)
177177
);
178178

179-
$hasChanged = $this->phpDocTypeChanger->changeReturnType($node, $phpDocInfo, $objectTypeArrayType);
179+
$hasChanged = $this->nodeDocblockTypeDecorator->decorateGenericIterableReturnType(
180+
$objectTypeArrayType,
181+
$phpDocInfo,
182+
$node
183+
);
180184
if (! $hasChanged) {
181185
return null;
182186
}

0 commit comments

Comments
 (0)