diff --git a/packages/BetterPhpDocParser/PhpDocManipulator/PhpDocClassRenamer.php b/packages/BetterPhpDocParser/PhpDocManipulator/PhpDocClassRenamer.php index ea23a31e16f..3c81c8e1fa9 100644 --- a/packages/BetterPhpDocParser/PhpDocManipulator/PhpDocClassRenamer.php +++ b/packages/BetterPhpDocParser/PhpDocManipulator/PhpDocClassRenamer.php @@ -27,8 +27,12 @@ public function __construct( * * @param string[] $oldToNewClasses */ - public function changeTypeInAnnotationTypes(Node $node, PhpDocInfo $phpDocInfo, array $oldToNewClasses, bool &$hasChanged): bool - { + public function changeTypeInAnnotationTypes( + Node $node, + PhpDocInfo $phpDocInfo, + array $oldToNewClasses, + bool &$hasChanged + ): bool { $this->processAssertChoiceTagValueNode($oldToNewClasses, $phpDocInfo, $hasChanged); $this->processDoctrineRelationTagValueNode($node, $oldToNewClasses, $phpDocInfo, $hasChanged); $this->processSerializerTypeTagValueNode($oldToNewClasses, $phpDocInfo, $hasChanged); @@ -39,8 +43,11 @@ public function changeTypeInAnnotationTypes(Node $node, PhpDocInfo $phpDocInfo, /** * @param array $oldToNewClasses */ - private function processAssertChoiceTagValueNode(array $oldToNewClasses, PhpDocInfo $phpDocInfo, bool &$hasChanged): void - { + private function processAssertChoiceTagValueNode( + array $oldToNewClasses, + PhpDocInfo $phpDocInfo, + bool &$hasChanged + ): void { $assertChoiceDoctrineAnnotationTagValueNode = $phpDocInfo->findOneByAnnotationClass( 'Symfony\Component\Validator\Constraints\Choice' ); @@ -107,8 +114,11 @@ private function processDoctrineRelationTagValueNode( /** * @param array $oldToNewClasses */ - private function processSerializerTypeTagValueNode(array $oldToNewClasses, PhpDocInfo $phpDocInfo, bool &$hasChanged): void - { + private function processSerializerTypeTagValueNode( + array $oldToNewClasses, + PhpDocInfo $phpDocInfo, + bool &$hasChanged + ): void { $doctrineAnnotationTagValueNode = $phpDocInfo->findOneByAnnotationClass('JMS\Serializer\Annotation\Type'); if (! $doctrineAnnotationTagValueNode instanceof DoctrineAnnotationTagValueNode) { return; diff --git a/packages/StaticTypeMapper/ValueObject/Type/AliasedObjectType.php b/packages/StaticTypeMapper/ValueObject/Type/AliasedObjectType.php index 6dfaa9bf49d..b0d2783fff6 100644 --- a/packages/StaticTypeMapper/ValueObject/Type/AliasedObjectType.php +++ b/packages/StaticTypeMapper/ValueObject/Type/AliasedObjectType.php @@ -29,7 +29,10 @@ public function getFullyQualifiedName(): string return $this->fullyQualifiedClass; } - public function getUseNode(?int $useType = null): Use_ + /** + * @param Use_::TYPE_* $useType + */ + public function getUseNode(int $useType): Use_ { $name = new Name($this->fullyQualifiedClass); $name->setAttribute(AttributeKey::IS_USEUSE_NAME, true); @@ -37,9 +40,7 @@ public function getUseNode(?int $useType = null): Use_ $useUse = new UseUse($name, $this->getClassName()); $use = new Use_([$useUse]); - if ($useType !== null) { - $use->type = $useType; - } + $use->type = $useType; return $use; } diff --git a/packages/StaticTypeMapper/ValueObject/Type/FullyQualifiedObjectType.php b/packages/StaticTypeMapper/ValueObject/Type/FullyQualifiedObjectType.php index a6e2512f0e3..eb91939d4f4 100644 --- a/packages/StaticTypeMapper/ValueObject/Type/FullyQualifiedObjectType.php +++ b/packages/StaticTypeMapper/ValueObject/Type/FullyQualifiedObjectType.php @@ -48,7 +48,10 @@ public function getShortNameNode(): Name return $name; } - public function getUseNode(?int $useType = null): Use_ + /** + * @param Use_::TYPE_* $useType + */ + public function getUseNode(int $useType): Use_ { $name = new Name($this->getClassName()); $name->setAttribute(AttributeKey::IS_USEUSE_NAME, true); @@ -56,9 +59,7 @@ public function getUseNode(?int $useType = null): Use_ $useUse = new UseUse($name); $use = new Use_([$useUse]); - if ($useType !== null) { - $use->type = $useType; - } + $use->type = $useType; return $use; } @@ -67,9 +68,4 @@ public function getShortNameLowered(): string { return strtolower($this->getShortName()); } - - public function getClassNameLowered(): string - { - return strtolower($this->getClassName()); - } } diff --git a/rules/CodingStyle/Application/UseImportsAdder.php b/rules/CodingStyle/Application/UseImportsAdder.php index 48648b6f187..0e197c1b7ab 100644 --- a/rules/CodingStyle/Application/UseImportsAdder.php +++ b/rules/CodingStyle/Application/UseImportsAdder.php @@ -190,6 +190,8 @@ private function createUses( ?string $namespaceName ): array { $newUses = []; + + /** @var array> $importsMapping */ $importsMapping = [ Use_::TYPE_NORMAL => $useImportTypes, Use_::TYPE_CONSTANT => $constantUseImportTypes, @@ -197,6 +199,7 @@ private function createUses( ]; foreach ($importsMapping as $type => $importTypes) { + /** @var AliasedObjectType|FullyQualifiedObjectType $importType */ foreach ($importTypes as $importType) { if ($namespaceName !== null && $this->isCurrentNamespace($namespaceName, $importType)) { continue; diff --git a/rules/CodingStyle/ClassNameImport/AliasUsesResolver.php b/rules/CodingStyle/ClassNameImport/AliasUsesResolver.php index 37d06fc6b31..badaf74cba5 100644 --- a/rules/CodingStyle/ClassNameImport/AliasUsesResolver.php +++ b/rules/CodingStyle/ClassNameImport/AliasUsesResolver.php @@ -4,11 +4,11 @@ namespace Rector\CodingStyle\ClassNameImport; -use PhpParser\Node\Stmt\Use_; use PhpParser\Node; use PhpParser\Node\Identifier; use PhpParser\Node\Stmt; use PhpParser\Node\Stmt\Namespace_; +use PhpParser\Node\Stmt\Use_; use PhpParser\Node\Stmt\UseUse; final class AliasUsesResolver diff --git a/rules/CodingStyle/ClassNameImport/UsedImportsResolver.php b/rules/CodingStyle/ClassNameImport/UsedImportsResolver.php index 7ed542a30e1..0c65be37ae5 100644 --- a/rules/CodingStyle/ClassNameImport/UsedImportsResolver.php +++ b/rules/CodingStyle/ClassNameImport/UsedImportsResolver.php @@ -4,10 +4,10 @@ namespace Rector\CodingStyle\ClassNameImport; -use PhpParser\Node\Stmt\Use_; use PhpParser\Node\Identifier; use PhpParser\Node\Stmt; use PhpParser\Node\Stmt\Class_; +use PhpParser\Node\Stmt\Use_; use PhpParser\Node\Stmt\UseUse; use Rector\CodingStyle\ClassNameImport\ValueObject\UsedImports; use Rector\Core\PhpParser\Node\BetterNodeFinder; @@ -68,5 +68,4 @@ public function resolveForStmts(array $stmts): UsedImports return new UsedImports($usedImports, $usedFunctionImports, $usedConstImports); } - } diff --git a/rules/CodingStyle/ClassNameImport/ValueObject/UsedImports.php b/rules/CodingStyle/ClassNameImport/ValueObject/UsedImports.php index 372176fd698..e8b4e38239e 100644 --- a/rules/CodingStyle/ClassNameImport/ValueObject/UsedImports.php +++ b/rules/CodingStyle/ClassNameImport/ValueObject/UsedImports.php @@ -7,20 +7,24 @@ use Rector\StaticTypeMapper\ValueObject\Type\AliasedObjectType; use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; -final class UsedImports { +final class UsedImports +{ /** * @param array $useImports * @param FullyQualifiedObjectType[] $functionImports * @param FullyQualifiedObjectType[] $constantImports */ - public function __construct(private readonly array $useImports, private readonly array $functionImports, private readonly array $constantImports) - { + public function __construct( + private readonly array $useImports, + private readonly array $functionImports, + private readonly array $constantImports + ) { } /** * @return array */ - public function getUseImports() : array + public function getUseImports(): array { return $this->useImports; } @@ -28,7 +32,7 @@ public function getUseImports() : array /** * @return FullyQualifiedObjectType[] */ - public function getFunctionImports() : array + public function getFunctionImports(): array { return $this->functionImports; } @@ -36,7 +40,7 @@ public function getFunctionImports() : array /** * @return FullyQualifiedObjectType[] */ - public function getConstantImports() : array + public function getConstantImports(): array { return $this->constantImports; } diff --git a/rules/Naming/PropertyRenamer/PropertyPromotionRenamer.php b/rules/Naming/PropertyRenamer/PropertyPromotionRenamer.php index 447595e36af..63fb3842c8d 100644 --- a/rules/Naming/PropertyRenamer/PropertyPromotionRenamer.php +++ b/rules/Naming/PropertyRenamer/PropertyPromotionRenamer.php @@ -83,6 +83,31 @@ public function renamePropertyPromotion(Class_|Interface_ $classLike): bool return $hasChanged; } + public function renameParamDoc( + PhpDocInfo $phpDocInfo, + ClassMethod $classMethod, + Param $param, + string $paramVarName, + string $desiredPropertyName + ): void { + $paramTagValueNode = $phpDocInfo->getParamTagValueByName($paramVarName); + if (! $paramTagValueNode instanceof ParamTagValueNode) { + return; + } + + $paramRename = $this->paramRenameFactory->createFromResolvedExpectedName( + $classMethod, + $param, + $desiredPropertyName + ); + if (! $paramRename instanceof ParamRename) { + return; + } + + $this->paramRenamer->rename($paramRename); + $this->docBlockUpdater->updateRefactoredNodeWithPhpDocInfo($classMethod); + } + private function renameParamVarNameAndVariableUsage( ClassLike $classLike, ClassMethod $classMethod, @@ -111,31 +136,6 @@ private function renameParamVarNameAndVariableUsage( $this->variableRenamer->renameVariableInFunctionLike($classMethod, $paramVarName, $desiredPropertyName); } - public function renameParamDoc( - PhpDocInfo $phpDocInfo, - ClassMethod $classMethod, - Param $param, - string $paramVarName, - string $desiredPropertyName - ): void { - $paramTagValueNode = $phpDocInfo->getParamTagValueByName($paramVarName); - if (! $paramTagValueNode instanceof ParamTagValueNode) { - return; - } - - $paramRename = $this->paramRenameFactory->createFromResolvedExpectedName( - $classMethod, - $param, - $desiredPropertyName - ); - if (! $paramRename instanceof ParamRename) { - return; - } - - $this->paramRenamer->rename($paramRename); - $this->docBlockUpdater->updateRefactoredNodeWithPhpDocInfo($classMethod); - } - /** * Sometimes the bare type is not enough. * This allows prefixing type in variable names, e.g. "Type $firstType" diff --git a/rules/Php80/DocBlock/PropertyPromotionDocBlockMerger.php b/rules/Php80/DocBlock/PropertyPromotionDocBlockMerger.php index 9b8c5cf4322..b29c54ae163 100644 --- a/rules/Php80/DocBlock/PropertyPromotionDocBlockMerger.php +++ b/rules/Php80/DocBlock/PropertyPromotionDocBlockMerger.php @@ -54,7 +54,7 @@ public function mergePropertyAndParamDocBlocks( $param->setAttribute(AttributeKey::COMMENTS, $mergedComments); } } - + $this->docBlockUpdater->updateRefactoredNodeWithPhpDocInfo($param); } diff --git a/rules/Php80/Rector/Class_/ClassPropertyAssignToConstructorPromotionRector.php b/rules/Php80/Rector/Class_/ClassPropertyAssignToConstructorPromotionRector.php index 472c11d453a..46e1f5d8ffe 100644 --- a/rules/Php80/Rector/Class_/ClassPropertyAssignToConstructorPromotionRector.php +++ b/rules/Php80/Rector/Class_/ClassPropertyAssignToConstructorPromotionRector.php @@ -18,7 +18,6 @@ use PHPStan\Reflection\ClassReflection; use PHPStan\Type\MixedType; use PHPStan\Type\TypeCombinator; -use Rector\BetterPhpDocParser\ValueObject\PhpDocAttributeKey; use Rector\Core\Contract\Rector\ConfigurableRectorInterface; use Rector\Core\NodeAnalyzer\ParamAnalyzer; use Rector\Core\Rector\AbstractRector; @@ -189,7 +188,13 @@ public function refactor(Node $node): ?Node $paramName ); } elseif ($paramTagValueNode->parameterName !== '$' . $propertyName) { - $this->propertyPromotionRenamer->renameParamDoc($constructorPhpDocInfo, $constructClassMethod, $param, $paramTagValueNode->parameterName, $propertyName); + $this->propertyPromotionRenamer->renameParamDoc( + $constructorPhpDocInfo, + $constructClassMethod, + $param, + $paramTagValueNode->parameterName, + $propertyName + ); } // property name has higher priority diff --git a/rules/Renaming/NodeManipulator/ClassRenamer.php b/rules/Renaming/NodeManipulator/ClassRenamer.php index f4deff3f5d2..67f945644be 100644 --- a/rules/Renaming/NodeManipulator/ClassRenamer.php +++ b/rules/Renaming/NodeManipulator/ClassRenamer.php @@ -109,7 +109,12 @@ private function refactorPhpDoc( } $hasChanged = $this->docBlockClassRenamer->renamePhpDocType($phpDocInfo, $oldToNewTypes); - $hasChanged = $this->phpDocClassRenamer->changeTypeInAnnotationTypes($node, $phpDocInfo, $oldToNewClasses, $hasChanged); + $hasChanged = $this->phpDocClassRenamer->changeTypeInAnnotationTypes( + $node, + $phpDocInfo, + $oldToNewClasses, + $hasChanged + ); if ($hasChanged) { $this->docBlockUpdater->updateRefactoredNodeWithPhpDocInfo($node);