Skip to content

Commit 0c1f645

Browse files
committed
Updated Rector to commit 970310935d35fcb15108280c272b5e9798c69395
rectorphp/rector-src@9703109 [perf] Drop AstResolver from named-arg position resolution (#8099)
1 parent c5b62d7 commit 0c1f645

3 files changed

Lines changed: 25 additions & 33 deletions

File tree

rules/Arguments/ArgumentDefaultValueReplacer.php

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,17 @@
1111
use PhpParser\Node\Expr\MethodCall;
1212
use PhpParser\Node\Expr\New_;
1313
use PhpParser\Node\Expr\StaticCall;
14-
use PhpParser\Node\Expr\Variable;
1514
use PhpParser\Node\Identifier;
1615
use PhpParser\Node\Name;
1716
use PhpParser\Node\Stmt\ClassMethod;
1817
use PHPStan\Reflection\ClassReflection;
18+
use PHPStan\Reflection\FunctionReflection;
19+
use PHPStan\Reflection\MethodReflection;
20+
use PHPStan\Reflection\ParametersAcceptorSelector;
1921
use Rector\Arguments\Contract\ReplaceArgumentDefaultValueInterface;
2022
use Rector\Arguments\ValueObject\ReplaceArgumentDefaultValue;
2123
use Rector\NodeAnalyzer\ArgsAnalyzer;
2224
use Rector\NodeTypeResolver\NodeTypeResolver;
23-
use Rector\PhpParser\AstResolver;
2425
use Rector\PhpParser\Node\NodeFactory;
2526
use Rector\PhpParser\Node\Value\ValueResolver;
2627
use Rector\Reflection\ReflectionResolver;
@@ -39,10 +40,6 @@ final class ArgumentDefaultValueReplacer
3940
* @readonly
4041
*/
4142
private ArgsAnalyzer $argsAnalyzer;
42-
/**
43-
* @readonly
44-
*/
45-
private AstResolver $astResolver;
4643
/**
4744
* @readonly
4845
*/
@@ -51,12 +48,11 @@ final class ArgumentDefaultValueReplacer
5148
* @readonly
5249
*/
5350
private ReflectionResolver $reflectionResolver;
54-
public function __construct(NodeFactory $nodeFactory, ValueResolver $valueResolver, ArgsAnalyzer $argsAnalyzer, AstResolver $astResolver, NodeTypeResolver $nodeTypeResolver, ReflectionResolver $reflectionResolver)
51+
public function __construct(NodeFactory $nodeFactory, ValueResolver $valueResolver, ArgsAnalyzer $argsAnalyzer, NodeTypeResolver $nodeTypeResolver, ReflectionResolver $reflectionResolver)
5552
{
5653
$this->nodeFactory = $nodeFactory;
5754
$this->valueResolver = $valueResolver;
5855
$this->argsAnalyzer = $argsAnalyzer;
59-
$this->astResolver = $astResolver;
6056
$this->nodeTypeResolver = $nodeTypeResolver;
6157
$this->reflectionResolver = $reflectionResolver;
6258
}
@@ -128,18 +124,15 @@ private function processArgs($expr, ReplaceArgumentDefaultValueInterface $replac
128124
// if it is, we use the position of the named argyment as the position to replace
129125
// if it is not, we cannot replace it
130126
if ($firstNamedArgPosition !== null && $position >= $firstNamedArgPosition) {
131-
$call = $this->astResolver->resolveClassMethodOrFunctionFromCall($expr);
132-
if ($call === null) {
127+
$reflection = $this->reflectionResolver->resolveFunctionLikeReflectionFromCall($expr);
128+
if (!$reflection instanceof MethodReflection && !$reflection instanceof FunctionReflection) {
133129
return null;
134130
}
135-
$paramName = null;
136-
$variable = $call->params[$position]->var;
137-
if ($variable instanceof Variable) {
138-
$paramName = $variable->name;
139-
}
131+
$parametersAcceptor = ParametersAcceptorSelector::combineAcceptors($reflection->getVariants());
132+
$parameterReflection = $parametersAcceptor->getParameters()[$position] ?? null;
140133
$newPosition = -1;
141-
if (is_string($paramName)) {
142-
$newPosition = $this->argsAnalyzer->resolveArgPosition($arguments, $paramName, $newPosition);
134+
if ($parameterReflection !== null) {
135+
$newPosition = $this->argsAnalyzer->resolveArgPosition($arguments, $parameterReflection->getName(), $newPosition);
143136
}
144137
if ($newPosition === -1) {
145138
return null;

rules/Arguments/Rector/MethodCall/RemoveMethodCallParamRector.php

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@
66
use PhpParser\Node;
77
use PhpParser\Node\Expr\MethodCall;
88
use PhpParser\Node\Expr\StaticCall;
9-
use PhpParser\Node\Expr\Variable;
9+
use PHPStan\Reflection\FunctionReflection;
10+
use PHPStan\Reflection\MethodReflection;
11+
use PHPStan\Reflection\ParametersAcceptorSelector;
1012
use Rector\Arguments\ValueObject\RemoveMethodCallParam;
1113
use Rector\Contract\Rector\ConfigurableRectorInterface;
1214
use Rector\NodeAnalyzer\ArgsAnalyzer;
13-
use Rector\PhpParser\AstResolver;
1415
use Rector\Rector\AbstractRector;
16+
use Rector\Reflection\ReflectionResolver;
1517
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
1618
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
1719
use RectorPrefix202606\Webmozart\Assert\Assert;
@@ -24,7 +26,7 @@ final class RemoveMethodCallParamRector extends AbstractRector implements Config
2426
/**
2527
* @readonly
2628
*/
27-
private AstResolver $astResolver;
29+
private ReflectionResolver $reflectionResolver;
2830
/**
2931
* @readonly
3032
*/
@@ -33,9 +35,9 @@ final class RemoveMethodCallParamRector extends AbstractRector implements Config
3335
* @var RemoveMethodCallParam[]
3436
*/
3537
private array $removeMethodCallParams = [];
36-
public function __construct(AstResolver $astResolver, ArgsAnalyzer $argsAnalyzer)
38+
public function __construct(ReflectionResolver $reflectionResolver, ArgsAnalyzer $argsAnalyzer)
3739
{
38-
$this->astResolver = $astResolver;
40+
$this->reflectionResolver = $reflectionResolver;
3941
$this->argsAnalyzer = $argsAnalyzer;
4042
}
4143
public function getRuleDefinition(): RuleDefinition
@@ -91,18 +93,15 @@ public function refactor(Node $node): ?Node
9193
// if it is, we use the position of the named argument as the position to remove
9294
// if it is not, we cannot remove it
9395
if ($firstNamedArgPosition !== null && $position >= $firstNamedArgPosition) {
94-
$call = $this->astResolver->resolveClassMethodOrFunctionFromCall($node);
95-
if ($call === null) {
96+
$reflection = $this->reflectionResolver->resolveFunctionLikeReflectionFromCall($node);
97+
if (!$reflection instanceof MethodReflection && !$reflection instanceof FunctionReflection) {
9698
return null;
9799
}
98-
$paramName = null;
99-
$variable = $call->params[$position]->var;
100-
if ($variable instanceof Variable) {
101-
$paramName = $variable->name;
102-
}
100+
$parametersAcceptor = ParametersAcceptorSelector::combineAcceptors($reflection->getVariants());
101+
$parameterReflection = $parametersAcceptor->getParameters()[$position] ?? null;
103102
$newPosition = -1;
104-
if (is_string($paramName)) {
105-
$newPosition = $this->argsAnalyzer->resolveArgPosition($args, $paramName, $newPosition);
103+
if ($parameterReflection !== null) {
104+
$newPosition = $this->argsAnalyzer->resolveArgPosition($args, $parameterReflection->getName(), $newPosition);
106105
}
107106
if ($newPosition === -1) {
108107
return null;

src/Application/VersionResolver.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ final class VersionResolver
1919
* @api
2020
* @var string
2121
*/
22-
public const PACKAGE_VERSION = '0df45b4d4d6bb849eff6b0f1b8ac39a6088b9492';
22+
public const PACKAGE_VERSION = '970310935d35fcb15108280c272b5e9798c69395';
2323
/**
2424
* @api
2525
* @var string
2626
*/
27-
public const RELEASE_DATE = '2026-06-28 16:34:26';
27+
public const RELEASE_DATE = '2026-06-28 21:10:14';
2828
/**
2929
* @var int
3030
*/

0 commit comments

Comments
 (0)