From 7f9bb2ae807462486cec0d39f102f7037cab66c4 Mon Sep 17 00:00:00 2001 From: Tomas Votruba <tomas.vot@gmail.com> Date: Sun, 11 Feb 2024 09:00:00 +0000 Subject: [PATCH] Updated Rector to commit df8d2b78edd46542e6426fec606c3ea98d712532 https://github.com/rectorphp/rector-src/commit/df8d2b78edd46542e6426fec606c3ea98d712532 Copy subtype phpdoc on ClassPropertyAssignToConstructorPromotionRector (#8438) (#5603) --- .../PhpDoc/TagRemover/VarTagRemover.php | 17 ++++++++++++++++- src/Application/VersionResolver.php | 4 ++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/rules/DeadCode/PhpDoc/TagRemover/VarTagRemover.php b/rules/DeadCode/PhpDoc/TagRemover/VarTagRemover.php index 38048cc7772..9c0b8084c8c 100644 --- a/rules/DeadCode/PhpDoc/TagRemover/VarTagRemover.php +++ b/rules/DeadCode/PhpDoc/TagRemover/VarTagRemover.php @@ -14,6 +14,7 @@ use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory; use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger; use Rector\Comments\NodeDocBlock\DocBlockUpdater; use Rector\DeadCode\PhpDoc\DeadVarTagValueNodeAnalyzer; +use Rector\NodeTypeResolver\TypeComparator\TypeComparator; use Rector\PHPStanStaticTypeMapper\DoctrineTypeAnalyzer; final class VarTagRemover { @@ -42,13 +43,19 @@ final class VarTagRemover * @var \Rector\Comments\NodeDocBlock\DocBlockUpdater */ private $docBlockUpdater; - public function __construct(DoctrineTypeAnalyzer $doctrineTypeAnalyzer, PhpDocInfoFactory $phpDocInfoFactory, DeadVarTagValueNodeAnalyzer $deadVarTagValueNodeAnalyzer, PhpDocTypeChanger $phpDocTypeChanger, DocBlockUpdater $docBlockUpdater) + /** + * @readonly + * @var \Rector\NodeTypeResolver\TypeComparator\TypeComparator + */ + private $typeComparator; + public function __construct(DoctrineTypeAnalyzer $doctrineTypeAnalyzer, PhpDocInfoFactory $phpDocInfoFactory, DeadVarTagValueNodeAnalyzer $deadVarTagValueNodeAnalyzer, PhpDocTypeChanger $phpDocTypeChanger, DocBlockUpdater $docBlockUpdater, TypeComparator $typeComparator) { $this->doctrineTypeAnalyzer = $doctrineTypeAnalyzer; $this->phpDocInfoFactory = $phpDocInfoFactory; $this->deadVarTagValueNodeAnalyzer = $deadVarTagValueNodeAnalyzer; $this->phpDocTypeChanger = $phpDocTypeChanger; $this->docBlockUpdater = $docBlockUpdater; + $this->typeComparator = $typeComparator; } public function removeVarTagIfUseless(PhpDocInfo $phpDocInfo, Property $property) : bool { @@ -92,7 +99,15 @@ final class VarTagRemover if ($this->phpDocTypeChanger->isAllowed($varTagValueNode->type)) { return; } + // keep subtypes like positive-int + if ($this->shouldKeepSubtypes($type, $phpDocInfo->getVarType())) { + return; + } $phpDocInfo->removeByType(VarTagValueNode::class); $this->docBlockUpdater->updateRefactoredNodeWithPhpDocInfo($node); } + private function shouldKeepSubtypes(Type $type, Type $varType) : bool + { + return !$this->typeComparator->areTypesEqual($type, $varType) && $this->typeComparator->isSubtype($varType, $type); + } } diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index b99cfd762c8..f07357e6436 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -19,12 +19,12 @@ final class VersionResolver * @api * @var string */ - public const PACKAGE_VERSION = '6980dc63c77d0214730c94e0c620fa729047f879'; + public const PACKAGE_VERSION = 'df8d2b78edd46542e6426fec606c3ea98d712532'; /** * @api * @var string */ - public const RELEASE_DATE = '2024-02-11 15:15:49'; + public const RELEASE_DATE = '2024-02-11 15:57:49'; /** * @var int */