Updated Rector to commit aa66151ff14da601b4b155f4a876ad2a2070259c

aa66151ff1 [Performance] Remove unnecessary FunctionLikeParamPositionNodeVisitor (#5491)
This commit is contained in:
Tomas Votruba 2024-01-22 14:26:31 +00:00
parent 20754e0aaa
commit c36d19ef56
7 changed files with 6 additions and 41 deletions

View File

@ -10,7 +10,6 @@ use PhpParser\Node\AttributeGroup;
use PhpParser\Node\Expr\Array_;
use PhpParser\Node\Expr\ArrayItem;
use PhpParser\Node\Expr\Yield_;
use PhpParser\Node\Param;
use PhpParser\Node\Scalar\String_;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod;
@ -24,7 +23,6 @@ use PHPStan\Type\TypeCombinator;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
use Rector\Exception\ShouldNotHappenException;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory;
use Rector\PhpParser\Node\BetterNodeFinder;
use Rector\PHPStanStaticTypeMapper\Enum\TypeKind;
@ -161,16 +159,12 @@ CODE_SAMPLE
/**
* @param \PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagNode|\PhpParser\Node\Attribute $dataProviderNode
*/
private function inferParam(Class_ $class, Param $param, $dataProviderNode) : Type
private function inferParam(Class_ $class, int $parameterPosition, $dataProviderNode) : Type
{
$dataProviderClassMethod = $this->resolveDataProviderClassMethod($class, $dataProviderNode);
if (!$dataProviderClassMethod instanceof ClassMethod) {
return new MixedType();
}
$parameterPosition = $param->getAttribute(AttributeKey::PARAMETER_POSITION);
if ($parameterPosition === null) {
return new MixedType();
}
/** @var Return_[] $returns */
$returns = $this->betterNodeFinder->findInstanceOf((array) $dataProviderClassMethod->stmts, Return_::class);
if ($returns !== []) {
@ -310,13 +304,13 @@ CODE_SAMPLE
private function refactorClassMethod(ClassMethod $classMethod, Class_ $class, array $dataProviderNodes) : bool
{
$hasChanged = \false;
foreach ($classMethod->getParams() as $param) {
foreach ($classMethod->getParams() as $parameterPosition => $param) {
if ($param->type instanceof Node) {
continue;
}
$paramTypes = [];
foreach ($dataProviderNodes as $dataProviderNode) {
$paramTypes[] = $this->inferParam($class, $param, $dataProviderNode);
$paramTypes[] = $this->inferParam($class, $parameterPosition, $dataProviderNode);
}
$paramTypeDeclaration = TypeCombinator::union(...$paramTypes);
if ($paramTypeDeclaration instanceof MixedType) {

View File

@ -19,12 +19,12 @@ final class VersionResolver
* @api
* @var string
*/
public const PACKAGE_VERSION = 'e1effe71627ad76eee1532420cf1a3430abff150';
public const PACKAGE_VERSION = 'aa66151ff14da601b4b155f4a876ad2a2070259c';
/**
* @api
* @var string
*/
public const RELEASE_DATE = '2024-01-22 19:41:14';
public const RELEASE_DATE = '2024-01-22 21:24:21';
/**
* @var int
*/

View File

@ -96,10 +96,6 @@ final class AttributeKey
* @var string
*/
public const DO_NOT_CHANGE = 'do_not_change';
/**
* @var string
*/
public const PARAMETER_POSITION = 'parameter_position';
/**
* @var string
*/

View File

@ -6,7 +6,6 @@ namespace Rector\NodeTypeResolver;
use PhpParser\Node\Stmt;
use PhpParser\NodeTraverser;
use PhpParser\NodeVisitor\CloningVisitor;
use Rector\NodeTypeResolver\NodeVisitor\FunctionLikeParamPositionNodeVisitor;
use Rector\NodeTypeResolver\PHPStan\Scope\PHPStanNodeScopeResolver;
use Rector\NodeTypeResolver\PHPStan\Scope\ScopeFactory;
use Rector\PhpParser\NodeTraverser\FileWithoutNamespaceNodeTraverser;
@ -33,7 +32,7 @@ final class NodeScopeAndMetadataDecorator
* @var \PhpParser\NodeTraverser
*/
private $nodeTraverser;
public function __construct(CloningVisitor $cloningVisitor, PHPStanNodeScopeResolver $phpStanNodeScopeResolver, FunctionLikeParamPositionNodeVisitor $functionLikeParamPositionNodeVisitor, ScopeFactory $scopeFactory, FileWithoutNamespaceNodeTraverser $fileWithoutNamespaceNodeTraverser)
public function __construct(CloningVisitor $cloningVisitor, PHPStanNodeScopeResolver $phpStanNodeScopeResolver, ScopeFactory $scopeFactory, FileWithoutNamespaceNodeTraverser $fileWithoutNamespaceNodeTraverser)
{
$this->phpStanNodeScopeResolver = $phpStanNodeScopeResolver;
$this->scopeFactory = $scopeFactory;
@ -41,7 +40,6 @@ final class NodeScopeAndMetadataDecorator
$this->nodeTraverser = new NodeTraverser();
// needed for format preserving printing
$this->nodeTraverser->addVisitor($cloningVisitor);
$this->nodeTraverser->addVisitor($functionLikeParamPositionNodeVisitor);
}
/**
* @param Stmt[] $stmts

View File

@ -1,21 +0,0 @@
<?php
declare (strict_types=1);
namespace Rector\NodeTypeResolver\NodeVisitor;
use PhpParser\Node;
use PhpParser\Node\FunctionLike;
use PhpParser\NodeVisitorAbstract;
use Rector\NodeTypeResolver\Node\AttributeKey;
final class FunctionLikeParamPositionNodeVisitor extends NodeVisitorAbstract
{
public function enterNode(Node $node) : ?Node
{
if ($node instanceof FunctionLike) {
foreach ($node->getParams() as $position => $param) {
$param->setAttribute(AttributeKey::PARAMETER_POSITION, $position);
}
}
return $node;
}
}

View File

@ -1576,7 +1576,6 @@ return array(
'Rector\\NodeTypeResolver\\NodeTypeResolver\\ScalarTypeResolver' => $baseDir . '/src/NodeTypeResolver/NodeTypeResolver/ScalarTypeResolver.php',
'Rector\\NodeTypeResolver\\NodeTypeResolver\\StaticCallMethodCallTypeResolver' => $baseDir . '/src/NodeTypeResolver/NodeTypeResolver/StaticCallMethodCallTypeResolver.php',
'Rector\\NodeTypeResolver\\NodeTypeResolver\\TraitTypeResolver' => $baseDir . '/src/NodeTypeResolver/NodeTypeResolver/TraitTypeResolver.php',
'Rector\\NodeTypeResolver\\NodeVisitor\\FunctionLikeParamPositionNodeVisitor' => $baseDir . '/src/NodeTypeResolver/NodeVisitor/FunctionLikeParamPositionNodeVisitor.php',
'Rector\\NodeTypeResolver\\Node\\AttributeKey' => $baseDir . '/src/NodeTypeResolver/Node/AttributeKey.php',
'Rector\\NodeTypeResolver\\PHPStan\\ObjectWithoutClassTypeWithParentTypes' => $baseDir . '/src/NodeTypeResolver/PHPStan/ObjectWithoutClassTypeWithParentTypes.php',
'Rector\\NodeTypeResolver\\PHPStan\\ParametersAcceptorSelectorVariantsWrapper' => $baseDir . '/src/NodeTypeResolver/PHPStan/ParametersAcceptorSelectorVariantsWrapper.php',

View File

@ -1790,7 +1790,6 @@ class ComposerStaticInit3aa8fc9c37eb79c784df0b556be25aa0
'Rector\\NodeTypeResolver\\NodeTypeResolver\\ScalarTypeResolver' => __DIR__ . '/../..' . '/src/NodeTypeResolver/NodeTypeResolver/ScalarTypeResolver.php',
'Rector\\NodeTypeResolver\\NodeTypeResolver\\StaticCallMethodCallTypeResolver' => __DIR__ . '/../..' . '/src/NodeTypeResolver/NodeTypeResolver/StaticCallMethodCallTypeResolver.php',
'Rector\\NodeTypeResolver\\NodeTypeResolver\\TraitTypeResolver' => __DIR__ . '/../..' . '/src/NodeTypeResolver/NodeTypeResolver/TraitTypeResolver.php',
'Rector\\NodeTypeResolver\\NodeVisitor\\FunctionLikeParamPositionNodeVisitor' => __DIR__ . '/../..' . '/src/NodeTypeResolver/NodeVisitor/FunctionLikeParamPositionNodeVisitor.php',
'Rector\\NodeTypeResolver\\Node\\AttributeKey' => __DIR__ . '/../..' . '/src/NodeTypeResolver/Node/AttributeKey.php',
'Rector\\NodeTypeResolver\\PHPStan\\ObjectWithoutClassTypeWithParentTypes' => __DIR__ . '/../..' . '/src/NodeTypeResolver/PHPStan/ObjectWithoutClassTypeWithParentTypes.php',
'Rector\\NodeTypeResolver\\PHPStan\\ParametersAcceptorSelectorVariantsWrapper' => __DIR__ . '/../..' . '/src/NodeTypeResolver/PHPStan/ParametersAcceptorSelectorVariantsWrapper.php',