Updated Rector to commit 1bf3947959e10f213a04e4eb626fc2ce428add60

1bf3947959 [CodingStyle] Remove usage of Reflection::expandClassName() from nette/utils 4.0 as cause bug on downgrade (#5740)
This commit is contained in:
Tomas Votruba 2024-03-19 10:36:18 +00:00
parent ac990f2560
commit ceff1cad27
2 changed files with 6 additions and 39 deletions

View File

@ -3,7 +3,6 @@
declare (strict_types=1); declare (strict_types=1);
namespace Rector\CodingStyle\ClassNameImport; namespace Rector\CodingStyle\ClassNameImport;
use RectorPrefix202403\Nette\Utils\Reflection;
use PhpParser\Node; use PhpParser\Node;
use PhpParser\Node\Identifier; use PhpParser\Node\Identifier;
use PhpParser\Node\Name; use PhpParser\Node\Name;
@ -12,8 +11,6 @@ use PhpParser\Node\Stmt\ClassLike;
use PhpParser\Node\Stmt\Namespace_; use PhpParser\Node\Stmt\Namespace_;
use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagNode; use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagNode;
use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode; use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode;
use PHPStan\Reflection\ClassReflection;
use PHPStan\Reflection\ReflectionProvider;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo; use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory; use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
use Rector\CodingStyle\NodeAnalyzer\UseImportNameMatcher; use Rector\CodingStyle\NodeAnalyzer\UseImportNameMatcher;
@ -24,7 +21,6 @@ use Rector\PhpDocParser\PhpDocParser\PhpDocNodeTraverser;
use Rector\PhpParser\Node\BetterNodeFinder; use Rector\PhpParser\Node\BetterNodeFinder;
use Rector\PhpParser\Node\CustomNode\FileWithoutNamespace; use Rector\PhpParser\Node\CustomNode\FileWithoutNamespace;
use Rector\ValueObject\Application\File; use Rector\ValueObject\Application\File;
use ReflectionClass;
/** /**
* @see \Rector\Tests\CodingStyle\ClassNameImport\ShortNameResolver\ShortNameResolverTest * @see \Rector\Tests\CodingStyle\ClassNameImport\ShortNameResolver\ShortNameResolverTest
*/ */
@ -40,11 +36,6 @@ final class ShortNameResolver
* @var \Rector\NodeNameResolver\NodeNameResolver * @var \Rector\NodeNameResolver\NodeNameResolver
*/ */
private $nodeNameResolver; private $nodeNameResolver;
/**
* @readonly
* @var \PHPStan\Reflection\ReflectionProvider
*/
private $reflectionProvider;
/** /**
* @readonly * @readonly
* @var \Rector\PhpParser\Node\BetterNodeFinder * @var \Rector\PhpParser\Node\BetterNodeFinder
@ -64,11 +55,10 @@ final class ShortNameResolver
* @var array<string, string[]> * @var array<string, string[]>
*/ */
private $shortNamesByFilePath = []; private $shortNamesByFilePath = [];
public function __construct(SimpleCallableNodeTraverser $simpleCallableNodeTraverser, NodeNameResolver $nodeNameResolver, ReflectionProvider $reflectionProvider, BetterNodeFinder $betterNodeFinder, UseImportNameMatcher $useImportNameMatcher, PhpDocInfoFactory $phpDocInfoFactory) public function __construct(SimpleCallableNodeTraverser $simpleCallableNodeTraverser, NodeNameResolver $nodeNameResolver, BetterNodeFinder $betterNodeFinder, UseImportNameMatcher $useImportNameMatcher, PhpDocInfoFactory $phpDocInfoFactory)
{ {
$this->simpleCallableNodeTraverser = $simpleCallableNodeTraverser; $this->simpleCallableNodeTraverser = $simpleCallableNodeTraverser;
$this->nodeNameResolver = $nodeNameResolver; $this->nodeNameResolver = $nodeNameResolver;
$this->reflectionProvider = $reflectionProvider;
$this->betterNodeFinder = $betterNodeFinder; $this->betterNodeFinder = $betterNodeFinder;
$this->useImportNameMatcher = $useImportNameMatcher; $this->useImportNameMatcher = $useImportNameMatcher;
$this->phpDocInfoFactory = $phpDocInfoFactory; $this->phpDocInfoFactory = $phpDocInfoFactory;
@ -152,7 +142,6 @@ final class ShortNameResolver
*/ */
private function resolveFromStmtsDocBlocks(array $stmts) : array private function resolveFromStmtsDocBlocks(array $stmts) : array
{ {
$classReflection = $this->resolveClassReflection($stmts);
$shortNames = []; $shortNames = [];
$this->simpleCallableNodeTraverser->traverseNodesWithCallable($stmts, function (Node $node) use(&$shortNames) { $this->simpleCallableNodeTraverser->traverseNodesWithCallable($stmts, function (Node $node) use(&$shortNames) {
// speed up for nodes that are // speed up for nodes that are
@ -176,41 +165,19 @@ final class ShortNameResolver
}); });
return null; return null;
}); });
return $this->fqnizeShortNames($shortNames, $classReflection, $stmts); return $this->fqnizeShortNames($shortNames, $stmts);
}
/**
* @param Node[] $stmts
*/
private function resolveClassReflection(array $stmts) : ?ClassReflection
{
$firstClassLike = $this->betterNodeFinder->findFirstInstanceOf($stmts, ClassLike::class);
if (!$firstClassLike instanceof ClassLike) {
return null;
}
$className = (string) $this->nodeNameResolver->getName($firstClassLike);
if (!$this->reflectionProvider->hasClass($className)) {
return null;
}
return $this->reflectionProvider->getClass($className);
} }
/** /**
* @param string[] $shortNames * @param string[] $shortNames
* @param Stmt[] $stmts * @param Stmt[] $stmts
* @return array<string, string> * @return array<string, string>
*/ */
private function fqnizeShortNames(array $shortNames, ?ClassReflection $classReflection, array $stmts) : array private function fqnizeShortNames(array $shortNames, array $stmts) : array
{ {
$shortNamesToFullyQualifiedNames = []; $shortNamesToFullyQualifiedNames = [];
$nativeReflectionClass = $classReflection instanceof ClassReflection && !$classReflection->isAnonymous() ? $classReflection->getNativeReflection() : null;
foreach ($shortNames as $shortName) { foreach ($shortNames as $shortName) {
$stmtsMatchedName = $this->useImportNameMatcher->matchNameWithStmts($shortName, $stmts); $stmtsMatchedName = $this->useImportNameMatcher->matchNameWithStmts($shortName, $stmts);
if ($nativeReflectionClass instanceof ReflectionClass) { $fullyQualifiedName = \is_string($stmtsMatchedName) ? $stmtsMatchedName : $shortName;
$fullyQualifiedName = Reflection::expandClassName($shortName, $nativeReflectionClass);
} elseif (\is_string($stmtsMatchedName)) {
$fullyQualifiedName = $stmtsMatchedName;
} else {
$fullyQualifiedName = $shortName;
}
$shortNamesToFullyQualifiedNames[$shortName] = $fullyQualifiedName; $shortNamesToFullyQualifiedNames[$shortName] = $fullyQualifiedName;
} }
return $shortNamesToFullyQualifiedNames; return $shortNamesToFullyQualifiedNames;

View File

@ -19,12 +19,12 @@ final class VersionResolver
* @api * @api
* @var string * @var string
*/ */
public const PACKAGE_VERSION = 'a78fb1b970be42619495215a2612d032a6ecdbee'; public const PACKAGE_VERSION = '1bf3947959e10f213a04e4eb626fc2ce428add60';
/** /**
* @api * @api
* @var string * @var string
*/ */
public const RELEASE_DATE = '2024-03-19 02:25:58'; public const RELEASE_DATE = '2024-03-19 17:33:59';
/** /**
* @var int * @var int
*/ */