Skip to content

Commit 07f69c1

Browse files
committed
fix: ReturnTypeFromReturnNewRector
1 parent fa5b722 commit 07f69c1

2 files changed

Lines changed: 18 additions & 1 deletion

File tree

rules-tests/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnNewRector/Fixture/return_anonymous_class.php.inc

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,13 @@ final class ReturnAnonymousClass
1010
{
1111
return new class {};
1212
}
13+
14+
public function foo()
15+
{
16+
$data = new class {};
17+
18+
return $data;
19+
}
1320
}
1421

1522
?>
@@ -26,6 +33,13 @@ final class ReturnAnonymousClass
2633
{
2734
return new class {};
2835
}
36+
37+
public function foo(): object
38+
{
39+
$data = new class {};
40+
41+
return $data;
42+
}
2943
}
3044

3145
?>

rules/TypeDeclaration/Rector/ClassMethod/ReturnTypeFromReturnNewRector.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use PhpParser\Node;
88
use PhpParser\Node\Expr\New_;
9+
use PhpParser\Node\Identifier;
910
use PhpParser\Node\Name;
1011
use PhpParser\Node\Name\FullyQualified;
1112
use PhpParser\Node\Stmt\ClassMethod;
@@ -120,7 +121,9 @@ public function refactor(Node $node): ?Node
120121
$returnedNewClassName = $this->strictReturnNewAnalyzer->matchAlwaysReturnVariableNew($node);
121122

122123
if (is_string($returnedNewClassName)) {
123-
$node->returnType = new FullyQualified($returnedNewClassName);
124+
$node->returnType = str_starts_with($returnedNewClassName, 'AnonymousClass')
125+
? new Identifier('object')
126+
: new FullyQualified($returnedNewClassName);
124127

125128
return $node;
126129
}

0 commit comments

Comments
 (0)