From a77b2be6524fbef819a30b044f0349f239ab1bd5 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Mon, 29 Sep 2025 19:31:58 +0200 Subject: [PATCH 1/2] add fixture --- rector.php | 1 + .../Fixture/multiple_node_types.php.inc | 53 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/multiple_node_types.php.inc diff --git a/rector.php b/rector.php index adc0b834fb9..e9c92898ac9 100644 --- a/rector.php +++ b/rector.php @@ -23,6 +23,7 @@ ) ->withAttributesSets() ->withComposerBased(phpunit: true) + ->withSets([\Rector\Set\ValueObject\SetList::TYPE_DECLARATION_DOCBLOCKS]) ->withPhpSets() ->withPaths([ __DIR__ . '/bin', diff --git a/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/multiple_node_types.php.inc b/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/multiple_node_types.php.inc new file mode 100644 index 00000000000..3555e8ab9e2 --- /dev/null +++ b/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/multiple_node_types.php.inc @@ -0,0 +1,53 @@ + +----- +> + */ + private static function getExpectedAllOwners(): array + { + return [ + [ + 'key1' => 100, + 'key2' => '-25.5%', + ], + [ + 'key3' => 'Yes', + 'key4' => 200, + ], + ]; + } +} + +?> From 467d9851984e3327f32c2b5823276ca2d39985df Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Mon, 29 Sep 2025 19:37:44 +0200 Subject: [PATCH 2/2] skip multiple objects on DocblockReturnArrayFromDirectArrayInstanceRector --- rector.php | 1 - .../Fixture/multiple_node_types.php.inc | 53 ------------------- .../Fixture/skip_multiple_node_types.php.inc | 25 +++++++++ ...turnArrayFromDirectArrayInstanceRector.php | 5 ++ 4 files changed, 30 insertions(+), 54 deletions(-) delete mode 100644 rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/multiple_node_types.php.inc create mode 100644 rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/skip_multiple_node_types.php.inc diff --git a/rector.php b/rector.php index e9c92898ac9..adc0b834fb9 100644 --- a/rector.php +++ b/rector.php @@ -23,7 +23,6 @@ ) ->withAttributesSets() ->withComposerBased(phpunit: true) - ->withSets([\Rector\Set\ValueObject\SetList::TYPE_DECLARATION_DOCBLOCKS]) ->withPhpSets() ->withPaths([ __DIR__ . '/bin', diff --git a/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/multiple_node_types.php.inc b/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/multiple_node_types.php.inc deleted file mode 100644 index 3555e8ab9e2..00000000000 --- a/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/multiple_node_types.php.inc +++ /dev/null @@ -1,53 +0,0 @@ - ------ -> - */ - private static function getExpectedAllOwners(): array - { - return [ - [ - 'key1' => 100, - 'key2' => '-25.5%', - ], - [ - 'key3' => 'Yes', - 'key4' => 200, - ], - ]; - } -} - -?> diff --git a/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/skip_multiple_node_types.php.inc b/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/skip_multiple_node_types.php.inc new file mode 100644 index 00000000000..d951ba74925 --- /dev/null +++ b/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/skip_multiple_node_types.php.inc @@ -0,0 +1,25 @@ +getReferencedClasses()) > 1) { + // better handled by shared-interface/class rule, to avoid turning objects to mixed + return null; + } + $genericTypeNode = $this->constantArrayTypeGeneralizer->generalize($returnedType); $this->phpDocTypeChanger->changeReturnTypeNode($node, $phpDocInfo, $genericTypeNode);