Skip to content

Commit 9112307

Browse files
authored
[TypeDeclarationDocblocks] Allow override dummy array var on DocblockVarFromParamDocblockInConstructorRector (#7384)
1 parent c614318 commit 9112307

File tree

2 files changed

+46
-2
lines changed

2 files changed

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

rules/TypeDeclarationDocblocks/Rector/Class_/DocblockVarFromParamDocblockInConstructorRector.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88
use PhpParser\Node\Stmt\Class_;
99
use PhpParser\Node\Stmt\ClassMethod;
1010
use PhpParser\Node\Stmt\Property;
11-
use PHPStan\PhpDocParser\Ast\PhpDoc\VarTagValueNode;
1211
use PHPStan\Type\ArrayType;
1312
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
1413
use Rector\Rector\AbstractRector;
1514
use Rector\TypeDeclarationDocblocks\NodeAnalyzer\ConstructorAssignedTypeResolver;
1615
use Rector\TypeDeclarationDocblocks\NodeDocblockTypeDecorator;
16+
use Rector\TypeDeclarationDocblocks\TagNodeAnalyzer\UsefulArrayTagNodeAnalyzer;
1717
use Rector\ValueObject\MethodName;
1818
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
1919
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@@ -26,6 +26,7 @@ final class DocblockVarFromParamDocblockInConstructorRector extends AbstractRect
2626
public function __construct(
2727
private readonly PhpDocInfoFactory $phpDocInfoFactory,
2828
private readonly ConstructorAssignedTypeResolver $constructorAssignedTypeResolver,
29+
private readonly UsefulArrayTagNodeAnalyzer $usefulArrayTagNodeAnalyzer,
2930
private readonly NodeDocblockTypeDecorator $nodeDocblockTypeDecorator
3031
) {
3132
}
@@ -96,7 +97,7 @@ public function refactor(Node $node): ?Node
9697
$propertyPhpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
9798

9899
// @var tag already given
99-
if ($propertyPhpDocInfo->getVarTagValueNode() instanceof VarTagValueNode) {
100+
if ($this->usefulArrayTagNodeAnalyzer->isUsefulArrayTag($propertyPhpDocInfo->getVarTagValueNode())) {
100101
continue;
101102
}
102103

0 commit comments

Comments
 (0)