From 0ed860f7e257a49956c11ecb6d2e2ff35fc5752f Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Wed, 1 Oct 2025 09:18:13 +0700 Subject: [PATCH 1/4] [TypeDeclarationDocblocks] Allow override dummy array var on DocblockVarArrayFromPropertyDefaultsRector --- .../Fixture/override_dummy_array_var.php.inc | 24 +++++++++++++++++++ ...lockVarArrayFromPropertyDefaultsRector.php | 4 +++- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 rules-tests/TypeDeclarationDocblocks/Rector/Class_/DocblockVarArrayFromPropertyDefaultsRector/Fixture/override_dummy_array_var.php.inc diff --git a/rules-tests/TypeDeclarationDocblocks/Rector/Class_/DocblockVarArrayFromPropertyDefaultsRector/Fixture/override_dummy_array_var.php.inc b/rules-tests/TypeDeclarationDocblocks/Rector/Class_/DocblockVarArrayFromPropertyDefaultsRector/Fixture/override_dummy_array_var.php.inc new file mode 100644 index 00000000000..2229423edb4 --- /dev/null +++ b/rules-tests/TypeDeclarationDocblocks/Rector/Class_/DocblockVarArrayFromPropertyDefaultsRector/Fixture/override_dummy_array_var.php.inc @@ -0,0 +1,24 @@ + +----- + diff --git a/rules/TypeDeclarationDocblocks/Rector/Class_/DocblockVarArrayFromPropertyDefaultsRector.php b/rules/TypeDeclarationDocblocks/Rector/Class_/DocblockVarArrayFromPropertyDefaultsRector.php index aecb4d1d20b..d8860913869 100644 --- a/rules/TypeDeclarationDocblocks/Rector/Class_/DocblockVarArrayFromPropertyDefaultsRector.php +++ b/rules/TypeDeclarationDocblocks/Rector/Class_/DocblockVarArrayFromPropertyDefaultsRector.php @@ -12,6 +12,7 @@ use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory; use Rector\Rector\AbstractRector; use Rector\TypeDeclarationDocblocks\NodeDocblockTypeDecorator; +use Rector\TypeDeclarationDocblocks\TagNodeAnalyzer\UsefulArrayTagNodeAnalyzer; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; @@ -23,6 +24,7 @@ final class DocblockVarArrayFromPropertyDefaultsRector extends AbstractRector public function __construct( private readonly PhpDocInfoFactory $phpDocInfoFactory, private readonly NodeDocblockTypeDecorator $nodeDocblockTypeDecorator, + private readonly UsefulArrayTagNodeAnalyzer $usefulArrayTagNodeAnalyzer ) { } @@ -85,7 +87,7 @@ public function refactor(Node $node): ?Node $propertyPhpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property); // type is already known - if ($propertyPhpDocInfo->getVarTagValueNode() instanceof VarTagValueNode) { + if ($this->usefulArrayTagNodeAnalyzer->isUsefulArrayTag($propertyPhpDocInfo->getVarTagValueNode())) { continue; } From a005ac21a85987123419b6512942d926e633accb Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Wed, 1 Oct 2025 09:18:59 +0700 Subject: [PATCH 2/4] [TypeDeclarationDocblocks] Allow override dummy array var on DocblockVarArrayFromPropertyDefaultsRector --- .../Fixture/override_dummy_array_var.php.inc | 1 + 1 file changed, 1 insertion(+) diff --git a/rules-tests/TypeDeclarationDocblocks/Rector/Class_/DocblockVarArrayFromPropertyDefaultsRector/Fixture/override_dummy_array_var.php.inc b/rules-tests/TypeDeclarationDocblocks/Rector/Class_/DocblockVarArrayFromPropertyDefaultsRector/Fixture/override_dummy_array_var.php.inc index 2229423edb4..1a5f7da4d4b 100644 --- a/rules-tests/TypeDeclarationDocblocks/Rector/Class_/DocblockVarArrayFromPropertyDefaultsRector/Fixture/override_dummy_array_var.php.inc +++ b/rules-tests/TypeDeclarationDocblocks/Rector/Class_/DocblockVarArrayFromPropertyDefaultsRector/Fixture/override_dummy_array_var.php.inc @@ -4,6 +4,7 @@ namespace Rector\Tests\TypeDeclarationDocblocks\Rector\Class_\DocblockVarArrayFr final class OverrideDummyArrayVar { + /** @var array */ private array $names = ['Jim', 'Rohn']; } From 8238381d54a65add209935a1c547c9976fab771e Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Wed, 1 Oct 2025 09:19:29 +0700 Subject: [PATCH 3/4] [TypeDeclarationDocblocks] Allow override dummy array var on DocblockVarArrayFromPropertyDefaultsRector --- .../Fixture/override_dummy_array_var.php.inc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rules-tests/TypeDeclarationDocblocks/Rector/Class_/DocblockVarArrayFromPropertyDefaultsRector/Fixture/override_dummy_array_var.php.inc b/rules-tests/TypeDeclarationDocblocks/Rector/Class_/DocblockVarArrayFromPropertyDefaultsRector/Fixture/override_dummy_array_var.php.inc index 1a5f7da4d4b..d104b54673a 100644 --- a/rules-tests/TypeDeclarationDocblocks/Rector/Class_/DocblockVarArrayFromPropertyDefaultsRector/Fixture/override_dummy_array_var.php.inc +++ b/rules-tests/TypeDeclarationDocblocks/Rector/Class_/DocblockVarArrayFromPropertyDefaultsRector/Fixture/override_dummy_array_var.php.inc @@ -4,7 +4,9 @@ namespace Rector\Tests\TypeDeclarationDocblocks\Rector\Class_\DocblockVarArrayFr final class OverrideDummyArrayVar { - /** @var array */ + /** + * @var array + */ private array $names = ['Jim', 'Rohn']; } From 5c62564d1bc649597b8cd08076feb843990c93e1 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Wed, 1 Oct 2025 02:21:10 +0000 Subject: [PATCH 4/4] [ci-review] Rector Rectify --- .../ClassMethodArrayDocblockParamFromLocalCallsRector.php | 3 --- .../Class_/DocblockVarArrayFromPropertyDefaultsRector.php | 1 - 2 files changed, 4 deletions(-) diff --git a/rules/TypeDeclarationDocblocks/Rector/Class_/ClassMethodArrayDocblockParamFromLocalCallsRector.php b/rules/TypeDeclarationDocblocks/Rector/Class_/ClassMethodArrayDocblockParamFromLocalCallsRector.php index b0fa7b9eb66..a71becd6994 100644 --- a/rules/TypeDeclarationDocblocks/Rector/Class_/ClassMethodArrayDocblockParamFromLocalCallsRector.php +++ b/rules/TypeDeclarationDocblocks/Rector/Class_/ClassMethodArrayDocblockParamFromLocalCallsRector.php @@ -7,9 +7,6 @@ use PhpParser\Node; use PhpParser\Node\Param; use PhpParser\Node\Stmt\Class_; -use PHPStan\PhpDocParser\Ast\PhpDoc\ParamTagValueNode; -use PHPStan\Type\ArrayType; -use PHPStan\Type\MixedType; use PHPStan\Type\Type; use PHPStan\Type\TypeCombinator; use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory; diff --git a/rules/TypeDeclarationDocblocks/Rector/Class_/DocblockVarArrayFromPropertyDefaultsRector.php b/rules/TypeDeclarationDocblocks/Rector/Class_/DocblockVarArrayFromPropertyDefaultsRector.php index d8860913869..c1c617d8825 100644 --- a/rules/TypeDeclarationDocblocks/Rector/Class_/DocblockVarArrayFromPropertyDefaultsRector.php +++ b/rules/TypeDeclarationDocblocks/Rector/Class_/DocblockVarArrayFromPropertyDefaultsRector.php @@ -8,7 +8,6 @@ use PhpParser\Node\Expr\Array_; use PhpParser\Node\Identifier; use PhpParser\Node\Stmt\Class_; -use PHPStan\PhpDocParser\Ast\PhpDoc\VarTagValueNode; use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory; use Rector\Rector\AbstractRector; use Rector\TypeDeclarationDocblocks\NodeDocblockTypeDecorator;