Updated Rector to commit a8922f7431c9c9188be501107ee7819e0130da4c

a8922f7431 skip temporarily match + throws downagrade in symfony/console, very unlikely to run
This commit is contained in:
Tomas Votruba 2023-06-11 23:01:39 +00:00
parent 3313a231b7
commit 503a6059f8
1063 changed files with 2996 additions and 1052 deletions

View File

@ -23,32 +23,63 @@ use PHPStan\PhpDocParser\Parser\ConstExprParser;
use PHPStan\PhpDocParser\Parser\PhpDocParser; use PHPStan\PhpDocParser\Parser\PhpDocParser;
use PHPStan\PhpDocParser\Parser\TypeParser; use PHPStan\PhpDocParser\Parser\TypeParser;
use PHPStan\Reflection\ReflectionProvider; use PHPStan\Reflection\ReflectionProvider;
use Rector\BetterPhpDocParser\Contract\BasePhpDocNodeVisitorInterface;
use Rector\BetterPhpDocParser\Contract\PhpDocParser\PhpDocNodeDecoratorInterface;
use Rector\BetterPhpDocParser\PhpDocNodeMapper;
use Rector\BetterPhpDocParser\PhpDocParser\BetterPhpDocParser; use Rector\BetterPhpDocParser\PhpDocParser\BetterPhpDocParser;
use Rector\BetterPhpDocParser\PhpDocParser\BetterTypeParser; use Rector\BetterPhpDocParser\PhpDocParser\BetterTypeParser;
use Rector\Caching\Cache; use Rector\Caching\Cache;
use Rector\Caching\CacheFactory; use Rector\Caching\CacheFactory;
use Rector\Caching\ValueObject\Storage\MemoryCacheStorage; use Rector\Caching\ValueObject\Storage\MemoryCacheStorage;
use Rector\ChangesReporting\Contract\Output\OutputFormatterInterface;
use Rector\CodingStyle\ClassNameImport\ClassNameImportSkipper;
use Rector\CodingStyle\Contract\ClassNameImport\ClassNameImportSkipVoterInterface;
use Rector\Config\RectorConfig; use Rector\Config\RectorConfig;
use Rector\Core\Application\ApplicationFileProcessor;
use Rector\Core\Bootstrap\ExtensionConfigResolver; use Rector\Core\Bootstrap\ExtensionConfigResolver;
use Rector\Core\Configuration\ConfigInitializer;
use Rector\Core\Configuration\Parameter\ParameterProvider; use Rector\Core\Configuration\Parameter\ParameterProvider;
use Rector\Core\Console\Command\ListRulesCommand;
use Rector\Core\Console\ConsoleApplication; use Rector\Core\Console\ConsoleApplication;
use Rector\Core\Console\Output\OutputFormatterCollector;
use Rector\Core\Console\Style\RectorConsoleOutputStyle; use Rector\Core\Console\Style\RectorConsoleOutputStyle;
use Rector\Core\Console\Style\RectorConsoleOutputStyleFactory; use Rector\Core\Console\Style\RectorConsoleOutputStyleFactory;
use Rector\Core\Console\Style\SymfonyStyleFactory; use Rector\Core\Console\Style\SymfonyStyleFactory;
use Rector\Core\Contract\Processor\FileProcessorInterface;
use Rector\Core\Contract\Rector\NonPhpRectorInterface;
use Rector\Core\Contract\Rector\PhpRectorInterface;
use Rector\Core\Contract\Rector\RectorInterface;
use Rector\Core\NonPhpFile\NonPhpFileProcessor;
use Rector\Core\PhpParser\NodeTraverser\RectorNodeTraverser;
use Rector\Core\Validation\Collector\EmptyConfigurableRectorCollector; use Rector\Core\Validation\Collector\EmptyConfigurableRectorCollector;
use Rector\Core\ValueObjectFactory\Application\FileFactory;
use Rector\NodeNameResolver\Contract\NodeNameResolverInterface;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\NodeTypeResolver\Contract\NodeTypeResolverInterface;
use Rector\NodeTypeResolver\DependencyInjection\PHPStanServicesFactory; use Rector\NodeTypeResolver\DependencyInjection\PHPStanServicesFactory;
use Rector\NodeTypeResolver\NodeTypeResolver;
use Rector\NodeTypeResolver\PHPStan\Scope\Contract\NodeVisitor\ScopeResolverNodeVisitorInterface;
use Rector\NodeTypeResolver\PHPStan\Scope\PHPStanNodeScopeResolver;
use Rector\NodeTypeResolver\Reflection\BetterReflection\SourceLocator\IntermediateSourceLocator; use Rector\NodeTypeResolver\Reflection\BetterReflection\SourceLocator\IntermediateSourceLocator;
use Rector\NodeTypeResolver\Reflection\BetterReflection\SourceLocatorProvider\DynamicSourceLocatorProvider; use Rector\NodeTypeResolver\Reflection\BetterReflection\SourceLocatorProvider\DynamicSourceLocatorProvider;
use Rector\Parallel\WorkerRunner;
use Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser; use Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser;
use Rector\PhpDocParser\PhpParser\SmartPhpParser; use Rector\PhpDocParser\PhpParser\SmartPhpParser;
use Rector\PhpDocParser\PhpParser\SmartPhpParserFactory; use Rector\PhpDocParser\PhpParser\SmartPhpParserFactory;
use Rector\PHPStanStaticTypeMapper\Contract\TypeMapperInterface;
use Rector\PHPStanStaticTypeMapper\PHPStanStaticTypeMapper;
use Rector\RectorGenerator\Command\GenerateCommand; use Rector\RectorGenerator\Command\GenerateCommand;
use Rector\RectorGenerator\Command\InitRecipeCommand; use Rector\RectorGenerator\Command\InitRecipeCommand;
use Rector\StaticTypeMapper\Contract\PhpDocParser\PhpDocTypeMapperInterface;
use Rector\StaticTypeMapper\Contract\PhpParser\PhpParserNodeMapperInterface;
use Rector\StaticTypeMapper\Mapper\PhpParserNodeMapper;
use Rector\StaticTypeMapper\PhpDoc\PhpDocTypeMapper;
use Rector\Utils\Command\MissingInSetCommand; use Rector\Utils\Command\MissingInSetCommand;
use Rector\Utils\Command\OutsideAnySetCommand; use Rector\Utils\Command\OutsideAnySetCommand;
use RectorPrefix202306\Symfony\Component\Console\Application; use RectorPrefix202306\Symfony\Component\Console\Application;
use RectorPrefix202306\Symfony\Component\Console\Style\SymfonyStyle; use RectorPrefix202306\Symfony\Component\Console\Style\SymfonyStyle;
use function RectorPrefix202306\Symfony\Component\DependencyInjection\Loader\Configurator\service; use function RectorPrefix202306\Symfony\Component\DependencyInjection\Loader\Configurator\service;
use function RectorPrefix202306\Symfony\Component\DependencyInjection\Loader\Configurator\tagged_iterator;
use RectorPrefix202306\Symfony\Component\Filesystem\Filesystem; use RectorPrefix202306\Symfony\Component\Filesystem\Filesystem;
use RectorPrefix202306\Symplify\EasyParallel\ValueObject\EasyParallelConfig; use RectorPrefix202306\Symplify\EasyParallel\ValueObject\EasyParallelConfig;
return static function (RectorConfig $rectorConfig) : void { return static function (RectorConfig $rectorConfig) : void {
@ -153,4 +184,22 @@ return static function (RectorConfig $rectorConfig) : void {
$services->set(\PHPStan\PhpDocParser\Lexer\Lexer::class); $services->set(\PHPStan\PhpDocParser\Lexer\Lexer::class);
$services->set(TypeParser::class); $services->set(TypeParser::class);
$services->set(ConstExprParser::class); $services->set(ConstExprParser::class);
// tagged services
$services->set(PhpDocNodeMapper::class)->arg('$phpDocNodeVisitors', tagged_iterator(BasePhpDocNodeVisitorInterface::class));
$services->set(BetterPhpDocParser::class)->arg('$phpDocNodeDecorators', tagged_iterator(PhpDocNodeDecoratorInterface::class));
$services->set(NodeTypeResolver::class)->arg('$nodeTypeResolvers', tagged_iterator(NodeTypeResolverInterface::class));
$services->set(PHPStanNodeScopeResolver::class)->arg('$nodeVisitors', tagged_iterator(ScopeResolverNodeVisitorInterface::class));
$services->set(PHPStanStaticTypeMapper::class)->arg('$typeMappers', tagged_iterator(TypeMapperInterface::class));
$services->set(PhpParserNodeMapper::class)->arg('$phpParserNodeMappers', tagged_iterator(PhpParserNodeMapperInterface::class));
$services->set(PhpDocTypeMapper::class)->arg('$phpDocTypeMappers', tagged_iterator(PhpDocTypeMapperInterface::class));
$services->set(ClassNameImportSkipper::class)->arg('$classNameImportSkipVoters', tagged_iterator(ClassNameImportSkipVoterInterface::class));
$services->set(ConfigInitializer::class)->arg('$rectors', tagged_iterator(RectorInterface::class));
$services->set(ListRulesCommand::class)->arg('$rectors', tagged_iterator(RectorInterface::class));
$services->set(OutputFormatterCollector::class)->arg('$outputFormatters', tagged_iterator(OutputFormatterInterface::class));
$services->set(NonPhpFileProcessor::class)->arg('$nonPhpRectors', tagged_iterator(NonPhpRectorInterface::class));
$services->set(RectorNodeTraverser::class)->arg('$phpRectors', tagged_iterator(PhpRectorInterface::class));
$services->set(NodeNameResolver::class)->arg('$nodeNameResolvers', tagged_iterator(NodeNameResolverInterface::class));
$services->set(ApplicationFileProcessor::class)->arg('$fileProcessors', tagged_iterator(FileProcessorInterface::class));
$services->set(FileFactory::class)->arg('$fileProcessors', tagged_iterator(FileProcessorInterface::class));
$services->set(WorkerRunner::class)->arg('$fileProcessors', tagged_iterator(FileProcessorInterface::class));
}; };

View File

@ -6,6 +6,5 @@ use Rector\Config\RectorConfig;
use Rector\Privatization\Rector\Class_\FinalizeClassesWithoutChildrenRector; use Rector\Privatization\Rector\Class_\FinalizeClassesWithoutChildrenRector;
return static function (RectorConfig $rectorConfig): void { return static function (RectorConfig $rectorConfig): void {
$services = $rectorConfig->services(); $rectorConfig->rule(FinalizeClassesWithoutChildrenRector::class);
$services->set(FinalizeClassesWithoutChildrenRector::class);
}; };

View File

@ -8,6 +8,5 @@ use Rector\Config\RectorConfig;
return static function (RectorConfig $rectorConfig): void { return static function (RectorConfig $rectorConfig): void {
$rectorConfig->paths([__DIR__ . '/src/']); $rectorConfig->paths([__DIR__ . '/src/']);
$services = $rectorConfig->services(); $rectorConfig->rule(MakeInheritedMethodVisibilitySameAsParentRector::class);
$services->set(MakeInheritedMethodVisibilitySameAsParentRector::class);
}; };

View File

@ -8,7 +8,13 @@ use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode;
use Stringable; use Stringable;
final class ArrayItemNode implements PhpDocTagValueNode final class ArrayItemNode implements PhpDocTagValueNode
{ {
/**
* @var mixed
*/
public $value; public $value;
/**
* @var mixed
*/
public $key = null; public $key = null;
use NodeAttributes; use NodeAttributes;
/** /**

View File

@ -40,34 +40,42 @@ use Rector\StaticTypeMapper\StaticTypeMapper;
final class PhpDocInfo final class PhpDocInfo
{ {
/** /**
* @readonly
* @var \PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocNode * @var \PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocNode
*/ */
private $phpDocNode; private $phpDocNode;
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\ValueObject\Parser\BetterTokenIterator * @var \Rector\BetterPhpDocParser\ValueObject\Parser\BetterTokenIterator
*/ */
private $betterTokenIterator; private $betterTokenIterator;
/** /**
* @readonly
* @var \Rector\StaticTypeMapper\StaticTypeMapper * @var \Rector\StaticTypeMapper\StaticTypeMapper
*/ */
private $staticTypeMapper; private $staticTypeMapper;
/** /**
* @readonly
* @var \PhpParser\Node * @var \PhpParser\Node
*/ */
private $node; private $node;
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\Annotation\AnnotationNaming * @var \Rector\BetterPhpDocParser\Annotation\AnnotationNaming
*/ */
private $annotationNaming; private $annotationNaming;
/** /**
* @readonly
* @var \Rector\Core\Configuration\CurrentNodeProvider * @var \Rector\Core\Configuration\CurrentNodeProvider
*/ */
private $currentNodeProvider; private $currentNodeProvider;
/** /**
* @readonly
* @var \Rector\ChangesReporting\Collector\RectorChangeCollector * @var \Rector\ChangesReporting\Collector\RectorChangeCollector
*/ */
private $rectorChangeCollector; private $rectorChangeCollector;
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocNodeFinder\PhpDocNodeByTypeFinder * @var \Rector\BetterPhpDocParser\PhpDocNodeFinder\PhpDocNodeByTypeFinder
*/ */
private $phpDocNodeByTypeFinder; private $phpDocNodeByTypeFinder;

View File

@ -22,34 +22,42 @@ use Rector\StaticTypeMapper\StaticTypeMapper;
final class PhpDocInfoFactory final class PhpDocInfoFactory
{ {
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocNodeMapper * @var \Rector\BetterPhpDocParser\PhpDocNodeMapper
*/ */
private $phpDocNodeMapper; private $phpDocNodeMapper;
/** /**
* @readonly
* @var \Rector\Core\Configuration\CurrentNodeProvider * @var \Rector\Core\Configuration\CurrentNodeProvider
*/ */
private $currentNodeProvider; private $currentNodeProvider;
/** /**
* @readonly
* @var \PHPStan\PhpDocParser\Lexer\Lexer * @var \PHPStan\PhpDocParser\Lexer\Lexer
*/ */
private $lexer; private $lexer;
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocParser\BetterPhpDocParser * @var \Rector\BetterPhpDocParser\PhpDocParser\BetterPhpDocParser
*/ */
private $betterPhpDocParser; private $betterPhpDocParser;
/** /**
* @readonly
* @var \Rector\StaticTypeMapper\StaticTypeMapper * @var \Rector\StaticTypeMapper\StaticTypeMapper
*/ */
private $staticTypeMapper; private $staticTypeMapper;
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\Annotation\AnnotationNaming * @var \Rector\BetterPhpDocParser\Annotation\AnnotationNaming
*/ */
private $annotationNaming; private $annotationNaming;
/** /**
* @readonly
* @var \Rector\ChangesReporting\Collector\RectorChangeCollector * @var \Rector\ChangesReporting\Collector\RectorChangeCollector
*/ */
private $rectorChangeCollector; private $rectorChangeCollector;
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocNodeFinder\PhpDocNodeByTypeFinder * @var \Rector\BetterPhpDocParser\PhpDocNodeFinder\PhpDocNodeByTypeFinder
*/ */
private $phpDocNodeByTypeFinder; private $phpDocNodeByTypeFinder;

View File

@ -10,10 +10,12 @@ use Rector\Core\Util\Reflection\PrivatesAccessor;
final class TokenIteratorFactory final class TokenIteratorFactory
{ {
/** /**
* @readonly
* @var \PHPStan\PhpDocParser\Lexer\Lexer * @var \PHPStan\PhpDocParser\Lexer\Lexer
*/ */
private $lexer; private $lexer;
/** /**
* @readonly
* @var \Rector\Core\Util\Reflection\PrivatesAccessor * @var \Rector\Core\Util\Reflection\PrivatesAccessor
*/ */
private $privatesAccessor; private $privatesAccessor;

View File

@ -15,6 +15,7 @@ use Rector\BetterPhpDocParser\ValueObject\PhpDocAttributeKey;
final class PhpDocClassRenamer final class PhpDocClassRenamer
{ {
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocParser\ClassAnnotationMatcher * @var \Rector\BetterPhpDocParser\PhpDocParser\ClassAnnotationMatcher
*/ */
private $classAnnotationMatcher; private $classAnnotationMatcher;

View File

@ -37,30 +37,37 @@ use Rector\TypeDeclaration\PhpDocParser\ParamPhpDocNodeFactory;
final class PhpDocTypeChanger final class PhpDocTypeChanger
{ {
/** /**
* @readonly
* @var \Rector\StaticTypeMapper\StaticTypeMapper * @var \Rector\StaticTypeMapper\StaticTypeMapper
*/ */
private $staticTypeMapper; private $staticTypeMapper;
/** /**
* @readonly
* @var \Rector\NodeTypeResolver\TypeComparator\TypeComparator * @var \Rector\NodeTypeResolver\TypeComparator\TypeComparator
*/ */
private $typeComparator; private $typeComparator;
/** /**
* @readonly
* @var \Rector\TypeDeclaration\PhpDocParser\ParamPhpDocNodeFactory * @var \Rector\TypeDeclaration\PhpDocParser\ParamPhpDocNodeFactory
*/ */
private $paramPhpDocNodeFactory; private $paramPhpDocNodeFactory;
/** /**
* @readonly
* @var \Rector\NodeNameResolver\NodeNameResolver * @var \Rector\NodeNameResolver\NodeNameResolver
*/ */
private $nodeNameResolver; private $nodeNameResolver;
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\Comment\CommentsMerger * @var \Rector\BetterPhpDocParser\Comment\CommentsMerger
*/ */
private $commentsMerger; private $commentsMerger;
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory * @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
*/ */
private $phpDocInfoFactory; private $phpDocInfoFactory;
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\Guard\NewPhpDocFromPHPStanTypeGuard * @var \Rector\BetterPhpDocParser\Guard\NewPhpDocFromPHPStanTypeGuard
*/ */
private $newPhpDocFromPHPStanTypeGuard; private $newPhpDocFromPHPStanTypeGuard;

View File

@ -10,6 +10,7 @@ use Rector\Naming\ValueObject\ParamRename;
final class PropertyDocBlockManipulator final class PropertyDocBlockManipulator
{ {
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory * @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
*/ */
private $phpDocInfoFactory; private $phpDocInfoFactory;

View File

@ -16,25 +16,29 @@ use Rector\PhpDocParser\PhpDocParser\PhpDocNodeVisitor\ParentConnectingPhpDocNod
final class PhpDocNodeMapper final class PhpDocNodeMapper
{ {
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\DataProvider\CurrentTokenIteratorProvider * @var \Rector\BetterPhpDocParser\DataProvider\CurrentTokenIteratorProvider
*/ */
private $currentTokenIteratorProvider; private $currentTokenIteratorProvider;
/** /**
* @readonly
* @var \Rector\PhpDocParser\PhpDocParser\PhpDocNodeVisitor\ParentConnectingPhpDocNodeVisitor * @var \Rector\PhpDocParser\PhpDocParser\PhpDocNodeVisitor\ParentConnectingPhpDocNodeVisitor
*/ */
private $parentConnectingPhpDocNodeVisitor; private $parentConnectingPhpDocNodeVisitor;
/** /**
* @readonly
* @var \Rector\PhpDocParser\PhpDocParser\PhpDocNodeVisitor\CloningPhpDocNodeVisitor * @var \Rector\PhpDocParser\PhpDocParser\PhpDocNodeVisitor\CloningPhpDocNodeVisitor
*/ */
private $cloningPhpDocNodeVisitor; private $cloningPhpDocNodeVisitor;
/** /**
* @var BasePhpDocNodeVisitorInterface[] * @var BasePhpDocNodeVisitorInterface[]
* @readonly
*/ */
private $phpDocNodeVisitors; private $phpDocNodeVisitors;
/** /**
* @param BasePhpDocNodeVisitorInterface[] $phpDocNodeVisitors * @param BasePhpDocNodeVisitorInterface[] $phpDocNodeVisitors
*/ */
public function __construct(CurrentTokenIteratorProvider $currentTokenIteratorProvider, ParentConnectingPhpDocNodeVisitor $parentConnectingPhpDocNodeVisitor, CloningPhpDocNodeVisitor $cloningPhpDocNodeVisitor, array $phpDocNodeVisitors) public function __construct(CurrentTokenIteratorProvider $currentTokenIteratorProvider, ParentConnectingPhpDocNodeVisitor $parentConnectingPhpDocNodeVisitor, CloningPhpDocNodeVisitor $cloningPhpDocNodeVisitor, iterable $phpDocNodeVisitors)
{ {
$this->currentTokenIteratorProvider = $currentTokenIteratorProvider; $this->currentTokenIteratorProvider = $currentTokenIteratorProvider;
$this->parentConnectingPhpDocNodeVisitor = $parentConnectingPhpDocNodeVisitor; $this->parentConnectingPhpDocNodeVisitor = $parentConnectingPhpDocNodeVisitor;

View File

@ -12,6 +12,7 @@ use Rector\PhpDocParser\PhpDocParser\PhpDocNodeVisitor\AbstractPhpDocNodeVisitor
final class ArrayTypePhpDocNodeVisitor extends AbstractPhpDocNodeVisitor implements BasePhpDocNodeVisitorInterface final class ArrayTypePhpDocNodeVisitor extends AbstractPhpDocNodeVisitor implements BasePhpDocNodeVisitorInterface
{ {
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\Attributes\AttributeMirrorer * @var \Rector\BetterPhpDocParser\Attributes\AttributeMirrorer
*/ */
private $attributeMirrorer; private $attributeMirrorer;

View File

@ -12,6 +12,7 @@ use Rector\PhpDocParser\PhpDocParser\PhpDocNodeVisitor\AbstractPhpDocNodeVisitor
final class CallableTypePhpDocNodeVisitor extends AbstractPhpDocNodeVisitor implements BasePhpDocNodeVisitorInterface final class CallableTypePhpDocNodeVisitor extends AbstractPhpDocNodeVisitor implements BasePhpDocNodeVisitorInterface
{ {
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\Attributes\AttributeMirrorer * @var \Rector\BetterPhpDocParser\Attributes\AttributeMirrorer
*/ */
private $attributeMirrorer; private $attributeMirrorer;

View File

@ -12,6 +12,7 @@ use Rector\PhpDocParser\PhpDocParser\PhpDocNodeVisitor\AbstractPhpDocNodeVisitor
final class IntersectionTypeNodePhpDocNodeVisitor extends AbstractPhpDocNodeVisitor implements BasePhpDocNodeVisitorInterface final class IntersectionTypeNodePhpDocNodeVisitor extends AbstractPhpDocNodeVisitor implements BasePhpDocNodeVisitorInterface
{ {
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\Attributes\AttributeMirrorer * @var \Rector\BetterPhpDocParser\Attributes\AttributeMirrorer
*/ */
private $attributeMirrorer; private $attributeMirrorer;

View File

@ -18,10 +18,12 @@ use Rector\PhpDocParser\PhpDocParser\PhpDocNodeVisitor\AbstractPhpDocNodeVisitor
final class TemplatePhpDocNodeVisitor extends AbstractPhpDocNodeVisitor implements BasePhpDocNodeVisitorInterface final class TemplatePhpDocNodeVisitor extends AbstractPhpDocNodeVisitor implements BasePhpDocNodeVisitorInterface
{ {
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\DataProvider\CurrentTokenIteratorProvider * @var \Rector\BetterPhpDocParser\DataProvider\CurrentTokenIteratorProvider
*/ */
private $currentTokenIteratorProvider; private $currentTokenIteratorProvider;
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\Attributes\AttributeMirrorer * @var \Rector\BetterPhpDocParser\Attributes\AttributeMirrorer
*/ */
private $attributeMirrorer; private $attributeMirrorer;

View File

@ -17,10 +17,12 @@ use Rector\PhpDocParser\PhpDocParser\PhpDocNodeVisitor\AbstractPhpDocNodeVisitor
final class UnionTypeNodePhpDocNodeVisitor extends AbstractPhpDocNodeVisitor implements BasePhpDocNodeVisitorInterface final class UnionTypeNodePhpDocNodeVisitor extends AbstractPhpDocNodeVisitor implements BasePhpDocNodeVisitorInterface
{ {
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\DataProvider\CurrentTokenIteratorProvider * @var \Rector\BetterPhpDocParser\DataProvider\CurrentTokenIteratorProvider
*/ */
private $currentTokenIteratorProvider; private $currentTokenIteratorProvider;
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\Attributes\AttributeMirrorer * @var \Rector\BetterPhpDocParser\Attributes\AttributeMirrorer
*/ */
private $attributeMirrorer; private $attributeMirrorer;

View File

@ -28,31 +28,35 @@ use Rector\Core\Util\Reflection\PrivatesAccessor;
final class BetterPhpDocParser extends PhpDocParser final class BetterPhpDocParser extends PhpDocParser
{ {
/** /**
* @readonly
* @var \Rector\Core\Configuration\CurrentNodeProvider * @var \Rector\Core\Configuration\CurrentNodeProvider
*/ */
private $currentNodeProvider; private $currentNodeProvider;
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocInfo\TokenIteratorFactory * @var \Rector\BetterPhpDocParser\PhpDocInfo\TokenIteratorFactory
*/ */
private $tokenIteratorFactory; private $tokenIteratorFactory;
/** /**
* @var PhpDocNodeDecoratorInterface[] * @var PhpDocNodeDecoratorInterface[]
* @readonly
*/ */
private $phpDocNodeDecorators; private $phpDocNodeDecorators;
/** /**
* @var \Rector\Core\Util\Reflection\PrivatesAccessor|null * @readonly
* @var \Rector\Core\Util\Reflection\PrivatesAccessor
*/ */
private $privatesAccessor; private $privatesAccessor;
/** /**
* @param PhpDocNodeDecoratorInterface[] $phpDocNodeDecorators * @param PhpDocNodeDecoratorInterface[] $phpDocNodeDecorators
*/ */
public function __construct(TypeParser $typeParser, ConstExprParser $constExprParser, CurrentNodeProvider $currentNodeProvider, TokenIteratorFactory $tokenIteratorFactory, array $phpDocNodeDecorators, ?PrivatesAccessor $privatesAccessor = null) public function __construct(TypeParser $typeParser, ConstExprParser $constExprParser, CurrentNodeProvider $currentNodeProvider, TokenIteratorFactory $tokenIteratorFactory, iterable $phpDocNodeDecorators, PrivatesAccessor $privatesAccessor = null)
{ {
$privatesAccessor = $privatesAccessor ?? new PrivatesAccessor();
$this->currentNodeProvider = $currentNodeProvider; $this->currentNodeProvider = $currentNodeProvider;
$this->tokenIteratorFactory = $tokenIteratorFactory; $this->tokenIteratorFactory = $tokenIteratorFactory;
$this->phpDocNodeDecorators = $phpDocNodeDecorators; $this->phpDocNodeDecorators = $phpDocNodeDecorators;
$this->privatesAccessor = $privatesAccessor; $this->privatesAccessor = $privatesAccessor;
$this->privatesAccessor = $privatesAccessor ?? new PrivatesAccessor();
parent::__construct($typeParser, $constExprParser); parent::__construct($typeParser, $constExprParser);
} }
public function parse(TokenIterator $tokenIterator) : PhpDocNode public function parse(TokenIterator $tokenIterator) : PhpDocNode

View File

@ -13,6 +13,7 @@ use Rector\BetterPhpDocParser\ValueObject\StartAndEnd;
final class BetterTypeParser extends TypeParser final class BetterTypeParser extends TypeParser
{ {
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocInfo\TokenIteratorFactory * @var \Rector\BetterPhpDocParser\PhpDocInfo\TokenIteratorFactory
*/ */
private $tokenIteratorFactory; private $tokenIteratorFactory;

View File

@ -19,14 +19,17 @@ use Rector\NodeTypeResolver\Node\AttributeKey;
final class ClassAnnotationMatcher final class ClassAnnotationMatcher
{ {
/** /**
* @readonly
* @var \Rector\CodingStyle\NodeAnalyzer\UseImportNameMatcher * @var \Rector\CodingStyle\NodeAnalyzer\UseImportNameMatcher
*/ */
private $useImportNameMatcher; private $useImportNameMatcher;
/** /**
* @readonly
* @var \Rector\Naming\Naming\UseImportsResolver * @var \Rector\Naming\Naming\UseImportsResolver
*/ */
private $useImportsResolver; private $useImportsResolver;
/** /**
* @readonly
* @var \PHPStan\Reflection\ReflectionProvider * @var \PHPStan\Reflection\ReflectionProvider
*/ */
private $reflectionProvider; private $reflectionProvider;

View File

@ -19,10 +19,12 @@ use Rector\StaticTypeMapper\Naming\NameScopeFactory;
final class ConstExprClassNameDecorator implements PhpDocNodeDecoratorInterface final class ConstExprClassNameDecorator implements PhpDocNodeDecoratorInterface
{ {
/** /**
* @readonly
* @var \Rector\StaticTypeMapper\Naming\NameScopeFactory * @var \Rector\StaticTypeMapper\Naming\NameScopeFactory
*/ */
private $nameScopeFactory; private $nameScopeFactory;
/** /**
* @readonly
* @var \Rector\PhpDocParser\PhpDocParser\PhpDocNodeTraverser * @var \Rector\PhpDocParser\PhpDocParser\PhpDocNodeTraverser
*/ */
private $phpDocNodeTraverser; private $phpDocNodeTraverser;

View File

@ -24,18 +24,22 @@ use Rector\Core\Util\StringUtils;
final class DoctrineAnnotationDecorator implements PhpDocNodeDecoratorInterface final class DoctrineAnnotationDecorator implements PhpDocNodeDecoratorInterface
{ {
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocParser\ClassAnnotationMatcher * @var \Rector\BetterPhpDocParser\PhpDocParser\ClassAnnotationMatcher
*/ */
private $classAnnotationMatcher; private $classAnnotationMatcher;
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocParser\StaticDoctrineAnnotationParser * @var \Rector\BetterPhpDocParser\PhpDocParser\StaticDoctrineAnnotationParser
*/ */
private $staticDoctrineAnnotationParser; private $staticDoctrineAnnotationParser;
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocInfo\TokenIteratorFactory * @var \Rector\BetterPhpDocParser\PhpDocInfo\TokenIteratorFactory
*/ */
private $tokenIteratorFactory; private $tokenIteratorFactory;
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\Attributes\AttributeMirrorer * @var \Rector\BetterPhpDocParser\Attributes\AttributeMirrorer
*/ */
private $attributeMirrorer; private $attributeMirrorer;

View File

@ -19,10 +19,12 @@ use Rector\BetterPhpDocParser\ValueObject\PhpDoc\DoctrineAnnotation\CurlyListNod
final class StaticDoctrineAnnotationParser final class StaticDoctrineAnnotationParser
{ {
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocParser\StaticDoctrineAnnotationParser\PlainValueParser * @var \Rector\BetterPhpDocParser\PhpDocParser\StaticDoctrineAnnotationParser\PlainValueParser
*/ */
private $plainValueParser; private $plainValueParser;
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocParser\StaticDoctrineAnnotationParser\ArrayParser * @var \Rector\BetterPhpDocParser\PhpDocParser\StaticDoctrineAnnotationParser\ArrayParser
*/ */
private $arrayParser; private $arrayParser;

View File

@ -15,6 +15,7 @@ use Rector\BetterPhpDocParser\ValueObject\Parser\BetterTokenIterator;
final class ArrayParser final class ArrayParser
{ {
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocParser\StaticDoctrineAnnotationParser\PlainValueParser * @var \Rector\BetterPhpDocParser\PhpDocParser\StaticDoctrineAnnotationParser\PlainValueParser
*/ */
private $plainValueParser; private $plainValueParser;

View File

@ -22,10 +22,12 @@ use RectorPrefix202306\Symfony\Contracts\Service\Attribute\Required;
final class PlainValueParser final class PlainValueParser
{ {
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocParser\ClassAnnotationMatcher * @var \Rector\BetterPhpDocParser\PhpDocParser\ClassAnnotationMatcher
*/ */
private $classAnnotationMatcher; private $classAnnotationMatcher;
/** /**
* @readonly
* @var \Rector\Core\Configuration\CurrentNodeProvider * @var \Rector\Core\Configuration\CurrentNodeProvider
*/ */
private $currentNodeProvider; private $currentNodeProvider;

View File

@ -27,18 +27,22 @@ use Rector\PhpDocParser\PhpDocParser\PhpDocNodeTraverser;
final class PhpDocInfoPrinter final class PhpDocInfoPrinter
{ {
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\Printer\EmptyPhpDocDetector * @var \Rector\BetterPhpDocParser\Printer\EmptyPhpDocDetector
*/ */
private $emptyPhpDocDetector; private $emptyPhpDocDetector;
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\Printer\DocBlockInliner * @var \Rector\BetterPhpDocParser\Printer\DocBlockInliner
*/ */
private $docBlockInliner; private $docBlockInliner;
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\Printer\RemoveNodesStartAndEndResolver * @var \Rector\BetterPhpDocParser\Printer\RemoveNodesStartAndEndResolver
*/ */
private $removeNodesStartAndEndResolver; private $removeNodesStartAndEndResolver;
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocNodeVisitor\ChangedPhpDocNodeVisitor * @var \Rector\BetterPhpDocParser\PhpDocNodeVisitor\ChangedPhpDocNodeVisitor
*/ */
private $changedPhpDocNodeVisitor; private $changedPhpDocNodeVisitor;

View File

@ -10,6 +10,7 @@ final class CurlyListNode extends \Rector\BetterPhpDocParser\ValueObject\PhpDoc\
{ {
/** /**
* @var ArrayItemNode[] * @var ArrayItemNode[]
* @readonly
*/ */
private $arrayItemNodes = []; private $arrayItemNodes = [];
/** /**

View File

@ -9,6 +9,7 @@ use Stringable;
final class SpacingAwareTemplateTagValueNode extends TemplateTagValueNode final class SpacingAwareTemplateTagValueNode extends TemplateTagValueNode
{ {
/** /**
* @readonly
* @var string * @var string
*/ */
private $preposition; private $preposition;

View File

@ -7,10 +7,12 @@ use Rector\Core\Exception\ShouldNotHappenException;
final class StartAndEnd final class StartAndEnd
{ {
/** /**
* @readonly
* @var int * @var int
*/ */
private $start; private $start;
/** /**
* @readonly
* @var int * @var int
*/ */
private $end; private $end;

View File

@ -9,6 +9,7 @@ use Stringable;
final class BracketsAwareUnionTypeNode extends UnionTypeNode final class BracketsAwareUnionTypeNode extends UnionTypeNode
{ {
/** /**
* @readonly
* @var bool * @var bool
*/ */
private $isWrappedInBrackets = \false; private $isWrappedInBrackets = \false;

View File

@ -7,6 +7,7 @@ use Rector\Caching\Contract\ValueObject\Storage\CacheStorageInterface;
final class Cache final class Cache
{ {
/** /**
* @readonly
* @var \Rector\Caching\Contract\ValueObject\Storage\CacheStorageInterface * @var \Rector\Caching\Contract\ValueObject\Storage\CacheStorageInterface
*/ */
private $cacheStorage; private $cacheStorage;

View File

@ -11,10 +11,12 @@ use RectorPrefix202306\Symfony\Component\Filesystem\Filesystem;
final class CacheFactory final class CacheFactory
{ {
/** /**
* @readonly
* @var \Rector\Core\Configuration\Parameter\ParameterProvider * @var \Rector\Core\Configuration\Parameter\ParameterProvider
*/ */
private $parameterProvider; private $parameterProvider;
/** /**
* @readonly
* @var \Symfony\Component\Filesystem\Filesystem * @var \Symfony\Component\Filesystem\Filesystem
*/ */
private $fileSystem; private $fileSystem;

View File

@ -15,14 +15,17 @@ use Rector\Core\Util\FileHasher;
final class ChangedFilesDetector final class ChangedFilesDetector
{ {
/** /**
* @readonly
* @var \Rector\Caching\Config\FileHashComputer * @var \Rector\Caching\Config\FileHashComputer
*/ */
private $fileHashComputer; private $fileHashComputer;
/** /**
* @readonly
* @var \Rector\Caching\Cache * @var \Rector\Caching\Cache
*/ */
private $cache; private $cache;
/** /**
* @readonly
* @var \Rector\Core\Util\FileHasher * @var \Rector\Core\Util\FileHasher
*/ */
private $fileHasher; private $fileHasher;

View File

@ -11,14 +11,17 @@ use Rector\Core\Util\Reflection\PrivatesAccessor;
final class DependencyResolver final class DependencyResolver
{ {
/** /**
* @readonly
* @var \PHPStan\Analyser\NodeScopeResolver * @var \PHPStan\Analyser\NodeScopeResolver
*/ */
private $nodeScopeResolver; private $nodeScopeResolver;
/** /**
* @readonly
* @var PHPStanDependencyResolver * @var PHPStanDependencyResolver
*/ */
private $phpStanDependencyResolver; private $phpStanDependencyResolver;
/** /**
* @readonly
* @var \Rector\Core\Util\Reflection\PrivatesAccessor * @var \Rector\Core\Util\Reflection\PrivatesAccessor
*/ */
private $privatesAccessor; private $privatesAccessor;

View File

@ -7,6 +7,7 @@ use Rector\Caching\Detector\ChangedFilesDetector;
final class UnchangedFilesFilter final class UnchangedFilesFilter
{ {
/** /**
* @readonly
* @var \Rector\Caching\Detector\ChangedFilesDetector * @var \Rector\Caching\Detector\ChangedFilesDetector
*/ */
private $changedFilesDetector; private $changedFilesDetector;

View File

@ -6,14 +6,17 @@ namespace Rector\Caching\ValueObject;
final class CacheFilePaths final class CacheFilePaths
{ {
/** /**
* @readonly
* @var string * @var string
*/ */
private $firstDirectory; private $firstDirectory;
/** /**
* @readonly
* @var string * @var string
*/ */
private $secondDirectory; private $secondDirectory;
/** /**
* @readonly
* @var string * @var string
*/ */
private $filePath; private $filePath;

View File

@ -10,9 +10,14 @@ namespace Rector\Caching\ValueObject;
final class CacheItem final class CacheItem
{ {
/** /**
* @readonly
* @var string * @var string
*/ */
private $variableKey; private $variableKey;
/**
* @readonly
* @var mixed
*/
private $data; private $data;
/** /**
* @param mixed $data * @param mixed $data

View File

@ -17,10 +17,12 @@ use Rector\Core\Exception\Cache\CachingException;
final class FileCacheStorage implements CacheStorageInterface final class FileCacheStorage implements CacheStorageInterface
{ {
/** /**
* @readonly
* @var string * @var string
*/ */
private $directory; private $directory;
/** /**
* @readonly
* @var \Symfony\Component\Filesystem\Filesystem * @var \Symfony\Component\Filesystem\Filesystem
*/ */
private $filesystem; private $filesystem;

View File

@ -7,6 +7,7 @@ use Rector\Core\Contract\Rector\RectorInterface;
final class RectorsChangelogResolver final class RectorsChangelogResolver
{ {
/** /**
* @readonly
* @var \Rector\ChangesReporting\Annotation\AnnotationExtractor * @var \Rector\ChangesReporting\Annotation\AnnotationExtractor
*/ */
private $annotationExtractor; private $annotationExtractor;

View File

@ -12,10 +12,12 @@ use Rector\Core\ValueObject\Application\File;
final class RectorChangeCollector final class RectorChangeCollector
{ {
/** /**
* @readonly
* @var \Rector\Core\Logging\CurrentRectorProvider * @var \Rector\Core\Logging\CurrentRectorProvider
*/ */
private $currentRectorProvider; private $currentRectorProvider;
/** /**
* @readonly
* @var \Rector\Core\Provider\CurrentFileProvider * @var \Rector\Core\Provider\CurrentFileProvider
*/ */
private $currentFileProvider; private $currentFileProvider;

View File

@ -14,10 +14,12 @@ use Rector\Core\ValueObject\Reporting\FileDiff;
final class ConsoleOutputFormatter implements OutputFormatterInterface final class ConsoleOutputFormatter implements OutputFormatterInterface
{ {
/** /**
* @readonly
* @var \Rector\Core\Contract\Console\OutputStyleInterface * @var \Rector\Core\Contract\Console\OutputStyleInterface
*/ */
private $rectorOutputStyle; private $rectorOutputStyle;
/** /**
* @readonly
* @var \Rector\ChangesReporting\Annotation\RectorsChangelogResolver * @var \Rector\ChangesReporting\Annotation\RectorsChangelogResolver
*/ */
private $rectorsChangelogResolver; private $rectorsChangelogResolver;

View File

@ -13,6 +13,7 @@ use Rector\Parallel\ValueObject\Bridge;
final class JsonOutputFormatter implements OutputFormatterInterface final class JsonOutputFormatter implements OutputFormatterInterface
{ {
/** /**
* @readonly
* @var \Rector\ChangesReporting\Annotation\RectorsChangelogResolver * @var \Rector\ChangesReporting\Annotation\RectorsChangelogResolver
*/ */
private $rectorsChangelogResolver; private $rectorsChangelogResolver;

View File

@ -9,6 +9,7 @@ use RectorPrefix202306\Webmozart\Assert\Assert;
final class RectorWithLineChange implements SerializableInterface final class RectorWithLineChange implements SerializableInterface
{ {
/** /**
* @readonly
* @var int * @var int
*/ */
private $line; private $line;

View File

@ -10,10 +10,12 @@ use Rector\Core\ValueObject\Error\SystemError;
final class ErrorFactory final class ErrorFactory
{ {
/** /**
* @readonly
* @var \Rector\Core\Error\ExceptionCorrector * @var \Rector\Core\Error\ExceptionCorrector
*/ */
private $exceptionCorrector; private $exceptionCorrector;
/** /**
* @readonly
* @var \Rector\Core\FileSystem\FilePathHelper * @var \Rector\Core\FileSystem\FilePathHelper
*/ */
private $filePathHelper; private $filePathHelper;

View File

@ -12,14 +12,17 @@ use Rector\Core\ValueObject\Reporting\FileDiff;
final class FileDiffFactory final class FileDiffFactory
{ {
/** /**
* @readonly
* @var \Rector\Core\Differ\DefaultDiffer * @var \Rector\Core\Differ\DefaultDiffer
*/ */
private $defaultDiffer; private $defaultDiffer;
/** /**
* @readonly
* @var \Rector\Core\Console\Formatter\ConsoleDiffer * @var \Rector\Core\Console\Formatter\ConsoleDiffer
*/ */
private $consoleDiffer; private $consoleDiffer;
/** /**
* @readonly
* @var \Rector\Core\FileSystem\FilePathHelper * @var \Rector\Core\FileSystem\FilePathHelper
*/ */
private $filePathHelper; private $filePathHelper;

View File

@ -11,6 +11,7 @@ use Rector\Comments\NodeTraverser\CommentRemovingNodeTraverser;
final class CommentRemover final class CommentRemover
{ {
/** /**
* @readonly
* @var \Rector\Comments\NodeTraverser\CommentRemovingNodeTraverser * @var \Rector\Comments\NodeTraverser\CommentRemovingNodeTraverser
*/ */
private $commentRemovingNodeTraverser; private $commentRemovingNodeTraverser;

View File

@ -12,6 +12,7 @@ use Rector\NodeTypeResolver\Node\AttributeKey;
final class DocBlockUpdater final class DocBlockUpdater
{ {
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\Printer\PhpDocInfoPrinter * @var \Rector\BetterPhpDocParser\Printer\PhpDocInfoPrinter
*/ */
private $phpDocInfoPrinter; private $phpDocInfoPrinter;
@ -35,6 +36,20 @@ final class DocBlockUpdater
// this is needed to remove duplicated // commentsAsText // this is needed to remove duplicated // commentsAsText
$node->setDocComment(new Doc($phpDoc)); $node->setDocComment(new Doc($phpDoc));
} }
public function updateRefactoredNodeWithPhpDocInfo(Node $node) : void
{
// nothing to change? don't save it
$phpDocInfo = $this->resolveChangedPhpDocInfo($node);
if (!$phpDocInfo instanceof PhpDocInfo) {
return;
}
$phpDocNode = $phpDocInfo->getPhpDocNode();
if ($phpDocNode->children === []) {
$this->setCommentsAttribute($node);
return;
}
$node->setDocComment(new Doc((string) $phpDocNode));
}
private function setCommentsAttribute(Node $node) : void private function setCommentsAttribute(Node $node) : void
{ {
if ($node->hasAttribute(AttributeKey::PREVIOUS_DOCS_AS_COMMENTS)) { if ($node->hasAttribute(AttributeKey::PREVIOUS_DOCS_AS_COMMENTS)) {

View File

@ -7,9 +7,13 @@ use Rector\Caching\Contract\ValueObject\Storage\CacheStorageInterface;
use Rector\Core\Configuration\Option; use Rector\Core\Configuration\Option;
use Rector\Core\Configuration\ValueObjectInliner; use Rector\Core\Configuration\ValueObjectInliner;
use Rector\Core\Contract\Rector\ConfigurableRectorInterface; use Rector\Core\Contract\Rector\ConfigurableRectorInterface;
use Rector\Core\Contract\Rector\NonPhpRectorInterface;
use Rector\Core\Contract\Rector\PhpRectorInterface;
use Rector\Core\Contract\Rector\RectorInterface; use Rector\Core\Contract\Rector\RectorInterface;
use Rector\Core\ValueObject\PhpVersion; use Rector\Core\ValueObject\PhpVersion;
use RectorPrefix202306\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; use RectorPrefix202306\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use RectorPrefix202306\Symfony\Component\DependencyInjection\Loader\Configurator\ServiceConfigurator;
use RectorPrefix202306\Symfony\Component\DependencyInjection\Loader\Configurator\ServicesConfigurator;
use RectorPrefix202306\Webmozart\Assert\Assert; use RectorPrefix202306\Webmozart\Assert\Assert;
/** /**
* @api * @api
@ -18,6 +22,10 @@ use RectorPrefix202306\Webmozart\Assert\Assert;
*/ */
final class RectorConfig extends ContainerConfigurator final class RectorConfig extends ContainerConfigurator
{ {
/**
* @var \Symfony\Component\DependencyInjection\Loader\Configurator\ServicesConfigurator|null
*/
private $servicesConfigurator;
/** /**
* @param string[] $paths * @param string[] $paths
*/ */
@ -104,7 +112,6 @@ final class RectorConfig extends ContainerConfigurator
Assert::classExists($rectorClass); Assert::classExists($rectorClass);
Assert::isAOf($rectorClass, RectorInterface::class); Assert::isAOf($rectorClass, RectorInterface::class);
Assert::isAOf($rectorClass, ConfigurableRectorInterface::class); Assert::isAOf($rectorClass, ConfigurableRectorInterface::class);
$services = $this->services();
// decorate with value object inliner so Symfony understands, see https://getrector.org/blog/2020/09/07/how-to-inline-value-object-in-symfony-php-config // decorate with value object inliner so Symfony understands, see https://getrector.org/blog/2020/09/07/how-to-inline-value-object-in-symfony-php-config
\array_walk_recursive($configuration, static function (&$value) { \array_walk_recursive($configuration, static function (&$value) {
if (\is_object($value)) { if (\is_object($value)) {
@ -112,7 +119,9 @@ final class RectorConfig extends ContainerConfigurator
} }
return $value; return $value;
}); });
$services->set($rectorClass)->call('configure', [$configuration]); $servicesConfigurator = $this->getServices();
$rectorService = $servicesConfigurator->set($rectorClass)->call('configure', [$configuration]);
$this->tagRectorService($rectorService, $rectorClass);
} }
/** /**
* @param class-string<RectorInterface> $rectorClass * @param class-string<RectorInterface> $rectorClass
@ -121,8 +130,9 @@ final class RectorConfig extends ContainerConfigurator
{ {
Assert::classExists($rectorClass); Assert::classExists($rectorClass);
Assert::isAOf($rectorClass, RectorInterface::class); Assert::isAOf($rectorClass, RectorInterface::class);
$services = $this->services(); $servicesConfigurator = $this->getServices();
$services->set($rectorClass); $rectorService = $servicesConfigurator->set($rectorClass);
$this->tagRectorService($rectorService, $rectorClass);
} }
/** /**
* @param array<class-string<RectorInterface>> $rectorClasses * @param array<class-string<RectorInterface>> $rectorClasses
@ -216,4 +226,24 @@ final class RectorConfig extends ContainerConfigurator
$parameters->set(Option::INDENT_CHAR, $character); $parameters->set(Option::INDENT_CHAR, $character);
$parameters->set(Option::INDENT_SIZE, $count); $parameters->set(Option::INDENT_SIZE, $count);
} }
private function getServices() : ServicesConfigurator
{
if ($this->servicesConfigurator instanceof ServicesConfigurator) {
return $this->servicesConfigurator;
}
$this->servicesConfigurator = $this->services();
return $this->servicesConfigurator;
}
/**
* @param class-string<RectorInterface|PhpRectorInterface|NonPhpRectorInterface> $rectorClass
*/
private function tagRectorService(ServiceConfigurator $rectorServiceConfigurator, string $rectorClass) : void
{
$rectorServiceConfigurator->tag(RectorInterface::class);
if (\is_a($rectorClass, PhpRectorInterface::class, \true)) {
$rectorServiceConfigurator->tag(PhpRectorInterface::class);
} elseif (\is_a($rectorClass, NonPhpRectorInterface::class, \true)) {
$rectorServiceConfigurator->tag(NonPhpRectorInterface::class);
}
}
} }

View File

@ -12,6 +12,7 @@ use Rector\FamilyTree\Reflection\FamilyRelationsAnalyzer;
final class ClassChildAnalyzer final class ClassChildAnalyzer
{ {
/** /**
* @readonly
* @var \Rector\FamilyTree\Reflection\FamilyRelationsAnalyzer * @var \Rector\FamilyTree\Reflection\FamilyRelationsAnalyzer
*/ */
private $familyRelationsAnalyzer; private $familyRelationsAnalyzer;

View File

@ -14,18 +14,22 @@ use Rector\NodeNameResolver\NodeNameResolver;
final class FamilyRelationsAnalyzer final class FamilyRelationsAnalyzer
{ {
/** /**
* @readonly
* @var \PHPStan\Reflection\ReflectionProvider * @var \PHPStan\Reflection\ReflectionProvider
*/ */
private $reflectionProvider; private $reflectionProvider;
/** /**
* @readonly
* @var \Rector\Core\Util\Reflection\PrivatesAccessor * @var \Rector\Core\Util\Reflection\PrivatesAccessor
*/ */
private $privatesAccessor; private $privatesAccessor;
/** /**
* @readonly
* @var \Rector\NodeNameResolver\NodeNameResolver * @var \Rector\NodeNameResolver\NodeNameResolver
*/ */
private $nodeNameResolver; private $nodeNameResolver;
/** /**
* @readonly
* @var \Rector\Core\PhpParser\AstResolver * @var \Rector\Core\PhpParser\AstResolver
*/ */
private $astResolver; private $astResolver;

View File

@ -15,14 +15,17 @@ use Rector\NodeTypeResolver\NodeScopeAndMetadataDecorator;
final class FileInfoParser final class FileInfoParser
{ {
/** /**
* @readonly
* @var \Rector\NodeTypeResolver\NodeScopeAndMetadataDecorator * @var \Rector\NodeTypeResolver\NodeScopeAndMetadataDecorator
*/ */
private $nodeScopeAndMetadataDecorator; private $nodeScopeAndMetadataDecorator;
/** /**
* @readonly
* @var \Rector\Core\PhpParser\NodeTraverser\FileWithoutNamespaceNodeTraverser * @var \Rector\Core\PhpParser\NodeTraverser\FileWithoutNamespaceNodeTraverser
*/ */
private $fileWithoutNamespaceNodeTraverser; private $fileWithoutNamespaceNodeTraverser;
/** /**
* @readonly
* @var \Rector\Core\PhpParser\Parser\RectorParser * @var \Rector\Core\PhpParser\Parser\RectorParser
*/ */
private $rectorParser; private $rectorParser;

View File

@ -33,22 +33,27 @@ use Rector\NodeTypeResolver\NodeTypeResolver;
final class ArrayCallableMethodMatcher final class ArrayCallableMethodMatcher
{ {
/** /**
* @readonly
* @var \Rector\NodeNameResolver\NodeNameResolver * @var \Rector\NodeNameResolver\NodeNameResolver
*/ */
private $nodeNameResolver; private $nodeNameResolver;
/** /**
* @readonly
* @var \Rector\NodeTypeResolver\NodeTypeResolver * @var \Rector\NodeTypeResolver\NodeTypeResolver
*/ */
private $nodeTypeResolver; private $nodeTypeResolver;
/** /**
* @readonly
* @var \Rector\Core\PhpParser\Node\Value\ValueResolver * @var \Rector\Core\PhpParser\Node\Value\ValueResolver
*/ */
private $valueResolver; private $valueResolver;
/** /**
* @readonly
* @var \PHPStan\Reflection\ReflectionProvider * @var \PHPStan\Reflection\ReflectionProvider
*/ */
private $reflectionProvider; private $reflectionProvider;
/** /**
* @readonly
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder * @var \Rector\Core\PhpParser\Node\BetterNodeFinder
*/ */
private $betterNodeFinder; private $betterNodeFinder;

View File

@ -8,14 +8,17 @@ use Rector\Core\Validation\RectorAssert;
final class ArrayCallable final class ArrayCallable
{ {
/** /**
* @readonly
* @var \PhpParser\Node\Expr * @var \PhpParser\Node\Expr
*/ */
private $callerExpr; private $callerExpr;
/** /**
* @readonly
* @var string * @var string
*/ */
private $class; private $class;
/** /**
* @readonly
* @var string * @var string
*/ */
private $method; private $method;

View File

@ -11,14 +11,17 @@ use Rector\Core\Validation\RectorAssert;
final class ArrayCallableDynamicMethod final class ArrayCallableDynamicMethod
{ {
/** /**
* @readonly
* @var \PhpParser\Node\Expr * @var \PhpParser\Node\Expr
*/ */
private $callerExpr; private $callerExpr;
/** /**
* @readonly
* @var string * @var string
*/ */
private $class; private $class;
/** /**
* @readonly
* @var \PhpParser\Node\Expr * @var \PhpParser\Node\Expr
*/ */
private $method; private $method;

View File

@ -21,19 +21,23 @@ use Rector\NodeTypeResolver\Node\AttributeKey;
final class NodeNameResolver final class NodeNameResolver
{ {
/** /**
* @readonly
* @var \Rector\NodeNameResolver\Regex\RegexPatternDetector * @var \Rector\NodeNameResolver\Regex\RegexPatternDetector
*/ */
private $regexPatternDetector; private $regexPatternDetector;
/** /**
* @readonly
* @var \Rector\CodingStyle\Naming\ClassNaming * @var \Rector\CodingStyle\Naming\ClassNaming
*/ */
private $classNaming; private $classNaming;
/** /**
* @readonly
* @var \Rector\Core\NodeAnalyzer\CallAnalyzer * @var \Rector\Core\NodeAnalyzer\CallAnalyzer
*/ */
private $callAnalyzer; private $callAnalyzer;
/** /**
* @var NodeNameResolverInterface[] * @var NodeNameResolverInterface[]
* @readonly
*/ */
private $nodeNameResolvers = []; private $nodeNameResolvers = [];
/** /**
@ -50,7 +54,7 @@ final class NodeNameResolver
/** /**
* @param NodeNameResolverInterface[] $nodeNameResolvers * @param NodeNameResolverInterface[] $nodeNameResolvers
*/ */
public function __construct(RegexPatternDetector $regexPatternDetector, ClassNaming $classNaming, CallAnalyzer $callAnalyzer, array $nodeNameResolvers = []) public function __construct(RegexPatternDetector $regexPatternDetector, ClassNaming $classNaming, CallAnalyzer $callAnalyzer, iterable $nodeNameResolvers = [])
{ {
$this->regexPatternDetector = $regexPatternDetector; $this->regexPatternDetector = $regexPatternDetector;
$this->classNaming = $classNaming; $this->classNaming = $classNaming;

View File

@ -17,6 +17,7 @@ use Rector\NodeTypeResolver\Node\AttributeKey;
final class FuncCallNameResolver implements NodeNameResolverInterface final class FuncCallNameResolver implements NodeNameResolverInterface
{ {
/** /**
* @readonly
* @var \PHPStan\Reflection\ReflectionProvider * @var \PHPStan\Reflection\ReflectionProvider
*/ */
private $reflectionProvider; private $reflectionProvider;

View File

@ -15,6 +15,7 @@ use Rector\NodeTypeResolver\Node\AttributeKey;
final class NameNameResolver implements NodeNameResolverInterface final class NameNameResolver implements NodeNameResolverInterface
{ {
/** /**
* @readonly
* @var \Rector\NodeNameResolver\NodeNameResolver\FuncCallNameResolver * @var \Rector\NodeNameResolver\NodeNameResolver\FuncCallNameResolver
*/ */
private $funcCallNameResolver; private $funcCallNameResolver;

View File

@ -13,6 +13,7 @@ use Rector\NodeNestingScope\ValueObject\ControlStructure;
final class ContextAnalyzer final class ContextAnalyzer
{ {
/** /**
* @readonly
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder * @var \Rector\Core\PhpParser\Node\BetterNodeFinder
*/ */
private $betterNodeFinder; private $betterNodeFinder;

View File

@ -13,6 +13,7 @@ use Rector\Core\PhpParser\Node\BetterNodeFinder;
final class ParentScopeFinder final class ParentScopeFinder
{ {
/** /**
* @readonly
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder * @var \Rector\Core\PhpParser\Node\BetterNodeFinder
*/ */
private $betterNodeFinder; private $betterNodeFinder;

View File

@ -14,10 +14,12 @@ use Rector\NodeNestingScope\ValueObject\ControlStructure;
final class ScopeNestingComparator final class ScopeNestingComparator
{ {
/** /**
* @readonly
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder * @var \Rector\Core\PhpParser\Node\BetterNodeFinder
*/ */
private $betterNodeFinder; private $betterNodeFinder;
/** /**
* @readonly
* @var \Rector\Core\PhpParser\Comparing\NodeComparator * @var \Rector\Core\PhpParser\Comparing\NodeComparator
*/ */
private $nodeComparator; private $nodeComparator;

View File

@ -25,10 +25,12 @@ use RectorPrefix202306\Symfony\Component\Filesystem\Filesystem;
final class PHPStanServicesFactory final class PHPStanServicesFactory
{ {
/** /**
* @readonly
* @var \Rector\Core\Configuration\Parameter\ParameterProvider * @var \Rector\Core\Configuration\Parameter\ParameterProvider
*/ */
private $parameterProvider; private $parameterProvider;
/** /**
* @readonly
* @var \Rector\NodeTypeResolver\DependencyInjection\PHPStanExtensionsConfigResolver * @var \Rector\NodeTypeResolver\DependencyInjection\PHPStanExtensionsConfigResolver
*/ */
private $phpStanExtensionsConfigResolver; private $phpStanExtensionsConfigResolver;

View File

@ -13,6 +13,7 @@ use Rector\NodeTypeResolver\PHPStan\Scope\PHPStanNodeScopeResolver;
final class NodeScopeAndMetadataDecorator final class NodeScopeAndMetadataDecorator
{ {
/** /**
* @readonly
* @var \Rector\NodeTypeResolver\PHPStan\Scope\PHPStanNodeScopeResolver * @var \Rector\NodeTypeResolver\PHPStan\Scope\PHPStanNodeScopeResolver
*/ */
private $phpStanNodeScopeResolver; private $phpStanNodeScopeResolver;

View File

@ -12,6 +12,7 @@ use PHPStan\Type\TypeTraverser;
final class GenericClassStringTypeCorrector final class GenericClassStringTypeCorrector
{ {
/** /**
* @readonly
* @var \PHPStan\Reflection\ReflectionProvider * @var \PHPStan\Reflection\ReflectionProvider
*/ */
private $reflectionProvider; private $reflectionProvider;

View File

@ -43,26 +43,32 @@ use Rector\TypeDeclaration\PHPStan\ObjectTypeSpecifier;
final class NodeTypeResolver final class NodeTypeResolver
{ {
/** /**
* @readonly
* @var \Rector\TypeDeclaration\PHPStan\ObjectTypeSpecifier * @var \Rector\TypeDeclaration\PHPStan\ObjectTypeSpecifier
*/ */
private $objectTypeSpecifier; private $objectTypeSpecifier;
/** /**
* @readonly
* @var \Rector\Core\NodeAnalyzer\ClassAnalyzer * @var \Rector\Core\NodeAnalyzer\ClassAnalyzer
*/ */
private $classAnalyzer; private $classAnalyzer;
/** /**
* @readonly
* @var \Rector\NodeTypeResolver\NodeTypeCorrector\GenericClassStringTypeCorrector * @var \Rector\NodeTypeResolver\NodeTypeCorrector\GenericClassStringTypeCorrector
*/ */
private $genericClassStringTypeCorrector; private $genericClassStringTypeCorrector;
/** /**
* @readonly
* @var \PHPStan\Reflection\ReflectionProvider * @var \PHPStan\Reflection\ReflectionProvider
*/ */
private $reflectionProvider; private $reflectionProvider;
/** /**
* @readonly
* @var \Rector\NodeTypeResolver\NodeTypeCorrector\AccessoryNonEmptyStringTypeCorrector * @var \Rector\NodeTypeResolver\NodeTypeCorrector\AccessoryNonEmptyStringTypeCorrector
*/ */
private $accessoryNonEmptyStringTypeCorrector; private $accessoryNonEmptyStringTypeCorrector;
/** /**
* @readonly
* @var \Rector\Core\Configuration\RenamedClassesDataCollector * @var \Rector\Core\Configuration\RenamedClassesDataCollector
*/ */
private $renamedClassesDataCollector; private $renamedClassesDataCollector;
@ -73,7 +79,7 @@ final class NodeTypeResolver
/** /**
* @param NodeTypeResolverInterface[] $nodeTypeResolvers * @param NodeTypeResolverInterface[] $nodeTypeResolvers
*/ */
public function __construct(ObjectTypeSpecifier $objectTypeSpecifier, ClassAnalyzer $classAnalyzer, GenericClassStringTypeCorrector $genericClassStringTypeCorrector, ReflectionProvider $reflectionProvider, AccessoryNonEmptyStringTypeCorrector $accessoryNonEmptyStringTypeCorrector, RenamedClassesDataCollector $renamedClassesDataCollector, array $nodeTypeResolvers) public function __construct(ObjectTypeSpecifier $objectTypeSpecifier, ClassAnalyzer $classAnalyzer, GenericClassStringTypeCorrector $genericClassStringTypeCorrector, ReflectionProvider $reflectionProvider, AccessoryNonEmptyStringTypeCorrector $accessoryNonEmptyStringTypeCorrector, RenamedClassesDataCollector $renamedClassesDataCollector, iterable $nodeTypeResolvers)
{ {
$this->objectTypeSpecifier = $objectTypeSpecifier; $this->objectTypeSpecifier = $objectTypeSpecifier;
$this->classAnalyzer = $classAnalyzer; $this->classAnalyzer = $classAnalyzer;

View File

@ -23,6 +23,7 @@ use Rector\NodeTypeResolver\Node\AttributeKey;
final class ClassAndInterfaceTypeResolver implements NodeTypeResolverInterface final class ClassAndInterfaceTypeResolver implements NodeTypeResolverInterface
{ {
/** /**
* @readonly
* @var \Rector\NodeNameResolver\NodeNameResolver * @var \Rector\NodeNameResolver\NodeNameResolver
*/ */
private $nodeNameResolver; private $nodeNameResolver;

View File

@ -19,6 +19,7 @@ use RectorPrefix202306\Symfony\Contracts\Service\Attribute\Required;
final class ClassMethodOrClassConstTypeResolver implements NodeTypeResolverInterface final class ClassMethodOrClassConstTypeResolver implements NodeTypeResolverInterface
{ {
/** /**
* @readonly
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder * @var \Rector\Core\PhpParser\Node\BetterNodeFinder
*/ */
private $betterNodeFinder; private $betterNodeFinder;

View File

@ -26,14 +26,17 @@ use Rector\NodeTypeResolver\Contract\NodeTypeResolverInterface;
final class NameTypeResolver implements NodeTypeResolverInterface final class NameTypeResolver implements NodeTypeResolverInterface
{ {
/** /**
* @readonly
* @var \PHPStan\Reflection\ReflectionProvider * @var \PHPStan\Reflection\ReflectionProvider
*/ */
private $reflectionProvider; private $reflectionProvider;
/** /**
* @readonly
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder * @var \Rector\Core\PhpParser\Node\BetterNodeFinder
*/ */
private $betterNodeFinder; private $betterNodeFinder;
/** /**
* @readonly
* @var \Rector\NodeNameResolver\NodeNameResolver * @var \Rector\NodeNameResolver\NodeNameResolver
*/ */
private $nodeNameResolver; private $nodeNameResolver;

View File

@ -25,10 +25,12 @@ use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
final class NewTypeResolver implements NodeTypeResolverInterface final class NewTypeResolver implements NodeTypeResolverInterface
{ {
/** /**
* @readonly
* @var \Rector\NodeNameResolver\NodeNameResolver * @var \Rector\NodeNameResolver\NodeNameResolver
*/ */
private $nodeNameResolver; private $nodeNameResolver;
/** /**
* @readonly
* @var \Rector\Core\NodeAnalyzer\ClassAnalyzer * @var \Rector\Core\NodeAnalyzer\ClassAnalyzer
*/ */
private $classAnalyzer; private $classAnalyzer;

View File

@ -31,18 +31,22 @@ use RectorPrefix202306\Symfony\Contracts\Service\Attribute\Required;
final class ParamTypeResolver implements NodeTypeResolverInterface final class ParamTypeResolver implements NodeTypeResolverInterface
{ {
/** /**
* @readonly
* @var \Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser * @var \Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser
*/ */
private $simpleCallableNodeTraverser; private $simpleCallableNodeTraverser;
/** /**
* @readonly
* @var \Rector\NodeNameResolver\NodeNameResolver * @var \Rector\NodeNameResolver\NodeNameResolver
*/ */
private $nodeNameResolver; private $nodeNameResolver;
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory * @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
*/ */
private $phpDocInfoFactory; private $phpDocInfoFactory;
/** /**
* @readonly
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder * @var \Rector\Core\PhpParser\Node\BetterNodeFinder
*/ */
private $betterNodeFinder; private $betterNodeFinder;

View File

@ -25,14 +25,17 @@ use RectorPrefix202306\Symfony\Contracts\Service\Attribute\Required;
final class PropertyFetchTypeResolver implements NodeTypeResolverInterface final class PropertyFetchTypeResolver implements NodeTypeResolverInterface
{ {
/** /**
* @readonly
* @var \Rector\NodeNameResolver\NodeNameResolver * @var \Rector\NodeNameResolver\NodeNameResolver
*/ */
private $nodeNameResolver; private $nodeNameResolver;
/** /**
* @readonly
* @var \PHPStan\Reflection\ReflectionProvider * @var \PHPStan\Reflection\ReflectionProvider
*/ */
private $reflectionProvider; private $reflectionProvider;
/** /**
* @readonly
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder * @var \Rector\Core\PhpParser\Node\BetterNodeFinder
*/ */
private $betterNodeFinder; private $betterNodeFinder;

View File

@ -23,10 +23,12 @@ use RectorPrefix202306\Symfony\Contracts\Service\Attribute\Required;
final class StaticCallMethodCallTypeResolver implements NodeTypeResolverInterface final class StaticCallMethodCallTypeResolver implements NodeTypeResolverInterface
{ {
/** /**
* @readonly
* @var \Rector\NodeNameResolver\NodeNameResolver * @var \Rector\NodeNameResolver\NodeNameResolver
*/ */
private $nodeNameResolver; private $nodeNameResolver;
/** /**
* @readonly
* @var \PHPStan\Reflection\ReflectionProvider * @var \PHPStan\Reflection\ReflectionProvider
*/ */
private $reflectionProvider; private $reflectionProvider;

View File

@ -19,6 +19,7 @@ use Rector\NodeTypeResolver\Contract\NodeTypeResolverInterface;
final class TraitTypeResolver implements NodeTypeResolverInterface final class TraitTypeResolver implements NodeTypeResolverInterface
{ {
/** /**
* @readonly
* @var \PHPStan\Reflection\ReflectionProvider * @var \PHPStan\Reflection\ReflectionProvider
*/ */
private $reflectionProvider; private $reflectionProvider;

View File

@ -20,10 +20,12 @@ use Rector\NodeTypeResolver\Node\AttributeKey;
final class VariableTypeResolver implements NodeTypeResolverInterface final class VariableTypeResolver implements NodeTypeResolverInterface
{ {
/** /**
* @readonly
* @var \Rector\NodeNameResolver\NodeNameResolver * @var \Rector\NodeNameResolver\NodeNameResolver
*/ */
private $nodeNameResolver; private $nodeNameResolver;
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory * @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
*/ */
private $phpDocInfoFactory; private $phpDocInfoFactory;

View File

@ -10,6 +10,7 @@ final class ObjectWithoutClassTypeWithParentTypes extends ObjectWithoutClassType
{ {
/** /**
* @var TypeWithClassName[] * @var TypeWithClassName[]
* @readonly
*/ */
private $parentTypes; private $parentTypes;
/** /**

View File

@ -15,6 +15,7 @@ use Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser;
final class ByRefReturnNodeVisitor extends NodeVisitorAbstract implements ScopeResolverNodeVisitorInterface final class ByRefReturnNodeVisitor extends NodeVisitorAbstract implements ScopeResolverNodeVisitorInterface
{ {
/** /**
* @readonly
* @var \Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser * @var \Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser
*/ */
private $simpleCallableNodeTraverser; private $simpleCallableNodeTraverser;

View File

@ -16,6 +16,7 @@ use Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser;
final class ByRefVariableNodeVisitor extends NodeVisitorAbstract implements ScopeResolverNodeVisitorInterface final class ByRefVariableNodeVisitor extends NodeVisitorAbstract implements ScopeResolverNodeVisitorInterface
{ {
/** /**
* @readonly
* @var \Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser * @var \Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser
*/ */
private $simpleCallableNodeTraverser; private $simpleCallableNodeTraverser;

View File

@ -17,6 +17,7 @@ use Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser;
final class GlobalVariableNodeVisitor extends NodeVisitorAbstract implements ScopeResolverNodeVisitorInterface final class GlobalVariableNodeVisitor extends NodeVisitorAbstract implements ScopeResolverNodeVisitorInterface
{ {
/** /**
* @readonly
* @var \Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser * @var \Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser
*/ */
private $simpleCallableNodeTraverser; private $simpleCallableNodeTraverser;

View File

@ -19,6 +19,7 @@ use Rector\NodeTypeResolver\PHPStan\Scope\Contract\NodeVisitor\ScopeResolverNode
final class RemoveDeepChainMethodCallNodeVisitor extends NodeVisitorAbstract implements ScopeResolverNodeVisitorInterface final class RemoveDeepChainMethodCallNodeVisitor extends NodeVisitorAbstract implements ScopeResolverNodeVisitorInterface
{ {
/** /**
* @readonly
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder * @var \Rector\Core\PhpParser\Node\BetterNodeFinder
*/ */
private $betterNodeFinder; private $betterNodeFinder;

View File

@ -17,6 +17,7 @@ use Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser;
final class StaticVariableNodeVisitor extends NodeVisitorAbstract implements ScopeResolverNodeVisitorInterface final class StaticVariableNodeVisitor extends NodeVisitorAbstract implements ScopeResolverNodeVisitorInterface
{ {
/** /**
* @readonly
* @var \Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser * @var \Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser
*/ */
private $simpleCallableNodeTraverser; private $simpleCallableNodeTraverser;

View File

@ -61,38 +61,47 @@ use RectorPrefix202306\Webmozart\Assert\Assert;
final class PHPStanNodeScopeResolver final class PHPStanNodeScopeResolver
{ {
/** /**
* @readonly
* @var \Rector\Caching\Detector\ChangedFilesDetector * @var \Rector\Caching\Detector\ChangedFilesDetector
*/ */
private $changedFilesDetector; private $changedFilesDetector;
/** /**
* @readonly
* @var \Rector\Caching\FileSystem\DependencyResolver * @var \Rector\Caching\FileSystem\DependencyResolver
*/ */
private $dependencyResolver; private $dependencyResolver;
/** /**
* @readonly
* @var \PHPStan\Analyser\NodeScopeResolver * @var \PHPStan\Analyser\NodeScopeResolver
*/ */
private $nodeScopeResolver; private $nodeScopeResolver;
/** /**
* @readonly
* @var \PHPStan\Reflection\ReflectionProvider * @var \PHPStan\Reflection\ReflectionProvider
*/ */
private $reflectionProvider; private $reflectionProvider;
/** /**
* @readonly
* @var \Rector\NodeTypeResolver\PHPStan\Scope\ScopeFactory * @var \Rector\NodeTypeResolver\PHPStan\Scope\ScopeFactory
*/ */
private $scopeFactory; private $scopeFactory;
/** /**
* @readonly
* @var \Rector\Core\Util\Reflection\PrivatesAccessor * @var \Rector\Core\Util\Reflection\PrivatesAccessor
*/ */
private $privatesAccessor; private $privatesAccessor;
/** /**
* @readonly
* @var \Rector\NodeNameResolver\NodeNameResolver * @var \Rector\NodeNameResolver\NodeNameResolver
*/ */
private $nodeNameResolver; private $nodeNameResolver;
/** /**
* @readonly
* @var \Rector\Core\NodeAnalyzer\ClassAnalyzer * @var \Rector\Core\NodeAnalyzer\ClassAnalyzer
*/ */
private $classAnalyzer; private $classAnalyzer;
/** /**
* @readonly
* @var \Rector\Core\PhpParser\NodeTraverser\FileWithoutNamespaceNodeTraverser * @var \Rector\Core\PhpParser\NodeTraverser\FileWithoutNamespaceNodeTraverser
*/ */
private $fileWithoutNamespaceNodeTraverser; private $fileWithoutNamespaceNodeTraverser;
@ -108,7 +117,7 @@ final class PHPStanNodeScopeResolver
/** /**
* @param ScopeResolverNodeVisitorInterface[] $nodeVisitors * @param ScopeResolverNodeVisitorInterface[] $nodeVisitors
*/ */
public function __construct(ChangedFilesDetector $changedFilesDetector, DependencyResolver $dependencyResolver, NodeScopeResolver $nodeScopeResolver, ReflectionProvider $reflectionProvider, array $nodeVisitors, \Rector\NodeTypeResolver\PHPStan\Scope\ScopeFactory $scopeFactory, PrivatesAccessor $privatesAccessor, NodeNameResolver $nodeNameResolver, ClassAnalyzer $classAnalyzer, FileWithoutNamespaceNodeTraverser $fileWithoutNamespaceNodeTraverser) public function __construct(ChangedFilesDetector $changedFilesDetector, DependencyResolver $dependencyResolver, NodeScopeResolver $nodeScopeResolver, ReflectionProvider $reflectionProvider, iterable $nodeVisitors, \Rector\NodeTypeResolver\PHPStan\Scope\ScopeFactory $scopeFactory, PrivatesAccessor $privatesAccessor, NodeNameResolver $nodeNameResolver, ClassAnalyzer $classAnalyzer, FileWithoutNamespaceNodeTraverser $fileWithoutNamespaceNodeTraverser)
{ {
$this->changedFilesDetector = $changedFilesDetector; $this->changedFilesDetector = $changedFilesDetector;
$this->dependencyResolver = $dependencyResolver; $this->dependencyResolver = $dependencyResolver;

View File

@ -9,6 +9,7 @@ use PHPStan\Analyser\ScopeFactory as PHPStanScopeFactory;
final class ScopeFactory final class ScopeFactory
{ {
/** /**
* @readonly
* @var PHPStanScopeFactory * @var PHPStanScopeFactory
*/ */
private $phpStanScopeFactory; private $phpStanScopeFactory;

View File

@ -15,6 +15,7 @@ use Rector\PHPStanStaticTypeMapper\TypeAnalyzer\UnionTypeAnalyzer;
final class StaticTypeAnalyzer final class StaticTypeAnalyzer
{ {
/** /**
* @readonly
* @var \Rector\PHPStanStaticTypeMapper\TypeAnalyzer\UnionTypeAnalyzer * @var \Rector\PHPStanStaticTypeMapper\TypeAnalyzer\UnionTypeAnalyzer
*/ */
private $unionTypeAnalyzer; private $unionTypeAnalyzer;

View File

@ -21,6 +21,7 @@ use Rector\NodeTypeResolver\PHPStan\TypeHasher;
final class TypeFactory final class TypeFactory
{ {
/** /**
* @readonly
* @var \Rector\NodeTypeResolver\PHPStan\TypeHasher * @var \Rector\NodeTypeResolver\PHPStan\TypeHasher
*/ */
private $typeHasher; private $typeHasher;

View File

@ -10,6 +10,7 @@ use Rector\PhpDocParser\PhpDocParser\PhpDocNodeTraverser;
final class DocBlockClassRenamer final class DocBlockClassRenamer
{ {
/** /**
* @readonly
* @var \Rector\NodeTypeResolver\PhpDocNodeVisitor\ClassRenamePhpDocNodeVisitor * @var \Rector\NodeTypeResolver\PhpDocNodeVisitor\ClassRenamePhpDocNodeVisitor
*/ */
private $classRenamePhpDocNodeVisitor; private $classRenamePhpDocNodeVisitor;

View File

@ -10,6 +10,7 @@ use Rector\PhpDocParser\PhpDocParser\PhpDocNodeTraverser;
final class DocBlockNameImporter final class DocBlockNameImporter
{ {
/** /**
* @readonly
* @var \Rector\NodeTypeResolver\PhpDocNodeVisitor\NameImportingPhpDocNodeVisitor * @var \Rector\NodeTypeResolver\PhpDocNodeVisitor\NameImportingPhpDocNodeVisitor
*/ */
private $nameImportingPhpDocNodeVisitor; private $nameImportingPhpDocNodeVisitor;

View File

@ -10,6 +10,7 @@ use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
final class DocBlockTagReplacer final class DocBlockTagReplacer
{ {
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\Annotation\AnnotationNaming * @var \Rector\BetterPhpDocParser\Annotation\AnnotationNaming
*/ */
private $annotationNaming; private $annotationNaming;

View File

@ -12,6 +12,7 @@ use Rector\StaticTypeMapper\StaticTypeMapper;
final class PhpDocTypeRenamer final class PhpDocTypeRenamer
{ {
/** /**
* @readonly
* @var \Rector\StaticTypeMapper\StaticTypeMapper * @var \Rector\StaticTypeMapper\StaticTypeMapper
*/ */
private $staticTypeMapper; private $staticTypeMapper;

View File

@ -29,26 +29,32 @@ use Rector\StaticTypeMapper\ValueObject\Type\ShortenedObjectType;
final class ClassRenamePhpDocNodeVisitor extends AbstractPhpDocNodeVisitor final class ClassRenamePhpDocNodeVisitor extends AbstractPhpDocNodeVisitor
{ {
/** /**
* @readonly
* @var \Rector\StaticTypeMapper\StaticTypeMapper * @var \Rector\StaticTypeMapper\StaticTypeMapper
*/ */
private $staticTypeMapper; private $staticTypeMapper;
/** /**
* @readonly
* @var \Rector\Core\Configuration\CurrentNodeProvider * @var \Rector\Core\Configuration\CurrentNodeProvider
*/ */
private $currentNodeProvider; private $currentNodeProvider;
/** /**
* @readonly
* @var \Rector\Naming\Naming\UseImportsResolver * @var \Rector\Naming\Naming\UseImportsResolver
*/ */
private $useImportsResolver; private $useImportsResolver;
/** /**
* @readonly
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder * @var \Rector\Core\PhpParser\Node\BetterNodeFinder
*/ */
private $betterNodeFinder; private $betterNodeFinder;
/** /**
* @readonly
* @var \Rector\NodeNameResolver\NodeNameResolver * @var \Rector\NodeNameResolver\NodeNameResolver
*/ */
private $nodeNameResolver; private $nodeNameResolver;
/** /**
* @readonly
* @var \Rector\Core\Configuration\RectorConfigProvider * @var \Rector\Core\Configuration\RectorConfigProvider
*/ */
private $rectorConfigProvider; private $rectorConfigProvider;

View File

@ -26,26 +26,32 @@ use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
final class NameImportingPhpDocNodeVisitor extends AbstractPhpDocNodeVisitor final class NameImportingPhpDocNodeVisitor extends AbstractPhpDocNodeVisitor
{ {
/** /**
* @readonly
* @var \Rector\StaticTypeMapper\StaticTypeMapper * @var \Rector\StaticTypeMapper\StaticTypeMapper
*/ */
private $staticTypeMapper; private $staticTypeMapper;
/** /**
* @readonly
* @var \Rector\Core\Configuration\Parameter\ParameterProvider * @var \Rector\Core\Configuration\Parameter\ParameterProvider
*/ */
private $parameterProvider; private $parameterProvider;
/** /**
* @readonly
* @var \Rector\CodingStyle\ClassNameImport\ClassNameImportSkipper * @var \Rector\CodingStyle\ClassNameImport\ClassNameImportSkipper
*/ */
private $classNameImportSkipper; private $classNameImportSkipper;
/** /**
* @readonly
* @var \Rector\PostRector\Collector\UseNodesToAddCollector * @var \Rector\PostRector\Collector\UseNodesToAddCollector
*/ */
private $useNodesToAddCollector; private $useNodesToAddCollector;
/** /**
* @readonly
* @var \Rector\Core\Provider\CurrentFileProvider * @var \Rector\Core\Provider\CurrentFileProvider
*/ */
private $currentFileProvider; private $currentFileProvider;
/** /**
* @readonly
* @var \PHPStan\Reflection\ReflectionProvider * @var \PHPStan\Reflection\ReflectionProvider
*/ */
private $reflectionProvider; private $reflectionProvider;

View File

@ -13,14 +13,17 @@ use Rector\StaticTypeMapper\StaticTypeMapper;
final class UnderscoreRenamePhpDocNodeVisitor extends AbstractPhpDocNodeVisitor final class UnderscoreRenamePhpDocNodeVisitor extends AbstractPhpDocNodeVisitor
{ {
/** /**
* @readonly
* @var \Rector\StaticTypeMapper\StaticTypeMapper * @var \Rector\StaticTypeMapper\StaticTypeMapper
*/ */
private $staticTypeMapper; private $staticTypeMapper;
/** /**
* @readonly
* @var \Rector\Renaming\ValueObject\PseudoNamespaceToNamespace * @var \Rector\Renaming\ValueObject\PseudoNamespaceToNamespace
*/ */
private $pseudoNamespaceToNamespace; private $pseudoNamespaceToNamespace;
/** /**
* @readonly
* @var \PhpParser\Node * @var \PhpParser\Node
*/ */
private $phpNode; private $phpNode;

View File

@ -13,10 +13,12 @@ use Rector\NodeTypeResolver\Reflection\BetterReflection\SourceLocator\Intermedia
final class RectorBetterReflectionSourceLocatorFactory final class RectorBetterReflectionSourceLocatorFactory
{ {
/** /**
* @readonly
* @var \PHPStan\Reflection\BetterReflection\BetterReflectionSourceLocatorFactory * @var \PHPStan\Reflection\BetterReflection\BetterReflectionSourceLocatorFactory
*/ */
private $betterReflectionSourceLocatorFactory; private $betterReflectionSourceLocatorFactory;
/** /**
* @readonly
* @var \Rector\NodeTypeResolver\Reflection\BetterReflection\SourceLocator\IntermediateSourceLocator * @var \Rector\NodeTypeResolver\Reflection\BetterReflection\SourceLocator\IntermediateSourceLocator
*/ */
private $intermediateSourceLocator; private $intermediateSourceLocator;

View File

@ -12,6 +12,7 @@ use Rector\NodeTypeResolver\Reflection\BetterReflection\SourceLocatorProvider\Dy
final class IntermediateSourceLocator implements SourceLocator final class IntermediateSourceLocator implements SourceLocator
{ {
/** /**
* @readonly
* @var \Rector\NodeTypeResolver\Reflection\BetterReflection\SourceLocatorProvider\DynamicSourceLocatorProvider * @var \Rector\NodeTypeResolver\Reflection\BetterReflection\SourceLocatorProvider\DynamicSourceLocatorProvider
*/ */
private $dynamicSourceLocatorProvider; private $dynamicSourceLocatorProvider;

View File

@ -17,10 +17,12 @@ use RectorPrefix202306\Webmozart\Assert\Assert;
final class DynamicSourceLocatorProvider final class DynamicSourceLocatorProvider
{ {
/** /**
* @readonly
* @var \PHPStan\Reflection\BetterReflection\SourceLocator\FileNodesFetcher * @var \PHPStan\Reflection\BetterReflection\SourceLocator\FileNodesFetcher
*/ */
private $fileNodesFetcher; private $fileNodesFetcher;
/** /**
* @readonly
* @var \PHPStan\Php\PhpVersion * @var \PHPStan\Php\PhpVersion
*/ */
private $phpVersion; private $phpVersion;

View File

@ -27,22 +27,27 @@ use Rector\NodeTypeResolver\NodeTypeResolver;
final class ArrayTypeAnalyzer final class ArrayTypeAnalyzer
{ {
/** /**
* @readonly
* @var \Rector\NodeNameResolver\NodeNameResolver * @var \Rector\NodeNameResolver\NodeNameResolver
*/ */
private $nodeNameResolver; private $nodeNameResolver;
/** /**
* @readonly
* @var \Rector\NodeTypeResolver\NodeTypeResolver * @var \Rector\NodeTypeResolver\NodeTypeResolver
*/ */
private $nodeTypeResolver; private $nodeTypeResolver;
/** /**
* @readonly
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder * @var \Rector\Core\PhpParser\Node\BetterNodeFinder
*/ */
private $betterNodeFinder; private $betterNodeFinder;
/** /**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory * @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
*/ */
private $phpDocInfoFactory; private $phpDocInfoFactory;
/** /**
* @readonly
* @var \Rector\Core\Reflection\ReflectionResolver * @var \Rector\Core\Reflection\ReflectionResolver
*/ */
private $reflectionResolver; private $reflectionResolver;

View File

@ -9,10 +9,12 @@ use Rector\NodeTypeResolver\NodeTypeResolver;
final class CountableTypeAnalyzer final class CountableTypeAnalyzer
{ {
/** /**
* @readonly
* @var \Rector\NodeTypeResolver\TypeAnalyzer\ArrayTypeAnalyzer * @var \Rector\NodeTypeResolver\TypeAnalyzer\ArrayTypeAnalyzer
*/ */
private $arrayTypeAnalyzer; private $arrayTypeAnalyzer;
/** /**
* @readonly
* @var \Rector\NodeTypeResolver\NodeTypeResolver * @var \Rector\NodeTypeResolver\NodeTypeResolver
*/ */
private $nodeTypeResolver; private $nodeTypeResolver;

View File

@ -8,6 +8,7 @@ use Rector\NodeTypeResolver\NodeTypeResolver;
final class StringTypeAnalyzer final class StringTypeAnalyzer
{ {
/** /**
* @readonly
* @var \Rector\NodeTypeResolver\NodeTypeResolver * @var \Rector\NodeTypeResolver\NodeTypeResolver
*/ */
private $nodeTypeResolver; private $nodeTypeResolver;

View File

@ -14,6 +14,7 @@ use Rector\PHPStanStaticTypeMapper\TypeAnalyzer\UnionTypeCommonTypeNarrower;
final class ArrayTypeComparator final class ArrayTypeComparator
{ {
/** /**
* @readonly
* @var \Rector\PHPStanStaticTypeMapper\TypeAnalyzer\UnionTypeCommonTypeNarrower * @var \Rector\PHPStanStaticTypeMapper\TypeAnalyzer\UnionTypeCommonTypeNarrower
*/ */
private $unionTypeCommonTypeNarrower; private $unionTypeCommonTypeNarrower;

View File

@ -31,30 +31,37 @@ use Rector\TypeDeclaration\TypeNormalizer;
final class TypeComparator final class TypeComparator
{ {
/** /**
* @readonly
* @var \Rector\NodeTypeResolver\PHPStan\TypeHasher * @var \Rector\NodeTypeResolver\PHPStan\TypeHasher
*/ */
private $typeHasher; private $typeHasher;
/** /**
* @readonly
* @var \Rector\TypeDeclaration\TypeNormalizer * @var \Rector\TypeDeclaration\TypeNormalizer
*/ */
private $typeNormalizer; private $typeNormalizer;
/** /**
* @readonly
* @var \Rector\StaticTypeMapper\StaticTypeMapper * @var \Rector\StaticTypeMapper\StaticTypeMapper
*/ */
private $staticTypeMapper; private $staticTypeMapper;
/** /**
* @readonly
* @var \Rector\NodeTypeResolver\TypeComparator\ArrayTypeComparator * @var \Rector\NodeTypeResolver\TypeComparator\ArrayTypeComparator
*/ */
private $arrayTypeComparator; private $arrayTypeComparator;
/** /**
* @readonly
* @var \Rector\NodeTypeResolver\TypeComparator\ScalarTypeComparator * @var \Rector\NodeTypeResolver\TypeComparator\ScalarTypeComparator
*/ */
private $scalarTypeComparator; private $scalarTypeComparator;
/** /**
* @readonly
* @var \Rector\NodeTypeResolver\PHPStan\Type\TypeFactory * @var \Rector\NodeTypeResolver\PHPStan\Type\TypeFactory
*/ */
private $typeFactory; private $typeFactory;
/** /**
* @readonly
* @var \Rector\Core\Reflection\ReflectionResolver * @var \Rector\Core\Reflection\ReflectionResolver
*/ */
private $reflectionResolver; private $reflectionResolver;

View File

@ -7,10 +7,12 @@ use PHPStan\Type\Type;
final class OldToNewType final class OldToNewType
{ {
/** /**
* @readonly
* @var \PHPStan\Type\Type * @var \PHPStan\Type\Type
*/ */
private $oldType; private $oldType;
/** /**
* @readonly
* @var \PHPStan\Type\Type * @var \PHPStan\Type\Type
*/ */
private $newType; private $newType;

View File

@ -18,12 +18,13 @@ final class PHPStanStaticTypeMapper
{ {
/** /**
* @var TypeMapperInterface[] * @var TypeMapperInterface[]
* @readonly
*/ */
private $typeMappers; private $typeMappers;
/** /**
* @param TypeMapperInterface[] $typeMappers * @param TypeMapperInterface[] $typeMappers
*/ */
public function __construct(array $typeMappers) public function __construct(iterable $typeMappers)
{ {
$this->typeMappers = $typeMappers; $this->typeMappers = $typeMappers;
} }

View File

@ -21,10 +21,12 @@ use Rector\NodeTypeResolver\NodeTypeCorrector\GenericClassStringTypeCorrector;
final class UnionTypeCommonTypeNarrower final class UnionTypeCommonTypeNarrower
{ {
/** /**
* @readonly
* @var \Rector\NodeTypeResolver\NodeTypeCorrector\GenericClassStringTypeCorrector * @var \Rector\NodeTypeResolver\NodeTypeCorrector\GenericClassStringTypeCorrector
*/ */
private $genericClassStringTypeCorrector; private $genericClassStringTypeCorrector;
/** /**
* @readonly
* @var \PHPStan\Reflection\ReflectionProvider * @var \PHPStan\Reflection\ReflectionProvider
*/ */
private $reflectionProvider; private $reflectionProvider;

Some files were not shown because too many files have changed in this diff Show More