Skip to content

Commit

Permalink
Updated Rector to commit b94486c7b2663616901e4fd67047c963af9bd400
Browse files Browse the repository at this point in the history
rectorphp/rector-src@b94486c Simplify name scope factory (#6091)
  • Loading branch information
TomasVotruba committed Jun 30, 2024
1 parent e6124b8 commit 7d2f984
Show file tree
Hide file tree
Showing 4 changed files with 6 additions and 79 deletions.
4 changes: 2 additions & 2 deletions src/Application/VersionResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@ final class VersionResolver
* @api
* @var string
*/
public const PACKAGE_VERSION = '554cad981917c1d402601c9fb158e3be9a66eeb1';
public const PACKAGE_VERSION = 'b94486c7b2663616901e4fd67047c963af9bd400';
/**
* @api
* @var string
*/
public const RELEASE_DATE = '2024-06-30 23:09:24';
public const RELEASE_DATE = '2024-06-30 23:51:05';
/**
* @var int
*/
Expand Down
8 changes: 0 additions & 8 deletions src/BetterPhpDocParser/PhpDocInfo/PhpDocInfo.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagValueNode;
use PHPStan\PhpDocParser\Ast\PhpDoc\PropertyTagValueNode;
use PHPStan\PhpDocParser\Ast\PhpDoc\ReturnTagValueNode;
use PHPStan\PhpDocParser\Ast\PhpDoc\TemplateTagValueNode;
use PHPStan\PhpDocParser\Ast\PhpDoc\VarTagValueNode;
use PHPStan\PhpDocParser\Ast\Type\ConstTypeNode;
use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode;
Expand Down Expand Up @@ -354,13 +353,6 @@ public function getTemplateNames() : array
}
return $templateNames;
}
/**
* @return TemplateTagValueNode[]
*/
public function getTemplateTagValueNodes() : array
{
return $this->phpDocNode->getTemplateTagValues();
}
public function makeMultiLined() : void
{
$this->isSingleLine = \false;
Expand Down
9 changes: 2 additions & 7 deletions src/DependencyInjection/LazyContainerFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
declare (strict_types=1);
namespace Rector\DependencyInjection;

use Rector\PHPStanStaticTypeMapper\TypeMapper\StaticTypeMapper;
use RectorPrefix202406\Doctrine\Inflector\Inflector;
use RectorPrefix202406\Doctrine\Inflector\Rules\English\InflectorFactory;
use RectorPrefix202406\Illuminate\Container\Container;
Expand All @@ -21,7 +22,6 @@
use Rector\Application\Provider\CurrentFileProvider;
use Rector\BetterPhpDocParser\Contract\BasePhpDocNodeVisitorInterface;
use Rector\BetterPhpDocParser\Contract\PhpDocParser\PhpDocNodeDecoratorInterface;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
use Rector\BetterPhpDocParser\PhpDocNodeMapper;
use Rector\BetterPhpDocParser\PhpDocNodeVisitor\ArrayTypePhpDocNodeVisitor;
use Rector\BetterPhpDocParser\PhpDocNodeVisitor\CallableTypePhpDocNodeVisitor;
Expand Down Expand Up @@ -164,7 +164,6 @@
use Rector\StaticTypeMapper\Contract\PhpDocParser\PhpDocTypeMapperInterface;
use Rector\StaticTypeMapper\Contract\PhpParser\PhpParserNodeMapperInterface;
use Rector\StaticTypeMapper\Mapper\PhpParserNodeMapper;
use Rector\StaticTypeMapper\Naming\NameScopeFactory;
use Rector\StaticTypeMapper\PhpDoc\PhpDocTypeMapper;
use Rector\StaticTypeMapper\PhpDocParser\IdentifierTypeMapper;
use Rector\StaticTypeMapper\PhpDocParser\IntersectionTypeMapper;
Expand All @@ -178,7 +177,6 @@
use Rector\StaticTypeMapper\PhpParser\NullableTypeNodeMapper;
use Rector\StaticTypeMapper\PhpParser\StringNodeMapper;
use Rector\StaticTypeMapper\PhpParser\UnionTypeNodeMapper;
use Rector\StaticTypeMapper\StaticTypeMapper;
use RectorPrefix202406\Symfony\Component\Console\Application;
use RectorPrefix202406\Symfony\Component\Console\Command\Command;
use RectorPrefix202406\Symfony\Component\Console\Style\SymfonyStyle;
Expand Down Expand Up @@ -212,7 +210,7 @@ final class LazyContainerFactory
/**
* @var array<class-string<TypeMapperInterface>>
*/
private const TYPE_MAPPER_CLASSES = [AccessoryLiteralStringTypeMapper::class, AccessoryNonEmptyStringTypeMapper::class, AccessoryNonFalsyStringTypeMapper::class, AccessoryNumericStringTypeMapper::class, ArrayTypeMapper::class, BooleanTypeMapper::class, CallableTypeMapper::class, ClassStringTypeMapper::class, ClosureTypeMapper::class, ConditionalTypeForParameterMapper::class, ConditionalTypeMapper::class, FloatTypeMapper::class, GenericClassStringTypeMapper::class, HasMethodTypeMapper::class, HasOffsetTypeMapper::class, HasOffsetValueTypeTypeMapper::class, HasPropertyTypeMapper::class, IntegerTypeMapper::class, \Rector\PHPStanStaticTypeMapper\TypeMapper\IntersectionTypeMapper::class, IterableTypeMapper::class, MixedTypeMapper::class, NeverTypeMapper::class, NonEmptyArrayTypeMapper::class, NullTypeMapper::class, ObjectTypeMapper::class, ObjectWithoutClassTypeMapper::class, OversizedArrayTypeMapper::class, ParentStaticTypeMapper::class, ResourceTypeMapper::class, SelfObjectTypeMapper::class, \Rector\PHPStanStaticTypeMapper\TypeMapper\StaticTypeMapper::class, StrictMixedTypeMapper::class, StringTypeMapper::class, ThisTypeMapper::class, TypeWithClassNameTypeMapper::class, \Rector\PHPStanStaticTypeMapper\TypeMapper\UnionTypeMapper::class, VoidTypeMapper::class];
private const TYPE_MAPPER_CLASSES = [AccessoryLiteralStringTypeMapper::class, AccessoryNonEmptyStringTypeMapper::class, AccessoryNonFalsyStringTypeMapper::class, AccessoryNumericStringTypeMapper::class, ArrayTypeMapper::class, BooleanTypeMapper::class, CallableTypeMapper::class, ClassStringTypeMapper::class, ClosureTypeMapper::class, ConditionalTypeForParameterMapper::class, ConditionalTypeMapper::class, FloatTypeMapper::class, GenericClassStringTypeMapper::class, HasMethodTypeMapper::class, HasOffsetTypeMapper::class, HasOffsetValueTypeTypeMapper::class, HasPropertyTypeMapper::class, IntegerTypeMapper::class, \Rector\PHPStanStaticTypeMapper\TypeMapper\IntersectionTypeMapper::class, IterableTypeMapper::class, MixedTypeMapper::class, NeverTypeMapper::class, NonEmptyArrayTypeMapper::class, NullTypeMapper::class, ObjectTypeMapper::class, ObjectWithoutClassTypeMapper::class, OversizedArrayTypeMapper::class, ParentStaticTypeMapper::class, ResourceTypeMapper::class, SelfObjectTypeMapper::class, StaticTypeMapper::class, StrictMixedTypeMapper::class, StringTypeMapper::class, ThisTypeMapper::class, TypeWithClassNameTypeMapper::class, \Rector\PHPStanStaticTypeMapper\TypeMapper\UnionTypeMapper::class, VoidTypeMapper::class];
/**
* @var array<class-string<PhpDocNodeDecoratorInterface>>
*/
Expand Down Expand Up @@ -349,9 +347,6 @@ public function create() : RectorConfig
$annotationToAttributeMapper = $container->make(AnnotationToAttributeMapper::class);
$arrayItemNodeAnnotationToAttributeMapper->autowire($annotationToAttributeMapper);
});
$rectorConfig->afterResolving(NameScopeFactory::class, static function (NameScopeFactory $nameScopeFactory, Container $container) : void {
$nameScopeFactory->autowire($container->make(PhpDocInfoFactory::class), $container->make(StaticTypeMapper::class));
});
$rectorConfig->afterResolving(PlainValueParser::class, static function (PlainValueParser $plainValueParser, Container $container) : void {
$plainValueParser->autowire($container->make(StaticDoctrineAnnotationParser::class), $container->make(ArrayParser::class));
});
Expand Down
64 changes: 2 additions & 62 deletions src/StaticTypeMapper/Naming/NameScopeFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,14 @@
namespace Rector\StaticTypeMapper\Naming;

