Skip to content

Commit bf39095

Browse files
authored
[TypeDeclarationDocblocks] Allow override dummy array param on ClassMethodArrayDocblockParamFromLocalCallsRector (#7382)
1 parent e6b5961 commit bf39095

File tree

2 files changed

+44
-9
lines changed

2 files changed

+44
-9
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php
2+
3+
namespace Rector\Tests\TypeDeclarationDocblocks\Rector\Class_\ClassMethodArrayDocblockParamFromLocalCallsRector\Fixture;
4+
5+
class OverrideDummyArrayParam
6+
{
7+
public function go()
8+
{
9+
$this->run(['item1', 'item2']);
10+
}
11+
12+
/**
13+
* @param array $items
14+
*/
15+
private function run(array $items)
16+
{
17+
}
18+
}
19+
20+
?>
21+
-----
22+
<?php
23+
24+
namespace Rector\Tests\TypeDeclarationDocblocks\Rector\Class_\ClassMethodArrayDocblockParamFromLocalCallsRector\Fixture;
25+
26+
class OverrideDummyArrayParam
27+
{
28+
public function go()
29+
{
30+
$this->run(['item1', 'item2']);
31+
}
32+
33+
/**
34+
* @param string[] $items
35+
*/
36+
private function run(array $items)
37+
{
38+
}
39+
}
40+
41+
?>

rules/TypeDeclarationDocblocks/Rector/Class_/ClassMethodArrayDocblockParamFromLocalCallsRector.php

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use Rector\Rector\AbstractRector;
1818
use Rector\TypeDeclaration\NodeAnalyzer\CallTypesResolver;
1919
use Rector\TypeDeclarationDocblocks\NodeDocblockTypeDecorator;
20+
use Rector\TypeDeclarationDocblocks\TagNodeAnalyzer\UsefulArrayTagNodeAnalyzer;
2021
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
2122
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
2223

@@ -29,6 +30,7 @@ public function __construct(
2930
private readonly PhpDocInfoFactory $phpDocInfoFactory,
3031
private readonly CallTypesResolver $callTypesResolver,
3132
private readonly LocalMethodCallFinder $localMethodCallFinder,
33+
private readonly UsefulArrayTagNodeAnalyzer $usefulArrayTagNodeAnalyzer,
3234
private readonly NodeDocblockTypeDecorator $nodeDocblockTypeDecorator
3335
) {
3436
}
@@ -103,7 +105,7 @@ public function refactor(Node $node): ?Node
103105
$parameterTagValueNode = $classMethodPhpDocInfo->getParamTagValueByName($parameterName);
104106

105107
// already known, skip
106-
if ($parameterTagValueNode instanceof ParamTagValueNode) {
108+
if ($this->usefulArrayTagNodeAnalyzer->isUsefulArrayTag($parameterTagValueNode)) {
107109
continue;
108110
}
109111

@@ -112,14 +114,6 @@ public function refactor(Node $node): ?Node
112114
continue;
113115
}
114116

115-
if ($resolvedParameterType instanceof MixedType) {
116-
continue;
117-
}
118-
119-
if ($resolvedParameterType instanceof ArrayType && $resolvedParameterType->getItemType() instanceof MixedType && $resolvedParameterType->getKeyType() instanceof MixedType) {
120-
continue;
121-
}
122-
123117
// in case of array type declaration, null cannot be passed or is already casted
124118
$resolvedParameterType = TypeCombinator::removeNull($resolvedParameterType);
125119

0 commit comments

Comments
 (0)