Skip to content

Commit 8dfc7aa

Browse files
authored
Bump to PHPStan 2.1.15 and revert tweak __toString() native type on ClassChildAnalyzer (#6902)
1 parent 57c164f commit 8dfc7aa

File tree

3 files changed

+4
-41
lines changed

3 files changed

+4
-41
lines changed

build/target-repository/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
],
99
"require": {
1010
"php": "^7.4|^8.0",
11-
"phpstan/phpstan": "^2.1.14"
11+
"phpstan/phpstan": "^2.1.15"
1212
},
1313
"autoload": {
1414
"files": [

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
"ocramius/package-versions": "^2.9",
2525
"ondram/ci-detector": "^4.2",
2626
"phpstan/phpdoc-parser": "^2.0.2",
27-
"phpstan/phpstan": "^2.1.14",
27+
"phpstan/phpstan": "^2.1.15",
2828
"react/event-loop": "^1.5",
2929
"react/promise": "^3.2",
3030
"react/socket": "^1.15",

src/FamilyTree/NodeAnalyzer/ClassChildAnalyzer.php

Lines changed: 2 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,14 @@
44

55
namespace Rector\FamilyTree\NodeAnalyzer;
66

7-
use PhpParser\Node;
8-
use PhpParser\Node\Stmt\ClassLike;
9-
use PhpParser\Node\Stmt\ClassMethod;
107
use PHPStan\Reflection\ClassReflection;
118
use PHPStan\Reflection\ParametersAcceptorSelector;
129
use PHPStan\Reflection\Php\PhpMethodReflection;
1310
use PHPStan\Type\MixedType;
14-
use PHPStan\Type\StringType;
1511
use PHPStan\Type\Type;
16-
use Rector\PhpParser\AstResolver;
1712

1813
final readonly class ClassChildAnalyzer
1914
{
20-
public function __construct(
21-
private AstResolver $astResolver
22-
) {
23-
}
24-
2515
/**
2616
* Look both parent class and interface, yes, all PHP interface methods are abstract
2717
*/
@@ -52,14 +42,8 @@ public function resolveParentClassMethodReturnType(ClassReflection $classReflect
5242
}
5343

5444
foreach ($parentClassMethods as $parentClassMethod) {
55-
// for downgrade purpose on __toString
56-
// @see https://3v4l.org/kdcEh#v7.4.33
57-
// @see https://github.com/phpstan/phpstan-src/commit/3854cbc5748a7cb51ee0b86ceffe29bd0564bc98
58-
if ($parentClassMethod->getDeclaringClass()->isBuiltIn() || $methodName !== '__toString') {
59-
$nativeReturnType = $this->resolveNativeType($parentClassMethod);
60-
} else {
61-
$nativeReturnType = $this->resolveToStringNativeTypeFromAstResolver($parentClassMethod);
62-
}
45+
$parametersAcceptor = ParametersAcceptorSelector::combineAcceptors($parentClassMethod->getVariants());
46+
$nativeReturnType = $parametersAcceptor->getNativeReturnType();
6347

6448
if (! $nativeReturnType instanceof MixedType) {
6549
return $nativeReturnType;
@@ -69,27 +53,6 @@ public function resolveParentClassMethodReturnType(ClassReflection $classReflect
6953
return new MixedType();
7054
}
7155

72-
private function resolveNativeType(PhpMethodReflection $phpMethodReflection): Type
73-
{
74-
$extendedParametersAcceptor = ParametersAcceptorSelector::combineAcceptors($phpMethodReflection->getVariants());
75-
return $extendedParametersAcceptor->getNativeReturnType();
76-
}
77-
78-
private function resolveToStringNativeTypeFromAstResolver(PhpMethodReflection $phpMethodReflection): Type
79-
{
80-
$classReflection = $phpMethodReflection->getDeclaringClass();
81-
$class = $this->astResolver->resolveClassFromClassReflection($classReflection);
82-
83-
if ($class instanceof ClassLike) {
84-
$classMethod = $class->getMethod($phpMethodReflection->getName());
85-
if ($classMethod instanceof ClassMethod && ! $classMethod->returnType instanceof Node) {
86-
return new MixedType();
87-
}
88-
}
89-
90-
return new StringType();
91-
}
92-
9356
/**
9457
* @return PhpMethodReflection[]
9558
*/

0 commit comments

Comments
 (0)