diff --git a/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/return_empty.php.inc b/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/return_empty.php.inc deleted file mode 100644 index 4beb2996db5..00000000000 --- a/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/return_empty.php.inc +++ /dev/null @@ -1,30 +0,0 @@ - ------ - diff --git a/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/skip_return_empty.php.inc b/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/skip_return_empty.php.inc new file mode 100644 index 00000000000..8f37bb8e9ff --- /dev/null +++ b/rules-tests/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector/Fixture/skip_return_empty.php.inc @@ -0,0 +1,11 @@ +shouldSkipReturnMixedAndEmptyArray($phpDocInfo, $soleReturn->expr)) { + if ($this->shouldSkipEmptyArray($phpDocInfo, $soleReturn->expr)) { return null; } @@ -146,19 +145,14 @@ public function refactor(Node $node): ?Node return $node; } - private function shouldSkipReturnMixedAndEmptyArray(PhpDocInfo $phpDocInfo, Array_ $array): bool + private function shouldSkipEmptyArray(PhpDocInfo $phpDocInfo, Array_ $array): bool { if ($array->items !== []) { return false; } - $returnTagValueNode = $phpDocInfo->getReturnTagValue(); - if (! $returnTagValueNode instanceof ReturnTagValueNode) { - return false; - } - - // better than array{} - return $returnTagValueNode->type instanceof ArrayTypeNode; + // skip empty array; @return array{} is too narrow, except refining bare "array" to "mixed[]" is still useful + return ! $this->hasBareArrayReturnTag($phpDocInfo); } private function hasBareArrayReturnTag(PhpDocInfo $phpDocInfo): bool