diff --git a/composer.json b/composer.json index 85d950e911f9..8992166d9cad 100644 --- a/composer.json +++ b/composer.json @@ -70,6 +70,7 @@ "Rector\\NetteTesterToPHPUnit\\": "packages/nette-tester-to-phpunit/src", "Rector\\NetteToSymfony\\": "packages/nette-to-symfony/src", "Rector\\Nette\\": "packages/nette/src", + "Rector\\NodeCollector\\": "packages/node-collector/src", "Rector\\NodeTypeResolver\\": "packages/node-type-resolver/src", "Rector\\NodeNameResolver\\": "packages/node-name-resolver/src", "Rector\\PHPStan\\": "packages/phpstan/src", @@ -97,6 +98,7 @@ "Rector\\Sensio\\": "packages/sensio/src", "Rector\\Shopware\\": "packages/shopware/src", "Rector\\Silverstripe\\": "packages/silverstripe/src", + "Rector\\StaticTypeMapper\\": "packages/static-type-mapper/src", "Rector\\Sylius\\": "packages/sylius/src", "Rector\\SymfonyCodeQuality\\": "packages/symfony-code-quality/src", "Rector\\SymfonyPHPUnit\\": "packages/symfony-phpunit/src", diff --git a/packages/autodiscovery/src/Analyzer/ClassAnalyzer.php b/packages/autodiscovery/src/Analyzer/ClassAnalyzer.php index 42c03f5de849..c9788e50cfb9 100644 --- a/packages/autodiscovery/src/Analyzer/ClassAnalyzer.php +++ b/packages/autodiscovery/src/Analyzer/ClassAnalyzer.php @@ -9,7 +9,7 @@ use PHPStan\Type\ObjectType; use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo; use Rector\BetterPhpDocParser\PhpDocNode\JMS\SerializerTypeTagValueNode; -use Rector\Core\NodeContainer\NodeCollector\ParsedNodeCollector; +use Rector\NodeCollector\NodeCollector\ParsedNodeCollector; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\NodeTypeResolver; diff --git a/packages/better-php-doc-parser/src/PhpDocInfo/PhpDocInfo.php b/packages/better-php-doc-parser/src/PhpDocInfo/PhpDocInfo.php index 2d2f472c44a5..acf83181373f 100644 --- a/packages/better-php-doc-parser/src/PhpDocInfo/PhpDocInfo.php +++ b/packages/better-php-doc-parser/src/PhpDocInfo/PhpDocInfo.php @@ -31,7 +31,7 @@ use Rector\Core\Exception\NotImplementedException; use Rector\Core\Exception\ShouldNotHappenException; use Rector\NodeTypeResolver\PHPStan\TypeComparator; -use Rector\NodeTypeResolver\StaticTypeMapper; +use Rector\StaticTypeMapper\StaticTypeMapper; /** * @see \Rector\BetterPhpDocParser\Tests\PhpDocInfo\PhpDocInfo\PhpDocInfoTest diff --git a/packages/better-php-doc-parser/src/PhpDocInfo/PhpDocInfoFactory.php b/packages/better-php-doc-parser/src/PhpDocInfo/PhpDocInfoFactory.php index 54e87ad2b22b..2369bf51466c 100644 --- a/packages/better-php-doc-parser/src/PhpDocInfo/PhpDocInfoFactory.php +++ b/packages/better-php-doc-parser/src/PhpDocInfo/PhpDocInfoFactory.php @@ -16,7 +16,7 @@ use Rector\Core\Configuration\CurrentNodeProvider; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\PHPStan\TypeComparator; -use Rector\NodeTypeResolver\StaticTypeMapper; +use Rector\StaticTypeMapper\StaticTypeMapper; final class PhpDocInfoFactory { diff --git a/packages/coding-style/src/Node/NameImporter.php b/packages/coding-style/src/Node/NameImporter.php index 957ad1d20525..326c893f48d1 100644 --- a/packages/coding-style/src/Node/NameImporter.php +++ b/packages/coding-style/src/Node/NameImporter.php @@ -15,8 +15,8 @@ use Rector\Core\Configuration\Option; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\NodeTypeResolver\StaticTypeMapper; use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\StaticTypeMapper; use Symplify\PackageBuilder\Parameter\ParameterProvider; final class NameImporter diff --git a/packages/dead-code/src/UnusedNodeResolver/ClassUnusedPrivateClassMethodResolver.php b/packages/dead-code/src/UnusedNodeResolver/ClassUnusedPrivateClassMethodResolver.php index f0e71fc45184..89ecf416ab68 100644 --- a/packages/dead-code/src/UnusedNodeResolver/ClassUnusedPrivateClassMethodResolver.php +++ b/packages/dead-code/src/UnusedNodeResolver/ClassUnusedPrivateClassMethodResolver.php @@ -6,8 +6,8 @@ use Nette\Utils\Strings; use PhpParser\Node\Stmt\Class_; -use Rector\Core\NodeContainer\NodeFinder\FunctionLikeParsedNodesFinder; use Rector\Core\PhpParser\Node\Manipulator\ClassManipulator; +use Rector\NodeCollector\NodeFinder\FunctionLikeParsedNodesFinder; use Rector\NodeNameResolver\NodeNameResolver; use ReflectionMethod; diff --git a/packages/dead-code/src/UnusedNodeResolver/UnusedClassResolver.php b/packages/dead-code/src/UnusedNodeResolver/UnusedClassResolver.php index 46beabd08729..12d63617b5d6 100644 --- a/packages/dead-code/src/UnusedNodeResolver/UnusedClassResolver.php +++ b/packages/dead-code/src/UnusedNodeResolver/UnusedClassResolver.php @@ -13,8 +13,8 @@ use PhpParser\Node\Param; use PhpParser\Node\Stmt\Class_; use Rector\Core\Exception\NotImplementedException; -use Rector\Core\NodeContainer\NodeCollector\ParsedNodeCollector; use Rector\Core\Testing\PHPUnit\PHPUnitEnvironment; +use Rector\NodeCollector\NodeCollector\ParsedNodeCollector; use Rector\NodeNameResolver\NodeNameResolver; final class UnusedClassResolver diff --git a/packages/doctrine/src/PhpDocParser/DoctrineDocBlockResolver.php b/packages/doctrine/src/PhpDocParser/DoctrineDocBlockResolver.php index c0b3a3bbe3b9..46dc9c3ff464 100644 --- a/packages/doctrine/src/PhpDocParser/DoctrineDocBlockResolver.php +++ b/packages/doctrine/src/PhpDocParser/DoctrineDocBlockResolver.php @@ -14,7 +14,7 @@ use Rector\BetterPhpDocParser\PhpDocNode\Doctrine\Property_\ColumnTagValueNode; use Rector\BetterPhpDocParser\PhpDocNode\Doctrine\Property_\IdTagValueNode; use Rector\Core\Exception\ShouldNotHappenException; -use Rector\Core\NodeContainer\NodeCollector\ParsedNodeCollector; +use Rector\NodeCollector\NodeCollector\ParsedNodeCollector; use Rector\NodeTypeResolver\ClassExistenceStaticHelper; use Rector\NodeTypeResolver\Node\AttributeKey; use ReflectionClass; diff --git a/packages/doctrine/src/Provider/EntityWithMissingUuidProvider.php b/packages/doctrine/src/Provider/EntityWithMissingUuidProvider.php index e2bde9721cf2..136c756b37a7 100644 --- a/packages/doctrine/src/Provider/EntityWithMissingUuidProvider.php +++ b/packages/doctrine/src/Provider/EntityWithMissingUuidProvider.php @@ -10,9 +10,9 @@ use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo; use Rector\BetterPhpDocParser\PhpDocNode\Doctrine\Property_\ColumnTagValueNode; use Rector\BetterPhpDocParser\PhpDocNode\Doctrine\Property_\IdTagValueNode; -use Rector\Core\NodeContainer\NodeCollector\ParsedNodeCollector; use Rector\Core\PhpParser\Node\Manipulator\ClassManipulator; use Rector\Doctrine\PhpDocParser\DoctrineDocBlockResolver; +use Rector\NodeCollector\NodeCollector\ParsedNodeCollector; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; diff --git a/packages/dynamic-type-analysis/src/Rector/ClassMethod/AddArgumentTypeWithProbeDataRector.php b/packages/dynamic-type-analysis/src/Rector/ClassMethod/AddArgumentTypeWithProbeDataRector.php index 04193f6a984c..20509d3d5545 100644 --- a/packages/dynamic-type-analysis/src/Rector/ClassMethod/AddArgumentTypeWithProbeDataRector.php +++ b/packages/dynamic-type-analysis/src/Rector/ClassMethod/AddArgumentTypeWithProbeDataRector.php @@ -103,10 +103,6 @@ private function completeTypesToClassMethodParams(ClassMethod $classMethod, arra // single value → can we add it? if (count($parameterData) === 1) { $typeNode = $this->staticTypeMapper->mapStringToPhpParserNode($parameterData[0]); - if ($typeNode === null) { - continue; - } - $param->type = $typeNode; } } diff --git a/packages/nette-to-symfony/src/Route/RouteInfoFactory.php b/packages/nette-to-symfony/src/Route/RouteInfoFactory.php index 1f1384a7fecd..a5bf52dd5aec 100644 --- a/packages/nette-to-symfony/src/Route/RouteInfoFactory.php +++ b/packages/nette-to-symfony/src/Route/RouteInfoFactory.php @@ -10,9 +10,9 @@ use PhpParser\Node\Expr\New_; use PhpParser\Node\Expr\StaticCall; use PhpParser\Node\Scalar\String_; -use Rector\Core\NodeContainer\NodeCollector\ParsedNodeCollector; use Rector\Core\PhpParser\Node\Value\ValueResolver; use Rector\NetteToSymfony\ValueObject\RouteInfo; +use Rector\NodeCollector\NodeCollector\ParsedNodeCollector; use Rector\NodeNameResolver\NodeNameResolver; final class RouteInfoFactory diff --git a/packages/node-collector/config/config.yaml b/packages/node-collector/config/config.yaml new file mode 100644 index 000000000000..52a39e6a25a8 --- /dev/null +++ b/packages/node-collector/config/config.yaml @@ -0,0 +1,7 @@ +services: + _defaults: + public: true + autowire: true + + Rector\NodeCollector\: + resource: '../src' diff --git a/src/NodeContainer/NodeCollector/ParsedFunctionLikeNodeCollector.php b/packages/node-collector/src/NodeCollector/ParsedFunctionLikeNodeCollector.php similarity index 99% rename from src/NodeContainer/NodeCollector/ParsedFunctionLikeNodeCollector.php rename to packages/node-collector/src/NodeCollector/ParsedFunctionLikeNodeCollector.php index 8539dcc0d81f..1ffa57678c4c 100644 --- a/src/NodeContainer/NodeCollector/ParsedFunctionLikeNodeCollector.php +++ b/packages/node-collector/src/NodeCollector/ParsedFunctionLikeNodeCollector.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\Core\NodeContainer\NodeCollector; +namespace Rector\NodeCollector\NodeCollector; use PhpParser\Node; use PhpParser\Node\Expr\Array_; @@ -10,7 +10,6 @@ use PhpParser\Node\Expr\MethodCall; use PhpParser\Node\Expr\StaticCall; use PhpParser\Node\Expr\Variable; -use PhpParser\Node\Param; use PhpParser\Node\Scalar\String_; use PhpParser\Node\Stmt\ClassMethod; use PhpParser\Node\Stmt\Function_; diff --git a/src/NodeContainer/NodeCollector/ParsedNodeCollector.php b/packages/node-collector/src/NodeCollector/ParsedNodeCollector.php similarity index 99% rename from src/NodeContainer/NodeCollector/ParsedNodeCollector.php rename to packages/node-collector/src/NodeCollector/ParsedNodeCollector.php index ee92b7bfe5f5..b28cc50ff235 100644 --- a/src/NodeContainer/NodeCollector/ParsedNodeCollector.php +++ b/packages/node-collector/src/NodeCollector/ParsedNodeCollector.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\Core\NodeContainer\NodeCollector; +namespace Rector\NodeCollector\NodeCollector; use Nette\Utils\Strings; use PhpParser\Node; diff --git a/src/NodeContainer/NodeFinder/ClassLikeParsedNodesFinder.php b/packages/node-collector/src/NodeFinder/ClassLikeParsedNodesFinder.php similarity index 97% rename from src/NodeContainer/NodeFinder/ClassLikeParsedNodesFinder.php rename to packages/node-collector/src/NodeFinder/ClassLikeParsedNodesFinder.php index 174f59d7ebd1..5d2cf03a19b0 100644 --- a/src/NodeContainer/NodeFinder/ClassLikeParsedNodesFinder.php +++ b/packages/node-collector/src/NodeFinder/ClassLikeParsedNodesFinder.php @@ -2,14 +2,14 @@ declare(strict_types=1); -namespace Rector\Core\NodeContainer\NodeFinder; +namespace Rector\NodeCollector\NodeFinder; use Nette\Utils\Strings; use PhpParser\Node\Stmt\Class_; use PhpParser\Node\Stmt\ClassLike; use PhpParser\Node\Stmt\Interface_; use PhpParser\Node\Stmt\Trait_; -use Rector\Core\NodeContainer\NodeCollector\ParsedNodeCollector; +use Rector\NodeCollector\NodeCollector\ParsedNodeCollector; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; diff --git a/src/NodeContainer/NodeFinder/FunctionLikeParsedNodesFinder.php b/packages/node-collector/src/NodeFinder/FunctionLikeParsedNodesFinder.php similarity index 97% rename from src/NodeContainer/NodeFinder/FunctionLikeParsedNodesFinder.php rename to packages/node-collector/src/NodeFinder/FunctionLikeParsedNodesFinder.php index 33e9c3e9a108..e8c4c4cf6b83 100644 --- a/src/NodeContainer/NodeFinder/FunctionLikeParsedNodesFinder.php +++ b/packages/node-collector/src/NodeFinder/FunctionLikeParsedNodesFinder.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\Core\NodeContainer\NodeFinder; +namespace Rector\NodeCollector\NodeFinder; use Nette\Utils\Strings; use PhpParser\Node\Expr\Array_; @@ -11,7 +11,7 @@ use PhpParser\Node\Stmt\ClassMethod; use PhpParser\Node\Stmt\Function_; use PHPStan\Type\TypeUtils; -use Rector\Core\NodeContainer\NodeCollector\ParsedFunctionLikeNodeCollector; +use Rector\NodeCollector\NodeCollector\ParsedFunctionLikeNodeCollector; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\NodeTypeResolver; diff --git a/packages/node-type-resolver/src/NodeVisitor/NodeCollectorNodeVisitor.php b/packages/node-collector/src/NodeVisitor/NodeCollectorNodeVisitor.php similarity index 83% rename from packages/node-type-resolver/src/NodeVisitor/NodeCollectorNodeVisitor.php rename to packages/node-collector/src/NodeVisitor/NodeCollectorNodeVisitor.php index a810343816cb..04ba5dd531a5 100644 --- a/packages/node-type-resolver/src/NodeVisitor/NodeCollectorNodeVisitor.php +++ b/packages/node-collector/src/NodeVisitor/NodeCollectorNodeVisitor.php @@ -2,12 +2,12 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\NodeVisitor; +namespace Rector\NodeCollector\NodeVisitor; use PhpParser\Node; use PhpParser\NodeVisitorAbstract; -use Rector\Core\NodeContainer\NodeCollector\ParsedFunctionLikeNodeCollector; -use Rector\Core\NodeContainer\NodeCollector\ParsedNodeCollector; +use Rector\NodeCollector\NodeCollector\ParsedFunctionLikeNodeCollector; +use Rector\NodeCollector\NodeCollector\ParsedNodeCollector; final class NodeCollectorNodeVisitor extends NodeVisitorAbstract { diff --git a/packages/node-type-resolver/src/Contract/PerNodeTypeResolver/PerNodeTypeResolverInterface.php b/packages/node-type-resolver/src/Contract/NodeTypeResolverInterface.php similarity index 67% rename from packages/node-type-resolver/src/Contract/PerNodeTypeResolver/PerNodeTypeResolverInterface.php rename to packages/node-type-resolver/src/Contract/NodeTypeResolverInterface.php index 0ede307c90bc..779937d84210 100644 --- a/packages/node-type-resolver/src/Contract/PerNodeTypeResolver/PerNodeTypeResolverInterface.php +++ b/packages/node-type-resolver/src/Contract/NodeTypeResolverInterface.php @@ -2,12 +2,12 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\Contract\PerNodeTypeResolver; +namespace Rector\NodeTypeResolver\Contract; use PhpParser\Node; use PHPStan\Type\Type; -interface PerNodeTypeResolverInterface +interface NodeTypeResolverInterface { /** * @return string[] diff --git a/packages/node-type-resolver/src/DependencyInjection/PHPStanServicesFactory.php b/packages/node-type-resolver/src/DependencyInjection/PHPStanServicesFactory.php index b535695f21c2..1cb91e3a43f1 100644 --- a/packages/node-type-resolver/src/DependencyInjection/PHPStanServicesFactory.php +++ b/packages/node-type-resolver/src/DependencyInjection/PHPStanServicesFactory.php @@ -41,10 +41,10 @@ public function __construct() $additionalConfigFiles = []; // possible path collision for Docker - $phpstanPhpunitExtensionConfig = $currentWorkingDirectory . '/vendor/phpstan/phpstan-phpunit/extension.neon'; - if (file_exists($phpstanPhpunitExtensionConfig) && class_exists('PHPUnit\\Framework\\TestCase')) { - $additionalConfigFiles[] = $phpstanPhpunitExtensionConfig; - } + $additionalConfigFiles = $this->appendPhpstanPHPUnitExtensionIfExists( + $currentWorkingDirectory, + $additionalConfigFiles + ); $temporaryPhpstanNeon = null; @@ -111,4 +111,15 @@ public function createTypeNodeResolver(): TypeNodeResolver { return $this->container->getByType(TypeNodeResolver::class); } + + private function appendPhpstanPHPUnitExtensionIfExists( + string $currentWorkingDirectory, + array $additionalConfigFiles + ): array { + $phpstanPhpunitExtensionConfig = $currentWorkingDirectory . '/vendor/phpstan/phpstan-phpunit/extension.neon'; + if (file_exists($phpstanPhpunitExtensionConfig) && class_exists('PHPUnit\\Framework\\TestCase')) { + $additionalConfigFiles[] = $phpstanPhpunitExtensionConfig; + } + return $additionalConfigFiles; + } } diff --git a/packages/node-type-resolver/src/NodeScopeAndMetadataDecorator.php b/packages/node-type-resolver/src/NodeScopeAndMetadataDecorator.php index 3089ae9eb73d..5fe6e3d30a82 100644 --- a/packages/node-type-resolver/src/NodeScopeAndMetadataDecorator.php +++ b/packages/node-type-resolver/src/NodeScopeAndMetadataDecorator.php @@ -9,10 +9,10 @@ use PhpParser\NodeVisitor\CloningVisitor; use PhpParser\NodeVisitor\NameResolver; use Rector\Core\Configuration\Configuration; +use Rector\NodeCollector\NodeVisitor\NodeCollectorNodeVisitor; use Rector\NodeTypeResolver\NodeVisitor\FileInfoNodeVisitor; use Rector\NodeTypeResolver\NodeVisitor\FunctionMethodAndClassNodeVisitor; use Rector\NodeTypeResolver\NodeVisitor\NamespaceNodeVisitor; -use Rector\NodeTypeResolver\NodeVisitor\NodeCollectorNodeVisitor; use Rector\NodeTypeResolver\NodeVisitor\ParentAndNextNodeVisitor; use Rector\NodeTypeResolver\NodeVisitor\PhpDocInfoNodeVisitor; use Rector\NodeTypeResolver\NodeVisitor\StatementNodeVisitor; diff --git a/packages/node-type-resolver/src/NodeTypeResolver.php b/packages/node-type-resolver/src/NodeTypeResolver.php index 06dc13687e15..83a13f80c205 100644 --- a/packages/node-type-resolver/src/NodeTypeResolver.php +++ b/packages/node-type-resolver/src/NodeTypeResolver.php @@ -28,7 +28,7 @@ use PHPStan\Type\UnionType; use Rector\Core\Exception\ShouldNotHappenException; use Rector\NodeNameResolver\NodeNameResolver; -use Rector\NodeTypeResolver\Contract\PerNodeTypeResolver\PerNodeTypeResolverInterface; +use Rector\NodeTypeResolver\Contract\NodeTypeResolverInterface; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory; use Rector\NodeTypeResolver\Reflection\ClassReflectionTypesResolver; @@ -38,9 +38,9 @@ final class NodeTypeResolver { /** - * @var PerNodeTypeResolverInterface[] + * @var NodeTypeResolverInterface[] */ - private $perNodeTypeResolvers = []; + private $nodeTypeResolvers = []; /** * @var NodeNameResolver @@ -73,7 +73,7 @@ final class NodeTypeResolver private $arrayTypeAnalyzer; /** - * @param PerNodeTypeResolverInterface[] $perNodeTypeResolvers + * @param NodeTypeResolverInterface[] $nodeTypeResolvers */ public function __construct( NodeNameResolver $nodeNameResolver, @@ -81,12 +81,12 @@ public function __construct( ReflectionProvider $reflectionProvider, TypeFactory $typeFactory, ObjectTypeSpecifier $objectTypeSpecifier, - array $perNodeTypeResolvers + array $nodeTypeResolvers ) { $this->nodeNameResolver = $nodeNameResolver; - foreach ($perNodeTypeResolvers as $perNodeTypeResolver) { - $this->addPerNodeTypeResolver($perNodeTypeResolver); + foreach ($nodeTypeResolvers as $nodeTypeResolver) { + $this->addNodeTypeResolver($nodeTypeResolver); } $this->classReflectionTypesResolver = $classReflectionTypesResolver; @@ -238,10 +238,10 @@ public function isStaticType(Node $node, string $staticTypeClass): bool return is_a($this->resolve($node), $staticTypeClass); } - private function addPerNodeTypeResolver(PerNodeTypeResolverInterface $perNodeTypeResolver): void + private function addNodeTypeResolver(NodeTypeResolverInterface $nodeTypeResolver): void { - foreach ($perNodeTypeResolver->getNodeClasses() as $nodeClass) { - $this->perNodeTypeResolvers[$nodeClass] = $perNodeTypeResolver; + foreach ($nodeTypeResolver->getNodeClasses() as $nodeClass) { + $this->nodeTypeResolvers[$nodeClass] = $nodeTypeResolver; } } @@ -283,13 +283,13 @@ private function isFnMatch(Node $node, string $requiredType): bool private function resolveFirstType(Node $node): Type { - foreach ($this->perNodeTypeResolvers as $perNodeTypeResolver) { - foreach ($perNodeTypeResolver->getNodeClasses() as $nodeClass) { + foreach ($this->nodeTypeResolvers as $nodeTypeResolver) { + foreach ($nodeTypeResolver->getNodeClasses() as $nodeClass) { if (! is_a($node, $nodeClass)) { continue; } - return $perNodeTypeResolver->resolve($node); + return $nodeTypeResolver->resolve($node); } } diff --git a/packages/node-type-resolver/src/PerNodeTypeResolver/ArrayDimFetchTypeResolver.php b/packages/node-type-resolver/src/NodeTypeResolver/ArrayDimFetchTypeResolver.php similarity index 77% rename from packages/node-type-resolver/src/PerNodeTypeResolver/ArrayDimFetchTypeResolver.php rename to packages/node-type-resolver/src/NodeTypeResolver/ArrayDimFetchTypeResolver.php index ad59d9b48b40..ee806e841e4d 100644 --- a/packages/node-type-resolver/src/PerNodeTypeResolver/ArrayDimFetchTypeResolver.php +++ b/packages/node-type-resolver/src/NodeTypeResolver/ArrayDimFetchTypeResolver.php @@ -2,15 +2,15 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PerNodeTypeResolver; +namespace Rector\NodeTypeResolver\NodeTypeResolver; use PhpParser\Node; use PhpParser\Node\Expr\ArrayDimFetch; use PHPStan\Type\Type; -use Rector\NodeTypeResolver\Contract\PerNodeTypeResolver\PerNodeTypeResolverInterface; +use Rector\NodeTypeResolver\Contract\NodeTypeResolverInterface; use Rector\NodeTypeResolver\NodeTypeResolver; -final class ArrayDimFetchTypeResolver implements PerNodeTypeResolverInterface +final class ArrayDimFetchTypeResolver implements NodeTypeResolverInterface { /** * @var NodeTypeResolver diff --git a/packages/node-type-resolver/src/PerNodeTypeResolver/CastTypeResolver.php b/packages/node-type-resolver/src/NodeTypeResolver/CastTypeResolver.php similarity index 77% rename from packages/node-type-resolver/src/PerNodeTypeResolver/CastTypeResolver.php rename to packages/node-type-resolver/src/NodeTypeResolver/CastTypeResolver.php index 165417192ead..436823137dd1 100644 --- a/packages/node-type-resolver/src/PerNodeTypeResolver/CastTypeResolver.php +++ b/packages/node-type-resolver/src/NodeTypeResolver/CastTypeResolver.php @@ -2,15 +2,15 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PerNodeTypeResolver; +namespace Rector\NodeTypeResolver\NodeTypeResolver; use PhpParser\Node; use PhpParser\Node\Expr\Cast; use PHPStan\Type\Type; -use Rector\NodeTypeResolver\Contract\PerNodeTypeResolver\PerNodeTypeResolverInterface; +use Rector\NodeTypeResolver\Contract\NodeTypeResolverInterface; use Rector\NodeTypeResolver\NodeTypeResolver; -final class CastTypeResolver implements PerNodeTypeResolverInterface +final class CastTypeResolver implements NodeTypeResolverInterface { /** * @var NodeTypeResolver diff --git a/packages/node-type-resolver/src/PerNodeTypeResolver/ClassAndInterfaceTypeResolver.php b/packages/node-type-resolver/src/NodeTypeResolver/ClassAndInterfaceTypeResolver.php similarity index 87% rename from packages/node-type-resolver/src/PerNodeTypeResolver/ClassAndInterfaceTypeResolver.php rename to packages/node-type-resolver/src/NodeTypeResolver/ClassAndInterfaceTypeResolver.php index 7dd56f63a430..19560e6b7302 100644 --- a/packages/node-type-resolver/src/PerNodeTypeResolver/ClassAndInterfaceTypeResolver.php +++ b/packages/node-type-resolver/src/NodeTypeResolver/ClassAndInterfaceTypeResolver.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PerNodeTypeResolver; +namespace Rector\NodeTypeResolver\NodeTypeResolver; use PhpParser\Node; use PhpParser\Node\Stmt\Class_; @@ -11,12 +11,12 @@ use PHPStan\Reflection\ClassReflection; use PHPStan\Type\Type; use Rector\Core\Exception\ShouldNotHappenException; -use Rector\NodeTypeResolver\Contract\PerNodeTypeResolver\PerNodeTypeResolverInterface; +use Rector\NodeTypeResolver\Contract\NodeTypeResolverInterface; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory; use Rector\NodeTypeResolver\Reflection\ClassReflectionTypesResolver; -final class ClassAndInterfaceTypeResolver implements PerNodeTypeResolverInterface +final class ClassAndInterfaceTypeResolver implements NodeTypeResolverInterface { /** * @var ClassReflectionTypesResolver diff --git a/packages/node-type-resolver/src/PerNodeTypeResolver/ClassConstFetchTypeResolver.php b/packages/node-type-resolver/src/NodeTypeResolver/ClassConstFetchTypeResolver.php similarity index 77% rename from packages/node-type-resolver/src/PerNodeTypeResolver/ClassConstFetchTypeResolver.php rename to packages/node-type-resolver/src/NodeTypeResolver/ClassConstFetchTypeResolver.php index 49b7b21cf591..479f1744065f 100644 --- a/packages/node-type-resolver/src/PerNodeTypeResolver/ClassConstFetchTypeResolver.php +++ b/packages/node-type-resolver/src/NodeTypeResolver/ClassConstFetchTypeResolver.php @@ -2,15 +2,15 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PerNodeTypeResolver; +namespace Rector\NodeTypeResolver\NodeTypeResolver; use PhpParser\Node; use PhpParser\Node\Expr\ClassConstFetch; use PHPStan\Type\Type; -use Rector\NodeTypeResolver\Contract\PerNodeTypeResolver\PerNodeTypeResolverInterface; +use Rector\NodeTypeResolver\Contract\NodeTypeResolverInterface; use Rector\NodeTypeResolver\NodeTypeResolver; -final class ClassConstFetchTypeResolver implements PerNodeTypeResolverInterface +final class ClassConstFetchTypeResolver implements NodeTypeResolverInterface { /** * @var NodeTypeResolver diff --git a/packages/node-type-resolver/src/PerNodeTypeResolver/ClassMethodOrClassConstTypeResolver.php b/packages/node-type-resolver/src/NodeTypeResolver/ClassMethodOrClassConstTypeResolver.php similarity index 82% rename from packages/node-type-resolver/src/PerNodeTypeResolver/ClassMethodOrClassConstTypeResolver.php rename to packages/node-type-resolver/src/NodeTypeResolver/ClassMethodOrClassConstTypeResolver.php index e634489b6b01..a8b433f3894b 100644 --- a/packages/node-type-resolver/src/PerNodeTypeResolver/ClassMethodOrClassConstTypeResolver.php +++ b/packages/node-type-resolver/src/NodeTypeResolver/ClassMethodOrClassConstTypeResolver.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PerNodeTypeResolver; +namespace Rector\NodeTypeResolver\NodeTypeResolver; use PhpParser\Node; use PhpParser\Node\Param; @@ -10,11 +10,11 @@ use PhpParser\Node\Stmt\ClassMethod; use PHPStan\Type\ObjectWithoutClassType; use PHPStan\Type\Type; -use Rector\NodeTypeResolver\Contract\PerNodeTypeResolver\PerNodeTypeResolverInterface; +use Rector\NodeTypeResolver\Contract\NodeTypeResolverInterface; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\NodeTypeResolver; -final class ClassMethodOrClassConstTypeResolver implements PerNodeTypeResolverInterface +final class ClassMethodOrClassConstTypeResolver implements NodeTypeResolverInterface { /** * @var NodeTypeResolver diff --git a/packages/node-type-resolver/src/PerNodeTypeResolver/NameTypeResolver.php b/packages/node-type-resolver/src/NodeTypeResolver/NameTypeResolver.php similarity index 91% rename from packages/node-type-resolver/src/PerNodeTypeResolver/NameTypeResolver.php rename to packages/node-type-resolver/src/NodeTypeResolver/NameTypeResolver.php index 9432e2ba272e..519814f05db5 100644 --- a/packages/node-type-resolver/src/PerNodeTypeResolver/NameTypeResolver.php +++ b/packages/node-type-resolver/src/NodeTypeResolver/NameTypeResolver.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PerNodeTypeResolver; +namespace Rector\NodeTypeResolver\NodeTypeResolver; use PhpParser\Node; use PhpParser\Node\Name; @@ -11,13 +11,13 @@ use PHPStan\Type\ObjectType; use PHPStan\Type\Type; use PHPStan\Type\UnionType; -use Rector\NodeTypeResolver\Contract\PerNodeTypeResolver\PerNodeTypeResolverInterface; +use Rector\NodeTypeResolver\Contract\NodeTypeResolverInterface; use Rector\NodeTypeResolver\Node\AttributeKey; /** * @see \Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\NameTypeResolver\NameTypeResolverTest */ -final class NameTypeResolver implements PerNodeTypeResolverInterface +final class NameTypeResolver implements NodeTypeResolverInterface { /** * @return string[] diff --git a/packages/node-type-resolver/src/PerNodeTypeResolver/ParamTypeResolver.php b/packages/node-type-resolver/src/NodeTypeResolver/ParamTypeResolver.php similarity index 94% rename from packages/node-type-resolver/src/PerNodeTypeResolver/ParamTypeResolver.php rename to packages/node-type-resolver/src/NodeTypeResolver/ParamTypeResolver.php index 6e11827a2de5..0cf1fbb7a24f 100644 --- a/packages/node-type-resolver/src/PerNodeTypeResolver/ParamTypeResolver.php +++ b/packages/node-type-resolver/src/NodeTypeResolver/ParamTypeResolver.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PerNodeTypeResolver; +namespace Rector\NodeTypeResolver\NodeTypeResolver; use PhpParser\Node; use PhpParser\Node\Expr\Variable; @@ -16,14 +16,14 @@ use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo; use Rector\Core\PhpParser\NodeTraverser\CallableNodeTraverser; use Rector\NodeNameResolver\NodeNameResolver; -use Rector\NodeTypeResolver\Contract\PerNodeTypeResolver\PerNodeTypeResolverInterface; +use Rector\NodeTypeResolver\Contract\NodeTypeResolverInterface; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\NodeTypeResolver; /** * @see \Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\ParamTypeResolver\ParamTypeResolverTest */ -final class ParamTypeResolver implements PerNodeTypeResolverInterface +final class ParamTypeResolver implements NodeTypeResolverInterface { /** * @var NodeNameResolver diff --git a/packages/node-type-resolver/src/PerNodeTypeResolver/PropertyFetchTypeResolver.php b/packages/node-type-resolver/src/NodeTypeResolver/PropertyFetchTypeResolver.php similarity index 91% rename from packages/node-type-resolver/src/PerNodeTypeResolver/PropertyFetchTypeResolver.php rename to packages/node-type-resolver/src/NodeTypeResolver/PropertyFetchTypeResolver.php index 0241a7d9d6e2..3838030c3136 100644 --- a/packages/node-type-resolver/src/PerNodeTypeResolver/PropertyFetchTypeResolver.php +++ b/packages/node-type-resolver/src/NodeTypeResolver/PropertyFetchTypeResolver.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PerNodeTypeResolver; +namespace Rector\NodeTypeResolver\NodeTypeResolver; use PhpParser\Builder\Property; use PhpParser\Node; @@ -14,18 +14,18 @@ use PHPStan\Type\Type; use PHPStan\Type\TypeWithClassName; use Rector\BetterPhpDocParser\PhpDocParser\BetterPhpDocParser; -use Rector\Core\NodeContainer\NodeCollector\ParsedNodeCollector; +use Rector\NodeCollector\NodeCollector\ParsedNodeCollector; use Rector\NodeNameResolver\NodeNameResolver; -use Rector\NodeTypeResolver\Contract\PerNodeTypeResolver\PerNodeTypeResolverInterface; +use Rector\NodeTypeResolver\Contract\NodeTypeResolverInterface; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\NodeTypeResolver; -use Rector\NodeTypeResolver\StaticTypeMapper; +use Rector\StaticTypeMapper\StaticTypeMapper; use ReflectionProperty; /** * @see \Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\NameTypeResolver\NameTypeResolverTest */ -final class PropertyFetchTypeResolver implements PerNodeTypeResolverInterface +final class PropertyFetchTypeResolver implements NodeTypeResolverInterface { /** * @var ParsedNodeCollector diff --git a/packages/node-type-resolver/src/PerNodeTypeResolver/PropertyTypeResolver.php b/packages/node-type-resolver/src/NodeTypeResolver/PropertyTypeResolver.php similarity index 86% rename from packages/node-type-resolver/src/PerNodeTypeResolver/PropertyTypeResolver.php rename to packages/node-type-resolver/src/NodeTypeResolver/PropertyTypeResolver.php index e1e66b56837a..62fada4f48ff 100644 --- a/packages/node-type-resolver/src/PerNodeTypeResolver/PropertyTypeResolver.php +++ b/packages/node-type-resolver/src/NodeTypeResolver/PropertyTypeResolver.php @@ -2,21 +2,21 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PerNodeTypeResolver; +namespace Rector\NodeTypeResolver\NodeTypeResolver; use PhpParser\Node; use PhpParser\Node\Expr\PropertyFetch; use PhpParser\Node\Expr\Variable; use PhpParser\Node\Stmt\Property; use PHPStan\Type\Type; -use Rector\NodeTypeResolver\Contract\PerNodeTypeResolver\PerNodeTypeResolverInterface; +use Rector\NodeTypeResolver\Contract\NodeTypeResolverInterface; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\NodeTypeResolver; /** * @see \Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\PropertyTypeResolver\PropertyTypeResolverTest */ -final class PropertyTypeResolver implements PerNodeTypeResolverInterface +final class PropertyTypeResolver implements NodeTypeResolverInterface { /** * @var NodeTypeResolver diff --git a/packages/node-type-resolver/src/PerNodeTypeResolver/ScalarTypeResolver.php b/packages/node-type-resolver/src/NodeTypeResolver/ScalarTypeResolver.php similarity index 85% rename from packages/node-type-resolver/src/PerNodeTypeResolver/ScalarTypeResolver.php rename to packages/node-type-resolver/src/NodeTypeResolver/ScalarTypeResolver.php index 7b9983d61853..34e03b580a9b 100644 --- a/packages/node-type-resolver/src/PerNodeTypeResolver/ScalarTypeResolver.php +++ b/packages/node-type-resolver/src/NodeTypeResolver/ScalarTypeResolver.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PerNodeTypeResolver; +namespace Rector\NodeTypeResolver\NodeTypeResolver; use PhpParser\Node; use PhpParser\Node\Scalar; @@ -17,9 +17,9 @@ use PHPStan\Type\MixedType; use PHPStan\Type\Type; use Rector\Core\Exception\NotImplementedException; -use Rector\NodeTypeResolver\Contract\PerNodeTypeResolver\PerNodeTypeResolverInterface; +use Rector\NodeTypeResolver\Contract\NodeTypeResolverInterface; -final class ScalarTypeResolver implements PerNodeTypeResolverInterface +final class ScalarTypeResolver implements NodeTypeResolverInterface { public function getNodeClasses(): array { diff --git a/packages/node-type-resolver/src/PerNodeTypeResolver/StaticCallTypeResolver.php b/packages/node-type-resolver/src/NodeTypeResolver/StaticCallTypeResolver.php similarity index 89% rename from packages/node-type-resolver/src/PerNodeTypeResolver/StaticCallTypeResolver.php rename to packages/node-type-resolver/src/NodeTypeResolver/StaticCallTypeResolver.php index cac088aa1f51..3fe7632a7138 100644 --- a/packages/node-type-resolver/src/PerNodeTypeResolver/StaticCallTypeResolver.php +++ b/packages/node-type-resolver/src/NodeTypeResolver/StaticCallTypeResolver.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PerNodeTypeResolver; +namespace Rector\NodeTypeResolver\NodeTypeResolver; use PhpParser\Node; use PhpParser\Node\Expr\StaticCall; @@ -10,11 +10,11 @@ use PHPStan\Type\Type; use PHPStan\Type\TypeUtils; use Rector\NodeNameResolver\NodeNameResolver; -use Rector\NodeTypeResolver\Contract\PerNodeTypeResolver\PerNodeTypeResolverInterface; +use Rector\NodeTypeResolver\Contract\NodeTypeResolverInterface; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\NodeTypeResolver; -final class StaticCallTypeResolver implements PerNodeTypeResolverInterface +final class StaticCallTypeResolver implements NodeTypeResolverInterface { /** * @var NodeTypeResolver diff --git a/packages/node-type-resolver/src/PerNodeTypeResolver/TraitTypeResolver.php b/packages/node-type-resolver/src/NodeTypeResolver/TraitTypeResolver.php similarity index 83% rename from packages/node-type-resolver/src/PerNodeTypeResolver/TraitTypeResolver.php rename to packages/node-type-resolver/src/NodeTypeResolver/TraitTypeResolver.php index 31fa8c244eb5..b886a0fd470a 100644 --- a/packages/node-type-resolver/src/PerNodeTypeResolver/TraitTypeResolver.php +++ b/packages/node-type-resolver/src/NodeTypeResolver/TraitTypeResolver.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PerNodeTypeResolver; +namespace Rector\NodeTypeResolver\NodeTypeResolver; use PhpParser\Node; use PhpParser\Node\Stmt\Trait_; @@ -10,13 +10,13 @@ use PHPStan\Type\ObjectType; use PHPStan\Type\Type; use PHPStan\Type\UnionType; -use Rector\NodeTypeResolver\Contract\PerNodeTypeResolver\PerNodeTypeResolverInterface; +use Rector\NodeTypeResolver\Contract\NodeTypeResolverInterface; use ReflectionClass; /** * @see \Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\TraitTypeResolver\TraitTypeResolverTest */ -final class TraitTypeResolver implements PerNodeTypeResolverInterface +final class TraitTypeResolver implements NodeTypeResolverInterface { /** * @return string[] diff --git a/packages/node-type-resolver/src/PerNodeTypeResolver/VariableTypeResolver.php b/packages/node-type-resolver/src/NodeTypeResolver/VariableTypeResolver.php similarity index 95% rename from packages/node-type-resolver/src/PerNodeTypeResolver/VariableTypeResolver.php rename to packages/node-type-resolver/src/NodeTypeResolver/VariableTypeResolver.php index 26dca4d4f1ce..b49bf185d9cb 100644 --- a/packages/node-type-resolver/src/PerNodeTypeResolver/VariableTypeResolver.php +++ b/packages/node-type-resolver/src/NodeTypeResolver/VariableTypeResolver.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PerNodeTypeResolver; +namespace Rector\NodeTypeResolver\NodeTypeResolver; use PhpParser\Node; use PhpParser\Node\Expr\Variable; @@ -13,7 +13,7 @@ use PHPStan\Type\Type; use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo; use Rector\NodeNameResolver\NodeNameResolver; -use Rector\NodeTypeResolver\Contract\PerNodeTypeResolver\PerNodeTypeResolverInterface; +use Rector\NodeTypeResolver\Contract\NodeTypeResolverInterface; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\NodeTypeResolver; use Rector\NodeTypeResolver\PHPStan\Collector\TraitNodeScopeCollector; @@ -21,7 +21,7 @@ /** * @see \Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\VariableTypeResolver\VariableTypeResolverTest */ -final class VariableTypeResolver implements PerNodeTypeResolverInterface +final class VariableTypeResolver implements NodeTypeResolverInterface { /** * @var NodeNameResolver diff --git a/packages/node-type-resolver/src/PhpDoc/NodeAnalyzer/DocBlockClassRenamer.php b/packages/node-type-resolver/src/PhpDoc/NodeAnalyzer/DocBlockClassRenamer.php index 626cf898d5ad..38567e390b54 100644 --- a/packages/node-type-resolver/src/PhpDoc/NodeAnalyzer/DocBlockClassRenamer.php +++ b/packages/node-type-resolver/src/PhpDoc/NodeAnalyzer/DocBlockClassRenamer.php @@ -10,7 +10,7 @@ use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode; use PHPStan\Type\Type; use Rector\BetterPhpDocParser\Ast\PhpDocNodeTraverser; -use Rector\NodeTypeResolver\StaticTypeMapper; +use Rector\StaticTypeMapper\StaticTypeMapper; final class DocBlockClassRenamer { diff --git a/packages/node-type-resolver/src/PhpDoc/NodeAnalyzer/DocBlockNameImporter.php b/packages/node-type-resolver/src/PhpDoc/NodeAnalyzer/DocBlockNameImporter.php index 607417106b4b..476997714f62 100644 --- a/packages/node-type-resolver/src/PhpDoc/NodeAnalyzer/DocBlockNameImporter.php +++ b/packages/node-type-resolver/src/PhpDoc/NodeAnalyzer/DocBlockNameImporter.php @@ -18,9 +18,9 @@ use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\ClassExistenceStaticHelper; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\NodeTypeResolver\StaticTypeMapper; use Rector\PHPStan\Type\FullyQualifiedObjectType; use Rector\PHPStan\Type\ShortenedObjectType; +use Rector\StaticTypeMapper\StaticTypeMapper; use Symplify\PackageBuilder\Parameter\ParameterProvider; final class DocBlockNameImporter diff --git a/packages/node-type-resolver/src/PhpDoc/PhpDocTypeRenamer.php b/packages/node-type-resolver/src/PhpDoc/PhpDocTypeRenamer.php index 6a8e1e449304..4997db049caa 100644 --- a/packages/node-type-resolver/src/PhpDoc/PhpDocTypeRenamer.php +++ b/packages/node-type-resolver/src/PhpDoc/PhpDocTypeRenamer.php @@ -11,7 +11,7 @@ use PHPStan\Type\ObjectType; use Rector\BetterPhpDocParser\Ast\PhpDocNodeTraverser; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\NodeTypeResolver\StaticTypeMapper; +use Rector\StaticTypeMapper\StaticTypeMapper; final class PhpDocTypeRenamer { diff --git a/packages/node-type-resolver/tests/PerNodeTypeResolver/ClassAndInterfaceTypeResolver/ClassTypeResolverTest.php b/packages/node-type-resolver/tests/PerNodeTypeResolver/ClassAndInterfaceTypeResolver/ClassTypeResolverTest.php index 6cd88b7b419a..8d8ef63da0cd 100644 --- a/packages/node-type-resolver/tests/PerNodeTypeResolver/ClassAndInterfaceTypeResolver/ClassTypeResolverTest.php +++ b/packages/node-type-resolver/tests/PerNodeTypeResolver/ClassAndInterfaceTypeResolver/ClassTypeResolverTest.php @@ -18,7 +18,7 @@ use Rector\PHPStan\TypeFactoryStaticHelper; /** - * @see \Rector\NodeTypeResolver\PerNodeTypeResolver\ClassAndInterfaceTypeResolver + * @see \Rector\NodeTypeResolver\NodeTypeResolver\ClassAndInterfaceTypeResolver */ final class ClassTypeResolverTest extends AbstractNodeTypeResolverTest { diff --git a/packages/node-type-resolver/tests/PerNodeTypeResolver/ClassAndInterfaceTypeResolver/InterfaceTypeResolverTest.php b/packages/node-type-resolver/tests/PerNodeTypeResolver/ClassAndInterfaceTypeResolver/InterfaceTypeResolverTest.php index ac4b7bfca30b..91fe66e82ab2 100644 --- a/packages/node-type-resolver/tests/PerNodeTypeResolver/ClassAndInterfaceTypeResolver/InterfaceTypeResolverTest.php +++ b/packages/node-type-resolver/tests/PerNodeTypeResolver/ClassAndInterfaceTypeResolver/InterfaceTypeResolverTest.php @@ -13,7 +13,7 @@ use Rector\PHPStan\TypeFactoryStaticHelper; /** - * @covers \Rector\NodeTypeResolver\PerNodeTypeResolver\ClassAndInterfaceTypeResolver + * @covers \Rector\NodeTypeResolver\NodeTypeResolver\ClassAndInterfaceTypeResolver */ final class InterfaceTypeResolverTest extends AbstractNodeTypeResolverTest { diff --git a/packages/node-type-resolver/tests/PerNodeTypeResolver/NameTypeResolver/NameTypeResolverTest.php b/packages/node-type-resolver/tests/PerNodeTypeResolver/NameTypeResolver/NameTypeResolverTest.php index 6582656932ef..0fbe5021418a 100644 --- a/packages/node-type-resolver/tests/PerNodeTypeResolver/NameTypeResolver/NameTypeResolverTest.php +++ b/packages/node-type-resolver/tests/PerNodeTypeResolver/NameTypeResolver/NameTypeResolverTest.php @@ -12,7 +12,7 @@ use Rector\NodeTypeResolver\Tests\Source\AnotherClass; /** - * @covers \Rector\NodeTypeResolver\PerNodeTypeResolver\NameTypeResolver + * @covers \Rector\NodeTypeResolver\NodeTypeResolver\NameTypeResolver */ final class NameTypeResolverTest extends AbstractNodeTypeResolverTest { diff --git a/packages/node-type-resolver/tests/PerNodeTypeResolver/ParamTypeResolver/ParamTypeResolverTest.php b/packages/node-type-resolver/tests/PerNodeTypeResolver/ParamTypeResolver/ParamTypeResolverTest.php index d2fbbabaf317..50ccc9799e8f 100644 --- a/packages/node-type-resolver/tests/PerNodeTypeResolver/ParamTypeResolver/ParamTypeResolverTest.php +++ b/packages/node-type-resolver/tests/PerNodeTypeResolver/ParamTypeResolver/ParamTypeResolverTest.php @@ -12,7 +12,7 @@ use Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\ParamTypeResolver\Source\Html; /** - * @see \Rector\NodeTypeResolver\PerNodeTypeResolver\ParamTypeResolver + * @see \Rector\NodeTypeResolver\NodeTypeResolver\ParamTypeResolver */ final class ParamTypeResolverTest extends AbstractNodeTypeResolverTest { diff --git a/packages/node-type-resolver/tests/PerNodeTypeResolver/PropertyTypeResolver/PropertyTypeResolverTest.php b/packages/node-type-resolver/tests/PerNodeTypeResolver/PropertyTypeResolver/PropertyTypeResolverTest.php index b70592171805..0c555594681c 100644 --- a/packages/node-type-resolver/tests/PerNodeTypeResolver/PropertyTypeResolver/PropertyTypeResolverTest.php +++ b/packages/node-type-resolver/tests/PerNodeTypeResolver/PropertyTypeResolver/PropertyTypeResolverTest.php @@ -17,7 +17,7 @@ use Rector\PHPStan\TypeFactoryStaticHelper; /** - * @see \Rector\NodeTypeResolver\PerNodeTypeResolver\PropertyTypeResolver + * @see \Rector\NodeTypeResolver\NodeTypeResolver\PropertyTypeResolver */ final class PropertyTypeResolverTest extends AbstractNodeTypeResolverTest { diff --git a/packages/node-type-resolver/tests/PerNodeTypeResolver/TraitTypeResolver/TraitTypeResolverTest.php b/packages/node-type-resolver/tests/PerNodeTypeResolver/TraitTypeResolver/TraitTypeResolverTest.php index c62ca99f0044..efe327ba01e3 100644 --- a/packages/node-type-resolver/tests/PerNodeTypeResolver/TraitTypeResolver/TraitTypeResolverTest.php +++ b/packages/node-type-resolver/tests/PerNodeTypeResolver/TraitTypeResolver/TraitTypeResolverTest.php @@ -13,7 +13,7 @@ use Rector\PHPStan\TypeFactoryStaticHelper; /** - * @see \Rector\NodeTypeResolver\PerNodeTypeResolver\TraitTypeResolver + * @see \Rector\NodeTypeResolver\NodeTypeResolver\TraitTypeResolver */ final class TraitTypeResolverTest extends AbstractNodeTypeResolverTest { diff --git a/packages/node-type-resolver/tests/PerNodeTypeResolver/VariableTypeResolver/VariableTypeResolverTest.php b/packages/node-type-resolver/tests/PerNodeTypeResolver/VariableTypeResolver/VariableTypeResolverTest.php index 609e6d92da59..cae00eb8951f 100644 --- a/packages/node-type-resolver/tests/PerNodeTypeResolver/VariableTypeResolver/VariableTypeResolverTest.php +++ b/packages/node-type-resolver/tests/PerNodeTypeResolver/VariableTypeResolver/VariableTypeResolverTest.php @@ -15,7 +15,7 @@ use Rector\PHPStan\TypeFactoryStaticHelper; /** - * @see \Rector\NodeTypeResolver\PerNodeTypeResolver\VariableTypeResolver + * @see \Rector\NodeTypeResolver\NodeTypeResolver\VariableTypeResolver */ final class VariableTypeResolverTest extends AbstractNodeTypeResolverTest { diff --git a/packages/node-type-resolver/tests/StaticTypeMapper/StaticTypeMapperTest.php b/packages/node-type-resolver/tests/StaticTypeMapper/StaticTypeMapperTest.php index 0ef69e81f8e9..b80506dee898 100644 --- a/packages/node-type-resolver/tests/StaticTypeMapper/StaticTypeMapperTest.php +++ b/packages/node-type-resolver/tests/StaticTypeMapper/StaticTypeMapperTest.php @@ -15,7 +15,7 @@ use PHPStan\Type\IterableType; use PHPStan\Type\MixedType; use Rector\Core\HttpKernel\RectorKernel; -use Rector\NodeTypeResolver\StaticTypeMapper; +use Rector\StaticTypeMapper\StaticTypeMapper; use Symplify\PackageBuilder\Tests\AbstractKernelTestCase; final class StaticTypeMapperTest extends AbstractKernelTestCase diff --git a/packages/removing-static/src/UniqueObjectFactoryFactory.php b/packages/removing-static/src/UniqueObjectFactoryFactory.php index 7483a553816a..8066071aaaf1 100644 --- a/packages/removing-static/src/UniqueObjectFactoryFactory.php +++ b/packages/removing-static/src/UniqueObjectFactoryFactory.php @@ -24,7 +24,7 @@ use Rector\Core\PhpParser\Node\NodeFactory; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\NodeTypeResolver\StaticTypeMapper; +use Rector\StaticTypeMapper\StaticTypeMapper; final class UniqueObjectFactoryFactory { diff --git a/packages/solid/src/Analyzer/ClassConstantFetchAnalyzer.php b/packages/solid/src/Analyzer/ClassConstantFetchAnalyzer.php index 4e8d575a291d..4390dab56d22 100644 --- a/packages/solid/src/Analyzer/ClassConstantFetchAnalyzer.php +++ b/packages/solid/src/Analyzer/ClassConstantFetchAnalyzer.php @@ -8,8 +8,8 @@ use PHPStan\Type\ObjectType; use PHPStan\Type\Type; use PHPStan\Type\TypeUtils; -use Rector\Core\NodeContainer\NodeCollector\ParsedNodeCollector; use Rector\Core\Testing\PHPUnit\PHPUnitEnvironment; +use Rector\NodeCollector\NodeCollector\ParsedNodeCollector; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\NodeTypeResolver; diff --git a/packages/solid/src/NodeFinder/ParentClassConstantNodeFinder.php b/packages/solid/src/NodeFinder/ParentClassConstantNodeFinder.php index 8b5771e3186c..1d8e43fe432d 100644 --- a/packages/solid/src/NodeFinder/ParentClassConstantNodeFinder.php +++ b/packages/solid/src/NodeFinder/ParentClassConstantNodeFinder.php @@ -5,7 +5,7 @@ namespace Rector\SOLID\NodeFinder; use PhpParser\Node\Stmt\ClassConst; -use Rector\Core\NodeContainer\NodeCollector\ParsedNodeCollector; +use Rector\NodeCollector\NodeCollector\ParsedNodeCollector; use Rector\NodeTypeResolver\Node\AttributeKey; final class ParentClassConstantNodeFinder diff --git a/packages/static-type-mapper/config/config.yaml b/packages/static-type-mapper/config/config.yaml new file mode 100644 index 000000000000..2d11ae30af48 --- /dev/null +++ b/packages/static-type-mapper/config/config.yaml @@ -0,0 +1,7 @@ +services: + _defaults: + public: true + autowire: true + + Rector\StaticTypeMapper\: + resource: '../src' diff --git a/packages/node-type-resolver/src/Contract/PhpDocParser/PhpDocTypeMapperInterface.php b/packages/static-type-mapper/src/Contract/PhpDocParser/PhpDocTypeMapperInterface.php similarity index 85% rename from packages/node-type-resolver/src/Contract/PhpDocParser/PhpDocTypeMapperInterface.php rename to packages/static-type-mapper/src/Contract/PhpDocParser/PhpDocTypeMapperInterface.php index 44bbe76cd555..fdcdc3b5625e 100644 --- a/packages/node-type-resolver/src/Contract/PhpDocParser/PhpDocTypeMapperInterface.php +++ b/packages/static-type-mapper/src/Contract/PhpDocParser/PhpDocTypeMapperInterface.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\Contract\PhpDocParser; +namespace Rector\StaticTypeMapper\Contract\PhpDocParser; use PhpParser\Node; use PHPStan\Analyser\NameScope; diff --git a/packages/node-type-resolver/src/Contract/PhpParser/PhpParserNodeMapperInterface.php b/packages/static-type-mapper/src/Contract/PhpParser/PhpParserNodeMapperInterface.php similarity index 80% rename from packages/node-type-resolver/src/Contract/PhpParser/PhpParserNodeMapperInterface.php rename to packages/static-type-mapper/src/Contract/PhpParser/PhpParserNodeMapperInterface.php index 4d17100e4db8..5c1c6c4dbf77 100644 --- a/packages/node-type-resolver/src/Contract/PhpParser/PhpParserNodeMapperInterface.php +++ b/packages/static-type-mapper/src/Contract/PhpParser/PhpParserNodeMapperInterface.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\Contract\PhpParser; +namespace Rector\StaticTypeMapper\Contract\PhpParser; use PhpParser\Node; use PHPStan\Type\Type; diff --git a/packages/node-type-resolver/src/TypeMapper/PhpParserNodeMapper.php b/packages/static-type-mapper/src/Mapper/PhpParserNodeMapper.php similarity index 88% rename from packages/node-type-resolver/src/TypeMapper/PhpParserNodeMapper.php rename to packages/static-type-mapper/src/Mapper/PhpParserNodeMapper.php index 419a5532f84b..65743691166d 100644 --- a/packages/node-type-resolver/src/TypeMapper/PhpParserNodeMapper.php +++ b/packages/static-type-mapper/src/Mapper/PhpParserNodeMapper.php @@ -2,12 +2,12 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\TypeMapper; +namespace Rector\StaticTypeMapper\Mapper; use PhpParser\Node; use PHPStan\Type\Type; use Rector\Core\Exception\NotImplementedException; -use Rector\NodeTypeResolver\Contract\PhpParser\PhpParserNodeMapperInterface; +use Rector\StaticTypeMapper\Contract\PhpParser\PhpParserNodeMapperInterface; final class PhpParserNodeMapper { diff --git a/packages/node-type-resolver/src/TypeMapper/ScalarStringToTypeMapper.php b/packages/static-type-mapper/src/Mapper/ScalarStringToTypeMapper.php similarity index 60% rename from packages/node-type-resolver/src/TypeMapper/ScalarStringToTypeMapper.php rename to packages/static-type-mapper/src/Mapper/ScalarStringToTypeMapper.php index d4ecdaffcf00..86fd35ba862b 100644 --- a/packages/node-type-resolver/src/TypeMapper/ScalarStringToTypeMapper.php +++ b/packages/static-type-mapper/src/Mapper/ScalarStringToTypeMapper.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\TypeMapper; +namespace Rector\StaticTypeMapper\Mapper; use Nette\Utils\Strings; use PHPStan\Type\ArrayType; @@ -20,23 +20,26 @@ final class ScalarStringToTypeMapper { + /** + * @var string[][] + */ + private const SCALAR_NAME_BY_TYPE = [ + StringType::class => ['string'], + FloatType::class => ['float', 'real', 'double'], + IntegerType::class => ['int', 'integer'], + BooleanType::class => ['false', 'true', 'bool', 'boolean'], + NullType::class => ['null'], + VoidType::class => ['void'], + ResourceType::class => ['resource'], + CallableType::class => ['callback', 'callable'], + ObjectWithoutClassType::class => ['object'], + ]; + public function mapScalarStringToType(string $scalarName): Type { $loweredScalarName = Strings::lower($scalarName); - $scalarNameByType = [ - StringType::class => ['string'], - FloatType::class => ['float', 'real', 'double'], - IntegerType::class => ['int', 'integer'], - BooleanType::class => ['false', 'true', 'bool', 'boolean'], - NullType::class => ['null'], - VoidType::class => ['void'], - ResourceType::class => ['resource'], - CallableType::class => ['callback', 'callable'], - ObjectWithoutClassType::class => ['object'], - ]; - - foreach ($scalarNameByType as $objectType => $scalarNames) { + foreach (self::SCALAR_NAME_BY_TYPE as $objectType => $scalarNames) { if (! in_array($loweredScalarName, $scalarNames, true)) { continue; } diff --git a/packages/static-type-mapper/src/Mapper/StringTypeToPhpParserNodeMapper.php b/packages/static-type-mapper/src/Mapper/StringTypeToPhpParserNodeMapper.php new file mode 100644 index 000000000000..bf73d04f45c8 --- /dev/null +++ b/packages/static-type-mapper/src/Mapper/StringTypeToPhpParserNodeMapper.php @@ -0,0 +1,50 @@ +map($nullableType); + + return new NullableType($nameNode); + } + + throw new NotImplementedException(sprintf('%s for "%s"', __METHOD__, $type)); + } +} diff --git a/packages/static-type-mapper/src/PHPStan/NameScopeFactory.php b/packages/static-type-mapper/src/PHPStan/NameScopeFactory.php new file mode 100644 index 000000000000..2a8bed5c262f --- /dev/null +++ b/packages/static-type-mapper/src/PHPStan/NameScopeFactory.php @@ -0,0 +1,56 @@ +getAttribute(AttributeKey::NAMESPACE_NAME); + + /** @var Use_[] $useNodes */ + $useNodes = (array) $node->getAttribute(AttributeKey::USE_NODES); + + $uses = $this->resolveUseNamesByAlias($useNodes); + $className = $node->getAttribute(AttributeKey::CLASS_NAME); + + return new NameScope($namespace, $uses, $className); + } + + /** + * @param Use_[] $useNodes + * @return string[] + */ + private function resolveUseNamesByAlias(array $useNodes): array + { + $useNamesByAlias = []; + + foreach ($useNodes as $useNode) { + foreach ($useNode->uses as $useUse) { + /** @var UseUse $useUse */ + $aliasName = $useUse->getAlias()->name; + + $useName = $useUse->name->toString(); + if (! is_string($useName)) { + throw new ShouldNotHappenException(); + } + + $useNamesByAlias[$aliasName] = $useName; + } + } + + return $useNamesByAlias; + } +} diff --git a/packages/node-type-resolver/src/PhpDoc/PhpDocTypeMapper.php b/packages/static-type-mapper/src/PhpDoc/PhpDocTypeMapper.php similarity index 90% rename from packages/node-type-resolver/src/PhpDoc/PhpDocTypeMapper.php rename to packages/static-type-mapper/src/PhpDoc/PhpDocTypeMapper.php index 4b9b51bf0cf4..572f016c9a62 100644 --- a/packages/node-type-resolver/src/PhpDoc/PhpDocTypeMapper.php +++ b/packages/static-type-mapper/src/PhpDoc/PhpDocTypeMapper.php @@ -2,14 +2,14 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PhpDoc; +namespace Rector\StaticTypeMapper\PhpDoc; use PhpParser\Node; use PHPStan\Analyser\NameScope; use PHPStan\PhpDocParser\Ast\Type\TypeNode; use PHPStan\Type\Type; use Rector\Core\Exception\NotImplementedException; -use Rector\NodeTypeResolver\Contract\PhpDocParser\PhpDocTypeMapperInterface; +use Rector\StaticTypeMapper\Contract\PhpDocParser\PhpDocTypeMapperInterface; final class PhpDocTypeMapper { diff --git a/packages/node-type-resolver/src/PhpDocParser/ArrayTypeMapper.php b/packages/static-type-mapper/src/PhpDocParser/ArrayTypeMapper.php similarity index 86% rename from packages/node-type-resolver/src/PhpDocParser/ArrayTypeMapper.php rename to packages/static-type-mapper/src/PhpDocParser/ArrayTypeMapper.php index 6f51f954a72a..1229791ef200 100644 --- a/packages/node-type-resolver/src/PhpDocParser/ArrayTypeMapper.php +++ b/packages/static-type-mapper/src/PhpDocParser/ArrayTypeMapper.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PhpDocParser; +namespace Rector\StaticTypeMapper\PhpDocParser; use PhpParser\Node; use PHPStan\Analyser\NameScope; @@ -11,8 +11,8 @@ use PHPStan\Type\ArrayType; use PHPStan\Type\MixedType; use PHPStan\Type\Type; -use Rector\NodeTypeResolver\Contract\PhpDocParser\PhpDocTypeMapperInterface; -use Rector\NodeTypeResolver\PhpDoc\PhpDocTypeMapper; +use Rector\StaticTypeMapper\Contract\PhpDocParser\PhpDocTypeMapperInterface; +use Rector\StaticTypeMapper\PhpDoc\PhpDocTypeMapper; final class ArrayTypeMapper implements PhpDocTypeMapperInterface { diff --git a/packages/node-type-resolver/src/PhpDocParser/GenericTypeMapper.php b/packages/static-type-mapper/src/PhpDocParser/GenericTypeMapper.php similarity index 87% rename from packages/node-type-resolver/src/PhpDocParser/GenericTypeMapper.php rename to packages/static-type-mapper/src/PhpDocParser/GenericTypeMapper.php index e2d0b5e4a58c..e55512dd2c2b 100644 --- a/packages/node-type-resolver/src/PhpDocParser/GenericTypeMapper.php +++ b/packages/static-type-mapper/src/PhpDocParser/GenericTypeMapper.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PhpDocParser; +namespace Rector\StaticTypeMapper\PhpDocParser; use PhpParser\Node; use PHPStan\Analyser\NameScope; @@ -10,7 +10,7 @@ use PHPStan\PhpDocParser\Ast\Type\GenericTypeNode; use PHPStan\PhpDocParser\Ast\Type\TypeNode; use PHPStan\Type\Type; -use Rector\NodeTypeResolver\Contract\PhpDocParser\PhpDocTypeMapperInterface; +use Rector\StaticTypeMapper\Contract\PhpDocParser\PhpDocTypeMapperInterface; final class GenericTypeMapper implements PhpDocTypeMapperInterface { diff --git a/packages/node-type-resolver/src/PhpDocParser/IdentifierTypeMapper.php b/packages/static-type-mapper/src/PhpDocParser/IdentifierTypeMapper.php similarity index 95% rename from packages/node-type-resolver/src/PhpDocParser/IdentifierTypeMapper.php rename to packages/static-type-mapper/src/PhpDocParser/IdentifierTypeMapper.php index f80c07f4eb2f..31a14ee17595 100644 --- a/packages/node-type-resolver/src/PhpDocParser/IdentifierTypeMapper.php +++ b/packages/static-type-mapper/src/PhpDocParser/IdentifierTypeMapper.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PhpDocParser; +namespace Rector\StaticTypeMapper\PhpDocParser; use PhpParser\Node; use PHPStan\Analyser\NameScope; @@ -16,11 +16,11 @@ use PHPStan\Type\Type; use Rector\AttributeAwarePhpDoc\Ast\Type\AttributeAwareIdentifierTypeNode; use Rector\BetterPhpDocParser\Type\PreSlashStringType; -use Rector\NodeTypeResolver\Contract\PhpDocParser\PhpDocTypeMapperInterface; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\NodeTypeResolver\TypeMapper\ScalarStringToTypeMapper; use Rector\PHPStan\Type\ParentStaticType; use Rector\PHPStan\Type\SelfObjectType; +use Rector\StaticTypeMapper\Contract\PhpDocParser\PhpDocTypeMapperInterface; +use Rector\StaticTypeMapper\Mapper\ScalarStringToTypeMapper; use Rector\TypeDeclaration\PHPStan\Type\ObjectTypeSpecifier; final class IdentifierTypeMapper implements PhpDocTypeMapperInterface diff --git a/packages/node-type-resolver/src/PhpDocParser/IntersectionTypeMapper.php b/packages/static-type-mapper/src/PhpDocParser/IntersectionTypeMapper.php similarity index 89% rename from packages/node-type-resolver/src/PhpDocParser/IntersectionTypeMapper.php rename to packages/static-type-mapper/src/PhpDocParser/IntersectionTypeMapper.php index b7cc5f791b36..265df7dbc7a4 100644 --- a/packages/node-type-resolver/src/PhpDocParser/IntersectionTypeMapper.php +++ b/packages/static-type-mapper/src/PhpDocParser/IntersectionTypeMapper.php @@ -2,16 +2,16 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PhpDocParser; +namespace Rector\StaticTypeMapper\PhpDocParser; use PhpParser\Node; use PHPStan\Analyser\NameScope; use PHPStan\PhpDocParser\Ast\Type\IntersectionTypeNode; use PHPStan\PhpDocParser\Ast\Type\TypeNode; use PHPStan\Type\Type; -use Rector\NodeTypeResolver\Contract\PhpDocParser\PhpDocTypeMapperInterface; -use Rector\NodeTypeResolver\PhpDoc\PhpDocTypeMapper; use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory; +use Rector\StaticTypeMapper\Contract\PhpDocParser\PhpDocTypeMapperInterface; +use Rector\StaticTypeMapper\PhpDoc\PhpDocTypeMapper; final class IntersectionTypeMapper implements PhpDocTypeMapperInterface { diff --git a/packages/node-type-resolver/src/PhpDocParser/ThisTypeMapper.php b/packages/static-type-mapper/src/PhpDocParser/ThisTypeMapper.php similarity index 88% rename from packages/node-type-resolver/src/PhpDocParser/ThisTypeMapper.php rename to packages/static-type-mapper/src/PhpDocParser/ThisTypeMapper.php index 160f543f21f6..5b6d07d332ad 100644 --- a/packages/node-type-resolver/src/PhpDocParser/ThisTypeMapper.php +++ b/packages/static-type-mapper/src/PhpDocParser/ThisTypeMapper.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PhpDocParser; +namespace Rector\StaticTypeMapper\PhpDocParser; use PhpParser\Node; use PHPStan\Analyser\NameScope; @@ -11,8 +11,8 @@ use PHPStan\Type\ThisType; use PHPStan\Type\Type; use Rector\Core\Exception\ShouldNotHappenException; -use Rector\NodeTypeResolver\Contract\PhpDocParser\PhpDocTypeMapperInterface; use Rector\NodeTypeResolver\Node\AttributeKey; +use Rector\StaticTypeMapper\Contract\PhpDocParser\PhpDocTypeMapperInterface; final class ThisTypeMapper implements PhpDocTypeMapperInterface { diff --git a/packages/node-type-resolver/src/PhpDocParser/UnionTypeMapper.php b/packages/static-type-mapper/src/PhpDocParser/UnionTypeMapper.php similarity index 89% rename from packages/node-type-resolver/src/PhpDocParser/UnionTypeMapper.php rename to packages/static-type-mapper/src/PhpDocParser/UnionTypeMapper.php index 8b8e44ec6f72..ba9805bd2051 100644 --- a/packages/node-type-resolver/src/PhpDocParser/UnionTypeMapper.php +++ b/packages/static-type-mapper/src/PhpDocParser/UnionTypeMapper.php @@ -2,16 +2,16 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PhpDocParser; +namespace Rector\StaticTypeMapper\PhpDocParser; use PhpParser\Node; use PHPStan\Analyser\NameScope; use PHPStan\PhpDocParser\Ast\Type\TypeNode; use PHPStan\PhpDocParser\Ast\Type\UnionTypeNode; use PHPStan\Type\Type; -use Rector\NodeTypeResolver\Contract\PhpDocParser\PhpDocTypeMapperInterface; -use Rector\NodeTypeResolver\PhpDoc\PhpDocTypeMapper; use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory; +use Rector\StaticTypeMapper\Contract\PhpDocParser\PhpDocTypeMapperInterface; +use Rector\StaticTypeMapper\PhpDoc\PhpDocTypeMapper; final class UnionTypeMapper implements PhpDocTypeMapperInterface { diff --git a/packages/node-type-resolver/src/PhpParser/ExprNodeMapper.php b/packages/static-type-mapper/src/PhpParser/ExprNodeMapper.php similarity index 86% rename from packages/node-type-resolver/src/PhpParser/ExprNodeMapper.php rename to packages/static-type-mapper/src/PhpParser/ExprNodeMapper.php index 023c4a1d70f7..b29a2c8841b7 100644 --- a/packages/node-type-resolver/src/PhpParser/ExprNodeMapper.php +++ b/packages/static-type-mapper/src/PhpParser/ExprNodeMapper.php @@ -2,15 +2,15 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PhpParser; +namespace Rector\StaticTypeMapper\PhpParser; use PhpParser\Node; use PhpParser\Node\Expr; use PHPStan\Analyser\Scope; use PHPStan\Type\MixedType; use PHPStan\Type\Type; -use Rector\NodeTypeResolver\Contract\PhpParser\PhpParserNodeMapperInterface; use Rector\NodeTypeResolver\Node\AttributeKey; +use Rector\StaticTypeMapper\Contract\PhpParser\PhpParserNodeMapperInterface; final class ExprNodeMapper implements PhpParserNodeMapperInterface { diff --git a/packages/node-type-resolver/src/PhpParser/FullyQualifiedNodeMapper.php b/packages/static-type-mapper/src/PhpParser/FullyQualifiedNodeMapper.php similarity index 83% rename from packages/node-type-resolver/src/PhpParser/FullyQualifiedNodeMapper.php rename to packages/static-type-mapper/src/PhpParser/FullyQualifiedNodeMapper.php index 2b3068ab0727..5614beabc215 100644 --- a/packages/node-type-resolver/src/PhpParser/FullyQualifiedNodeMapper.php +++ b/packages/static-type-mapper/src/PhpParser/FullyQualifiedNodeMapper.php @@ -2,13 +2,13 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PhpParser; +namespace Rector\StaticTypeMapper\PhpParser; use PhpParser\Node; use PhpParser\Node\Name\FullyQualified; use PHPStan\Type\Type; -use Rector\NodeTypeResolver\Contract\PhpParser\PhpParserNodeMapperInterface; use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\Contract\PhpParser\PhpParserNodeMapperInterface; final class FullyQualifiedNodeMapper implements PhpParserNodeMapperInterface { diff --git a/packages/node-type-resolver/src/PhpParser/IdentifierNodeMapper.php b/packages/static-type-mapper/src/PhpParser/IdentifierNodeMapper.php similarity index 85% rename from packages/node-type-resolver/src/PhpParser/IdentifierNodeMapper.php rename to packages/static-type-mapper/src/PhpParser/IdentifierNodeMapper.php index 9e97f77287a1..330df1ade143 100644 --- a/packages/node-type-resolver/src/PhpParser/IdentifierNodeMapper.php +++ b/packages/static-type-mapper/src/PhpParser/IdentifierNodeMapper.php @@ -2,15 +2,15 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PhpParser; +namespace Rector\StaticTypeMapper\PhpParser; use PhpParser\Node; use PhpParser\Node\Identifier; use PHPStan\Type\MixedType; use PHPStan\Type\StringType; use PHPStan\Type\Type; -use Rector\NodeTypeResolver\Contract\PhpParser\PhpParserNodeMapperInterface; -use Rector\NodeTypeResolver\TypeMapper\ScalarStringToTypeMapper; +use Rector\StaticTypeMapper\Contract\PhpParser\PhpParserNodeMapperInterface; +use Rector\StaticTypeMapper\Mapper\ScalarStringToTypeMapper; final class IdentifierNodeMapper implements PhpParserNodeMapperInterface { diff --git a/packages/node-type-resolver/src/PhpParser/NameNodeMapper.php b/packages/static-type-mapper/src/PhpParser/NameNodeMapper.php similarity index 86% rename from packages/node-type-resolver/src/PhpParser/NameNodeMapper.php rename to packages/static-type-mapper/src/PhpParser/NameNodeMapper.php index 1d52d64fe6d5..221b484f91b5 100644 --- a/packages/node-type-resolver/src/PhpParser/NameNodeMapper.php +++ b/packages/static-type-mapper/src/PhpParser/NameNodeMapper.php @@ -2,15 +2,15 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PhpParser; +namespace Rector\StaticTypeMapper\PhpParser; use PhpParser\Node; use PhpParser\Node\Name; use PHPStan\Type\MixedType; use PHPStan\Type\Type; use Rector\NodeTypeResolver\ClassExistenceStaticHelper; -use Rector\NodeTypeResolver\Contract\PhpParser\PhpParserNodeMapperInterface; use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\Contract\PhpParser\PhpParserNodeMapperInterface; final class NameNodeMapper implements PhpParserNodeMapperInterface { diff --git a/packages/node-type-resolver/src/PhpParser/NullableTypeNodeMapper.php b/packages/static-type-mapper/src/PhpParser/NullableTypeNodeMapper.php similarity index 87% rename from packages/node-type-resolver/src/PhpParser/NullableTypeNodeMapper.php rename to packages/static-type-mapper/src/PhpParser/NullableTypeNodeMapper.php index 4394b277cb0a..f3dcb9c249be 100644 --- a/packages/node-type-resolver/src/PhpParser/NullableTypeNodeMapper.php +++ b/packages/static-type-mapper/src/PhpParser/NullableTypeNodeMapper.php @@ -2,15 +2,15 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver\PhpParser; +namespace Rector\StaticTypeMapper\PhpParser; use PhpParser\Node; use PhpParser\Node\NullableType; use PHPStan\Type\NullType; use PHPStan\Type\Type; -use Rector\NodeTypeResolver\Contract\PhpParser\PhpParserNodeMapperInterface; use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory; -use Rector\NodeTypeResolver\TypeMapper\PhpParserNodeMapper; +use Rector\StaticTypeMapper\Contract\PhpParser\PhpParserNodeMapperInterface; +use Rector\StaticTypeMapper\Mapper\PhpParserNodeMapper; final class NullableTypeNodeMapper implements PhpParserNodeMapperInterface { diff --git a/packages/node-type-resolver/src/StaticTypeMapper.php b/packages/static-type-mapper/src/StaticTypeMapper.php similarity index 51% rename from packages/node-type-resolver/src/StaticTypeMapper.php rename to packages/static-type-mapper/src/StaticTypeMapper.php index 73531a9e136d..7d284b52c87b 100644 --- a/packages/node-type-resolver/src/StaticTypeMapper.php +++ b/packages/static-type-mapper/src/StaticTypeMapper.php @@ -2,18 +2,13 @@ declare(strict_types=1); -namespace Rector\NodeTypeResolver; +namespace Rector\StaticTypeMapper; -use Nette\Utils\Strings; use PhpParser\Node; use PhpParser\Node\Identifier; use PhpParser\Node\Name; -use PhpParser\Node\Name\FullyQualified; use PhpParser\Node\NullableType; -use PhpParser\Node\Stmt\Use_; -use PhpParser\Node\Stmt\UseUse; use PhpParser\Node\UnionType as PhpParserUnionType; -use PHPStan\Analyser\NameScope; use PHPStan\PhpDocParser\Ast\PhpDoc\ParamTagValueNode; use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode; use PHPStan\PhpDocParser\Ast\PhpDoc\ReturnTagValueNode; @@ -21,12 +16,11 @@ use PHPStan\PhpDocParser\Ast\Type\TypeNode; use PHPStan\Type\Type; use Rector\Core\Exception\NotImplementedException; -use Rector\Core\Exception\ShouldNotHappenException; -use Rector\NodeNameResolver\NodeNameResolver; -use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\NodeTypeResolver\PhpDoc\PhpDocTypeMapper; -use Rector\NodeTypeResolver\TypeMapper\PhpParserNodeMapper; use Rector\PHPStanStaticTypeMapper\PHPStanStaticTypeMapper; +use Rector\StaticTypeMapper\Mapper\PhpParserNodeMapper; +use Rector\StaticTypeMapper\Mapper\StringTypeToPhpParserNodeMapper; +use Rector\StaticTypeMapper\PhpDoc\PhpDocTypeMapper; +use Rector\StaticTypeMapper\PHPStan\NameScopeFactory; /** * Maps PhpParser <=> PHPStan <=> PHPStan doc <=> string type nodes between all possible formats @@ -38,11 +32,6 @@ final class StaticTypeMapper */ private $phpStanStaticTypeMapper; - /** - * @var NodeNameResolver - */ - private $nodeNameResolver; - /** * @var PhpParserNodeMapper */ @@ -53,16 +42,28 @@ final class StaticTypeMapper */ private $phpDocTypeMapper; + /** + * @var StringTypeToPhpParserNodeMapper + */ + private $stringTypeToPhpParserNodeMapper; + + /** + * @var NameScopeFactory + */ + private $nameScopeFactory; + public function __construct( PHPStanStaticTypeMapper $phpStanStaticTypeMapper, - NodeNameResolver $nodeNameResolver, PhpParserNodeMapper $phpParserNodeMapper, - PhpDocTypeMapper $phpDocTypeMapper + PhpDocTypeMapper $phpDocTypeMapper, + StringTypeToPhpParserNodeMapper $stringTypeToPhpParserNodeMapper, + NameScopeFactory $nameScopeFactory ) { $this->phpStanStaticTypeMapper = $phpStanStaticTypeMapper; - $this->nodeNameResolver = $nodeNameResolver; $this->phpParserNodeMapper = $phpParserNodeMapper; $this->phpDocTypeMapper = $phpDocTypeMapper; + $this->stringTypeToPhpParserNodeMapper = $stringTypeToPhpParserNodeMapper; + $this->nameScopeFactory = $nameScopeFactory; } public function mapPHPStanTypeToPHPStanPhpDocTypeNode(Type $phpStanType): TypeNode @@ -101,44 +102,11 @@ public function mapPHPStanPhpDocTypeToPHPStanType(PhpDocTagValueNode $phpDocTagV } /** - * @return Identifier|Name|NullableType|null + * @return Identifier|Name|NullableType */ - public function mapStringToPhpParserNode(string $type): ?Node + public function mapStringToPhpParserNode(string $type): Node { - if ($type === 'string') { - return new Identifier('string'); - } - - if ($type === 'int') { - return new Identifier('int'); - } - - if ($type === 'array') { - return new Identifier('array'); - } - - if ($type === 'float') { - return new Identifier('float'); - } - - if (Strings::contains($type, '\\') || ctype_upper($type[0])) { - return new FullyQualified($type); - } - - if (Strings::startsWith($type, '?')) { - $nullableType = ltrim($type, '?'); - - /** @var Identifier|Name $nameNode */ - $nameNode = $this->mapStringToPhpParserNode($nullableType); - - return new NullableType($nameNode); - } - - if ($type === 'void') { - return new Identifier('void'); - } - - throw new NotImplementedException(sprintf('%s for "%s"', __METHOD__, $type)); + return $this->stringTypeToPhpParserNodeMapper->map($type); } public function mapPHPStanPhpDocTypeNodeToPhpDocString(TypeNode $typeNode, Node $node): string @@ -150,48 +118,8 @@ public function mapPHPStanPhpDocTypeNodeToPhpDocString(TypeNode $typeNode, Node public function mapPHPStanPhpDocTypeNodeToPHPStanType(TypeNode $typeNode, Node $node): Type { - $nameScope = $this->createNameScopeFromNode($node); + $nameScope = $this->nameScopeFactory->createNameScopeFromNode($node); return $this->phpDocTypeMapper->mapToPHPStanType($typeNode, $node, $nameScope); } - - /** - * @see https://github.com/phpstan/phpstan-src/blob/8376548f76e2c845ae047e3010e873015b796818/src/Analyser/NameScope.php#L32 - */ - private function createNameScopeFromNode(Node $node): NameScope - { - $namespace = $node->getAttribute(AttributeKey::NAMESPACE_NAME); - - /** @var Use_[] $useNodes */ - $useNodes = (array) $node->getAttribute(AttributeKey::USE_NODES); - - $uses = $this->resolveUseNamesByAlias($useNodes); - $className = $node->getAttribute(AttributeKey::CLASS_NAME); - - return new NameScope($namespace, $uses, $className); - } - - /*** - * @param Use_[] $useNodes - * @return string[] - */ - private function resolveUseNamesByAlias(array $useNodes): array - { - $useNamesByAlias = []; - - foreach ($useNodes as $useNode) { - foreach ($useNode->uses as $useUse) { - /** @var UseUse $useUse */ - $aliasName = $useUse->getAlias()->name; - $useName = $this->nodeNameResolver->getName($useUse->name); - if (! is_string($useName)) { - throw new ShouldNotHappenException(); - } - - $useNamesByAlias[$aliasName] = $useName; - } - } - - return $useNamesByAlias; - } } diff --git a/packages/type-declaration/src/PhpDocParser/ParamPhpDocNodeFactory.php b/packages/type-declaration/src/PhpDocParser/ParamPhpDocNodeFactory.php index ad7534edb79f..d39e4a6439e6 100644 --- a/packages/type-declaration/src/PhpDocParser/ParamPhpDocNodeFactory.php +++ b/packages/type-declaration/src/PhpDocParser/ParamPhpDocNodeFactory.php @@ -8,7 +8,7 @@ use PHPStan\Type\Type; use Rector\AttributeAwarePhpDoc\Ast\PhpDoc\AttributeAwareParamTagValueNode; use Rector\NodeNameResolver\NodeNameResolver; -use Rector\NodeTypeResolver\StaticTypeMapper; +use Rector\StaticTypeMapper\StaticTypeMapper; final class ParamPhpDocNodeFactory { diff --git a/packages/type-declaration/src/Rector/ClassMethod/AddParamTypeDeclarationRector.php b/packages/type-declaration/src/Rector/ClassMethod/AddParamTypeDeclarationRector.php index 80111efeacd3..507e76c70060 100644 --- a/packages/type-declaration/src/Rector/ClassMethod/AddParamTypeDeclarationRector.php +++ b/packages/type-declaration/src/Rector/ClassMethod/AddParamTypeDeclarationRector.php @@ -166,10 +166,6 @@ private function refactorParameter(Param $param, string $newType): void } $returnTypeNode = $this->staticTypeMapper->mapStringToPhpParserNode($newType); - if ($returnTypeNode === null) { - return; - } - $param->type = $returnTypeNode; } } diff --git a/packages/type-declaration/src/Rector/FunctionLike/AbstractTypeDeclarationRector.php b/packages/type-declaration/src/Rector/FunctionLike/AbstractTypeDeclarationRector.php index aa80000a3500..784d6852bdcb 100644 --- a/packages/type-declaration/src/Rector/FunctionLike/AbstractTypeDeclarationRector.php +++ b/packages/type-declaration/src/Rector/FunctionLike/AbstractTypeDeclarationRector.php @@ -15,8 +15,8 @@ use PHPStan\Type\ObjectType; use PHPStan\Type\StaticType; use PHPStan\Type\Type; -use Rector\Core\NodeContainer\NodeCollector\ParsedNodeCollector; use Rector\Core\Rector\AbstractRector; +use Rector\NodeCollector\NodeCollector\ParsedNodeCollector; use Rector\NodeTypeResolver\PhpDoc\NodeAnalyzer\DocBlockManipulator; use Rector\PHPStan\Type\SelfObjectType; use Rector\TypeDeclaration\PhpParserTypeAnalyzer; diff --git a/packages/type-declaration/src/TypeDeclarationToStringConverter.php b/packages/type-declaration/src/TypeDeclarationToStringConverter.php index e0f3e1815480..47877b697be7 100644 --- a/packages/type-declaration/src/TypeDeclarationToStringConverter.php +++ b/packages/type-declaration/src/TypeDeclarationToStringConverter.php @@ -7,7 +7,7 @@ use PhpParser\Node\FunctionLike; use PHPStan\Type\MixedType; use PHPStan\Type\Type; -use Rector\NodeTypeResolver\StaticTypeMapper; +use Rector\StaticTypeMapper\StaticTypeMapper; final class TypeDeclarationToStringConverter { diff --git a/packages/type-declaration/src/TypeInferer/AbstractTypeInferer.php b/packages/type-declaration/src/TypeInferer/AbstractTypeInferer.php index 115b62c837ac..ae09333f72de 100644 --- a/packages/type-declaration/src/TypeInferer/AbstractTypeInferer.php +++ b/packages/type-declaration/src/TypeInferer/AbstractTypeInferer.php @@ -8,7 +8,7 @@ use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\NodeTypeResolver; use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory; -use Rector\NodeTypeResolver\StaticTypeMapper; +use Rector\StaticTypeMapper\StaticTypeMapper; abstract class AbstractTypeInferer { diff --git a/packages/type-declaration/tests/TypeNormalizerTest.php b/packages/type-declaration/tests/TypeNormalizerTest.php index a358d10e1843..8fb0986506a7 100644 --- a/packages/type-declaration/tests/TypeNormalizerTest.php +++ b/packages/type-declaration/tests/TypeNormalizerTest.php @@ -11,7 +11,7 @@ use PHPStan\Type\StringType; use PHPStan\Type\UnionType; use Rector\Core\HttpKernel\RectorKernel; -use Rector\NodeTypeResolver\StaticTypeMapper; +use Rector\StaticTypeMapper\StaticTypeMapper; use Rector\TypeDeclaration\TypeNormalizer; use Symplify\PackageBuilder\Tests\AbstractKernelTestCase; diff --git a/packages/vendor-locker/src/NodeVendorLocker/AbstractNodeVendorLockResolver.php b/packages/vendor-locker/src/NodeVendorLocker/AbstractNodeVendorLockResolver.php index a6b19805647c..bf22e17b5cda 100644 --- a/packages/vendor-locker/src/NodeVendorLocker/AbstractNodeVendorLockResolver.php +++ b/packages/vendor-locker/src/NodeVendorLocker/AbstractNodeVendorLockResolver.php @@ -7,8 +7,8 @@ use PhpParser\Node\Stmt\Class_; use PhpParser\Node\Stmt\ClassLike; use PhpParser\Node\Stmt\Interface_; -use Rector\Core\NodeContainer\NodeCollector\ParsedNodeCollector; use Rector\Core\PhpParser\Node\Manipulator\ClassManipulator; +use Rector\NodeCollector\NodeCollector\ParsedNodeCollector; use Rector\NodeNameResolver\NodeNameResolver; abstract class AbstractNodeVendorLockResolver diff --git a/phpstan.neon b/phpstan.neon index 40a5fef20916..968754537afe 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -123,7 +123,6 @@ parameters: - '#Cannot cast array\|bool\|string\|null to string#' - '#Method Rector\\Legacy\\Rector\\ClassMethod\\ChangeSingletonToServiceRector\:\:matchStaticPropertyFetchAndGetSingletonMethodName\(\) should return array\|null but returns array#' - - '#Method Rector\\Core\\Rector\\AbstractRector\:\:wrapToArg\(\) should return array but returns array#' - '#Parameter \#2 \$currentNode of method Rector\\CodingStyle\\Rector\\String_\\ManualJsonStringToJsonEncodeArrayRector\:\:matchNextExpressionAssignConcatToSameVariable\(\) expects PhpParser\\Node\\Expr\\Assign\|PhpParser\\Node\\Expr\\AssignOp\\Concat, PhpParser\\Node given#' # array is callable @@ -195,7 +194,6 @@ parameters: - '#Parameter \#1 \$expected of method PHPUnit\\Framework\\Assert\:\:assertInstanceOf\(\) expects class\-string, string given#' - '#Unable to resolve the template type ExpectedType in call to method PHPUnit\\Framework\\Assert\:\:assertInstanceOf\(\)#' - - '#Right side of \|\| is always false#' # fix Symplify 7.2 later - '#Method (.*?) returns bool type, so the name should start with is/has/was#' @@ -221,23 +219,16 @@ parameters: - '#Property PhpParser\\Node\\Stmt\\Expression\:\:\$expr \(PhpParser\\Node\\Expr\) does not accept PhpParser\\Node\\Expr\|null#' - '#Call to an undefined method PHPStan\\Type\\Type\:\:getClassName\(\)#' - - '#Parameter \#1 \$typeNode of method Rector\\NodeTypeResolver\\StaticTypeMapper\:\:mapPHPStanPhpDocTypeNodeToPHPStanType\(\) expects PHPStan\\PhpDocParser\\Ast\\Type\\TypeNode, PHPStan\\PhpDocParser\\Ast\\Node given#' + - '#Parameter \#1 \$typeNode of method Rector\\StaticTypeMapper\\StaticTypeMapper\:\:mapPHPStanPhpDocTypeNodeToPHPStanType\(\) expects PHPStan\\PhpDocParser\\Ast\\Type\\TypeNode, PHPStan\\PhpDocParser\\Ast\\Node given#' - '#Parameter \#1 \$str of function preg_quote expects string, int\|string given#' - '#Parameter \#1 \$node of method Rector\\Core\\PhpParser\\Node\\Commander\\NodeAddingCommander\:\:wrapToExpression\(\) expects PhpParser\\Node\\Expr\|PhpParser\\Node\\Stmt, PhpParser\\Node given#' - - '#Method Rector\\Core\\NodeContainer\\NodeCollector\\ParsedNodesByType\:\:findTrait\(\) should return PhpParser\\Node\\Stmt\\Trait_\|null but returns PhpParser\\Node\|null#' - - '#Method Rector\\Core\\NodeContainer\\NodeCollector\\ParsedNodesByType\:\:findInterface\(\) should return PhpParser\\Node\\Stmt\\Interface_\|null but returns PhpParser\\Node\|null#' - - '#Method Rector\\Core\\NodeContainer\\NodeCollector\\ParsedNodesByType\:\:findFunction\(\) should return PhpParser\\Node\\Stmt\\Function_\|null but returns PhpParser\\Node\|null#' - '#Parameter \#2 \$propertyName of method Rector\\TypeDeclaration\\TypeInferer\\PropertyTypeInferer\\SingleMethodAssignedNodePropertyTypeInferer\:\:resolveAssignedNodeToProperty\(\) expects string, string\|null given#' - '#Parameter \#1 \$sprintfFuncCall of method Rector\\Core\\PhpParser\\NodeTransformer\:\:transformSprintfToArray\(\) expects PhpParser\\Node\\Expr\\FuncCall, PhpParser\\Node given#' - '#Parameter \#1 \$nodes of method Rector\\CodeQuality\\Rector\\Array_\\CallableThisArrayToAnonymousFunctionRector\:\:hasClassMethodReturn\(\) expects array, array given#' - '#Parameter \#1 \$nodes of method Rector\\Core\\PhpParser\\Node\\BetterNodeFinder\:\:find\(\) expects array\|PhpParser\\Node, array\|null given#' - '#PHPDoc tag @return with type iterable is not subtype of native type array#' - '#Method Rector\\BetterPhpDocParser\\AnnotationReader\\NodeAnnotationReader\:\:createClassReflectionFromNode\(\) return type with generic class ReflectionClass does not specify its types\: T#' - - '#Method Rector\\FileSystemRector\\Rector\\AbstractFileSystemRector\:\:wrapToArg\(\) should return array but returns array#' - - '#Method Rector\\SOLID\\Rector\\ClassConst\\PrivatizeLocalClassConstantRector\:\:resolveParentClassConstantReflection\(\) should return ReflectionClassConstant\|null but returns ReflectionClassConstant\|false#' - - '#PHPDoc tag @var for variable \$parentClass contains generic class ReflectionClass but does not specify its types\: T#' - '#Method Rector\\SOLID\\Reflection\\ParentConstantReflectionResolver\:\:(.*?)\(\) should return ReflectionClassConstant\|null but returns ReflectionClassConstant\|false#' - - - '#Method Rector\\Core\\NodeContainer\\NodeCollector\\ParsedFunctionLikeNodesByType\:\:findFunction\(\) should return PhpParser\\Node\\Stmt\\Function_\|null but returns PhpParser\\Node\|null#' - '#Parameter \#1 \$firstStmt of method Rector\\Core\\Rector\\MethodBody\\NormalToFluentRector\:\:isBothMethodCallMatch\(\) expects PhpParser\\Node\\Stmt\\Expression, PhpParser\\Node\\Stmt given#' + - '#Method Rector\\Core\\Rector\\AbstractRector\:\:wrapToArg\(\) should return array but returns array#' diff --git a/rename-core.yaml b/rename-core.yaml index 832025ddc430..a3f2c76080d2 100644 --- a/rename-core.yaml +++ b/rename-core.yaml @@ -53,7 +53,7 @@ services: Rector\PhpDoc\PhpDocClassRenamer: Rector\Core\PhpDoc\PhpDocClassRenamer Rector\Util\RectorStrings: Rector\Core\Util\RectorStrings Rector\HttpKernel\RectorKernel: Rector\Core\HttpKernel\RectorKernel - Rector\NodeContainer\FunctionLikeParsedNodesFinder: Rector\Core\NodeContainer\NodeFinder\FunctionLikeParsedNodesFinder + Rector\NodeContainer\FunctionLikeParsedNodesFinder: Rector\NodeCollector\NodeFinder\FunctionLikeParsedNodesFinder Rector\NodeContainer\ClassLikeParsedNodesFinder: Rector\Core\NodeContainer\ClassLikeParsedNodesFinder Rector\NodeContainer\ParsedNodesByType: Rector\Core\NodeContainer\NodeCollector\ParsedNodesByType Rector\FileSystem\FileGuard: Rector\Core\FileSystem\FileGuard diff --git a/src/Console/Command/ScreenFileCommand.php b/src/Console/Command/ScreenFileCommand.php index c3cd4b07bab4..3d7a03e58ea4 100644 --- a/src/Console/Command/ScreenFileCommand.php +++ b/src/Console/Command/ScreenFileCommand.php @@ -25,7 +25,7 @@ use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\NodeTypeResolver; -use Rector\NodeTypeResolver\StaticTypeMapper; +use Rector\StaticTypeMapper\StaticTypeMapper; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; diff --git a/src/Php/Regex/RegexPatternArgumentManipulator.php b/src/Php/Regex/RegexPatternArgumentManipulator.php index 07395e7daa00..7126ce3dfc63 100644 --- a/src/Php/Regex/RegexPatternArgumentManipulator.php +++ b/src/Php/Regex/RegexPatternArgumentManipulator.php @@ -13,9 +13,9 @@ use PhpParser\Node\Expr\StaticCall; use PhpParser\Node\Expr\Variable; use PhpParser\Node\Scalar\String_; -use Rector\Core\NodeContainer\NodeCollector\ParsedNodeCollector; use Rector\Core\PhpParser\Node\BetterNodeFinder; use Rector\Core\PhpParser\Printer\BetterStandardPrinter; +use Rector\NodeCollector\NodeCollector\ParsedNodeCollector; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\NodeTypeResolver; diff --git a/src/PhpParser/Node/Manipulator/ChildAndParentClassManipulator.php b/src/PhpParser/Node/Manipulator/ChildAndParentClassManipulator.php index 1c61329b028d..a1eb9c96b246 100644 --- a/src/PhpParser/Node/Manipulator/ChildAndParentClassManipulator.php +++ b/src/PhpParser/Node/Manipulator/ChildAndParentClassManipulator.php @@ -7,9 +7,9 @@ use PhpParser\Node\Stmt\Class_; use PhpParser\Node\Stmt\ClassMethod; use PhpParser\Node\Stmt\Expression; -use Rector\Core\NodeContainer\NodeCollector\ParsedNodeCollector; -use Rector\Core\NodeContainer\NodeFinder\ClassLikeParsedNodesFinder; use Rector\Core\PhpParser\Node\NodeFactory; +use Rector\NodeCollector\NodeCollector\ParsedNodeCollector; +use Rector\NodeCollector\NodeFinder\ClassLikeParsedNodesFinder; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; diff --git a/src/PhpParser/Node/Manipulator/ClassConstManipulator.php b/src/PhpParser/Node/Manipulator/ClassConstManipulator.php index cf131b550d12..f2905e6c458c 100644 --- a/src/PhpParser/Node/Manipulator/ClassConstManipulator.php +++ b/src/PhpParser/Node/Manipulator/ClassConstManipulator.php @@ -8,9 +8,9 @@ use PhpParser\Node\Expr\ClassConstFetch; use PhpParser\Node\Stmt\Class_; use PhpParser\Node\Stmt\ClassConst; -use Rector\Core\NodeContainer\NodeCollector\ParsedNodeCollector; use Rector\Core\PhpParser\Node\BetterNodeFinder; use Rector\Core\PhpParser\Printer\BetterStandardPrinter; +use Rector\NodeCollector\NodeCollector\ParsedNodeCollector; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; diff --git a/src/PhpParser/Node/Manipulator/PropertyManipulator.php b/src/PhpParser/Node/Manipulator/PropertyManipulator.php index 8ea2ce83d6d9..d03bbfc5caa8 100644 --- a/src/PhpParser/Node/Manipulator/PropertyManipulator.php +++ b/src/PhpParser/Node/Manipulator/PropertyManipulator.php @@ -15,10 +15,10 @@ use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo; use Rector\BetterPhpDocParser\PhpDocNode\JMS\SerializerTypeTagValueNode; use Rector\Core\Exception\ShouldNotHappenException; -use Rector\Core\NodeContainer\NodeFinder\ClassLikeParsedNodesFinder; use Rector\Core\PhpParser\Node\BetterNodeFinder; use Rector\Core\PhpParser\Printer\BetterStandardPrinter; use Rector\Doctrine\AbstractRector\DoctrineTrait; +use Rector\NodeCollector\NodeFinder\ClassLikeParsedNodesFinder; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; diff --git a/src/PhpParser/Node/NodeFactory.php b/src/PhpParser/Node/NodeFactory.php index 98c8e7650950..13c80586e864 100644 --- a/src/PhpParser/Node/NodeFactory.php +++ b/src/PhpParser/Node/NodeFactory.php @@ -33,7 +33,7 @@ use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory; use Rector\Core\Exception\NotImplementedException; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\NodeTypeResolver\StaticTypeMapper; +use Rector\StaticTypeMapper\StaticTypeMapper; /** * @see \Rector\Core\Tests\PhpParser\Node\NodeFactoryTest diff --git a/src/PhpParser/Node/Value/ValueResolver.php b/src/PhpParser/Node/Value/ValueResolver.php index 908f1d13ab66..b76ee4270d2f 100644 --- a/src/PhpParser/Node/Value/ValueResolver.php +++ b/src/PhpParser/Node/Value/ValueResolver.php @@ -14,7 +14,7 @@ use PHPStan\Type\Constant\ConstantArrayType; use PHPStan\Type\ConstantScalarType; use Rector\Core\Exception\ShouldNotHappenException; -use Rector\Core\NodeContainer\NodeCollector\ParsedNodeCollector; +use Rector\NodeCollector\NodeCollector\ParsedNodeCollector; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\NodeTypeResolver; diff --git a/src/Rector/AbstractRector.php b/src/Rector/AbstractRector.php index 3efb299ea4ee..00200c25fd67 100644 --- a/src/Rector/AbstractRector.php +++ b/src/Rector/AbstractRector.php @@ -19,12 +19,12 @@ use Rector\Core\Commander\CommanderCollector; use Rector\Core\Contract\Rector\PhpRectorInterface; use Rector\Core\Exclusion\ExclusionManager; -use Rector\Core\NodeContainer\NodeFinder\ClassLikeParsedNodesFinder; -use Rector\Core\NodeContainer\NodeFinder\FunctionLikeParsedNodesFinder; +use Rector\NodeCollector\NodeFinder\ClassLikeParsedNodesFinder; +use Rector\NodeCollector\NodeFinder\FunctionLikeParsedNodesFinder; use Rector\NodeTypeResolver\FileSystem\CurrentFileInfoProvider; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\PhpDoc\NodeAnalyzer\DocBlockManipulator; -use Rector\NodeTypeResolver\StaticTypeMapper; +use Rector\StaticTypeMapper\StaticTypeMapper; use Rector\Core\Php\PhpVersionProvider; use Rector\Core\Rector\AbstractRector\AbstractRectorTrait; use Rector\Core\Rector\AbstractRector\NodeCommandersTrait; diff --git a/src/Rector/AbstractRector/ComplexRemovalTrait.php b/src/Rector/AbstractRector/ComplexRemovalTrait.php index 0303f9892972..f2f174f28722 100644 --- a/src/Rector/AbstractRector/ComplexRemovalTrait.php +++ b/src/Rector/AbstractRector/ComplexRemovalTrait.php @@ -17,11 +17,11 @@ use PhpParser\Node\Stmt\Property; use PhpParser\Node\Stmt\PropertyProperty; use Rector\Core\Exception\ShouldNotHappenException; -use Rector\Core\NodeContainer\NodeCollector\ParsedNodeCollector; -use Rector\Core\NodeContainer\NodeFinder\FunctionLikeParsedNodesFinder; use Rector\Core\PhpParser\Node\Commander\NodeRemovingCommander; use Rector\Core\PhpParser\Node\Manipulator\PropertyManipulator; use Rector\DeadCode\NodeManipulator\LivingCodeManipulator; +use Rector\NodeCollector\NodeCollector\ParsedNodeCollector; +use Rector\NodeCollector\NodeFinder\FunctionLikeParsedNodesFinder; use Rector\NodeTypeResolver\Node\AttributeKey; /** diff --git a/src/Rector/AbstractRector/NodeCollectorTrait.php b/src/Rector/AbstractRector/NodeCollectorTrait.php index 1ba0832a1878..3ef5e0e9098f 100644 --- a/src/Rector/AbstractRector/NodeCollectorTrait.php +++ b/src/Rector/AbstractRector/NodeCollectorTrait.php @@ -4,8 +4,8 @@ namespace Rector\Core\Rector\AbstractRector; -use Rector\Core\NodeContainer\NodeFinder\ClassLikeParsedNodesFinder; -use Rector\Core\NodeContainer\NodeFinder\FunctionLikeParsedNodesFinder; +use Rector\NodeCollector\NodeFinder\ClassLikeParsedNodesFinder; +use Rector\NodeCollector\NodeFinder\FunctionLikeParsedNodesFinder; /** * This could be part of @see AbstractRector, but decopuling to trait diff --git a/src/Rector/ClassMethod/AddReturnTypeDeclarationRector.php b/src/Rector/ClassMethod/AddReturnTypeDeclarationRector.php index 8bb9b505276f..77e3b46fa050 100644 --- a/src/Rector/ClassMethod/AddReturnTypeDeclarationRector.php +++ b/src/Rector/ClassMethod/AddReturnTypeDeclarationRector.php @@ -111,10 +111,6 @@ private function processClassMethodNodeWithTypehints(ClassMethod $classMethod, s } $returnTypeNode = $this->staticTypeMapper->mapStringToPhpParserNode($newType); - if ($returnTypeNode === null) { - return; - } - $classMethod->returnType = $returnTypeNode; } }