diff --git a/packages/BetterPhpDocParser/PhpDocInfo/PhpDocInfo.php b/packages/BetterPhpDocParser/PhpDocInfo/PhpDocInfo.php index df433a741b40..93ef0a05dcad 100644 --- a/packages/BetterPhpDocParser/PhpDocInfo/PhpDocInfo.php +++ b/packages/BetterPhpDocParser/PhpDocInfo/PhpDocInfo.php @@ -491,11 +491,11 @@ public function hasChanged(): bool // has a single node with missing start_end $phpDocNodeTraverser = new PhpDocNodeTraverser(); - $changedPhpNodeVisitor = new ChangedPhpDocNodeVisitor(); - $phpDocNodeTraverser->addPhpDocNodeVisitor($changedPhpNodeVisitor); + $changedPhpDocNodeVisitor = new ChangedPhpDocNodeVisitor(); + $phpDocNodeTraverser->addPhpDocNodeVisitor($changedPhpDocNodeVisitor); $phpDocNodeTraverser->traverse($this->phpDocNode); - return $changedPhpNodeVisitor->hasChanged(); + return $changedPhpDocNodeVisitor->hasChanged(); } /** diff --git a/packages/BetterPhpDocParser/PhpDocManipulator/PhpDocClassRenamer.php b/packages/BetterPhpDocParser/PhpDocManipulator/PhpDocClassRenamer.php index 512ffae24fec..bb8a6bc79633 100644 --- a/packages/BetterPhpDocParser/PhpDocManipulator/PhpDocClassRenamer.php +++ b/packages/BetterPhpDocParser/PhpDocManipulator/PhpDocClassRenamer.php @@ -99,7 +99,6 @@ private function processSerializerTypeTagValueNode(array $oldToNewClasses, PhpDo if ($className) { if ($className === $oldClass) { $doctrineAnnotationTagValueNode->changeSilentValue($newClass); -// $phpDocInfo->markAsChanged(); continue; } diff --git a/packages/BetterPhpDocParser/PhpDocManipulator/PhpDocTypeChanger.php b/packages/BetterPhpDocParser/PhpDocManipulator/PhpDocTypeChanger.php index eb27e6f1a766..793bf2f3a285 100644 --- a/packages/BetterPhpDocParser/PhpDocManipulator/PhpDocTypeChanger.php +++ b/packages/BetterPhpDocParser/PhpDocManipulator/PhpDocTypeChanger.php @@ -62,7 +62,6 @@ public function changeVarType(PhpDocInfo $phpDocInfo, Type $newType): void if ($currentVarTagValueNode !== null) { // only change type $currentVarTagValueNode->type = $newPHPStanPhpDocType; -// $phpDocInfo->markAsChanged(); } else { // add completely new one $varTagValueNode = new VarTagValueNode($newPHPStanPhpDocType, '', ''); @@ -84,7 +83,6 @@ public function changeReturnType(PhpDocInfo $phpDocInfo, Type $newType): void if ($currentReturnTagValueNode !== null) { // only change type $currentReturnTagValueNode->type = $newPHPStanPhpDocType; -// $phpDocInfo->markAsChanged(); } else { // add completely new one $returnTagValueNode = new ReturnTagValueNode($newPHPStanPhpDocType, ''); @@ -115,7 +113,6 @@ public function changeParamType(PhpDocInfo $phpDocInfo, Type $newType, Param $pa } $paramTagValueNode->type = $phpDocType; -// $phpDocInfo->markAsChanged(); } else { $paramTagValueNode = $this->paramPhpDocNodeFactory->create($phpDocType, $param); $phpDocInfo->addTagValueNode($paramTagValueNode); diff --git a/packages/BetterPhpDocParser/PhpDocNodeMapper.php b/packages/BetterPhpDocParser/PhpDocNodeMapper.php index afea5390b556..2c139eb3f91b 100644 --- a/packages/BetterPhpDocParser/PhpDocNodeMapper.php +++ b/packages/BetterPhpDocParser/PhpDocNodeMapper.php @@ -7,7 +7,6 @@ use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocNode; use Rector\BetterPhpDocParser\Contract\BasePhpDocNodeVisitorInterface; use Rector\BetterPhpDocParser\DataProvider\CurrentTokenIteratorProvider; -use Rector\BetterPhpDocParser\PhpDocInfo\TokenIteratorFactory; use Rector\BetterPhpDocParser\PhpDocNodeVisitor\CloningPhpDocNodeVisitor; use Rector\BetterPhpDocParser\ValueObject\Parser\BetterTokenIterator; use Symplify\SimplePhpDocParser\Contract\PhpDocNodeVisitorInterface; @@ -19,11 +18,6 @@ */ final class PhpDocNodeMapper { - /** - * @var TokenIteratorFactory - */ - private $tokenIteratorFactory; - /** * @var PhpDocNodeVisitorInterface[] */ @@ -42,23 +36,21 @@ final class PhpDocNodeMapper /** * @var CloningPhpDocNodeVisitor */ - private $cloningNodeVisitor; + private $cloningPhpDocNodeVisitor; /** * @param BasePhpDocNodeVisitorInterface[] $phpDocNodeVisitors */ public function __construct( - TokenIteratorFactory $tokenIteratorFactory, CurrentTokenIteratorProvider $currentTokenIteratorProvider, ParentConnectingPhpDocNodeVisitor $parentConnectingPhpDocNodeVisitor, - CloningPhpDocNodeVisitor $cloningNodeVisitor, + CloningPhpDocNodeVisitor $cloningPhpDocNodeVisitor, array $phpDocNodeVisitors ) { - $this->tokenIteratorFactory = $tokenIteratorFactory; $this->phpDocNodeVisitors = $phpDocNodeVisitors; $this->currentTokenIteratorProvider = $currentTokenIteratorProvider; $this->parentConnectingPhpDocNodeVisitor = $parentConnectingPhpDocNodeVisitor; - $this->cloningNodeVisitor = $cloningNodeVisitor; + $this->cloningPhpDocNodeVisitor = $cloningPhpDocNodeVisitor; } public function transform(PhpDocNode $phpDocNode, BetterTokenIterator $betterTokenIterator): void @@ -70,7 +62,7 @@ public function transform(PhpDocNode $phpDocNode, BetterTokenIterator $betterTok $parentPhpDocNodeTraverser->traverse($phpDocNode); $cloningPhpDocNodeTraverser = new PhpDocNodeTraverser(); - $cloningPhpDocNodeTraverser->addPhpDocNodeVisitor($this->cloningNodeVisitor); + $cloningPhpDocNodeTraverser->addPhpDocNodeVisitor($this->cloningPhpDocNodeVisitor); $cloningPhpDocNodeTraverser->traverse($phpDocNode); $phpDocNodeTraverser = new PhpDocNodeTraverser(); diff --git a/packages/BetterPhpDocParser/PhpDocNodeVisitor/IntersectionTypeNodePhpDocNodeVisitor.php b/packages/BetterPhpDocParser/PhpDocNodeVisitor/IntersectionTypeNodePhpDocNodeVisitor.php index 4c9d791de38b..ce3442c11e15 100644 --- a/packages/BetterPhpDocParser/PhpDocNodeVisitor/IntersectionTypeNodePhpDocNodeVisitor.php +++ b/packages/BetterPhpDocParser/PhpDocNodeVisitor/IntersectionTypeNodePhpDocNodeVisitor.php @@ -33,9 +33,9 @@ public function enterNode(Node $node): ?Node return null; } - $bracketsAwareUnionTypeNode = new BracketsAwareIntersectionTypeNode($node->types); - $this->attributeMirrorer->mirror($node, $bracketsAwareUnionTypeNode); + $bracketsAwareIntersectionTypeNode = new BracketsAwareIntersectionTypeNode($node->types); + $this->attributeMirrorer->mirror($node, $bracketsAwareIntersectionTypeNode); - return $bracketsAwareUnionTypeNode; + return $bracketsAwareIntersectionTypeNode; } } diff --git a/packages/BetterPhpDocParser/PhpDocParser/BetterPhpDocParser.php b/packages/BetterPhpDocParser/PhpDocParser/BetterPhpDocParser.php index 103ffcc43ce5..a721e7df5c23 100644 --- a/packages/BetterPhpDocParser/PhpDocParser/BetterPhpDocParser.php +++ b/packages/BetterPhpDocParser/PhpDocParser/BetterPhpDocParser.php @@ -15,7 +15,6 @@ use PHPStan\PhpDocParser\Parser\TokenIterator; use PHPStan\PhpDocParser\Parser\TypeParser; use Rector\BetterPhpDocParser\PhpDocInfo\TokenIteratorFactory; -use Rector\BetterPhpDocParser\PhpDocNodeMapper; use Rector\BetterPhpDocParser\ValueObject\Parser\BetterTokenIterator; use Rector\BetterPhpDocParser\ValueObject\PhpDocAttributeKey; use Rector\BetterPhpDocParser\ValueObject\StartAndEnd; @@ -31,11 +30,6 @@ final class BetterPhpDocParser extends PhpDocParser */ private $privatesCaller; - /** - * @var PhpDocNodeMapper - */ - private $phpDocNodeMapper; - /** * @var DoctrineAnnotationDecorator */ @@ -49,14 +43,12 @@ final class BetterPhpDocParser extends PhpDocParser public function __construct( TypeParser $typeParser, ConstExprParser $constExprParser, - PhpDocNodeMapper $phpDocNodeMapper, TokenIteratorFactory $tokenIteratorFactory, DoctrineAnnotationDecorator $doctrineAnnotationDecorator ) { parent::__construct($typeParser, $constExprParser); $this->privatesCaller = new PrivatesCaller(); - $this->phpDocNodeMapper = $phpDocNodeMapper; $this->doctrineAnnotationDecorator = $doctrineAnnotationDecorator; $this->tokenIteratorFactory = $tokenIteratorFactory; } diff --git a/packages/BetterPhpDocParser/Printer/PhpDocInfoPrinter.php b/packages/BetterPhpDocParser/Printer/PhpDocInfoPrinter.php index 07945d0cb314..8418e896184a 100644 --- a/packages/BetterPhpDocParser/Printer/PhpDocInfoPrinter.php +++ b/packages/BetterPhpDocParser/Printer/PhpDocInfoPrinter.php @@ -115,7 +115,7 @@ final class PhpDocInfoPrinter /** * @var PhpDocNodeTraverser */ - private $changedPhpdocNodeTraverser; + private $changedPhpDocNodeTraverser; public function __construct( EmptyPhpDocDetector $emptyPhpDocDetector, @@ -128,8 +128,8 @@ public function __construct( $this->removeNodesStartAndEndResolver = $removeNodesStartAndEndResolver; $this->changedPhpDocNodeVisitor = $changedPhpDocNodeVisitor; - $this->changedPhpdocNodeTraverser = new PhpDocNodeTraverser(); - $this->changedPhpdocNodeTraverser->addPhpDocNodeVisitor($this->changedPhpDocNodeVisitor); + $this->changedPhpDocNodeTraverser = new PhpDocNodeTraverser(); + $this->changedPhpDocNodeTraverser->addPhpDocNodeVisitor($this->changedPhpDocNodeVisitor); } public function printNew(PhpDocInfo $phpDocInfo): string @@ -242,15 +242,12 @@ private function printDocChildNode( } } - if ($phpDocChildNode->value instanceof DoctrineAnnotationTagValueNode) { - $startAndEnd = $phpDocChildNode->value->getAttribute(PhpDocAttributeKey::START_AND_END); - if ($startAndEnd === null) { - $printedNode = $phpDocChildNode->name . $phpDocChildNode->value; + if ($phpDocChildNode->value instanceof DoctrineAnnotationTagValueNode && $shouldReprintChildNode) { + $printedNode = $phpDocChildNode->name . $phpDocChildNode->value; - // remove extra space between tags - $printedNode = Strings::replace($printedNode, self::TAG_AND_SPACE_REGEX, '$1('); - return self::NEWLINE_WITH_ASTERISK . $printedNode; - } + // remove extra space between tags + $printedNode = Strings::replace($printedNode, self::TAG_AND_SPACE_REGEX, '$1('); + return self::NEWLINE_WITH_ASTERISK . $printedNode; } } @@ -373,7 +370,7 @@ private function correctPreviouslyReprintedFirstNode(int $key, StartAndEnd $star private function shouldReprint(PhpDocChildNode $phpDocChildNode): bool { - $this->changedPhpdocNodeTraverser->traverse($phpDocChildNode); + $this->changedPhpDocNodeTraverser->traverse($phpDocChildNode); return $this->changedPhpDocNodeVisitor->hasChanged(); } } diff --git a/packages/NodeTypeResolver/PhpDoc/NodeAnalyzer/DocBlockNameImporter.php b/packages/NodeTypeResolver/PhpDoc/NodeAnalyzer/DocBlockNameImporter.php index cf1c112b7404..5569d3580f73 100644 --- a/packages/NodeTypeResolver/PhpDoc/NodeAnalyzer/DocBlockNameImporter.php +++ b/packages/NodeTypeResolver/PhpDoc/NodeAnalyzer/DocBlockNameImporter.php @@ -5,58 +5,18 @@ namespace Rector\NodeTypeResolver\PhpDoc\NodeAnalyzer; use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocNode; -use Rector\CodingStyle\ClassNameImport\ClassNameImportSkipper; use Rector\NodeTypeResolver\PhpDocNodeVisitor\NameImportingPhpDocNodeVisitor; -use Rector\PostRector\Collector\UseNodesToAddCollector; -use Rector\StaticTypeMapper\StaticTypeMapper; -use Symplify\PackageBuilder\Parameter\ParameterProvider; use Symplify\SimplePhpDocParser\PhpDocNodeTraverser; final class DocBlockNameImporter { - /** - * @var PhpDocNodeTraverser - */ - private $phpDocNodeTraverser; - - /** - * @var StaticTypeMapper - */ - private $staticTypeMapper; - - /** - * @var ClassNameImportSkipper - */ - private $classNameImportSkipper; - - /** - * @var ParameterProvider - */ - private $parameterProvider; - - /** - * @var UseNodesToAddCollector - */ - private $useNodesToAddCollector; - /** * @var NameImportingPhpDocNodeVisitor */ private $nameImportingPhpDocNodeVisitor; - public function __construct( - ClassNameImportSkipper $classNameImportSkipper, - ParameterProvider $parameterProvider, - PhpDocNodeTraverser $phpDocNodeTraverser, - StaticTypeMapper $staticTypeMapper, - UseNodesToAddCollector $useNodesToAddCollector, - NameImportingPhpDocNodeVisitor $nameImportingPhpDocNodeVisitor - ) { - $this->phpDocNodeTraverser = $phpDocNodeTraverser; - $this->staticTypeMapper = $staticTypeMapper; - $this->classNameImportSkipper = $classNameImportSkipper; - $this->parameterProvider = $parameterProvider; - $this->useNodesToAddCollector = $useNodesToAddCollector; + public function __construct(NameImportingPhpDocNodeVisitor $nameImportingPhpDocNodeVisitor) + { $this->nameImportingPhpDocNodeVisitor = $nameImportingPhpDocNodeVisitor; } diff --git a/packages/NodeTypeResolver/PhpDoc/NodeAnalyzer/DocBlockTagReplacer.php b/packages/NodeTypeResolver/PhpDoc/NodeAnalyzer/DocBlockTagReplacer.php index 6747d9ca9958..75a443a3e81e 100644 --- a/packages/NodeTypeResolver/PhpDoc/NodeAnalyzer/DocBlockTagReplacer.php +++ b/packages/NodeTypeResolver/PhpDoc/NodeAnalyzer/DocBlockTagReplacer.php @@ -38,8 +38,6 @@ public function replaceTagByAnother(PhpDocInfo $phpDocInfo, string $oldTag, stri unset($phpDocNode->children[$key]); $phpDocNode->children[] = new PhpDocTagNode($newTag, new GenericTagValueNode('')); -// -// $phpDocInfo->markAsChanged(); } } } diff --git a/packages/NodeTypeResolver/PhpDocNodeVisitor/ClassRenamePhpDocNodeVisitor.php b/packages/NodeTypeResolver/PhpDocNodeVisitor/ClassRenamePhpDocNodeVisitor.php index f8808c8c4727..7264e57394dc 100644 --- a/packages/NodeTypeResolver/PhpDocNodeVisitor/ClassRenamePhpDocNodeVisitor.php +++ b/packages/NodeTypeResolver/PhpDocNodeVisitor/ClassRenamePhpDocNodeVisitor.php @@ -53,7 +53,7 @@ public function enterNode(Node $node): ?Node } $phpParserNode = $this->currentNodeProvider->getNode(); - if ($phpParserNode === null) { + if (! $phpParserNode instanceof \PhpParser\Node) { throw new ShouldNotHappenException(); } diff --git a/packages/NodeTypeResolver/PhpDocNodeVisitor/NameImportingPhpDocNodeVisitor.php b/packages/NodeTypeResolver/PhpDocNodeVisitor/NameImportingPhpDocNodeVisitor.php index e563e2519ee7..fde92569d648 100644 --- a/packages/NodeTypeResolver/PhpDocNodeVisitor/NameImportingPhpDocNodeVisitor.php +++ b/packages/NodeTypeResolver/PhpDocNodeVisitor/NameImportingPhpDocNodeVisitor.php @@ -7,7 +7,6 @@ use PHPStan\PhpDocParser\Ast\Node; use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode; use Rector\CodingStyle\ClassNameImport\ClassNameImportSkipper; -use Rector\Core\Configuration\CurrentNodeProvider; use Rector\Core\Configuration\Option; use Rector\Core\Exception\ShouldNotHappenException; use Rector\PostRector\Collector\UseNodesToAddCollector; @@ -23,11 +22,6 @@ final class NameImportingPhpDocNodeVisitor extends AbstractPhpDocNodeVisitor */ private $staticTypeMapper; - /** - * @var CurrentNodeProvider - */ - private $currentNodeProvider; - /** * @var ParameterProvider */ diff --git a/packages/NodeTypeResolver/PhpDocNodeVisitor/UnderscoreRenamePhpDocNodeVisitor.php b/packages/NodeTypeResolver/PhpDocNodeVisitor/UnderscoreRenamePhpDocNodeVisitor.php index ee31e9a3b478..951a2d114f2a 100644 --- a/packages/NodeTypeResolver/PhpDocNodeVisitor/UnderscoreRenamePhpDocNodeVisitor.php +++ b/packages/NodeTypeResolver/PhpDocNodeVisitor/UnderscoreRenamePhpDocNodeVisitor.php @@ -8,7 +8,6 @@ use PHPStan\PhpDocParser\Ast\Node; use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode; use PHPStan\Type\ObjectType; -use Rector\Core\Configuration\CurrentNodeProvider; use Rector\Core\Exception\ShouldNotHappenException; use Rector\Renaming\ValueObject\PseudoNamespaceToNamespace; use Rector\StaticTypeMapper\StaticTypeMapper; @@ -21,18 +20,13 @@ final class UnderscoreRenamePhpDocNodeVisitor extends AbstractPhpDocNodeVisitor */ private $staticTypeMapper; - /** - * @var CurrentNodeProvider - */ - private $currentNodeProvider; - /** * @var PseudoNamespaceToNamespace|null */ private $pseudoNamespaceToNamespace; /** - * @var \PhpParser\Node + * @var \PhpParser\Node|null */ private $currentPhpParserNode; diff --git a/rules-tests/EarlyReturn/Rector/If_/ChangeOrIfReturnToEarlyReturnRector/Fixture/skip_instanceof.php.inc b/rules-tests/EarlyReturn/Rector/If_/ChangeOrIfReturnToEarlyReturnRector/Fixture/skip_instanceof.php.inc new file mode 100644 index 000000000000..9fe0a39c1d69 --- /dev/null +++ b/rules-tests/EarlyReturn/Rector/If_/ChangeOrIfReturnToEarlyReturnRector/Fixture/skip_instanceof.php.inc @@ -0,0 +1,19 @@ +services(); - $services->set(ChangeOrIfReturnToEarlyReturnRector::class); }; diff --git a/rules-tests/Php80/Rector/Class_/ClassPropertyAssignToConstructorPromotionRector/config/configured_rule.php b/rules-tests/Php80/Rector/Class_/ClassPropertyAssignToConstructorPromotionRector/config/configured_rule.php index 00bc3690a7c6..f0f3510780a7 100644 --- a/rules-tests/Php80/Rector/Class_/ClassPropertyAssignToConstructorPromotionRector/config/configured_rule.php +++ b/rules-tests/Php80/Rector/Class_/ClassPropertyAssignToConstructorPromotionRector/config/configured_rule.php @@ -7,6 +7,5 @@ return static function (ContainerConfigurator $containerConfigurator): void { $services = $containerConfigurator->services(); - $services->set(ClassPropertyAssignToConstructorPromotionRector::class); }; diff --git a/rules-tests/Privatization/Rector/Property/ChangeReadOnlyPropertyWithDefaultValueToConstantRector/config/configured_rule.php b/rules-tests/Privatization/Rector/Property/ChangeReadOnlyPropertyWithDefaultValueToConstantRector/config/configured_rule.php index 0b4a361b1a6a..2cce0ecad107 100644 --- a/rules-tests/Privatization/Rector/Property/ChangeReadOnlyPropertyWithDefaultValueToConstantRector/config/configured_rule.php +++ b/rules-tests/Privatization/Rector/Property/ChangeReadOnlyPropertyWithDefaultValueToConstantRector/config/configured_rule.php @@ -7,6 +7,5 @@ return static function (ContainerConfigurator $containerConfigurator): void { $services = $containerConfigurator->services(); - $services->set(ChangeReadOnlyPropertyWithDefaultValueToConstantRector::class); }; diff --git a/rules/EarlyReturn/Rector/If_/ChangeOrIfReturnToEarlyReturnRector.php b/rules/EarlyReturn/Rector/If_/ChangeOrIfReturnToEarlyReturnRector.php index f33e182adfe8..f3b4004b1867 100644 --- a/rules/EarlyReturn/Rector/If_/ChangeOrIfReturnToEarlyReturnRector.php +++ b/rules/EarlyReturn/Rector/If_/ChangeOrIfReturnToEarlyReturnRector.php @@ -7,6 +7,7 @@ use PhpParser\Node; use PhpParser\Node\Expr; use PhpParser\Node\Expr\BinaryOp\BooleanOr; +use PhpParser\Node\Expr\Instanceof_; use PhpParser\Node\Stmt\If_; use PhpParser\Node\Stmt\Return_; use Rector\Core\NodeManipulator\IfManipulator; @@ -89,6 +90,10 @@ public function refactor(Node $node): ?Node return null; } + if ($this->isInstanceofCondOnly($node->cond)) { + return null; + } + /** @var Return_ $return */ $return = $node->stmts[0]; $ifs = $this->createMultipleIfs($node->cond, $return, []); @@ -143,4 +148,23 @@ private function createIf(Expr $expr, Return_ $return): If_ ] ); } + + private function isInstanceofCondOnly(BooleanOr $booleanOr): bool + { + $currentNode = $booleanOr; + + if ($currentNode->left instanceof BooleanOr) { + return $this->isInstanceofCondOnly($currentNode->left); + } + + if ($currentNode->right instanceof BooleanOr) { + return $this->isInstanceofCondOnly($currentNode->right); + } + + if (! $currentNode->right instanceof Instanceof_) { + return false; + } + + return $currentNode->left instanceof Instanceof_; + } } diff --git a/rules/Php80/Rector/Class_/ClassPropertyAssignToConstructorPromotionRector.php b/rules/Php80/Rector/Class_/ClassPropertyAssignToConstructorPromotionRector.php index ecc07bee9c14..eb5f95419324 100644 --- a/rules/Php80/Rector/Class_/ClassPropertyAssignToConstructorPromotionRector.php +++ b/rules/Php80/Rector/Class_/ClassPropertyAssignToConstructorPromotionRector.php @@ -156,6 +156,7 @@ private function processNullableType(Property $property, Param $param): void private function decorateParamWithPropertyPhpDocInfo(Property $property, Param $param): void { $propertyPhpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property); + $propertyPhpDocInfo->markAsChanged(); $param->setAttribute(AttributeKey::PHP_DOC_INFO, $propertyPhpDocInfo); // make sure the docblock is useful diff --git a/rules/Privatization/NodeFactory/ClassConstantFactory.php b/rules/Privatization/NodeFactory/ClassConstantFactory.php index 3e4ad288a277..142ee7d96605 100644 --- a/rules/Privatization/NodeFactory/ClassConstantFactory.php +++ b/rules/Privatization/NodeFactory/ClassConstantFactory.php @@ -45,6 +45,7 @@ public function createFromProperty(Property $property): ClassConst $classConst->flags = $property->flags & ~ Class_::MODIFIER_STATIC; $phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property); + $phpDocInfo->markAsChanged(); $classConst->setAttribute(AttributeKey::PHP_DOC_INFO, $phpDocInfo); return $classConst; diff --git a/rules/Restoration/Rector/Use_/RestoreFullyQualifiedNameRector.php b/rules/Restoration/Rector/Use_/RestoreFullyQualifiedNameRector.php index 3e5578aaceb7..fb475ec0b5f2 100644 --- a/rules/Restoration/Rector/Use_/RestoreFullyQualifiedNameRector.php +++ b/rules/Restoration/Rector/Use_/RestoreFullyQualifiedNameRector.php @@ -168,7 +168,6 @@ private function refactorReturnTagValueNode(ClassMethod $classMethod): void } $returnTagValueNode->type = $fullyQualifiedTypeNode; -// $phpDocInfo->markAsChanged(); } } }