2121use PHPStan \Type \ObjectType ;
2222use PHPStan \Type \Type ;
2323use Rector \BetterPhpDocParser \PhpDocInfo \PhpDocInfoFactory ;
24- use Rector \BetterPhpDocParser \PhpDocManipulator \PhpDocTypeChanger ;
2524use Rector \Rector \AbstractRector ;
26- use Rector \StaticTypeMapper \StaticTypeMapper ;
2725use Rector \StaticTypeMapper \ValueObject \Type \NonExistingObjectType ;
26+ use Rector \TypeDeclarationDocblocks \NodeDocblockTypeDecorator ;
2827use Rector \TypeDeclarationDocblocks \NodeFinder \ReturnNodeFinder ;
2928use Rector \TypeDeclarationDocblocks \TagNodeAnalyzer \UsefulArrayTagNodeAnalyzer ;
3029use 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