diff --git a/rules/TypeDeclarationDocblocks/NodeDocblockTypeDecorator.php b/rules/TypeDeclarationDocblocks/NodeDocblockTypeDecorator.php index ec8845dc3ba..14d42c9195f 100644 --- a/rules/TypeDeclarationDocblocks/NodeDocblockTypeDecorator.php +++ b/rules/TypeDeclarationDocblocks/NodeDocblockTypeDecorator.php @@ -4,6 +4,7 @@ namespace Rector\TypeDeclarationDocblocks; +use PhpParser\Node\FunctionLike; use PhpParser\Node\Param; use PhpParser\Node\Stmt\ClassMethod; use PhpParser\Node\Stmt\Property; @@ -56,7 +57,7 @@ public function decorateGenericIterableParamType( public function decorateGenericIterableReturnType( Type $type, PhpDocInfo $classMethodPhpDocInfo, - ClassMethod $classMethod + FunctionLike $functionLike ): bool { if ($this->isBareMixedType($type)) { // no value @@ -70,7 +71,7 @@ public function decorateGenericIterableReturnType( return false; } - $this->phpDocTypeChanger->changeReturnTypeNode($classMethod, $classMethodPhpDocInfo, $typeNode); + $this->phpDocTypeChanger->changeReturnTypeNode($functionLike, $classMethodPhpDocInfo, $typeNode); return true; } diff --git a/rules/TypeDeclarationDocblocks/Rector/ClassMethod/AddReturnDocblockForArrayDimAssignedObjectRector.php b/rules/TypeDeclarationDocblocks/Rector/ClassMethod/AddReturnDocblockForArrayDimAssignedObjectRector.php index c46ae24726e..bf38a8df846 100644 --- a/rules/TypeDeclarationDocblocks/Rector/ClassMethod/AddReturnDocblockForArrayDimAssignedObjectRector.php +++ b/rules/TypeDeclarationDocblocks/Rector/ClassMethod/AddReturnDocblockForArrayDimAssignedObjectRector.php @@ -21,10 +21,9 @@ use PHPStan\Type\ObjectType; use PHPStan\Type\Type; use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory; -use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger; use Rector\Rector\AbstractRector; -use Rector\StaticTypeMapper\StaticTypeMapper; use Rector\StaticTypeMapper\ValueObject\Type\NonExistingObjectType; +use Rector\TypeDeclarationDocblocks\NodeDocblockTypeDecorator; use Rector\TypeDeclarationDocblocks\NodeFinder\ReturnNodeFinder; use Rector\TypeDeclarationDocblocks\TagNodeAnalyzer\UsefulArrayTagNodeAnalyzer; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; @@ -38,9 +37,8 @@ final class AddReturnDocblockForArrayDimAssignedObjectRector extends AbstractRec public function __construct( private readonly PhpDocInfoFactory $phpDocInfoFactory, private readonly ReturnNodeFinder $returnNodeFinder, - private readonly PhpDocTypeChanger $phpDocTypeChanger, - private readonly StaticTypeMapper $staticTypeMapper, - private readonly UsefulArrayTagNodeAnalyzer $usefulArrayTagNodeAnalyzer + private readonly UsefulArrayTagNodeAnalyzer $usefulArrayTagNodeAnalyzer, + private readonly NodeDocblockTypeDecorator $nodeDocblockTypeDecorator ) { } @@ -142,8 +140,13 @@ public function refactor(Node $node): ?Node } $objectTypeArrayType = new ArrayType(new MixedType(), $arrayObjectType); - $returnTypeNode = $this->staticTypeMapper->mapPHPStanTypeToPHPStanPhpDocTypeNode($objectTypeArrayType); - $this->phpDocTypeChanger->changeReturnTypeNode($node, $phpDocInfo, $returnTypeNode); + if (! $this->nodeDocblockTypeDecorator->decorateGenericIterableReturnType( + $objectTypeArrayType, + $phpDocInfo, + $node + )) { + return null; + } return $node; }