use PhpParser\Node;
use PhpParser\Node\Stmt\ClassLike;
use PhpParser\Node\Stmt\GroupUse;
use PhpParser\Node\Stmt\Use_;
use PhpParser\Node\Stmt\UseUse;
use PHPStan\Analyser\NameScope;
use PHPStan\Analyser\Scope;
use PHPStan\Reflection\ClassReflection;
use PHPStan\Type\Generic\TemplateTypeMap;
use PHPStan\Type\Type;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
use Rector\Naming\Naming\UseImportsResolver;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\PhpParser\AstResolver;
use Rector\Reflection\ReflectionResolver;
use Rector\StaticTypeMapper\StaticTypeMapper;
/**
* @see https://github.com/phpstan/phpstan-src/blob/8376548f76e2c845ae047e3010e873015b796818/src/Analyser/NameScope.php#L32
*/
Expand All @@ -29,35 +22,9 @@ final class NameScopeFactory
* @var \Rector\Naming\Naming\UseImportsResolver
*/
private $useImportsResolver;
/**
* @readonly
* @var \Rector\PhpParser\AstResolver
*/
private $astResolver;
/**
* @readonly
* @var \Rector\Reflection\ReflectionResolver
*/
private $reflectionResolver;
/**
* @var \Rector\StaticTypeMapper\StaticTypeMapper
*/
private $staticTypeMapper;
/**
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
*/
private $phpDocInfoFactory;
public function __construct(UseImportsResolver $useImportsResolver, AstResolver $astResolver, ReflectionResolver $reflectionResolver)
public function __construct(UseImportsResolver $useImportsResolver)
{
$this->useImportsResolver = $useImportsResolver;
$this->astResolver = $astResolver;
$this->reflectionResolver = $reflectionResolver;
}
// This is needed to avoid circular references
public function autowire(PhpDocInfoFactory $phpDocInfoFactory, StaticTypeMapper $staticTypeMapper) : void
{
$this->phpDocInfoFactory = $phpDocInfoFactory;
$this->staticTypeMapper = $staticTypeMapper;
}
public function createNameScopeFromNodeWithoutTemplateTypes(Node $node) : NameScope
{
Expand All @@ -76,10 +43,9 @@ public function createNameScopeFromNodeWithoutTemplateTypes(Node $node) : NameSc
public function createNameScopeFromNode(Node $node) : NameScope
{
$nameScope = $this->createNameScopeFromNodeWithoutTemplateTypes($node);
$templateTypeMap = $this->templateTemplateTypeMap($node);
/** @var non-empty-string|null $namespace */
$namespace = $nameScope->getNamespace();
return new NameScope($namespace, $nameScope->getUses(), $nameScope->getClassName(), null, $templateTypeMap);
return new NameScope($namespace, $nameScope->getUses(), $nameScope->getClassName(), null, null);
}
/**
* @param array<Use_|GroupUse> $useNodes
Expand All @@ -100,30 +66,4 @@ private function resolveUseNamesByAlias(array $useNodes) : array
}
return $useNamesByAlias;
}
private function templateTemplateTypeMap(Node $node) : TemplateTypeMap
{
$nodeTemplateTypes = $this->resolveTemplateTypesFromNode($node);
$classTemplateTypes = [];
$classReflection = $this->reflectionResolver->resolveClassReflection($node);
if ($classReflection instanceof ClassReflection) {
$classLike = $this->astResolver->resolveClassFromClassReflection($classReflection);
if ($classLike instanceof ClassLike) {
$classTemplateTypes = $this->resolveTemplateTypesFromNode($classLike);
}
}
$templateTypes = \array_merge($nodeTemplateTypes, $classTemplateTypes);
return new TemplateTypeMap($templateTypes);
}
/**
* @return Type[]
*/
private function resolveTemplateTypesFromNode(Node $node) : array
{
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node);
$templateTypes = [];
foreach ($phpDocInfo->getTemplateTagValueNodes() as $templateTagValueNode) {
$templateTypes[$templateTagValueNode->name] = $this->staticTypeMapper->mapPHPStanPhpDocTypeToPHPStanType($templateTagValueNode, $node);
}
return $templateTypes;
}
}

0 comments on commit 7d2f984

Please sign in to comment.