Updated Rector to commit ed494161ee091037ea7cb791e569abb1bf2ff990

ed494161ee Drop AttributeKey::SCOPE in ClassRenamer (#3806)
This commit is contained in:
Tomas Votruba 2023-05-13 13:41:02 +00:00
parent 059ea469aa
commit c8378bb7c9
7 changed files with 30 additions and 24 deletions

View File

@ -5,6 +5,7 @@ namespace Rector\PostRector\Rector;
use PhpParser\Node;
use PhpParser\Node\Stmt\Namespace_;
use PHPStan\Analyser\Scope;
use Rector\CodingStyle\Application\UseImportsRemover;
use Rector\Core\Configuration\RectorConfigProvider;
use Rector\Core\Configuration\RenamedClassesDataCollector;
@ -12,6 +13,7 @@ use Rector\Core\Contract\Rector\RectorInterface;
use Rector\Core\NonPhpFile\Rector\RenameClassNonPhpRector;
use Rector\Core\PhpParser\Node\BetterNodeFinder;
use Rector\Core\PhpParser\Node\CustomNode\FileWithoutNamespace;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\PostRector\Contract\Rector\PostRectorDependencyInterface;
use Rector\Renaming\NodeManipulator\ClassRenamer;
use Rector\Renaming\Rector\Name\RenameClassRector;
@ -70,7 +72,11 @@ final class ClassRenamingPostRector extends \Rector\PostRector\Rector\AbstractPo
if ($oldToNewClasses === []) {
return null;
}
$result = $this->classRenamer->renameNode($node, $oldToNewClasses);
$originalNode = $node->getAttribute(AttributeKey::ORIGINAL_NODE);
$originalNode = $originalNode ?? $node;
/** @var Scope|null $scope */
$scope = $originalNode->getAttribute(AttributeKey::SCOPE);
$result = $this->classRenamer->renameNode($node, $oldToNewClasses, $scope);
if (!$this->rectorConfigProvider->shouldImportNames()) {
return $result;
}

View File

@ -124,7 +124,7 @@ final class ClassRenamer
/**
* @param array<string, string> $oldToNewClasses
*/
public function renameNode(Node $node, array $oldToNewClasses) : ?Node
public function renameNode(Node $node, array $oldToNewClasses, ?Scope $scope) : ?Node
{
$oldToNewTypes = $this->createOldToNewTypes($node, $oldToNewClasses);
$this->refactorPhpDoc($node, $oldToNewTypes, $oldToNewClasses);
@ -135,7 +135,7 @@ final class ClassRenamer
return $this->refactorNamespace($node, $oldToNewClasses);
}
if ($node instanceof ClassLike) {
return $this->refactorClassLike($node, $oldToNewClasses);
return $this->refactorClassLike($node, $oldToNewClasses, $scope);
}
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node);
if ($phpDocInfo->hasChanged()) {
@ -267,10 +267,10 @@ final class ClassRenamer
/**
* @param array<string, string> $oldToNewClasses
*/
private function refactorClassLike(ClassLike $classLike, array $oldToNewClasses) : ?Node
private function refactorClassLike(ClassLike $classLike, array $oldToNewClasses, ?Scope $scope) : ?Node
{
// rename interfaces
$this->renameClassImplements($classLike, $oldToNewClasses);
$this->renameClassImplements($classLike, $oldToNewClasses, $scope);
$className = (string) $this->nodeNameResolver->getName($classLike);
$newName = $oldToNewClasses[$className] ?? null;
if ($newName === null) {
@ -346,13 +346,11 @@ final class ClassRenamer
/**
* @param string[] $oldToNewClasses
*/
private function renameClassImplements(ClassLike $classLike, array $oldToNewClasses) : void
private function renameClassImplements(ClassLike $classLike, array $oldToNewClasses, ?Scope $scope) : void
{
if (!$classLike instanceof Class_) {
return;
}
/** @var Scope|null $scope */
$scope = $classLike->getAttribute(AttributeKey::SCOPE);
$classLike->implements = \array_unique($classLike->implements);
foreach ($classLike->implements as $key => $implementName) {
$virtualNode = (bool) $implementName->getAttribute(AttributeKey::VIRTUAL_NODE);

View File

@ -10,9 +10,11 @@ use PhpParser\Node\Stmt\ClassLike;
use PhpParser\Node\Stmt\Expression;
use PhpParser\Node\Stmt\Namespace_;
use PhpParser\Node\Stmt\Property;
use PHPStan\Analyser\Scope;
use Rector\Core\Configuration\RenamedClassesDataCollector;
use Rector\Core\Contract\Rector\ConfigurableRectorInterface;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\Rector\AbstractScopeAwareRector;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\Renaming\Helper\RenameClassCallbackHandler;
use Rector\Renaming\NodeManipulator\ClassRenamer;
@ -22,7 +24,7 @@ use RectorPrefix202305\Webmozart\Assert\Assert;
/**
* @see \Rector\Tests\Renaming\Rector\Name\RenameClassRector\RenameClassRectorTest
*/
final class RenameClassRector extends AbstractRector implements ConfigurableRectorInterface
final class RenameClassRector extends AbstractScopeAwareRector implements ConfigurableRectorInterface
{
/**
* @var string
@ -87,14 +89,14 @@ CODE_SAMPLE
/**
* @param FunctionLike|Name|ClassLike|Expression|Namespace_|Property $node
*/
public function refactor(Node $node) : ?Node
public function refactorWithScope(Node $node, Scope $scope) : ?Node
{
$oldToNewClasses = $this->renamedClassesDataCollector->getOldToNewClasses();
if ($oldToNewClasses !== []) {
return $this->classRenamer->renameNode($node, $oldToNewClasses);
return $this->classRenamer->renameNode($node, $oldToNewClasses, $scope);
}
if ($this->renameClassCallbackHandler->hasOldToNewClassCallbacks()) {
return $this->classRenamer->renameNode($node, $oldToNewClasses);
return $this->classRenamer->renameNode($node, $oldToNewClasses, $scope);
}
return null;
}

View File

@ -19,12 +19,12 @@ final class VersionResolver
* @api
* @var string
*/
public const PACKAGE_VERSION = '3f8cc390d07486978300abe3dea9f36eeb017c5a';
public const PACKAGE_VERSION = 'ed494161ee091037ea7cb791e569abb1bf2ff990';
/**
* @api
* @var string
*/
public const RELEASE_DATE = '2023-05-13 13:52:33';
public const RELEASE_DATE = '2023-05-13 14:36:19';
/**
* @var int
*/

2
vendor/autoload.php vendored
View File

@ -22,4 +22,4 @@ if (PHP_VERSION_ID < 50600) {
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInitdbeb53e5fe0c0a574bcb78897e66c21c::getLoader();
return ComposerAutoloaderInitb5ee464d17bb12f1d6a060ed28147208::getLoader();

View File

@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
class ComposerAutoloaderInitdbeb53e5fe0c0a574bcb78897e66c21c
class ComposerAutoloaderInitb5ee464d17bb12f1d6a060ed28147208
{
private static $loader;
@ -22,17 +22,17 @@ class ComposerAutoloaderInitdbeb53e5fe0c0a574bcb78897e66c21c
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInitdbeb53e5fe0c0a574bcb78897e66c21c', 'loadClassLoader'), true, true);
spl_autoload_register(array('ComposerAutoloaderInitb5ee464d17bb12f1d6a060ed28147208', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
spl_autoload_unregister(array('ComposerAutoloaderInitdbeb53e5fe0c0a574bcb78897e66c21c', 'loadClassLoader'));
spl_autoload_unregister(array('ComposerAutoloaderInitb5ee464d17bb12f1d6a060ed28147208', 'loadClassLoader'));
require __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInitdbeb53e5fe0c0a574bcb78897e66c21c::getInitializer($loader));
call_user_func(\Composer\Autoload\ComposerStaticInitb5ee464d17bb12f1d6a060ed28147208::getInitializer($loader));
$loader->setClassMapAuthoritative(true);
$loader->register(true);
$filesToLoad = \Composer\Autoload\ComposerStaticInitdbeb53e5fe0c0a574bcb78897e66c21c::$files;
$filesToLoad = \Composer\Autoload\ComposerStaticInitb5ee464d17bb12f1d6a060ed28147208::$files;
$requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;

View File

@ -4,7 +4,7 @@
namespace Composer\Autoload;
class ComposerStaticInitdbeb53e5fe0c0a574bcb78897e66c21c
class ComposerStaticInitb5ee464d17bb12f1d6a060ed28147208
{
public static $files = array (
'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php',
@ -3111,9 +3111,9 @@ class ComposerStaticInitdbeb53e5fe0c0a574bcb78897e66c21c
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInitdbeb53e5fe0c0a574bcb78897e66c21c::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInitdbeb53e5fe0c0a574bcb78897e66c21c::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInitdbeb53e5fe0c0a574bcb78897e66c21c::$classMap;
$loader->prefixLengthsPsr4 = ComposerStaticInitb5ee464d17bb12f1d6a060ed28147208::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInitb5ee464d17bb12f1d6a060ed28147208::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInitb5ee464d17bb12f1d6a060ed28147208::$classMap;
}, null, ClassLoader::class);
}