diff --git a/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/some-items-above.php.inc b/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/some-items-above.php.inc new file mode 100644 index 00000000000..2515c8db3ad --- /dev/null +++ b/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/some-items-above.php.inc @@ -0,0 +1,44 @@ + 100, + 'key2' => '-25.5%', + ], + ]; + } +} + +?> +----- +> + */ + private static function getValues(): array + { + $list = [1, 2, 3]; + + return [ + [ + 'key1' => 100, + 'key2' => '-25.5%', + ], + ]; + } +} + +?> diff --git a/rules/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector.php b/rules/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector.php index deca987e725..a7dfae6c955 100644 --- a/rules/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector.php +++ b/rules/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector.php @@ -14,6 +14,7 @@ use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory; use Rector\Comments\NodeDocBlock\DocBlockUpdater; use Rector\Rector\AbstractRector; +use Rector\TypeDeclarationDocblocks\NodeFinder\ReturnNodeFinder; use Rector\TypeDeclarationDocblocks\TypeResolver\ConstantArrayTypeGeneralizer; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; @@ -27,6 +28,7 @@ public function __construct( private readonly PhpDocInfoFactory $phpDocInfoFactory, private readonly DocBlockUpdater $docBlockUpdater, private readonly ConstantArrayTypeGeneralizer $constantArrayTypeGeneralizer, + private readonly ReturnNodeFinder $returnNodeFinder, ) { } @@ -85,11 +87,11 @@ public function refactor(Node $node): ?Node return null; } - if ($node->stmts === null || count($node->stmts) !== 1) { + if ($node->stmts === null) { return null; } - $soleReturn = $node->stmts[0]; + $soleReturn = $this->returnNodeFinder->findOnlyReturnWithExpr($node); if (! $soleReturn instanceof Return_) { return null; }