mirror of
https://github.com/rectorphp/rector.git
synced 2024-06-25 04:12:36 +00:00
Updated Rector to commit 8a6b70456e536174d88a29c865bed73a6fa89534
8a6b70456e
[Core] Move check CREATED_BY_RULE attribute from AbstractRector into RectifiedAnalyzer (#2665)
This commit is contained in:
parent
4b78498132
commit
f75d563163
|
@ -17,12 +17,12 @@ final class VersionResolver
|
|||
* @api
|
||||
* @var string
|
||||
*/
|
||||
public const PACKAGE_VERSION = '328c43713e7b7ec77675637582117619af012985';
|
||||
public const PACKAGE_VERSION = '8a6b70456e536174d88a29c865bed73a6fa89534';
|
||||
/**
|
||||
* @api
|
||||
* @var string
|
||||
*/
|
||||
public const RELEASE_DATE = '2022-07-14 22:24:30';
|
||||
public const RELEASE_DATE = '2022-07-15 09:58:12';
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
|
|
|
@ -13,6 +13,8 @@ use Rector\NodeTypeResolver\Node\AttributeKey;
|
|||
* This service verify if the Node already rectified with same Rector rule before current Rector rule with condition
|
||||
*
|
||||
* Same Rector Rule <-> Same Node <-> Same File
|
||||
*
|
||||
* For both non-consecutive or consecutive order.
|
||||
*/
|
||||
final class RectifiedAnalyzer
|
||||
{
|
||||
|
@ -31,25 +33,35 @@ final class RectifiedAnalyzer
|
|||
}
|
||||
public function verify(AbstractRector $rector, Node $node, File $currentFile) : ?RectifiedNode
|
||||
{
|
||||
$originalNode = $node->getAttribute(AttributeKey::ORIGINAL_NODE);
|
||||
$rectorClass = \get_class($rector);
|
||||
if ($this->hasCreatedByRule($rectorClass, $node, $originalNode)) {
|
||||
return new RectifiedNode($rectorClass, $node);
|
||||
}
|
||||
$smartFileInfo = $currentFile->getSmartFileInfo();
|
||||
$realPath = $smartFileInfo->getRealPath();
|
||||
if (!isset($this->previousFileWithNodes[$realPath])) {
|
||||
$this->previousFileWithNodes[$realPath] = new RectifiedNode(\get_class($rector), $node);
|
||||
$this->previousFileWithNodes[$realPath] = new RectifiedNode($rectorClass, $node);
|
||||
return null;
|
||||
}
|
||||
/** @var RectifiedNode $rectifiedNode */
|
||||
$rectifiedNode = $this->previousFileWithNodes[$realPath];
|
||||
if ($this->shouldContinue($rectifiedNode, $rector, $node)) {
|
||||
if ($this->shouldContinue($rectifiedNode, $rectorClass, $node, $originalNode)) {
|
||||
return null;
|
||||
}
|
||||
// re-set to refill next
|
||||
$this->previousFileWithNodes[$realPath] = null;
|
||||
return $rectifiedNode;
|
||||
}
|
||||
private function shouldContinue(RectifiedNode $rectifiedNode, AbstractRector $rector, Node $node) : bool
|
||||
private function hasCreatedByRule(string $rectorClass, Node $node, ?Node $originalNode) : bool
|
||||
{
|
||||
$originalNode = $node->getAttribute(AttributeKey::ORIGINAL_NODE);
|
||||
if ($rectifiedNode->getRectorClass() === \get_class($rector) && $rectifiedNode->getNode() === $node) {
|
||||
$originalNode = $originalNode ?? $node;
|
||||
$createdByRule = $originalNode->getAttribute(AttributeKey::CREATED_BY_RULE) ?? [];
|
||||
return \in_array($rectorClass, $createdByRule, \true);
|
||||
}
|
||||
private function shouldContinue(RectifiedNode $rectifiedNode, string $rectorClass, Node $node, ?Node $originalNode) : bool
|
||||
{
|
||||
if ($rectifiedNode->getRectorClass() === $rectorClass && $rectifiedNode->getNode() === $node) {
|
||||
/**
|
||||
* allow to revisit the Node with same Rector rule if Node is changed by other rule
|
||||
*/
|
||||
|
|
|
@ -197,12 +197,6 @@ CODE_SAMPLE;
|
|||
if ($this->shouldSkipCurrentNode($node)) {
|
||||
return null;
|
||||
}
|
||||
/** @var Node $originalNode */
|
||||
$originalNode = $node->getAttribute(AttributeKey::ORIGINAL_NODE) ?? clone $node;
|
||||
$createdByRule = $originalNode->getAttribute(AttributeKey::CREATED_BY_RULE) ?? [];
|
||||
if (\in_array(static::class, $createdByRule, \true)) {
|
||||
return null;
|
||||
}
|
||||
$this->currentRectorProvider->changeCurrentRector($this);
|
||||
// for PHP doc info factory and change notifier
|
||||
$this->currentNodeProvider->setNode($node);
|
||||
|
@ -216,6 +210,8 @@ CODE_SAMPLE;
|
|||
$errorMessage = \sprintf(self::EMPTY_NODE_ARRAY_MESSAGE, static::class);
|
||||
throw new ShouldNotHappenException($errorMessage);
|
||||
}
|
||||
/** @var Node $originalNode */
|
||||
$originalNode = $node->getAttribute(AttributeKey::ORIGINAL_NODE) ?? $node;
|
||||
/** @var Node[]|Node $refactoredNode */
|
||||
$this->createdByRuleDecorator->decorate($refactoredNode, $originalNode, static::class);
|
||||
$rectorWithLineChange = new RectorWithLineChange(\get_class($this), $originalNode->getLine());
|
||||
|
|
2
vendor/autoload.php
vendored
2
vendor/autoload.php
vendored
|
@ -9,4 +9,4 @@ if (PHP_VERSION_ID < 50600) {
|
|||
|
||||
require_once __DIR__ . '/composer/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInit620fa9784553f33f93731534d546bb25::getLoader();
|
||||
return ComposerAutoloaderInit2f41ba1298ddb3612058eed888b9022a::getLoader();
|
||||
|
|
14
vendor/composer/autoload_real.php
vendored
14
vendor/composer/autoload_real.php
vendored
|
@ -2,7 +2,7 @@
|
|||
|
||||
// autoload_real.php @generated by Composer
|
||||
|
||||
class ComposerAutoloaderInit620fa9784553f33f93731534d546bb25
|
||||
class ComposerAutoloaderInit2f41ba1298ddb3612058eed888b9022a
|
||||
{
|
||||
private static $loader;
|
||||
|
||||
|
@ -22,19 +22,19 @@ class ComposerAutoloaderInit620fa9784553f33f93731534d546bb25
|
|||
return self::$loader;
|
||||
}
|
||||
|
||||
spl_autoload_register(array('ComposerAutoloaderInit620fa9784553f33f93731534d546bb25', 'loadClassLoader'), true, true);
|
||||
spl_autoload_register(array('ComposerAutoloaderInit2f41ba1298ddb3612058eed888b9022a', 'loadClassLoader'), true, true);
|
||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInit620fa9784553f33f93731534d546bb25', 'loadClassLoader'));
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInit2f41ba1298ddb3612058eed888b9022a', 'loadClassLoader'));
|
||||
|
||||
require __DIR__ . '/autoload_static.php';
|
||||
call_user_func(\Composer\Autoload\ComposerStaticInit620fa9784553f33f93731534d546bb25::getInitializer($loader));
|
||||
call_user_func(\Composer\Autoload\ComposerStaticInit2f41ba1298ddb3612058eed888b9022a::getInitializer($loader));
|
||||
|
||||
$loader->setClassMapAuthoritative(true);
|
||||
$loader->register(true);
|
||||
|
||||
$includeFiles = \Composer\Autoload\ComposerStaticInit620fa9784553f33f93731534d546bb25::$files;
|
||||
$includeFiles = \Composer\Autoload\ComposerStaticInit2f41ba1298ddb3612058eed888b9022a::$files;
|
||||
foreach ($includeFiles as $fileIdentifier => $file) {
|
||||
composerRequire620fa9784553f33f93731534d546bb25($fileIdentifier, $file);
|
||||
composerRequire2f41ba1298ddb3612058eed888b9022a($fileIdentifier, $file);
|
||||
}
|
||||
|
||||
return $loader;
|
||||
|
@ -46,7 +46,7 @@ class ComposerAutoloaderInit620fa9784553f33f93731534d546bb25
|
|||
* @param string $file
|
||||
* @return void
|
||||
*/
|
||||
function composerRequire620fa9784553f33f93731534d546bb25($fileIdentifier, $file)
|
||||
function composerRequire2f41ba1298ddb3612058eed888b9022a($fileIdentifier, $file)
|
||||
{
|
||||
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
||||
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
||||
|
|
8
vendor/composer/autoload_static.php
vendored
8
vendor/composer/autoload_static.php
vendored
|
@ -4,7 +4,7 @@
|
|||
|
||||
namespace Composer\Autoload;
|
||||
|
||||
class ComposerStaticInit620fa9784553f33f93731534d546bb25
|
||||
class ComposerStaticInit2f41ba1298ddb3612058eed888b9022a
|
||||
{
|
||||
public static $files = array (
|
||||
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
||||
|
@ -3416,9 +3416,9 @@ class ComposerStaticInit620fa9784553f33f93731534d546bb25
|
|||
public static function getInitializer(ClassLoader $loader)
|
||||
{
|
||||
return \Closure::bind(function () use ($loader) {
|
||||
$loader->prefixLengthsPsr4 = ComposerStaticInit620fa9784553f33f93731534d546bb25::$prefixLengthsPsr4;
|
||||
$loader->prefixDirsPsr4 = ComposerStaticInit620fa9784553f33f93731534d546bb25::$prefixDirsPsr4;
|
||||
$loader->classMap = ComposerStaticInit620fa9784553f33f93731534d546bb25::$classMap;
|
||||
$loader->prefixLengthsPsr4 = ComposerStaticInit2f41ba1298ddb3612058eed888b9022a::$prefixLengthsPsr4;
|
||||
$loader->prefixDirsPsr4 = ComposerStaticInit2f41ba1298ddb3612058eed888b9022a::$prefixDirsPsr4;
|
||||
$loader->classMap = ComposerStaticInit2f41ba1298ddb3612058eed888b9022a::$classMap;
|
||||
|
||||
}, null, ClassLoader::class);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user