From 54b4e4b2ae2e6ab82a8b5ab99932ba5aa7cf38cf Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Wed, 1 Oct 2025 09:26:57 +0700 Subject: [PATCH] [TypeDeclarationDocblocks] Allow override dummy array var on DocblockVarFromParamDocblockInConstructorRector --- .../Fixture/override_dummy_array_var.php.inc | 43 +++++++++++++++++++ ...arFromParamDocblockInConstructorRector.php | 5 ++- 2 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 rules-tests/TypeDeclarationDocblocks/Rector/Class_/DocblockVarFromParamDocblockInConstructorRector/Fixture/override_dummy_array_var.php.inc diff --git a/rules-tests/TypeDeclarationDocblocks/Rector/Class_/DocblockVarFromParamDocblockInConstructorRector/Fixture/override_dummy_array_var.php.inc b/rules-tests/TypeDeclarationDocblocks/Rector/Class_/DocblockVarFromParamDocblockInConstructorRector/Fixture/override_dummy_array_var.php.inc new file mode 100644 index 00000000000..d460b2d41b8 --- /dev/null +++ b/rules-tests/TypeDeclarationDocblocks/Rector/Class_/DocblockVarFromParamDocblockInConstructorRector/Fixture/override_dummy_array_var.php.inc @@ -0,0 +1,43 @@ +names = $names; + } +} + +?> +----- +names = $names; + } +} + +?> diff --git a/rules/TypeDeclarationDocblocks/Rector/Class_/DocblockVarFromParamDocblockInConstructorRector.php b/rules/TypeDeclarationDocblocks/Rector/Class_/DocblockVarFromParamDocblockInConstructorRector.php index 2ca43d1c4c6..a4037008953 100644 --- a/rules/TypeDeclarationDocblocks/Rector/Class_/DocblockVarFromParamDocblockInConstructorRector.php +++ b/rules/TypeDeclarationDocblocks/Rector/Class_/DocblockVarFromParamDocblockInConstructorRector.php @@ -8,12 +8,12 @@ use PhpParser\Node\Stmt\Class_; use PhpParser\Node\Stmt\ClassMethod; use PhpParser\Node\Stmt\Property; -use PHPStan\PhpDocParser\Ast\PhpDoc\VarTagValueNode; use PHPStan\Type\ArrayType; use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory; use Rector\Rector\AbstractRector; use Rector\TypeDeclarationDocblocks\NodeAnalyzer\ConstructorAssignedTypeResolver; use Rector\TypeDeclarationDocblocks\NodeDocblockTypeDecorator; +use Rector\TypeDeclarationDocblocks\TagNodeAnalyzer\UsefulArrayTagNodeAnalyzer; use Rector\ValueObject\MethodName; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; @@ -26,6 +26,7 @@ final class DocblockVarFromParamDocblockInConstructorRector extends AbstractRect public function __construct( private readonly PhpDocInfoFactory $phpDocInfoFactory, private readonly ConstructorAssignedTypeResolver $constructorAssignedTypeResolver, + private readonly UsefulArrayTagNodeAnalyzer $usefulArrayTagNodeAnalyzer, private readonly NodeDocblockTypeDecorator $nodeDocblockTypeDecorator ) { } @@ -96,7 +97,7 @@ public function refactor(Node $node): ?Node $propertyPhpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property); // @var tag already given - if ($propertyPhpDocInfo->getVarTagValueNode() instanceof VarTagValueNode) { + if ($this->usefulArrayTagNodeAnalyzer->isUsefulArrayTag($propertyPhpDocInfo->getVarTagValueNode())) { continue; }