Skip to content

Commit 0e80df4

Browse files
authored
[TypeDeclarationDocblocks] Use existing NodeDocblockTypeDecorator service on AddReturnDocblockForArrayDimAssignedObjectRector (#7385)
1 parent 9112307 commit 0e80df4

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

rules/TypeDeclarationDocblocks/NodeDocblockTypeDecorator.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace Rector\TypeDeclarationDocblocks;
66

7+
use PhpParser\Node\FunctionLike;
78
use PhpParser\Node\Param;
89
use PhpParser\Node\Stmt\ClassMethod;
910
use PhpParser\Node\Stmt\Property;
@@ -56,7 +57,7 @@ public function decorateGenericIterableParamType(
5657
public function decorateGenericIterableReturnType(
5758
Type $type,
5859
PhpDocInfo $classMethodPhpDocInfo,
59-
ClassMethod $classMethod
60+
FunctionLike $functionLike
6061
): bool {
6162
if ($this->isBareMixedType($type)) {
6263
// no value
@@ -70,7 +71,7 @@ public function decorateGenericIterableReturnType(
7071
return false;
7172
}
7273

73-
$this->phpDocTypeChanger->changeReturnTypeNode($classMethod, $classMethodPhpDocInfo, $typeNode);
74+
$this->phpDocTypeChanger->changeReturnTypeNode($functionLike, $classMethodPhpDocInfo, $typeNode);
7475

7576
return true;
7677
}

rules/TypeDeclarationDocblocks/Rector/ClassMethod/AddReturnDocblockForArrayDimAssignedObjectRector.php

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,9 @@
2121
use PHPStan\Type\ObjectType;
2222
use PHPStan\Type\Type;
2323
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
24-
use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger;
2524
use Rector\Rector\AbstractRector;
26-
use Rector\StaticTypeMapper\StaticTypeMapper;
2725
use Rector\StaticTypeMapper\ValueObject\Type\NonExistingObjectType;
26+
use Rector\TypeDeclarationDocblocks\NodeDocblockTypeDecorator;
2827
use Rector\TypeDeclarationDocblocks\NodeFinder\ReturnNodeFinder;
2928
use Rector\TypeDeclarationDocblocks\TagNodeAnalyzer\UsefulArrayTagNodeAnalyzer;
3029
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
@@ -38,9 +37,8 @@ final class AddReturnDocblockForArrayDimAssignedObjectRector extends AbstractRec
3837
public function __construct(
3938
private readonly PhpDocInfoFactory $phpDocInfoFactory,
4039
private readonly ReturnNodeFinder $returnNodeFinder,
41-
private readonly PhpDocTypeChanger $phpDocTypeChanger,
42-
private readonly StaticTypeMapper $staticTypeMapper,
43-
private readonly UsefulArrayTagNodeAnalyzer $usefulArrayTagNodeAnalyzer
40+
private readonly UsefulArrayTagNodeAnalyzer $usefulArrayTagNodeAnalyzer,
41+
private readonly NodeDocblockTypeDecorator $nodeDocblockTypeDecorator
4442
) {
4543
}
4644

@@ -142,8 +140,13 @@ public function refactor(Node $node): ?Node
142140
}
143141

144142
$objectTypeArrayType = new ArrayType(new MixedType(), $arrayObjectType);
145-
$returnTypeNode = $this->staticTypeMapper->mapPHPStanTypeToPHPStanPhpDocTypeNode($objectTypeArrayType);
146-
$this->phpDocTypeChanger->changeReturnTypeNode($node, $phpDocInfo, $returnTypeNode);
143+
if (! $this->nodeDocblockTypeDecorator->decorateGenericIterableReturnType(
144+
$objectTypeArrayType,
145+
$phpDocInfo,
146+
$node
147+
)) {
148+
return null;
149+
}
147150

148151
return $node;
149152
}

0 commit comments

Comments
 (0)