diff --git a/rules-tests/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnNewRector/Fixture/return_anonymous_class.php.inc b/rules-tests/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnNewRector/Fixture/return_anonymous_class.php.inc index 9c2cc98fb7f..1bae23a3033 100644 --- a/rules-tests/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnNewRector/Fixture/return_anonymous_class.php.inc +++ b/rules-tests/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnNewRector/Fixture/return_anonymous_class.php.inc @@ -10,6 +10,13 @@ final class ReturnAnonymousClass { return new class {}; } + + public function foo() + { + $data = new class {}; + + return $data; + } } ?> @@ -26,6 +33,13 @@ final class ReturnAnonymousClass { return new class {}; } + + public function foo(): object + { + $data = new class {}; + + return $data; + } } ?> diff --git a/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnNewRector.php b/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnNewRector.php index 0b06c01b11b..7be29d1b2d9 100644 --- a/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnNewRector.php +++ b/rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnNewRector.php @@ -6,6 +6,7 @@ use PhpParser\Node; use PhpParser\Node\Expr\New_; +use PhpParser\Node\Identifier; use PhpParser\Node\Name; use PhpParser\Node\Name\FullyQualified; use PhpParser\Node\Stmt\ClassMethod; @@ -120,7 +121,9 @@ public function refactor(Node $node): ?Node $returnedNewClassName = $this->strictReturnNewAnalyzer->matchAlwaysReturnVariableNew($node); if (is_string($returnedNewClassName)) { - $node->returnType = new FullyQualified($returnedNewClassName); + $node->returnType = str_starts_with($returnedNewClassName, 'AnonymousClass') + ? new Identifier('object') + : new FullyQualified($returnedNewClassName); return $node; }