diff --git a/.github/workflows/rector.yaml b/.github/workflows/rector.yaml index aef2f0baf71..a6558aed50e 100644 --- a/.github/workflows/rector.yaml +++ b/.github/workflows/rector.yaml @@ -13,8 +13,8 @@ jobs: name: Rector without Dev Dependencies install: composer install --no-progress --ansi --no-dev run: | - # needs to remove, add dev dependencies are missing and phpstan.neon includes them - rm phpstan.neon + # must be removed, as local config is missing dev dependencies + rm phpstan-for-rector.neon bin/rector list runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index 5dfb7255b52..720c7a39ac7 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,6 @@ rector-recipe.php # testing abz -/rector-temp-phpstan*.neon php-scoper.phar box.phar diff --git a/README.md b/README.md index 97ead315583..57e9c321bf0 100644 --- a/README.md +++ b/README.md @@ -182,6 +182,9 @@ return static function (ContainerConfigurator $containerConfigurator): void { // Run Rector only on changed files $parameters->set(Option::ENABLE_CACHE, true); + + // Path to phpstan with extensions, that PHPSTan in Rector uses to determine types + $parameters->set(Option::PHPSTAN_FOR_RECTOR_PATH, getcwd() . '/phpstan-for-config.neon'); }; ``` diff --git a/composer.json b/composer.json index 2c8de95a713..5200e815d16 100644 --- a/composer.json +++ b/composer.json @@ -48,11 +48,12 @@ "nette/forms": "^3.0", "ocramius/package-versions": "^1.9", "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan-nette": "^0.12.12", "phpunit/phpunit": "^9.5", "sebastian/diff": "^4.0.4", "symplify/changelog-linker": "^9.0.14", - "symplify/easy-coding-standard": "^9.0.14", "symplify/coding-standard": "^9.0.14", + "symplify/easy-coding-standard": "^9.0.14", "symplify/easy-testing": "^9.0.14", "symplify/phpstan-extensions": "^9.0.14", "symplify/phpstan-rules": "^9.0.14", diff --git a/config/services.php b/config/services.php index 99e038a3a9c..11a2a6aad18 100644 --- a/config/services.php +++ b/config/services.php @@ -50,8 +50,6 @@ return static function (ContainerConfigurator $containerConfigurator): void { __DIR__ . '/../src/ValueObject', __DIR__ . '/../src/Bootstrap', __DIR__ . '/../src/PhpParser/Node/CustomNode', - // loaded for PHPStan factory - __DIR__ . '/../src/PHPStan/Type', ]); $services->alias(SymfonyApplication::class, ConsoleApplication::class); diff --git a/packages/better-php-doc-parser/src/PhpDocInfo/PhpDocInfo.php b/packages/better-php-doc-parser/src/PhpDocInfo/PhpDocInfo.php index 6b1f1245700..3daca3469ff 100644 --- a/packages/better-php-doc-parser/src/PhpDocInfo/PhpDocInfo.php +++ b/packages/better-php-doc-parser/src/PhpDocInfo/PhpDocInfo.php @@ -30,9 +30,9 @@ use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger; use Rector\Core\Exception\NotImplementedException; use Rector\Core\Exception\ShouldNotHappenException; use Rector\PhpAttribute\Contract\PhpAttributableTagNodeInterface; -use Rector\PHPStan\Type\FullyQualifiedObjectType; -use Rector\PHPStan\Type\ShortenedObjectType; use Rector\StaticTypeMapper\StaticTypeMapper; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\ShortenedObjectType; /** * @see \Rector\BetterPhpDocParser\Tests\PhpDocInfo\PhpDocInfo\PhpDocInfoTest diff --git a/packages/better-php-doc-parser/src/PhpDocNodeFactory/AbstractPhpDocNodeFactory.php b/packages/better-php-doc-parser/src/PhpDocNodeFactory/AbstractPhpDocNodeFactory.php index 4c43afeb38c..4c58fee45e9 100644 --- a/packages/better-php-doc-parser/src/PhpDocNodeFactory/AbstractPhpDocNodeFactory.php +++ b/packages/better-php-doc-parser/src/PhpDocNodeFactory/AbstractPhpDocNodeFactory.php @@ -13,7 +13,7 @@ use Rector\BetterPhpDocParser\AnnotationReader\NodeAnnotationReader; use Rector\BetterPhpDocParser\PhpDocParser\AnnotationContentResolver; use Rector\BetterPhpDocParser\ValueObject\AroundSpaces; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\PHPStan\Type\ShortenedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\ShortenedObjectType; use Rector\TypeDeclaration\PHPStan\Type\ObjectTypeSpecifier; abstract class AbstractPhpDocNodeFactory diff --git a/packages/node-collector/src/NodeCollector/NodeRepository.php b/packages/node-collector/src/NodeCollector/NodeRepository.php index 883701edb23..71eed5687ef 100644 --- a/packages/node-collector/src/NodeCollector/NodeRepository.php +++ b/packages/node-collector/src/NodeCollector/NodeRepository.php @@ -35,8 +35,8 @@ use Rector\NodeCollector\ValueObject\ArrayCallable; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\NodeTypeResolver; -use Rector\PHPStan\Type\ShortenedObjectType; use Rector\PHPStanStaticTypeMapper\Utils\TypeUnwrapper; +use Rector\StaticTypeMapper\ValueObject\Type\ShortenedObjectType; /** * @rector-doc diff --git a/packages/node-type-resolver/config/config.php b/packages/node-type-resolver/config/config.php index 95744e2c35c..9843a06b333 100644 --- a/packages/node-type-resolver/config/config.php +++ b/packages/node-type-resolver/config/config.php @@ -7,6 +7,7 @@ use PHPStan\Analyser\NodeScopeResolver; use PHPStan\Analyser\ScopeFactory; use PHPStan\PhpDoc\TypeNodeResolver; use PHPStan\Reflection\ReflectionProvider; +use Rector\Core\Configuration\Option; use Rector\Core\FileSystem\FilesFinder; use Rector\Core\Php\TypeAnalyzer; use Rector\Core\PhpParser\Node\BetterNodeFinder; @@ -16,6 +17,10 @@ use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigura use function Symfony\Component\DependencyInjection\Loader\Configurator\ref; return static function (ContainerConfigurator $containerConfigurator): void { + $parameters = $containerConfigurator->parameters(); + + $parameters->set(Option::PHPSTAN_FOR_RECTOR_PATH, getcwd() . '/phpstan-for-rector.neon'); + $services = $containerConfigurator->services(); $services->defaults() @@ -27,11 +32,8 @@ return static function (ContainerConfigurator $containerConfigurator): void { ->exclude([__DIR__ . '/../src/Contract', __DIR__ . '/../src/PHPStan/TypeExtension']); $services->set(TypeAnalyzer::class); - $services->set(FilesFinder::class); - $services->set(BetterStandardPrinter::class); - $services->set(BetterNodeFinder::class); $services->set(ReflectionProvider::class) diff --git a/packages/node-type-resolver/config/phpstan/type-extensions.neon b/packages/node-type-resolver/config/phpstan/type-extensions.neon deleted file mode 100644 index 69ab4922464..00000000000 --- a/packages/node-type-resolver/config/phpstan/type-extensions.neon +++ /dev/null @@ -1,12 +0,0 @@ -services: - - - class: Rector\NodeTypeResolver\PHPStan\TypeExtension\StaticContainerGetDynamicMethodReturnTypeExtension - tags: [phpstan.broker.dynamicMethodReturnTypeExtension] - - - - class: Rector\NodeTypeResolver\PHPStan\TypeExtension\KernelGetContainerAfterBootReturnTypeExtension - tags: [phpstan.broker.dynamicMethodReturnTypeExtension] - - - - class: Rector\Core\PHPStan\Type\ComponentModelDynamicReturnTypeExtension - tags: [phpstan.broker.dynamicMethodReturnTypeExtension] diff --git a/packages/node-type-resolver/src/DependencyInjection/PHPStanServicesFactory.php b/packages/node-type-resolver/src/DependencyInjection/PHPStanServicesFactory.php index 159b184f697..89adea1ce36 100644 --- a/packages/node-type-resolver/src/DependencyInjection/PHPStanServicesFactory.php +++ b/packages/node-type-resolver/src/DependencyInjection/PHPStanServicesFactory.php @@ -4,7 +4,6 @@ declare(strict_types=1); namespace Rector\NodeTypeResolver\DependencyInjection; -use Nette\Utils\Strings; use PHPStan\Analyser\NodeScopeResolver; use PHPStan\Analyser\ScopeFactory; use PHPStan\Analyser\TypeSpecifier; @@ -16,7 +15,8 @@ use PHPStan\DependencyInjection\Type\OperatorTypeSpecifyingExtensionRegistryProv use PHPStan\File\FileHelper; use PHPStan\PhpDoc\TypeNodeResolver; use PHPStan\Reflection\ReflectionProvider; -use Symplify\SmartFileSystem\SmartFileSystem; +use Rector\Core\Configuration\Option; +use Symplify\PackageBuilder\Parameter\ParameterProvider; /** * Factory so Symfony app can use services from PHPStan container @@ -24,63 +24,28 @@ use Symplify\SmartFileSystem\SmartFileSystem; */ final class PHPStanServicesFactory { - /** - * @see https://regex101.com/r/CWADBe/2 - * @var string - */ - private const BLEEDING_EDGE_REGEX = '#\n\s+-(.*?)bleedingEdge\.neon[\'|"]?#'; - /** * @var Container */ private $container; - public function __construct() + public function __construct(ParameterProvider $parameterProvider) { - $currentWorkingDirectory = getcwd(); - $smartFileSystem = new SmartFileSystem(); + $containerFactory = new ContainerFactory(getcwd()); - $containerFactory = new ContainerFactory($currentWorkingDirectory); $additionalConfigFiles = []; - // possible path collision for Docker - $additionalConfigFiles = $this->appendPhpstanPHPUnitExtensionIfExists( - $currentWorkingDirectory, - $additionalConfigFiles - ); - - $temporaryPHPStanNeon = null; - - $currentProjectConfigFile = $currentWorkingDirectory . '/phpstan.neon'; - - if (file_exists($currentProjectConfigFile)) { - $phpstanNeonContent = $smartFileSystem->readFile($currentProjectConfigFile); - - // bleeding edge clean out, see https://github.com/rectorphp/rector/issues/2431 - if (Strings::match($phpstanNeonContent, self::BLEEDING_EDGE_REGEX)) { - // Note: We need a unique file per process if rector runs in parallel - $pid = getmypid(); - $temporaryPHPStanNeon = $currentWorkingDirectory . '/rector-temp-phpstan' . $pid . '.neon'; - $clearedPhpstanNeonContent = Strings::replace($phpstanNeonContent, self::BLEEDING_EDGE_REGEX, ''); - $smartFileSystem->dumpFile($temporaryPHPStanNeon, $clearedPhpstanNeonContent); - - $additionalConfigFiles[] = $temporaryPHPStanNeon; - } else { - $additionalConfigFiles[] = $currentProjectConfigFile; - } - } - - $additionalConfigFiles[] = __DIR__ . '/../../config/phpstan/type-extensions.neon'; + $additionalConfigFiles[] = $parameterProvider->provideStringParameter(Option::PHPSTAN_FOR_RECTOR_PATH); + $additionalConfigFiles[] = getcwd() . '/vendor/phpstan/phpstan-phpunit/extension.neon'; // enable type inferring from constructor $additionalConfigFiles[] = __DIR__ . '/../../config/phpstan/better-infer.neon'; - $this->container = $containerFactory->create(sys_get_temp_dir(), $additionalConfigFiles, []); + // symplify phpstan extensions + $additionalConfigFiles[] = getcwd() . '/vendor/symplify/phpstan-extensions/config/config.neon'; - // clear bleeding edge fallback - if ($temporaryPHPStanNeon !== null) { - $smartFileSystem->remove($temporaryPHPStanNeon); - } + $existingAdditionalConfigFiles = array_filter($additionalConfigFiles, 'file_exists'); + $this->container = $containerFactory->create(sys_get_temp_dir(), $existingAdditionalConfigFiles, []); } /** @@ -154,19 +119,4 @@ final class PHPStanServicesFactory { return $this->container->getByType(TypeNodeResolver::class); } - - /** - * @param string[] $additionalConfigFiles - * @return mixed[] - */ - 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/NodeTypeResolver.php b/packages/node-type-resolver/src/NodeTypeResolver.php index d6d4eac39dd..29d5d924a76 100644 --- a/packages/node-type-resolver/src/NodeTypeResolver.php +++ b/packages/node-type-resolver/src/NodeTypeResolver.php @@ -35,9 +35,9 @@ use Rector\NodeTypeResolver\Contract\NodeTypeResolverInterface; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\NodeTypeCorrector\ParentClassLikeTypeCorrector; use Rector\NodeTypeResolver\TypeAnalyzer\ArrayTypeAnalyzer; -use Rector\PHPStan\Type\FullyQualifiedObjectType; -use Rector\PHPStan\TypeFactoryStaticHelper; use Rector\PHPStanStaticTypeMapper\Utils\TypeUnwrapper; +use Rector\StaticTypeMapper\TypeFactory\TypeFactoryStaticHelper; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; use Rector\TypeDeclaration\PHPStan\Type\ObjectTypeSpecifier; final class NodeTypeResolver diff --git a/packages/node-type-resolver/src/PHPStan/Type/TypeFactory.php b/packages/node-type-resolver/src/PHPStan/Type/TypeFactory.php index d74ab7b6764..b9e515969e5 100644 --- a/packages/node-type-resolver/src/PHPStan/Type/TypeFactory.php +++ b/packages/node-type-resolver/src/PHPStan/Type/TypeFactory.php @@ -18,9 +18,9 @@ use PHPStan\Type\Type; use PHPStan\Type\UnionType; use PHPStan\Type\VerbosityLevel; use Rector\Core\Exception\ShouldNotHappenException; -use Rector\PHPStan\Type\FullyQualifiedObjectType; -use Rector\PHPStan\Type\ShortenedObjectType; -use Rector\PHPStan\TypeFactoryStaticHelper; +use Rector\StaticTypeMapper\TypeFactory\TypeFactoryStaticHelper; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\ShortenedObjectType; final class TypeFactory { diff --git a/packages/node-type-resolver/src/PHPStan/TypeComparator.php b/packages/node-type-resolver/src/PHPStan/TypeComparator.php index f491c587325..2860ee32657 100644 --- a/packages/node-type-resolver/src/PHPStan/TypeComparator.php +++ b/packages/node-type-resolver/src/PHPStan/TypeComparator.php @@ -13,9 +13,9 @@ use PHPStan\Type\IntegerType; use PHPStan\Type\ObjectType; use PHPStan\Type\StringType; use PHPStan\Type\Type; -use Rector\PHPStan\Type\AliasedObjectType; -use Rector\PHPStan\Type\ShortenedObjectType; use Rector\StaticTypeMapper\StaticTypeMapper; +use Rector\StaticTypeMapper\ValueObject\Type\AliasedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\ShortenedObjectType; use Rector\TypeDeclaration\TypeNormalizer; final class TypeComparator diff --git a/packages/node-type-resolver/src/PHPStan/TypeExtension/KernelGetContainerAfterBootReturnTypeExtension.php b/packages/node-type-resolver/src/PHPStan/TypeExtension/KernelGetContainerAfterBootReturnTypeExtension.php deleted file mode 100644 index a3c78163ff7..00000000000 --- a/packages/node-type-resolver/src/PHPStan/TypeExtension/KernelGetContainerAfterBootReturnTypeExtension.php +++ /dev/null @@ -1,58 +0,0 @@ -getName() === 'getContainer'; - } - - public function getTypeFromMethodCall( - MethodReflection $methodReflection, - MethodCall $methodCall, - Scope $scope - ): Type { - $returnType = ParametersAcceptorSelector::selectSingle($methodReflection->getVariants())->getReturnType(); - - if (! $this->isCalledAfterBoot($scope, $methodCall)) { - return $returnType; - } - - if ($returnType instanceof UnionType) { - foreach ($returnType->getTypes() as $singleType) { - if ($singleType instanceof ObjectType) { - return $singleType; - } - } - } - - return $returnType; - } - - private function isCalledAfterBoot(Scope $scope, MethodCall $methodCall): bool - { - $kernelBootMethodCall = new MethodCall($methodCall->var, 'boot'); - - return ! $scope->getType($kernelBootMethodCall) instanceof ErrorType; - } -} diff --git a/packages/node-type-resolver/src/PHPStan/TypeExtension/StaticContainerGetDynamicMethodReturnTypeExtension.php b/packages/node-type-resolver/src/PHPStan/TypeExtension/StaticContainerGetDynamicMethodReturnTypeExtension.php deleted file mode 100644 index bf6079537b2..00000000000 --- a/packages/node-type-resolver/src/PHPStan/TypeExtension/StaticContainerGetDynamicMethodReturnTypeExtension.php +++ /dev/null @@ -1,49 +0,0 @@ -getName() === 'get'; - } - - public function getTypeFromMethodCall( - MethodReflection $methodReflection, - MethodCall $methodCall, - Scope $scope - ): Type { - $value = $methodCall->args[0]->value; - $valueType = $scope->getType($value); - - // we don't know what it is - if ($valueType instanceof MixedType) { - return $valueType; - } - - if ($valueType instanceof ConstantStringType) { - return new ObjectType($valueType->getValue()); - } - - // unknown, probably variable - return new MixedType(); - } -} diff --git a/packages/node-type-resolver/src/PHPStan/TypeHasher.php b/packages/node-type-resolver/src/PHPStan/TypeHasher.php index ae345c532f4..bed97c454e4 100644 --- a/packages/node-type-resolver/src/PHPStan/TypeHasher.php +++ b/packages/node-type-resolver/src/PHPStan/TypeHasher.php @@ -12,9 +12,9 @@ use PHPStan\Type\MixedType; use PHPStan\Type\Type; use PHPStan\Type\TypeWithClassName; use PHPStan\Type\UnionType; -use Rector\PHPStan\Type\AliasedObjectType; -use Rector\PHPStan\Type\ShortenedObjectType; use Rector\PHPStanStaticTypeMapper\PHPStanStaticTypeMapper; +use Rector\StaticTypeMapper\ValueObject\Type\AliasedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\ShortenedObjectType; final class TypeHasher { diff --git a/packages/node-type-resolver/src/PhpDoc/NodeAnalyzer/DocBlockClassRenamer.php b/packages/node-type-resolver/src/PhpDoc/NodeAnalyzer/DocBlockClassRenamer.php index 9f4441e67f8..b4d0bf23194 100644 --- a/packages/node-type-resolver/src/PhpDoc/NodeAnalyzer/DocBlockClassRenamer.php +++ b/packages/node-type-resolver/src/PhpDoc/NodeAnalyzer/DocBlockClassRenamer.php @@ -10,8 +10,8 @@ use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocNode; use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode; use PHPStan\Type\ObjectType; use PHPStan\Type\Type; -use Rector\PHPStan\Type\ShortenedObjectType; use Rector\StaticTypeMapper\StaticTypeMapper; +use Rector\StaticTypeMapper\ValueObject\Type\ShortenedObjectType; use Symplify\SimplePhpDocParser\PhpDocNodeTraverser; 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 31bb3192dd5..3403a8e6f7a 100644 --- a/packages/node-type-resolver/src/PhpDoc/NodeAnalyzer/DocBlockNameImporter.php +++ b/packages/node-type-resolver/src/PhpDoc/NodeAnalyzer/DocBlockNameImporter.php @@ -10,9 +10,9 @@ use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode; use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo; use Rector\CodingStyle\ClassNameImport\ClassNameImportSkipper; use Rector\Core\Configuration\Option; -use Rector\PHPStan\Type\FullyQualifiedObjectType; use Rector\PostRector\Collector\UseNodesToAddCollector; use Rector\StaticTypeMapper\StaticTypeMapper; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; use Symplify\PackageBuilder\Parameter\ParameterProvider; use Symplify\SimplePhpDocParser\PhpDocNodeTraverser; diff --git a/packages/node-type-resolver/tests/PerNodeTypeResolver/ClassAndInterfaceTypeResolver/ClassTypeResolverTest.php b/packages/node-type-resolver/tests/PerNodeTypeResolver/ClassAndInterfaceTypeResolver/ClassTypeResolverTest.php index 8d8ef63da0c..f6611c5ac57 100644 --- a/packages/node-type-resolver/tests/PerNodeTypeResolver/ClassAndInterfaceTypeResolver/ClassTypeResolverTest.php +++ b/packages/node-type-resolver/tests/PerNodeTypeResolver/ClassAndInterfaceTypeResolver/ClassTypeResolverTest.php @@ -15,7 +15,7 @@ use Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\ClassAndInterfaceTypeResol use Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\ClassAndInterfaceTypeResolver\Source\ClassWithTrait; use Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\ClassAndInterfaceTypeResolver\Source\ParentClass; use Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\ClassAndInterfaceTypeResolver\Source\SomeInterface; -use Rector\PHPStan\TypeFactoryStaticHelper; +use Rector\StaticTypeMapper\TypeFactory\TypeFactoryStaticHelper; /** * @see \Rector\NodeTypeResolver\NodeTypeResolver\ClassAndInterfaceTypeResolver diff --git a/packages/node-type-resolver/tests/PerNodeTypeResolver/ClassAndInterfaceTypeResolver/InterfaceTypeResolverTest.php b/packages/node-type-resolver/tests/PerNodeTypeResolver/ClassAndInterfaceTypeResolver/InterfaceTypeResolverTest.php index 32c126e9395..b469e3e1782 100644 --- a/packages/node-type-resolver/tests/PerNodeTypeResolver/ClassAndInterfaceTypeResolver/InterfaceTypeResolverTest.php +++ b/packages/node-type-resolver/tests/PerNodeTypeResolver/ClassAndInterfaceTypeResolver/InterfaceTypeResolverTest.php @@ -10,7 +10,7 @@ use PHPStan\Type\Type; use Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\AbstractNodeTypeResolverTest; use Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\ClassAndInterfaceTypeResolver\Source\SomeInterfaceWithParentInterface; use Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\ClassAndInterfaceTypeResolver\Source\SomeParentInterface; -use Rector\PHPStan\TypeFactoryStaticHelper; +use Rector\StaticTypeMapper\TypeFactory\TypeFactoryStaticHelper; /** * @see \Rector\NodeTypeResolver\NodeTypeResolver\ClassAndInterfaceTypeResolver diff --git a/packages/node-type-resolver/tests/PerNodeTypeResolver/PropertyTypeResolver/PropertyTypeResolverTest.php b/packages/node-type-resolver/tests/PerNodeTypeResolver/PropertyTypeResolver/PropertyTypeResolverTest.php index 5076f9a6492..d36a9d37f3f 100644 --- a/packages/node-type-resolver/tests/PerNodeTypeResolver/PropertyTypeResolver/PropertyTypeResolverTest.php +++ b/packages/node-type-resolver/tests/PerNodeTypeResolver/PropertyTypeResolver/PropertyTypeResolverTest.php @@ -14,7 +14,7 @@ use Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\AbstractNodeTypeResolverTe use Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\PropertyTypeResolver\Source\ClassThatExtendsHtml; use Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\PropertyTypeResolver\Source\Html; use Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\PropertyTypeResolver\Source\SomeChild; -use Rector\PHPStan\TypeFactoryStaticHelper; +use Rector\StaticTypeMapper\TypeFactory\TypeFactoryStaticHelper; /** * @see \Rector\NodeTypeResolver\NodeTypeResolver\PropertyTypeResolver diff --git a/packages/node-type-resolver/tests/PerNodeTypeResolver/TraitTypeResolver/TraitTypeResolverTest.php b/packages/node-type-resolver/tests/PerNodeTypeResolver/TraitTypeResolver/TraitTypeResolverTest.php index efe327ba01e..b2089d9a5bf 100644 --- a/packages/node-type-resolver/tests/PerNodeTypeResolver/TraitTypeResolver/TraitTypeResolverTest.php +++ b/packages/node-type-resolver/tests/PerNodeTypeResolver/TraitTypeResolver/TraitTypeResolverTest.php @@ -10,7 +10,7 @@ use PHPStan\Type\Type; use Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\AbstractNodeTypeResolverTest; use Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\TraitTypeResolver\Source\AnotherTrait; use Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\TraitTypeResolver\Source\TraitWithTrait; -use Rector\PHPStan\TypeFactoryStaticHelper; +use Rector\StaticTypeMapper\TypeFactory\TypeFactoryStaticHelper; /** * @see \Rector\NodeTypeResolver\NodeTypeResolver\TraitTypeResolver diff --git a/packages/node-type-resolver/tests/PerNodeTypeResolver/VariableTypeResolver/VariableTypeResolverTest.php b/packages/node-type-resolver/tests/PerNodeTypeResolver/VariableTypeResolver/VariableTypeResolverTest.php index cae00eb8951..b8f70a79b1e 100644 --- a/packages/node-type-resolver/tests/PerNodeTypeResolver/VariableTypeResolver/VariableTypeResolverTest.php +++ b/packages/node-type-resolver/tests/PerNodeTypeResolver/VariableTypeResolver/VariableTypeResolverTest.php @@ -12,7 +12,7 @@ use Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\AbstractNodeTypeResolverTe use Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\VariableTypeResolver\Source\AnotherType; use Rector\NodeTypeResolver\Tests\PerNodeTypeResolver\VariableTypeResolver\Source\ThisClass; use Rector\NodeTypeResolver\Tests\Source\AnotherClass; -use Rector\PHPStan\TypeFactoryStaticHelper; +use Rector\StaticTypeMapper\TypeFactory\TypeFactoryStaticHelper; /** * @see \Rector\NodeTypeResolver\NodeTypeResolver\VariableTypeResolver diff --git a/packages/phpstan-static-type-mapper/src/TypeMapper/ObjectTypeMapper.php b/packages/phpstan-static-type-mapper/src/TypeMapper/ObjectTypeMapper.php index a6deb497391..cb01cb08d7a 100644 --- a/packages/phpstan-static-type-mapper/src/TypeMapper/ObjectTypeMapper.php +++ b/packages/phpstan-static-type-mapper/src/TypeMapper/ObjectTypeMapper.php @@ -16,13 +16,13 @@ use PHPStan\Type\VerbosityLevel; use Rector\AttributeAwarePhpDoc\Ast\Type\AttributeAwareGenericTypeNode; use Rector\AttributeAwarePhpDoc\Ast\Type\AttributeAwareIdentifierTypeNode; use Rector\NodeTypeResolver\ClassExistenceStaticHelper; -use Rector\PHPStan\Type\AliasedObjectType; -use Rector\PHPStan\Type\FullyQualifiedObjectType; -use Rector\PHPStan\Type\SelfObjectType; -use Rector\PHPStan\Type\ShortenedObjectType; use Rector\PHPStanStaticTypeMapper\Contract\PHPStanStaticTypeMapperAwareInterface; use Rector\PHPStanStaticTypeMapper\Contract\TypeMapperInterface; use Rector\PHPStanStaticTypeMapper\PHPStanStaticTypeMapper; +use Rector\StaticTypeMapper\ValueObject\Type\AliasedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\SelfObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\ShortenedObjectType; final class ObjectTypeMapper implements TypeMapperInterface, PHPStanStaticTypeMapperAwareInterface { diff --git a/packages/phpstan-static-type-mapper/src/TypeMapper/ParentStaticTypeMapper.php b/packages/phpstan-static-type-mapper/src/TypeMapper/ParentStaticTypeMapper.php index 94f1c312a4b..5b388e991a4 100644 --- a/packages/phpstan-static-type-mapper/src/TypeMapper/ParentStaticTypeMapper.php +++ b/packages/phpstan-static-type-mapper/src/TypeMapper/ParentStaticTypeMapper.php @@ -10,8 +10,8 @@ use PHPStan\PhpDocParser\Ast\Type\TypeNode; use PHPStan\Type\Type; use PHPStan\Type\VerbosityLevel; use Rector\AttributeAwarePhpDoc\Ast\Type\AttributeAwareIdentifierTypeNode; -use Rector\PHPStan\Type\ParentStaticType; use Rector\PHPStanStaticTypeMapper\Contract\TypeMapperInterface; +use Rector\StaticTypeMapper\ValueObject\Type\ParentStaticType; final class ParentStaticTypeMapper implements TypeMapperInterface { diff --git a/packages/phpstan-static-type-mapper/src/TypeMapper/SelfObjectTypeMapper.php b/packages/phpstan-static-type-mapper/src/TypeMapper/SelfObjectTypeMapper.php index 5f401027a16..44e9f6ba1a8 100644 --- a/packages/phpstan-static-type-mapper/src/TypeMapper/SelfObjectTypeMapper.php +++ b/packages/phpstan-static-type-mapper/src/TypeMapper/SelfObjectTypeMapper.php @@ -10,8 +10,8 @@ use PHPStan\PhpDocParser\Ast\Type\TypeNode; use PHPStan\Type\Type; use PHPStan\Type\VerbosityLevel; use Rector\AttributeAwarePhpDoc\Ast\Type\AttributeAwareIdentifierTypeNode; -use Rector\PHPStan\Type\SelfObjectType; use Rector\PHPStanStaticTypeMapper\Contract\TypeMapperInterface; +use Rector\StaticTypeMapper\ValueObject\Type\SelfObjectType; final class SelfObjectTypeMapper implements TypeMapperInterface { diff --git a/packages/phpstan-static-type-mapper/src/Utils/TypeUnwrapper.php b/packages/phpstan-static-type-mapper/src/Utils/TypeUnwrapper.php index c61149be0c4..0f770f561fd 100644 --- a/packages/phpstan-static-type-mapper/src/Utils/TypeUnwrapper.php +++ b/packages/phpstan-static-type-mapper/src/Utils/TypeUnwrapper.php @@ -8,7 +8,7 @@ use PHPStan\Type\NullType; use PHPStan\Type\Type; use PHPStan\Type\TypeWithClassName; use PHPStan\Type\UnionType; -use Rector\PHPStan\TypeFactoryStaticHelper; +use Rector\StaticTypeMapper\TypeFactory\TypeFactoryStaticHelper; final class TypeUnwrapper { diff --git a/packages/post-rector/src/Collector/UseNodesToAddCollector.php b/packages/post-rector/src/Collector/UseNodesToAddCollector.php index 71a3256f83a..2a877e7f0d2 100644 --- a/packages/post-rector/src/Collector/UseNodesToAddCollector.php +++ b/packages/post-rector/src/Collector/UseNodesToAddCollector.php @@ -8,9 +8,9 @@ use PhpParser\Node; use PHPStan\Type\ObjectType; use Rector\NodeTypeResolver\FileSystem\CurrentFileInfoProvider; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\PHPStan\Type\AliasedObjectType; -use Rector\PHPStan\Type\FullyQualifiedObjectType; use Rector\PostRector\Contract\Collector\NodeCollectorInterface; +use Rector\StaticTypeMapper\ValueObject\Type\AliasedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; use Symplify\SmartFileSystem\SmartFileInfo; final class UseNodesToAddCollector implements NodeCollectorInterface diff --git a/packages/post-rector/src/Rector/AbstractRector/NodeCommandersTrait.php b/packages/post-rector/src/Rector/AbstractRector/NodeCommandersTrait.php index 633594a72fe..eb5a55dd0b7 100644 --- a/packages/post-rector/src/Rector/AbstractRector/NodeCommandersTrait.php +++ b/packages/post-rector/src/Rector/AbstractRector/NodeCommandersTrait.php @@ -17,13 +17,13 @@ use Rector\ChangesReporting\Collector\RectorChangeCollector; use Rector\Naming\Naming\PropertyNaming; use Rector\NodeRemoval\NodeRemover; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\PHPStan\Type\AliasedObjectType; -use Rector\PHPStan\Type\FullyQualifiedObjectType; use Rector\PostRector\Collector\NodesToAddCollector; use Rector\PostRector\Collector\NodesToRemoveCollector; use Rector\PostRector\Collector\NodesToReplaceCollector; use Rector\PostRector\Collector\PropertyToAddCollector; use Rector\PostRector\Collector\UseNodesToAddCollector; +use Rector\StaticTypeMapper\ValueObject\Type\AliasedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; /** * This could be part of @see AbstractRector, but decopuling to trait diff --git a/packages/post-rector/src/Rector/UseAddingPostRector.php b/packages/post-rector/src/Rector/UseAddingPostRector.php index 25d352cae46..2f222b05a2c 100644 --- a/packages/post-rector/src/Rector/UseAddingPostRector.php +++ b/packages/post-rector/src/Rector/UseAddingPostRector.php @@ -14,8 +14,8 @@ use Rector\Core\PhpParser\Node\BetterNodeFinder; use Rector\Core\PhpParser\Node\CustomNode\FileWithoutNamespace; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory; -use Rector\PHPStan\Type\FullyQualifiedObjectType; use Rector\PostRector\Collector\UseNodesToAddCollector; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; use Symplify\SmartFileSystem\SmartFileInfo; diff --git a/packages/static-type-mapper/config/config.php b/packages/static-type-mapper/config/config.php index 7e68438d779..a2cccfc4af4 100644 --- a/packages/static-type-mapper/config/config.php +++ b/packages/static-type-mapper/config/config.php @@ -12,5 +12,6 @@ return static function (ContainerConfigurator $containerConfigurator): void { ->autowire() ->autoconfigure(); - $services->load('Rector\StaticTypeMapper\\', __DIR__ . '/../src'); + $services->load('Rector\StaticTypeMapper\\', __DIR__ . '/../src') + ->exclude([__DIR__ . '/../src/ValueObject']); }; diff --git a/packages/static-type-mapper/src/PHPStan/NameScopeFactory.php b/packages/static-type-mapper/src/Naming/NameScopeFactory.php similarity index 97% rename from packages/static-type-mapper/src/PHPStan/NameScopeFactory.php rename to packages/static-type-mapper/src/Naming/NameScopeFactory.php index 25dc69c36c3..b2ebf281067 100644 --- a/packages/static-type-mapper/src/PHPStan/NameScopeFactory.php +++ b/packages/static-type-mapper/src/Naming/NameScopeFactory.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\StaticTypeMapper\PHPStan; +namespace Rector\StaticTypeMapper\Naming; use PhpParser\Node; use PhpParser\Node\Stmt\Use_; diff --git a/packages/static-type-mapper/src/PhpDocParser/IdentifierTypeMapper.php b/packages/static-type-mapper/src/PhpDocParser/IdentifierTypeMapper.php index 7522d455b73..4485876f388 100644 --- a/packages/static-type-mapper/src/PhpDocParser/IdentifierTypeMapper.php +++ b/packages/static-type-mapper/src/PhpDocParser/IdentifierTypeMapper.php @@ -16,10 +16,10 @@ use PHPStan\Type\StaticType; use PHPStan\Type\Type; use Rector\AttributeAwarePhpDoc\Ast\Type\AttributeAwareIdentifierTypeNode; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\PHPStan\Type\ParentStaticType; -use Rector\PHPStan\Type\SelfObjectType; use Rector\StaticTypeMapper\Contract\PhpDocParser\PhpDocTypeMapperInterface; use Rector\StaticTypeMapper\Mapper\ScalarStringToTypeMapper; +use Rector\StaticTypeMapper\ValueObject\Type\ParentStaticType; +use Rector\StaticTypeMapper\ValueObject\Type\SelfObjectType; use Rector\TypeDeclaration\PHPStan\Type\ObjectTypeSpecifier; final class IdentifierTypeMapper implements PhpDocTypeMapperInterface diff --git a/packages/static-type-mapper/src/PhpParser/FullyQualifiedNodeMapper.php b/packages/static-type-mapper/src/PhpParser/FullyQualifiedNodeMapper.php index 2219de1b938..70c9a712450 100644 --- a/packages/static-type-mapper/src/PhpParser/FullyQualifiedNodeMapper.php +++ b/packages/static-type-mapper/src/PhpParser/FullyQualifiedNodeMapper.php @@ -9,9 +9,9 @@ use PhpParser\Node; use PhpParser\Node\Name\FullyQualified; use PHPStan\Type\Type; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\PHPStan\Type\AliasedObjectType; -use Rector\PHPStan\Type\FullyQualifiedObjectType; use Rector\StaticTypeMapper\Contract\PhpParser\PhpParserNodeMapperInterface; +use Rector\StaticTypeMapper\ValueObject\Type\AliasedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; final class FullyQualifiedNodeMapper implements PhpParserNodeMapperInterface { diff --git a/packages/static-type-mapper/src/PhpParser/NameNodeMapper.php b/packages/static-type-mapper/src/PhpParser/NameNodeMapper.php index 3fa886b5ab1..3f916db9434 100644 --- a/packages/static-type-mapper/src/PhpParser/NameNodeMapper.php +++ b/packages/static-type-mapper/src/PhpParser/NameNodeMapper.php @@ -11,9 +11,9 @@ use PHPStan\Type\StaticType; use PHPStan\Type\Type; use Rector\NodeTypeResolver\ClassExistenceStaticHelper; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\PHPStan\Type\FullyQualifiedObjectType; use Rector\PSR4\Collector\RenamedClassesCollector; use Rector\StaticTypeMapper\Contract\PhpParser\PhpParserNodeMapperInterface; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; final class NameNodeMapper implements PhpParserNodeMapperInterface { diff --git a/packages/static-type-mapper/src/StaticTypeMapper.php b/packages/static-type-mapper/src/StaticTypeMapper.php index 97d76c13a5a..c4dbb0617ea 100644 --- a/packages/static-type-mapper/src/StaticTypeMapper.php +++ b/packages/static-type-mapper/src/StaticTypeMapper.php @@ -18,8 +18,8 @@ use PHPStan\Type\Type; use Rector\Core\Exception\NotImplementedException; use Rector\PHPStanStaticTypeMapper\PHPStanStaticTypeMapper; use Rector\StaticTypeMapper\Mapper\PhpParserNodeMapper; +use Rector\StaticTypeMapper\Naming\NameScopeFactory; use Rector\StaticTypeMapper\PhpDoc\PhpDocTypeMapper; -use Rector\StaticTypeMapper\PHPStan\NameScopeFactory; /** * Maps PhpParser <=> PHPStan <=> PHPStan doc <=> string type nodes between all possible formats diff --git a/rules/phpstan/src/TypeFactoryStaticHelper.php b/packages/static-type-mapper/src/TypeFactory/TypeFactoryStaticHelper.php similarity index 95% rename from rules/phpstan/src/TypeFactoryStaticHelper.php rename to packages/static-type-mapper/src/TypeFactory/TypeFactoryStaticHelper.php index f0d77179b2f..64be52ca7c9 100644 --- a/rules/phpstan/src/TypeFactoryStaticHelper.php +++ b/packages/static-type-mapper/src/TypeFactory/TypeFactoryStaticHelper.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\PHPStan; +namespace Rector\StaticTypeMapper\TypeFactory; use PHPStan\Type\ObjectType; use PHPStan\Type\Type; diff --git a/rules/phpstan/src/Type/AliasedObjectType.php b/packages/static-type-mapper/src/ValueObject/Type/AliasedObjectType.php similarity index 95% rename from rules/phpstan/src/Type/AliasedObjectType.php rename to packages/static-type-mapper/src/ValueObject/Type/AliasedObjectType.php index cfba1023d16..0a463462385 100644 --- a/rules/phpstan/src/Type/AliasedObjectType.php +++ b/packages/static-type-mapper/src/ValueObject/Type/AliasedObjectType.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\PHPStan\Type; +namespace Rector\StaticTypeMapper\ValueObject\Type; use PhpParser\Node\Name; use PhpParser\Node\Stmt\Use_; diff --git a/rules/phpstan/src/Type/FullyQualifiedObjectType.php b/packages/static-type-mapper/src/ValueObject/Type/FullyQualifiedObjectType.php similarity index 97% rename from rules/phpstan/src/Type/FullyQualifiedObjectType.php rename to packages/static-type-mapper/src/ValueObject/Type/FullyQualifiedObjectType.php index 9316e43bbcc..8a4ef7bdb05 100644 --- a/rules/phpstan/src/Type/FullyQualifiedObjectType.php +++ b/packages/static-type-mapper/src/ValueObject/Type/FullyQualifiedObjectType.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\PHPStan\Type; +namespace Rector\StaticTypeMapper\ValueObject\Type; use Nette\Utils\Strings; use PhpParser\Node\Name; diff --git a/rules/phpstan/src/Type/ParentStaticType.php b/packages/static-type-mapper/src/ValueObject/Type/ParentStaticType.php similarity index 69% rename from rules/phpstan/src/Type/ParentStaticType.php rename to packages/static-type-mapper/src/ValueObject/Type/ParentStaticType.php index 0521d672ddd..ab95077abc7 100644 --- a/rules/phpstan/src/Type/ParentStaticType.php +++ b/packages/static-type-mapper/src/ValueObject/Type/ParentStaticType.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\PHPStan\Type; +namespace Rector\StaticTypeMapper\ValueObject\Type; use PHPStan\Type\StaticType; diff --git a/rules/phpstan/src/Type/SelfObjectType.php b/packages/static-type-mapper/src/ValueObject/Type/SelfObjectType.php similarity index 68% rename from rules/phpstan/src/Type/SelfObjectType.php rename to packages/static-type-mapper/src/ValueObject/Type/SelfObjectType.php index 098ff558d69..9a1c02cce22 100644 --- a/rules/phpstan/src/Type/SelfObjectType.php +++ b/packages/static-type-mapper/src/ValueObject/Type/SelfObjectType.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\PHPStan\Type; +namespace Rector\StaticTypeMapper\ValueObject\Type; use PHPStan\Type\ObjectType; diff --git a/rules/phpstan/src/Type/ShortenedObjectType.php b/packages/static-type-mapper/src/ValueObject/Type/ShortenedObjectType.php similarity index 91% rename from rules/phpstan/src/Type/ShortenedObjectType.php rename to packages/static-type-mapper/src/ValueObject/Type/ShortenedObjectType.php index 361548d7c4b..39f32e9d124 100644 --- a/rules/phpstan/src/Type/ShortenedObjectType.php +++ b/packages/static-type-mapper/src/ValueObject/Type/ShortenedObjectType.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\PHPStan\Type; +namespace Rector\StaticTypeMapper\ValueObject\Type; use PHPStan\Type\ObjectType; diff --git a/packages/static-type-mapper/tests/PhpDoc/PhpDocTypeMapperTest.php b/packages/static-type-mapper/tests/PhpDoc/PhpDocTypeMapperTest.php index 5d50740b13d..e02833105a4 100644 --- a/packages/static-type-mapper/tests/PhpDoc/PhpDocTypeMapperTest.php +++ b/packages/static-type-mapper/tests/PhpDoc/PhpDocTypeMapperTest.php @@ -12,8 +12,8 @@ use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode; use PHPStan\PhpDocParser\Ast\Type\TypeNode; use PHPStan\Type\ArrayType; use Rector\Core\HttpKernel\RectorKernel; +use Rector\StaticTypeMapper\Naming\NameScopeFactory; use Rector\StaticTypeMapper\PhpDoc\PhpDocTypeMapper; -use Rector\StaticTypeMapper\PHPStan\NameScopeFactory; use Symplify\PackageBuilder\Testing\AbstractKernelTestCase; final class PhpDocTypeMapperTest extends AbstractKernelTestCase diff --git a/phpstan-for-rector.neon b/phpstan-for-rector.neon new file mode 100644 index 00000000000..4238f182173 --- /dev/null +++ b/phpstan-for-rector.neon @@ -0,0 +1,4 @@ +# this config has extensions, that helps PHPStan inside Rector to resolve more precise types +includes: + - utils/phpstan-extensions/config/phpstan-extensions.neon + - vendor/phpstan/phpstan-nette/extension.neon diff --git a/phpstan.neon b/phpstan.neon index a36984d986a..6b222e38759 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,5 +1,7 @@ includes: - utils/phpstan-extensions/config/phpstan-extensions.neon + - utils/phpstan-extensions/config/rector-rules.neon + # allows symplify error formatter - vendor/symplify/phpstan-extensions/config/config.neon @@ -395,8 +397,6 @@ parameters: - packages/better-php-doc-parser/src/PhpDocInfo/PhpDocInfo.php # 108 - rules/coding-style/src/Rector/ClassMethod/YieldClassMethodToArrayClassMethodRector.php # 47 - rules/php70/src/EregToPcreTransformer.php # 66 - - rules/phpstan/src/Type/AliasedObjectType.php # 24 - - rules/phpstan/src/Type/ShortenedObjectType.php # 18 - rules/restoration/src/Rector/Class_/RemoveUselessJustForSakeInterfaceRector.php # 42 - rules/type-declaration/src/Rector/FunctionLike/ReturnTypeDeclarationRector.php # 82 - src/PhpParser/Builder/UseBuilder.php # 17 diff --git a/rules/code-quality/src/Rector/If_/ExplicitBoolCompareRector.php b/rules/code-quality/src/Rector/If_/ExplicitBoolCompareRector.php index 19d11dc6fd7..e717ace7882 100644 --- a/rules/code-quality/src/Rector/If_/ExplicitBoolCompareRector.php +++ b/rules/code-quality/src/Rector/If_/ExplicitBoolCompareRector.php @@ -29,6 +29,7 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; /** * @see https://www.reddit.com/r/PHP/comments/aqk01p/is_there_a_situation_in_which_if_countarray_0/ * @see https://3v4l.org/UCd1b + * * @see \Rector\CodeQuality\Tests\Rector\If_\ExplicitBoolCompareRector\ExplicitBoolCompareRectorTest */ final class ExplicitBoolCompareRector extends AbstractRector diff --git a/rules/coding-style/src/Application/UseImportsAdder.php b/rules/coding-style/src/Application/UseImportsAdder.php index 0f1b3e6fbd5..1823c6d23ab 100644 --- a/rules/coding-style/src/Application/UseImportsAdder.php +++ b/rules/coding-style/src/Application/UseImportsAdder.php @@ -12,8 +12,8 @@ use PhpParser\Node\Stmt\Nop; use PhpParser\Node\Stmt\Use_; use PHPStan\Type\ObjectType; use Rector\CodingStyle\ClassNameImport\UsedImportsResolver; -use Rector\PHPStan\Type\AliasedObjectType; -use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\AliasedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; final class UseImportsAdder { diff --git a/rules/coding-style/src/ClassNameImport/ClassNameImportSkipVoter/AliasClassNameImportSkipVoter.php b/rules/coding-style/src/ClassNameImport/ClassNameImportSkipVoter/AliasClassNameImportSkipVoter.php index 2ec4fc0131f..8a48eb3b3fa 100644 --- a/rules/coding-style/src/ClassNameImport/ClassNameImportSkipVoter/AliasClassNameImportSkipVoter.php +++ b/rules/coding-style/src/ClassNameImport/ClassNameImportSkipVoter/AliasClassNameImportSkipVoter.php @@ -8,7 +8,7 @@ use Nette\Utils\Strings; use PhpParser\Node; use Rector\CodingStyle\ClassNameImport\AliasUsesResolver; use Rector\CodingStyle\Contract\ClassNameImport\ClassNameImportSkipVoterInterface; -use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; /** * Prevents adding: diff --git a/rules/coding-style/src/ClassNameImport/ClassNameImportSkipVoter/ClassLikeNameClassNameImportSkipVoter.php b/rules/coding-style/src/ClassNameImport/ClassNameImportSkipVoter/ClassLikeNameClassNameImportSkipVoter.php index 8fa882a24d1..4d6e2ce3969 100644 --- a/rules/coding-style/src/ClassNameImport/ClassNameImportSkipVoter/ClassLikeNameClassNameImportSkipVoter.php +++ b/rules/coding-style/src/ClassNameImport/ClassNameImportSkipVoter/ClassLikeNameClassNameImportSkipVoter.php @@ -7,7 +7,7 @@ namespace Rector\CodingStyle\ClassNameImport\ClassNameImportSkipVoter; use PhpParser\Node; use Rector\CodingStyle\ClassNameImport\ShortNameResolver; use Rector\CodingStyle\Contract\ClassNameImport\ClassNameImportSkipVoterInterface; -use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; /** * Prevents adding: diff --git a/rules/coding-style/src/ClassNameImport/ClassNameImportSkipVoter/FullyQualifiedNameClassNameImportSkipVoter.php b/rules/coding-style/src/ClassNameImport/ClassNameImportSkipVoter/FullyQualifiedNameClassNameImportSkipVoter.php index bdc3f65ee38..4eed7f32f8d 100644 --- a/rules/coding-style/src/ClassNameImport/ClassNameImportSkipVoter/FullyQualifiedNameClassNameImportSkipVoter.php +++ b/rules/coding-style/src/ClassNameImport/ClassNameImportSkipVoter/FullyQualifiedNameClassNameImportSkipVoter.php @@ -7,7 +7,7 @@ namespace Rector\CodingStyle\ClassNameImport\ClassNameImportSkipVoter; use PhpParser\Node; use Rector\CodingStyle\ClassNameImport\ShortNameResolver; use Rector\CodingStyle\Contract\ClassNameImport\ClassNameImportSkipVoterInterface; -use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; /** * Prevents adding: diff --git a/rules/coding-style/src/ClassNameImport/ClassNameImportSkipVoter/UsesClassNameImportSkipVoter.php b/rules/coding-style/src/ClassNameImport/ClassNameImportSkipVoter/UsesClassNameImportSkipVoter.php index 6e15afbe7fd..7e839a879fa 100644 --- a/rules/coding-style/src/ClassNameImport/ClassNameImportSkipVoter/UsesClassNameImportSkipVoter.php +++ b/rules/coding-style/src/ClassNameImport/ClassNameImportSkipVoter/UsesClassNameImportSkipVoter.php @@ -6,8 +6,8 @@ namespace Rector\CodingStyle\ClassNameImport\ClassNameImportSkipVoter; use PhpParser\Node; use Rector\CodingStyle\Contract\ClassNameImport\ClassNameImportSkipVoterInterface; -use Rector\PHPStan\Type\FullyQualifiedObjectType; use Rector\PostRector\Collector\UseNodesToAddCollector; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; /** * This prevents importing: diff --git a/rules/coding-style/src/ClassNameImport/ClassNameImportSkipper.php b/rules/coding-style/src/ClassNameImport/ClassNameImportSkipper.php index 38cb9a1d81c..7dab98af430 100644 --- a/rules/coding-style/src/ClassNameImport/ClassNameImportSkipper.php +++ b/rules/coding-style/src/ClassNameImport/ClassNameImportSkipper.php @@ -10,7 +10,7 @@ use PhpParser\Node\Name; use PhpParser\Node\Stmt\Use_; use Rector\CodingStyle\Contract\ClassNameImport\ClassNameImportSkipVoterInterface; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; final class ClassNameImportSkipper { diff --git a/rules/coding-style/src/ClassNameImport/UsedImportsResolver.php b/rules/coding-style/src/ClassNameImport/UsedImportsResolver.php index 94ba24d9c72..8881c97fd27 100644 --- a/rules/coding-style/src/ClassNameImport/UsedImportsResolver.php +++ b/rules/coding-style/src/ClassNameImport/UsedImportsResolver.php @@ -12,7 +12,7 @@ use PhpParser\Node\Stmt\UseUse; use Rector\Core\PhpParser\Node\BetterNodeFinder; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; final class UsedImportsResolver { diff --git a/rules/coding-style/src/Contract/ClassNameImport/ClassNameImportSkipVoterInterface.php b/rules/coding-style/src/Contract/ClassNameImport/ClassNameImportSkipVoterInterface.php index 2eed242eead..6637d3f25b3 100644 --- a/rules/coding-style/src/Contract/ClassNameImport/ClassNameImportSkipVoterInterface.php +++ b/rules/coding-style/src/Contract/ClassNameImport/ClassNameImportSkipVoterInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace Rector\CodingStyle\Contract\ClassNameImport; use PhpParser\Node; -use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; interface ClassNameImportSkipVoterInterface { diff --git a/rules/coding-style/src/Node/DocAliasResolver.php b/rules/coding-style/src/Node/DocAliasResolver.php index e7e40f13599..1ec0b168171 100644 --- a/rules/coding-style/src/Node/DocAliasResolver.php +++ b/rules/coding-style/src/Node/DocAliasResolver.php @@ -11,7 +11,7 @@ use PHPStan\Type\UnionType; use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo; use Rector\Core\PhpParser\NodeTraverser\CallableNodeTraverser; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\PHPStan\Type\AliasedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\AliasedObjectType; final class DocAliasResolver { diff --git a/rules/coding-style/src/Node/NameImporter.php b/rules/coding-style/src/Node/NameImporter.php index 82013c0943f..4575678400e 100644 --- a/rules/coding-style/src/Node/NameImporter.php +++ b/rules/coding-style/src/Node/NameImporter.php @@ -16,10 +16,10 @@ use Rector\Core\Configuration\Option; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\ClassExistenceStaticHelper; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\PHPStan\Type\FullyQualifiedObjectType; use Rector\PostRector\Collector\UseNodesToAddCollector; use Rector\PSR4\Collector\RenamedClassesCollector; use Rector\StaticTypeMapper\StaticTypeMapper; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; use Symplify\PackageBuilder\Parameter\ParameterProvider; final class NameImporter diff --git a/rules/coding-style/src/NodeAnalyzer/ThrowAnalyzer.php b/rules/coding-style/src/NodeAnalyzer/ThrowAnalyzer.php index 9b637c001ab..16ac4411875 100644 --- a/rules/coding-style/src/NodeAnalyzer/ThrowAnalyzer.php +++ b/rules/coding-style/src/NodeAnalyzer/ThrowAnalyzer.php @@ -11,7 +11,7 @@ use PHPStan\Type\TypeWithClassName; use PHPStan\Type\UnionType; use Rector\Core\Exception\ShouldNotHappenException; use Rector\NodeTypeResolver\NodeTypeResolver; -use Rector\PHPStan\Type\ShortenedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\ShortenedObjectType; final class ThrowAnalyzer { diff --git a/rules/defluent/src/NodeAnalyzer/ExprStringTypeResolver.php b/rules/defluent/src/NodeAnalyzer/ExprStringTypeResolver.php index a9510b2067b..ae919b79186 100644 --- a/rules/defluent/src/NodeAnalyzer/ExprStringTypeResolver.php +++ b/rules/defluent/src/NodeAnalyzer/ExprStringTypeResolver.php @@ -7,8 +7,8 @@ namespace Rector\Defluent\NodeAnalyzer; use PhpParser\Node\Expr; use PHPStan\Type\TypeWithClassName; use Rector\NodeTypeResolver\NodeTypeResolver; -use Rector\PHPStan\Type\AliasedObjectType; use Rector\PHPStanStaticTypeMapper\Utils\TypeUnwrapper; +use Rector\StaticTypeMapper\ValueObject\Type\AliasedObjectType; final class ExprStringTypeResolver { diff --git a/rules/defluent/src/NodeAnalyzer/FluentChainMethodCallRootExtractor.php b/rules/defluent/src/NodeAnalyzer/FluentChainMethodCallRootExtractor.php index 005399c102c..643f8fd85bc 100644 --- a/rules/defluent/src/NodeAnalyzer/FluentChainMethodCallRootExtractor.php +++ b/rules/defluent/src/NodeAnalyzer/FluentChainMethodCallRootExtractor.php @@ -20,7 +20,7 @@ use Rector\NetteKdyby\Naming\VariableNaming; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\NodeTypeResolver; -use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; /** * @see \Rector\Defluent\Tests\NodeFactory\FluentChainMethodCallRootExtractor\FluentChainMethodCallRootExtractorTest diff --git a/rules/doctrine-code-quality/src/NodeManipulator/PropertyTypeManipulator.php b/rules/doctrine-code-quality/src/NodeManipulator/PropertyTypeManipulator.php index 7999e6bece6..5fcb32ebeb8 100644 --- a/rules/doctrine-code-quality/src/NodeManipulator/PropertyTypeManipulator.php +++ b/rules/doctrine-code-quality/src/NodeManipulator/PropertyTypeManipulator.php @@ -9,7 +9,7 @@ use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo; use Rector\Core\Exception\NotImplementedYetException; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\PhpDoc\NodeAnalyzer\DocBlockClassRenamer; -use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; final class PropertyTypeManipulator { diff --git a/rules/doctrine-code-quality/src/PhpDoc/CollectionTypeFactory.php b/rules/doctrine-code-quality/src/PhpDoc/CollectionTypeFactory.php index 5ef3c1064e9..80a5166ecf7 100644 --- a/rules/doctrine-code-quality/src/PhpDoc/CollectionTypeFactory.php +++ b/rules/doctrine-code-quality/src/PhpDoc/CollectionTypeFactory.php @@ -10,7 +10,7 @@ use PHPStan\Type\IntegerType; use PHPStan\Type\MixedType; use PHPStan\Type\Type; use PHPStan\Type\UnionType; -use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; final class CollectionTypeFactory { diff --git a/rules/doctrine-code-quality/src/PhpDoc/CollectionTypeResolver.php b/rules/doctrine-code-quality/src/PhpDoc/CollectionTypeResolver.php index 451098b0daf..0907a7996a3 100644 --- a/rules/doctrine-code-quality/src/PhpDoc/CollectionTypeResolver.php +++ b/rules/doctrine-code-quality/src/PhpDoc/CollectionTypeResolver.php @@ -14,8 +14,8 @@ use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo; use Rector\BetterPhpDocParser\ValueObject\PhpDocNode\Doctrine\Property_\OneToManyTagValueNode; use Rector\Core\Exception\ShouldNotHappenException; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\PHPStan\Type\FullyQualifiedObjectType; -use Rector\StaticTypeMapper\PHPStan\NameScopeFactory; +use Rector\StaticTypeMapper\Naming\NameScopeFactory; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; final class CollectionTypeResolver { diff --git a/rules/doctrine/src/Rector/Class_/ManagerRegistryGetManagerToEntityManagerRector.php b/rules/doctrine/src/Rector/Class_/ManagerRegistryGetManagerToEntityManagerRector.php index 3c6f78a50c7..9fa332c820f 100644 --- a/rules/doctrine/src/Rector/Class_/ManagerRegistryGetManagerToEntityManagerRector.php +++ b/rules/doctrine/src/Rector/Class_/ManagerRegistryGetManagerToEntityManagerRector.php @@ -18,7 +18,7 @@ use PhpParser\Node\Stmt\Property; use PhpParser\NodeTraverser; use Rector\Core\Rector\AbstractRector; use Rector\Core\ValueObject\MethodName; -use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; diff --git a/rules/doctrine/src/Rector/Property/AddUuidAnnotationsToIdPropertyRector.php b/rules/doctrine/src/Rector/Property/AddUuidAnnotationsToIdPropertyRector.php index d44a4815876..7b353b805db 100644 --- a/rules/doctrine/src/Rector/Property/AddUuidAnnotationsToIdPropertyRector.php +++ b/rules/doctrine/src/Rector/Property/AddUuidAnnotationsToIdPropertyRector.php @@ -13,7 +13,7 @@ use Rector\BetterPhpDocParser\ValueObject\PhpDocNode\Doctrine\Property_\Generate use Rector\BetterPhpDocParser\ValueObject\PhpDocNode\JMS\SerializerTypeTagValueNode; use Rector\Core\Rector\AbstractRector; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; diff --git a/rules/doctrine/src/Type/RepositoryTypeFactory.php b/rules/doctrine/src/Type/RepositoryTypeFactory.php index 22b28c72b53..bd82e8c39a4 100644 --- a/rules/doctrine/src/Type/RepositoryTypeFactory.php +++ b/rules/doctrine/src/Type/RepositoryTypeFactory.php @@ -9,7 +9,7 @@ use PhpParser\Node\Expr\ClassConstFetch; use PHPStan\Type\Generic\GenericObjectType; use Rector\Core\Exception\NotImplementedYetException; use Rector\NodeNameResolver\NodeNameResolver; -use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; final class RepositoryTypeFactory { diff --git a/rules/generic/src/Rector/AbstractToMethodCallRector.php b/rules/generic/src/Rector/AbstractToMethodCallRector.php index bf328dc149a..c9a31535e44 100644 --- a/rules/generic/src/Rector/AbstractToMethodCallRector.php +++ b/rules/generic/src/Rector/AbstractToMethodCallRector.php @@ -16,7 +16,7 @@ use Rector\Core\Contract\Rector\ConfigurableRectorInterface; use Rector\Core\Rector\AbstractRector; use Rector\Generic\NodeTypeAnalyzer\TypeProvidingExprFromClassResolver; use Rector\Naming\Naming\PropertyNaming; -use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; abstract class AbstractToMethodCallRector extends AbstractRector implements ConfigurableRectorInterface { diff --git a/rules/naming/src/Naming/ExpectedNameResolver.php b/rules/naming/src/Naming/ExpectedNameResolver.php index 722f159be0e..b1edd0dce5f 100644 --- a/rules/naming/src/Naming/ExpectedNameResolver.php +++ b/rules/naming/src/Naming/ExpectedNameResolver.php @@ -23,8 +23,8 @@ use PHPStan\Type\Type; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\NodeTypeResolver; -use Rector\PHPStan\Type\FullyQualifiedObjectType; use Rector\StaticTypeMapper\StaticTypeMapper; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; final class ExpectedNameResolver { diff --git a/rules/naming/src/Naming/PropertyNaming.php b/rules/naming/src/Naming/PropertyNaming.php index 3dadfecdf20..d481a8f42d4 100644 --- a/rules/naming/src/Naming/PropertyNaming.php +++ b/rules/naming/src/Naming/PropertyNaming.php @@ -18,9 +18,9 @@ use Rector\Naming\ValueObject\ExpectedName; use Rector\NetteKdyby\Naming\VariableNaming; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\PHPStan\Type\SelfObjectType; -use Rector\PHPStan\Type\ShortenedObjectType; use Rector\PHPStanStaticTypeMapper\Utils\TypeUnwrapper; +use Rector\StaticTypeMapper\ValueObject\Type\SelfObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\ShortenedObjectType; /** * @deprecated diff --git a/rules/nette-code-quality/src/FormControlTypeResolver/GetComponentMethodCallFormControlTypeResolver.php b/rules/nette-code-quality/src/FormControlTypeResolver/GetComponentMethodCallFormControlTypeResolver.php index 203510f5df6..5fe8e730d74 100644 --- a/rules/nette-code-quality/src/FormControlTypeResolver/GetComponentMethodCallFormControlTypeResolver.php +++ b/rules/nette-code-quality/src/FormControlTypeResolver/GetComponentMethodCallFormControlTypeResolver.php @@ -15,7 +15,7 @@ use Rector\NetteCodeQuality\NodeResolver\MethodNamesByInputNamesResolver; use Rector\NodeCollector\NodeCollector\NodeRepository; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\NodeTypeResolver; -use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; final class GetComponentMethodCallFormControlTypeResolver implements FormControlTypeResolverInterface, MethodNamesByInputNamesResolverAwareInterface { diff --git a/rules/nette-kdyby/src/Rector/MethodCall/ReplaceMagicPropertyEventWithEventClassRector.php b/rules/nette-kdyby/src/Rector/MethodCall/ReplaceMagicPropertyEventWithEventClassRector.php index 067d3922b12..fe264f9338d 100644 --- a/rules/nette-kdyby/src/Rector/MethodCall/ReplaceMagicPropertyEventWithEventClassRector.php +++ b/rules/nette-kdyby/src/Rector/MethodCall/ReplaceMagicPropertyEventWithEventClassRector.php @@ -15,7 +15,7 @@ use Rector\CodingStyle\Naming\ClassNaming; use Rector\Core\Rector\AbstractRector; use Rector\NetteKdyby\DataProvider\EventAndListenerTreeProvider; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; diff --git a/rules/nette-to-symfony/src/Analyzer/NetteControlFactoryInterfaceAnalyzer.php b/rules/nette-to-symfony/src/Analyzer/NetteControlFactoryInterfaceAnalyzer.php index cbb43848901..92c1f3dc9f6 100644 --- a/rules/nette-to-symfony/src/Analyzer/NetteControlFactoryInterfaceAnalyzer.php +++ b/rules/nette-to-symfony/src/Analyzer/NetteControlFactoryInterfaceAnalyzer.php @@ -6,7 +6,7 @@ namespace Rector\NetteToSymfony\Analyzer; use PhpParser\Node\Stmt\Interface_; use PHPStan\Type\TypeWithClassName; -use Rector\PHPStan\Type\ShortenedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\ShortenedObjectType; use Rector\TypeDeclaration\TypeInferer\ReturnTypeInferer; final class NetteControlFactoryInterfaceAnalyzer diff --git a/rules/nette-to-symfony/src/Rector/Class_/NetteControlToSymfonyControllerRector.php b/rules/nette-to-symfony/src/Rector/Class_/NetteControlToSymfonyControllerRector.php index 40ffd6438f6..8b7a6303ce3 100644 --- a/rules/nette-to-symfony/src/Rector/Class_/NetteControlToSymfonyControllerRector.php +++ b/rules/nette-to-symfony/src/Rector/Class_/NetteControlToSymfonyControllerRector.php @@ -20,7 +20,7 @@ use Rector\Core\ValueObject\PhpVersionFeature; use Rector\Nette\NodeFactory\ActionRenderFactory; use Rector\Nette\TemplatePropertyAssignCollector; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; diff --git a/rules/nette-to-symfony/src/Routing/ExplicitRouteAnnotationDecorator.php b/rules/nette-to-symfony/src/Routing/ExplicitRouteAnnotationDecorator.php index 8e32ee4223c..02f7b73c1a4 100644 --- a/rules/nette-to-symfony/src/Routing/ExplicitRouteAnnotationDecorator.php +++ b/rules/nette-to-symfony/src/Routing/ExplicitRouteAnnotationDecorator.php @@ -8,8 +8,8 @@ use PhpParser\Node\Stmt\ClassMethod; use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo; use Rector\BetterPhpDocParser\ValueObject\PhpDocNode\Symfony\SymfonyRouteTagValueNode; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\PHPStan\Type\FullyQualifiedObjectType; use Rector\PostRector\Collector\UseNodesToAddCollector; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; final class ExplicitRouteAnnotationDecorator { diff --git a/rules/removing-static/src/Rector/Class_/NewUniqueObjectToEntityFactoryRector.php b/rules/removing-static/src/Rector/Class_/NewUniqueObjectToEntityFactoryRector.php index d699b35957f..83113ed019d 100644 --- a/rules/removing-static/src/Rector/Class_/NewUniqueObjectToEntityFactoryRector.php +++ b/rules/removing-static/src/Rector/Class_/NewUniqueObjectToEntityFactoryRector.php @@ -15,8 +15,8 @@ use Rector\Core\Contract\Rector\ConfigurableRectorInterface; use Rector\Core\Exception\ShouldNotHappenException; use Rector\Core\Rector\AbstractRector; use Rector\Naming\Naming\PropertyNaming; -use Rector\PHPStan\Type\FullyQualifiedObjectType; use Rector\RemovingStatic\StaticTypesInClassResolver; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; diff --git a/rules/removing-static/src/Rector/Class_/PassFactoryToUniqueObjectRector.php b/rules/removing-static/src/Rector/Class_/PassFactoryToUniqueObjectRector.php index a5e63e775f9..9087eb51b46 100644 --- a/rules/removing-static/src/Rector/Class_/PassFactoryToUniqueObjectRector.php +++ b/rules/removing-static/src/Rector/Class_/PassFactoryToUniqueObjectRector.php @@ -13,11 +13,11 @@ use PhpParser\Node\Stmt\Class_; use Rector\Core\Contract\Rector\ConfigurableRectorInterface; use Rector\Core\Rector\AbstractRector; use Rector\Naming\Naming\PropertyNaming; -use Rector\PHPStan\Type\FullyQualifiedObjectType; use Rector\RemovingStatic\Printer\FactoryClassPrinter; use Rector\RemovingStatic\StaticTypesInClassResolver; use Rector\RemovingStatic\UniqueObjectFactoryFactory; use Rector\RemovingStatic\UniqueObjectOrServiceDetector; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; diff --git a/rules/removing-static/src/StaticTypesInClassResolver.php b/rules/removing-static/src/StaticTypesInClassResolver.php index 506c402e8c1..33de3e17dc0 100644 --- a/rules/removing-static/src/StaticTypesInClassResolver.php +++ b/rules/removing-static/src/StaticTypesInClassResolver.php @@ -10,7 +10,7 @@ use PhpParser\Node\Stmt\Class_; use PHPStan\Type\ObjectType; use Rector\Core\PhpParser\NodeTraverser\CallableNodeTraverser; use Rector\NodeTypeResolver\NodeTypeResolver; -use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; final class StaticTypesInClassResolver { diff --git a/rules/renaming/src/NodeManipulator/ClassRenamer.php b/rules/renaming/src/NodeManipulator/ClassRenamer.php index 970edaf81ed..dee3fe80e45 100644 --- a/rules/renaming/src/NodeManipulator/ClassRenamer.php +++ b/rules/renaming/src/NodeManipulator/ClassRenamer.php @@ -23,7 +23,7 @@ use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\ClassExistenceStaticHelper; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\PhpDoc\NodeAnalyzer\DocBlockManipulator; -use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; final class ClassRenamer { diff --git a/rules/strict-code-quality/src/Rector/ClassMethod/ParamTypeToAssertTypeRector.php b/rules/strict-code-quality/src/Rector/ClassMethod/ParamTypeToAssertTypeRector.php index cec68f86b3a..661ddb86c28 100644 --- a/rules/strict-code-quality/src/Rector/ClassMethod/ParamTypeToAssertTypeRector.php +++ b/rules/strict-code-quality/src/Rector/ClassMethod/ParamTypeToAssertTypeRector.php @@ -20,8 +20,8 @@ use PHPStan\Type\UnionType; use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo; use Rector\Core\Rector\AbstractRector; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\PHPStan\Type\FullyQualifiedObjectType; -use Rector\PHPStan\Type\ShortenedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\ShortenedObjectType; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; diff --git a/rules/transform/src/Rector/FuncCall/ArgumentFuncCallToMethodCallRector.php b/rules/transform/src/Rector/FuncCall/ArgumentFuncCallToMethodCallRector.php index a6702881de1..8ffd0c40d70 100644 --- a/rules/transform/src/Rector/FuncCall/ArgumentFuncCallToMethodCallRector.php +++ b/rules/transform/src/Rector/FuncCall/ArgumentFuncCallToMethodCallRector.php @@ -15,7 +15,7 @@ use Rector\Core\Exception\ShouldNotHappenException; use Rector\Core\Rector\AbstractRector; use Rector\Naming\Naming\PropertyNaming; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; use Rector\Transform\ValueObject\ArgumentFuncCallToMethodCall; use Rector\Transform\ValueObject\ArrayFuncCallToMethodCall; use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample; diff --git a/rules/type-declaration/src/ChildPopulator/AbstractChildPopulator.php b/rules/type-declaration/src/ChildPopulator/AbstractChildPopulator.php index fd7f9b85b59..524096665e5 100644 --- a/rules/type-declaration/src/ChildPopulator/AbstractChildPopulator.php +++ b/rules/type-declaration/src/ChildPopulator/AbstractChildPopulator.php @@ -12,8 +12,8 @@ use PHPStan\Type\MixedType; use PHPStan\Type\ObjectType; use PHPStan\Type\StaticType; use PHPStan\Type\Type; -use Rector\PHPStan\Type\SelfObjectType; use Rector\StaticTypeMapper\StaticTypeMapper; +use Rector\StaticTypeMapper\ValueObject\Type\SelfObjectType; abstract class AbstractChildPopulator { diff --git a/rules/type-declaration/src/OverrideGuard/ClassMethodReturnTypeOverrideGuard.php b/rules/type-declaration/src/OverrideGuard/ClassMethodReturnTypeOverrideGuard.php index 06957987c9b..cb2cc4f4fd3 100644 --- a/rules/type-declaration/src/OverrideGuard/ClassMethodReturnTypeOverrideGuard.php +++ b/rules/type-declaration/src/OverrideGuard/ClassMethodReturnTypeOverrideGuard.php @@ -13,7 +13,7 @@ use PHPStan\Type\TypeWithClassName; use PHPStan\Type\UnionType; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\PHPStan\Type\ShortenedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\ShortenedObjectType; final class ClassMethodReturnTypeOverrideGuard { diff --git a/rules/type-declaration/src/PHPStan/Type/ObjectTypeSpecifier.php b/rules/type-declaration/src/PHPStan/Type/ObjectTypeSpecifier.php index 57fd0236fd6..6b48a446fd4 100644 --- a/rules/type-declaration/src/PHPStan/Type/ObjectTypeSpecifier.php +++ b/rules/type-declaration/src/PHPStan/Type/ObjectTypeSpecifier.php @@ -13,9 +13,9 @@ use PHPStan\Type\ObjectType; use PHPStan\Type\Type; use Rector\NodeTypeResolver\ClassExistenceStaticHelper; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\PHPStan\Type\AliasedObjectType; -use Rector\PHPStan\Type\FullyQualifiedObjectType; -use Rector\PHPStan\Type\ShortenedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\AliasedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\ShortenedObjectType; final class ObjectTypeSpecifier { diff --git a/rules/type-declaration/src/PhpDocParser/NonInformativeReturnTagRemover.php b/rules/type-declaration/src/PhpDocParser/NonInformativeReturnTagRemover.php index 1d275cea45f..603b8012df9 100644 --- a/rules/type-declaration/src/PhpDocParser/NonInformativeReturnTagRemover.php +++ b/rules/type-declaration/src/PhpDocParser/NonInformativeReturnTagRemover.php @@ -26,10 +26,10 @@ use PHPStan\Type\UnionType; use PHPStan\Type\VoidType; use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\PHPStan\Type\FullyQualifiedObjectType; -use Rector\PHPStan\Type\ParentStaticType; -use Rector\PHPStan\Type\SelfObjectType; -use Rector\PHPStan\Type\ShortenedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\ParentStaticType; +use Rector\StaticTypeMapper\ValueObject\Type\SelfObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\ShortenedObjectType; final class NonInformativeReturnTagRemover { diff --git a/rules/type-declaration/src/Rector/FunctionLike/ParamTypeDeclarationRector.php b/rules/type-declaration/src/Rector/FunctionLike/ParamTypeDeclarationRector.php index 14bf3b0a17e..bcbfd8d4c73 100644 --- a/rules/type-declaration/src/Rector/FunctionLike/ParamTypeDeclarationRector.php +++ b/rules/type-declaration/src/Rector/FunctionLike/ParamTypeDeclarationRector.php @@ -13,8 +13,8 @@ use PHPStan\Type\MixedType; use PHPStan\Type\Type; use PHPStan\Type\TypeWithClassName; use Rector\Core\ValueObject\PhpVersionFeature; -use Rector\PHPStan\Type\ShortenedObjectType; use Rector\PHPStanStaticTypeMapper\PHPStanStaticTypeMapper; +use Rector\StaticTypeMapper\ValueObject\Type\ShortenedObjectType; use Rector\TypeDeclaration\ChildPopulator\ChildParamPopulator; use Rector\TypeDeclaration\TypeInferer\ParamTypeInferer; use Rector\TypeDeclaration\ValueObject\NewType; diff --git a/rules/type-declaration/src/TypeInferer/PropertyTypeInferer/ConstructorPropertyTypeInferer.php b/rules/type-declaration/src/TypeInferer/PropertyTypeInferer/ConstructorPropertyTypeInferer.php index 067f7113a25..8d86c56a1ff 100644 --- a/rules/type-declaration/src/TypeInferer/PropertyTypeInferer/ConstructorPropertyTypeInferer.php +++ b/rules/type-declaration/src/TypeInferer/PropertyTypeInferer/ConstructorPropertyTypeInferer.php @@ -22,8 +22,8 @@ use PHPStan\Type\Type; use Rector\Core\PhpParser\Node\Manipulator\ClassMethodPropertyFetchManipulator; use Rector\Core\ValueObject\MethodName; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\PHPStan\Type\AliasedObjectType; -use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\AliasedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; use Rector\TypeDeclaration\Contract\TypeInferer\PropertyTypeInfererInterface; use Rector\TypeDeclaration\TypeInferer\AbstractTypeInferer; diff --git a/rules/type-declaration/src/TypeInferer/PropertyTypeInferer/DoctrineRelationPropertyTypeInferer.php b/rules/type-declaration/src/TypeInferer/PropertyTypeInferer/DoctrineRelationPropertyTypeInferer.php index 6f9f1d5cd8d..ae507a9b160 100644 --- a/rules/type-declaration/src/TypeInferer/PropertyTypeInferer/DoctrineRelationPropertyTypeInferer.php +++ b/rules/type-declaration/src/TypeInferer/PropertyTypeInferer/DoctrineRelationPropertyTypeInferer.php @@ -16,7 +16,7 @@ use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo; use Rector\BetterPhpDocParser\ValueObject\PhpDocNode\Doctrine\Property_\JoinColumnTagValueNode; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory; -use Rector\PHPStan\Type\FullyQualifiedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; use Rector\TypeDeclaration\Contract\TypeInferer\PropertyTypeInfererInterface; final class DoctrineRelationPropertyTypeInferer implements PropertyTypeInfererInterface diff --git a/rules/type-declaration/src/TypeNormalizer.php b/rules/type-declaration/src/TypeNormalizer.php index b54f4458483..646f99bc716 100644 --- a/rules/type-declaration/src/TypeNormalizer.php +++ b/rules/type-declaration/src/TypeNormalizer.php @@ -15,7 +15,7 @@ use PHPStan\Type\Type; use PHPStan\Type\UnionType; use Rector\NodeTypeResolver\PHPStan\Type\TypeFactory; use Rector\NodeTypeResolver\PHPStan\TypeHasher; -use Rector\PHPStan\TypeFactoryStaticHelper; +use Rector\StaticTypeMapper\TypeFactory\TypeFactoryStaticHelper; use Rector\TypeDeclaration\ValueObject\NestedArrayType; /** diff --git a/src/Configuration/Option.php b/src/Configuration/Option.php index 4acf223ac21..8b597c2701d 100644 --- a/src/Configuration/Option.php +++ b/src/Configuration/Option.php @@ -142,4 +142,9 @@ final class Option * @var string */ public const FIX = 'fix'; + + /** + * @var string + */ + public const PHPSTAN_FOR_RECTOR_PATH = 'phpstan_for_rector_path'; } diff --git a/src/Reflection/ClassMethodReflectionFactory.php b/src/Reflection/ClassMethodReflectionFactory.php index bb1208752da..c1ca59272fc 100644 --- a/src/Reflection/ClassMethodReflectionFactory.php +++ b/src/Reflection/ClassMethodReflectionFactory.php @@ -8,7 +8,7 @@ use PHPStan\Type\IntersectionType; use PHPStan\Type\ObjectType; use PHPStan\Type\Type; use PHPStan\Type\UnionType; -use Rector\PHPStan\Type\ShortenedObjectType; +use Rector\StaticTypeMapper\ValueObject\Type\ShortenedObjectType; use ReflectionMethod; final class ClassMethodReflectionFactory diff --git a/utils/phpstan-extensions/config/phpstan-extensions.neon b/utils/phpstan-extensions/config/phpstan-extensions.neon index e328d4dd12f..ff4031e5197 100644 --- a/utils/phpstan-extensions/config/phpstan-extensions.neon +++ b/utils/phpstan-extensions/config/phpstan-extensions.neon @@ -1,6 +1,3 @@ -includes: - - rector-rules.neon - services: - Rector\PHPStanExtensions\Utils\PHPStanValueResolver diff --git a/utils/phpstan-extensions/config/rector-rules.neon b/utils/phpstan-extensions/config/rector-rules.neon index 76639b845c3..83fe27d8869 100644 --- a/utils/phpstan-extensions/config/rector-rules.neon +++ b/utils/phpstan-extensions/config/rector-rules.neon @@ -8,5 +8,16 @@ services: tags: [phpstan.rules.rule] - - class: Rector\PHPStanExtensions\Rule\ConfigurableRectorRule + class: Symplify\PHPStanRules\Rules\IfNewTypeThenImplementInterfaceRule tags: [phpstan.rules.rule] + arguments: + interfacesByNewTypes: + Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample: Rector\Core\Contract\Rector\ConfigurableRectorInterface + + # open in Sypmlify 9.0.20 version +# - +# class: Symplify\PHPStanRules\Rules\IfImplementsInterfaceThenNewTypeRule +# tags: [phpstan.rules.rule] +# arguments: +# interfacesByNewTypes: +# Rector\Core\Contract\Rector\ConfigurableRectorInterface: Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample diff --git a/src/PHPStan/Type/ComponentModelDynamicReturnTypeExtension.php b/utils/phpstan-extensions/src/ReturnTypeExtension/ComponentModelDynamicReturnTypeExtension.php similarity index 96% rename from src/PHPStan/Type/ComponentModelDynamicReturnTypeExtension.php rename to utils/phpstan-extensions/src/ReturnTypeExtension/ComponentModelDynamicReturnTypeExtension.php index ec881e4f697..a86d022f416 100644 --- a/src/PHPStan/Type/ComponentModelDynamicReturnTypeExtension.php +++ b/utils/phpstan-extensions/src/ReturnTypeExtension/ComponentModelDynamicReturnTypeExtension.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Rector\Core\PHPStan\Type; +namespace Rector\PHPStanExtensions\ReturnTypeExtension; use PhpParser\Node\Expr\MethodCall; use PHPStan\Analyser\Scope; diff --git a/utils/phpstan-extensions/src/Rule/ConfigurableRectorRule.php b/utils/phpstan-extensions/src/Rule/ConfigurableRectorRule.php deleted file mode 100644 index 619822c9243..00000000000 --- a/utils/phpstan-extensions/src/Rule/ConfigurableRectorRule.php +++ /dev/null @@ -1,125 +0,0 @@ -simpleNameResolver = $simpleNameResolver; - } - - public function getNodeType(): string - { - return Class_::class; - } - - /** - * @param Class_ $node - * @return string[] - */ - public function processNode(Node $node, Scope $scope): array - { - $className = $this->simpleNameResolver->getName($node); - if ($className === null) { - return []; - } - - if (! is_a($className, RectorInterface::class, true)) { - return []; - } - - if ($node->isAbstract()) { - return []; - } - - if ($this->hasConfigurableInterface($className)) { - if ($this->hasConfiguredCodeSample($node)) { - return []; - } - - return [self::ERROR_NO_CONFIGURED_CODE_SAMPLE]; - } - - if ($this->hasConfiguredCodeSample($node)) { - if ($this->hasConfigurableInterface($className)) { - return []; - } - - $errorMessage = sprintf(self::ERROR_NOT_IMPLEMENTS_INTERFACE, ConfigurableRectorInterface::class); - return [$errorMessage]; - } - - return []; - } - - private function hasConfiguredCodeSample(Class_ $class): bool - { - $classMethod = $class->getMethod('getRuleDefinition'); - - if ($classMethod === null) { - return false; - } - - if ($classMethod->stmts === null) { - return false; - } - - $nodeFinder = new NodeFinder(); - $nodes = $nodeFinder->find($classMethod->stmts, function (Node $node): ?New_ { - if (! $node instanceof New_) { - return null; - } - - $className = $node->class; - if (! $className instanceof Name) { - return null; - } - - if (is_a($className->toString(), ConfiguredCodeSample::class, true)) { - return $node; - } - - return null; - }); - - return $nodes !== []; - } - - private function hasConfigurableInterface(string $className): bool - { - return is_a($className, ConfigurableRectorInterface::class, true); - } -} diff --git a/utils/phpstan-extensions/tests/Rule/ConfigurableRectorRule/ConfigurableRectorRuleTest.php b/utils/phpstan-extensions/tests/Rule/ConfigurableRectorRule/ConfigurableRectorRuleTest.php deleted file mode 100644 index d09d4634a84..00000000000 --- a/utils/phpstan-extensions/tests/Rule/ConfigurableRectorRule/ConfigurableRectorRuleTest.php +++ /dev/null @@ -1,53 +0,0 @@ - $expectedErrorsWithLines - */ - public function testRule(string $filePath, array $expectedErrorsWithLines): void - { - $this->analyse([$filePath], $expectedErrorsWithLines); - } - - public function provideData(): Iterator - { - yield [__DIR__ . '/Fixture/ImplementsAndHasConfiguredCodeSampleRector.php', []]; - - yield [ - __DIR__ . '/Fixture/ImplementsAndHasNoConfiguredCodeSampleRector.php', - [[ConfigurableRectorRule::ERROR_NO_CONFIGURED_CODE_SAMPLE, 14]], - ]; - - $notImplementErrorMessage = sprintf( - ConfigurableRectorRule::ERROR_NOT_IMPLEMENTS_INTERFACE, - ConfigurableRectorInterface::class - ); - - yield [ - __DIR__ . '/Fixture/NotImplementsAndHasConfiguredCodeSampleRector.php', - [[$notImplementErrorMessage, 12]], - ]; - - yield [__DIR__ . '/Fixture/NotImplementsAndHasNoConfiguredCodeSampleRector.php', []]; - yield [__DIR__ . '/Fixture/ImplementsThroughAbstractClassRector.php', []]; - yield [__DIR__ . '/Fixture/SkipClassNamesWithoutRectorSuffix.php', []]; - yield [__DIR__ . '/Fixture/SkipAbstractRector.php', []]; - } - - protected function getRule(): Rule - { - return $this->getRuleFromConfig(ConfigurableRectorRule::class, __DIR__ . '/config/configured_rule.neon'); - } -} diff --git a/utils/phpstan-extensions/tests/Rule/ConfigurableRectorRule/Fixture/ImplementsAndHasConfiguredCodeSampleRector.php b/utils/phpstan-extensions/tests/Rule/ConfigurableRectorRule/Fixture/ImplementsAndHasConfiguredCodeSampleRector.php deleted file mode 100644 index e47e5cc4ecf..00000000000 --- a/utils/phpstan-extensions/tests/Rule/ConfigurableRectorRule/Fixture/ImplementsAndHasConfiguredCodeSampleRector.php +++ /dev/null @@ -1,39 +0,0 @@ - [ - new StaticCallToFuncCall('OldClass', 'oldMethod', 'new_function'), - ], - ] - ), - ]); - } -} diff --git a/utils/phpstan-extensions/tests/Rule/ConfigurableRectorRule/Fixture/ImplementsAndHasNoConfiguredCodeSampleRector.php b/utils/phpstan-extensions/tests/Rule/ConfigurableRectorRule/Fixture/ImplementsAndHasNoConfiguredCodeSampleRector.php deleted file mode 100644 index 14b223f67f6..00000000000 --- a/utils/phpstan-extensions/tests/Rule/ConfigurableRectorRule/Fixture/ImplementsAndHasNoConfiguredCodeSampleRector.php +++ /dev/null @@ -1,30 +0,0 @@ - [ - new StaticCallToFuncCall('OldClass', 'oldMethod', 'new_function'), - ], - ] - ), - ]); - } -} diff --git a/utils/phpstan-extensions/tests/Rule/ConfigurableRectorRule/Fixture/NotImplementsAndHasConfiguredCodeSampleRector.php b/utils/phpstan-extensions/tests/Rule/ConfigurableRectorRule/Fixture/NotImplementsAndHasConfiguredCodeSampleRector.php deleted file mode 100644 index 383d3c45d4a..00000000000 --- a/utils/phpstan-extensions/tests/Rule/ConfigurableRectorRule/Fixture/NotImplementsAndHasConfiguredCodeSampleRector.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - new StaticCallToFuncCall('OldClass', 'oldMethod', 'new_function'), - ], - ] - ), - ]); - } -} diff --git a/utils/phpstan-extensions/tests/Rule/ConfigurableRectorRule/Fixture/NotImplementsAndHasNoConfiguredCodeSampleRector.php b/utils/phpstan-extensions/tests/Rule/ConfigurableRectorRule/Fixture/NotImplementsAndHasNoConfiguredCodeSampleRector.php deleted file mode 100644 index 01149c365fe..00000000000 --- a/utils/phpstan-extensions/tests/Rule/ConfigurableRectorRule/Fixture/NotImplementsAndHasNoConfiguredCodeSampleRector.php +++ /dev/null @@ -1,24 +0,0 @@ -