From 0c536a6cb239028d39a279681ec9440b7e49a3cd Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Fri, 26 Sep 2025 14:16:47 +0200 Subject: [PATCH] avoid spreadding mixed type in ClassMethodArrayDocblockParamFromLocalCallsRector --- .../Fixture/mixed_from_unserialize.php.inc | 40 ------------------- .../Fixture/skip_mixed.php.inc | 15 +++++++ ...ArrayDocblockParamFromLocalCallsRector.php | 4 ++ 3 files changed, 19 insertions(+), 40 deletions(-) delete mode 100644 rules-tests/TypeDeclarationDocblocks/Rector/Class_/ClassMethodArrayDocblockParamFromLocalCallsRector/Fixture/mixed_from_unserialize.php.inc create mode 100644 rules-tests/TypeDeclarationDocblocks/Rector/Class_/ClassMethodArrayDocblockParamFromLocalCallsRector/Fixture/skip_mixed.php.inc diff --git a/rules-tests/TypeDeclarationDocblocks/Rector/Class_/ClassMethodArrayDocblockParamFromLocalCallsRector/Fixture/mixed_from_unserialize.php.inc b/rules-tests/TypeDeclarationDocblocks/Rector/Class_/ClassMethodArrayDocblockParamFromLocalCallsRector/Fixture/mixed_from_unserialize.php.inc deleted file mode 100644 index fefaa792253..00000000000 --- a/rules-tests/TypeDeclarationDocblocks/Rector/Class_/ClassMethodArrayDocblockParamFromLocalCallsRector/Fixture/mixed_from_unserialize.php.inc +++ /dev/null @@ -1,40 +0,0 @@ -doStuff(unserialize($param)); - } - - private function doStuff(array $value) - { - // do stuff with value - } -} - -?> ------ -doStuff(unserialize($param)); - } - - /** - * @param mixed[] $value - */ - private function doStuff(array $value) - { - // do stuff with value - } -} - -?> diff --git a/rules-tests/TypeDeclarationDocblocks/Rector/Class_/ClassMethodArrayDocblockParamFromLocalCallsRector/Fixture/skip_mixed.php.inc b/rules-tests/TypeDeclarationDocblocks/Rector/Class_/ClassMethodArrayDocblockParamFromLocalCallsRector/Fixture/skip_mixed.php.inc new file mode 100644 index 00000000000..fcb42fc552e --- /dev/null +++ b/rules-tests/TypeDeclarationDocblocks/Rector/Class_/ClassMethodArrayDocblockParamFromLocalCallsRector/Fixture/skip_mixed.php.inc @@ -0,0 +1,15 @@ +run($mixed); + } + + private function run(array $items) + { + } +} diff --git a/rules/TypeDeclarationDocblocks/Rector/Class_/ClassMethodArrayDocblockParamFromLocalCallsRector.php b/rules/TypeDeclarationDocblocks/Rector/Class_/ClassMethodArrayDocblockParamFromLocalCallsRector.php index b7d668973d5..9b72e6880fd 100644 --- a/rules/TypeDeclarationDocblocks/Rector/Class_/ClassMethodArrayDocblockParamFromLocalCallsRector.php +++ b/rules/TypeDeclarationDocblocks/Rector/Class_/ClassMethodArrayDocblockParamFromLocalCallsRector.php @@ -7,6 +7,7 @@ use PhpParser\Node; use PhpParser\Node\Stmt\Class_; use PHPStan\PhpDocParser\Ast\PhpDoc\ParamTagValueNode; +use PHPStan\Type\MixedType; use PHPStan\Type\Type; use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory; use Rector\PhpParser\NodeFinder\LocalMethodCallFinder; @@ -111,6 +112,9 @@ public function refactor(Node $node): ?Node if (! $resolvedParameterType instanceof Type) { continue; } + if ($resolvedParameterType instanceof MixedType) { + continue; + } $hasClassMethodChanged = $this->nodeDocblockTypeDecorator->decorateGenericIterableParamType( $resolvedParameterType,