diff --git a/.phpstorm.meta.php b/.phpstorm.meta.php index 4b188cca049..738d7c91d24 100644 --- a/.phpstorm.meta.php +++ b/.phpstorm.meta.php @@ -56,7 +56,6 @@ \Rector\NodeTypeResolver\Node\AttributeKey::ORIGINAL_NAME, \Rector\NodeTypeResolver\Node\AttributeKey::COMMENTS, \Rector\NodeTypeResolver\Node\AttributeKey::VIRTUAL_NODE, - \Rector\NodeTypeResolver\Node\AttributeKey::PARAMETER_POSITION, \Rector\NodeTypeResolver\Node\AttributeKey::RAW_VALUE, ); @@ -73,6 +72,5 @@ \Rector\NodeTypeResolver\Node\AttributeKey::ORIGINAL_NAME, \Rector\NodeTypeResolver\Node\AttributeKey::COMMENTS, \Rector\NodeTypeResolver\Node\AttributeKey::VIRTUAL_NODE, - \Rector\NodeTypeResolver\Node\AttributeKey::PARAMETER_POSITION, \Rector\NodeTypeResolver\Node\AttributeKey::RAW_VALUE, ); diff --git a/rules/TypeDeclaration/Rector/ClassMethod/AddParamTypeBasedOnPHPUnitDataProviderRector.php b/rules/TypeDeclaration/Rector/ClassMethod/AddParamTypeBasedOnPHPUnitDataProviderRector.php index 8e09663b2cf..47e72a9d407 100644 --- a/rules/TypeDeclaration/Rector/ClassMethod/AddParamTypeBasedOnPHPUnitDataProviderRector.php +++ b/rules/TypeDeclaration/Rector/ClassMethod/AddParamTypeBasedOnPHPUnitDataProviderRector.php @@ -11,7 +11,6 @@ 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; @@ -25,7 +24,6 @@ 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; @@ -152,18 +150,13 @@ public function refactor(Node $node): ?Node return null; } - private function inferParam(Class_ $class, Param $param, PhpDocTagNode | Attribute $dataProviderNode): Type + private function inferParam(Class_ $class, int $parameterPosition, PhpDocTagNode | Attribute $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 !== []) { @@ -339,14 +332,14 @@ private function refactorClassMethod(ClassMethod $classMethod, Class_ $class, ar { $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); diff --git a/src/NodeTypeResolver/Node/AttributeKey.php b/src/NodeTypeResolver/Node/AttributeKey.php index 022c6b0f793..3d6dfb4282d 100644 --- a/src/NodeTypeResolver/Node/AttributeKey.php +++ b/src/NodeTypeResolver/Node/AttributeKey.php @@ -112,11 +112,6 @@ final class AttributeKey */ public const DO_NOT_CHANGE = 'do_not_change'; - /** - * @var string - */ - public const PARAMETER_POSITION = 'parameter_position'; - /** * @var string */ diff --git a/src/NodeTypeResolver/NodeScopeAndMetadataDecorator.php b/src/NodeTypeResolver/NodeScopeAndMetadataDecorator.php index d466d27e0fb..b03ac6b4597 100644 --- a/src/NodeTypeResolver/NodeScopeAndMetadataDecorator.php +++ b/src/NodeTypeResolver/NodeScopeAndMetadataDecorator.php @@ -7,7 +7,6 @@ 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; @@ -20,7 +19,6 @@ final class NodeScopeAndMetadataDecorator public function __construct( CloningVisitor $cloningVisitor, private readonly PHPStanNodeScopeResolver $phpStanNodeScopeResolver, - FunctionLikeParamPositionNodeVisitor $functionLikeParamPositionNodeVisitor, private readonly ScopeFactory $scopeFactory, private readonly FileWithoutNamespaceNodeTraverser $fileWithoutNamespaceNodeTraverser ) { @@ -28,7 +26,6 @@ public function __construct( // needed for format preserving printing $this->nodeTraverser->addVisitor($cloningVisitor); - $this->nodeTraverser->addVisitor($functionLikeParamPositionNodeVisitor); } /** diff --git a/src/NodeTypeResolver/NodeVisitor/FunctionLikeParamPositionNodeVisitor.php b/src/NodeTypeResolver/NodeVisitor/FunctionLikeParamPositionNodeVisitor.php deleted file mode 100644 index 2a3bf0e6854..00000000000 --- a/src/NodeTypeResolver/NodeVisitor/FunctionLikeParamPositionNodeVisitor.php +++ /dev/null @@ -1,24 +0,0 @@ -getParams() as $position => $param) { - $param->setAttribute(AttributeKey::PARAMETER_POSITION, $position); - } - } - - return $node; - } -}