Updated Rector to commit 2869f42534

2869f42534 [Core] Clean up AbstractRector: Apply InfiniteLoopValidator only before refactor (#1773)
This commit is contained in:
Tomas Votruba 2022-02-06 19:33:27 +00:00
parent 4d4eb2f2ad
commit 3fdb783c48
11 changed files with 48 additions and 82 deletions

View File

@ -16,11 +16,11 @@ final class VersionResolver
/**
* @var string
*/
public const PACKAGE_VERSION = 'ca5b89baadea89ea41ce64e79a39f13a5848f5ff';
public const PACKAGE_VERSION = '2869f42534c34807ce45eaeb641ac566cf49662f';
/**
* @var string
*/
public const RELEASE_DATE = '2022-02-06 17:27:29';
public const RELEASE_DATE = '2022-02-07 02:26:23';
public static function resolvePackageVersion() : string
{
$process = new \RectorPrefix20220206\Symfony\Component\Process\Process(['git', 'log', '--pretty="%H"', '-n1', 'HEAD'], __DIR__);

View File

@ -241,7 +241,7 @@ abstract class AbstractRector extends \PhpParser\NodeVisitorAbstract implements
$this->printDebugApplying();
$originalAttributes = $node->getAttributes();
$originalNode = $originalNode ?? clone $node;
if (!$this->infiniteLoopValidator->isValid($node, $originalNode, static::class)) {
if (!$this->infiniteLoopValidator->isValid($originalNode, static::class)) {
return null;
}
$node = $this->refactor($node);
@ -249,12 +249,9 @@ abstract class AbstractRector extends \PhpParser\NodeVisitorAbstract implements
if ($this->isNothingToChange($node)) {
return null;
}
/** @var Node|array<Node> $node */
if (!$this->infiniteLoopValidator->isValid($node, $originalNode, static::class)) {
return null;
}
/** @var Node $originalNode */
if (\is_array($node)) {
/** @var array<Node> $node */
$this->createdByRuleDecorator->decorate($node, $originalNode, static::class);
$originalNodeHash = \spl_object_hash($originalNode);
$this->nodesToReturn[$originalNodeHash] = $node;
@ -265,6 +262,7 @@ abstract class AbstractRector extends \PhpParser\NodeVisitorAbstract implements
return $originalNode;
}
// not changed, return node early
/** @var Node $node */
if (!$this->changedNodeAnalyzer->hasNodeChanged($originalNode, $node)) {
return $node;
}

View File

@ -4,44 +4,12 @@ declare (strict_types=1);
namespace Rector\Core\Validation;
use PhpParser\Node;
use Rector\Core\PhpParser\Comparing\NodeComparator;
use Rector\Core\PhpParser\Node\BetterNodeFinder;
use Rector\NodeTypeResolver\Node\AttributeKey;
final class InfiniteLoopValidator
{
/**
* @readonly
* @var \Rector\Core\PhpParser\Comparing\NodeComparator
*/
private $nodeComparator;
/**
* @readonly
* @var \Rector\Core\PhpParser\Node\BetterNodeFinder
*/
private $betterNodeFinder;
public function __construct(\Rector\Core\PhpParser\Comparing\NodeComparator $nodeComparator, \Rector\Core\PhpParser\Node\BetterNodeFinder $betterNodeFinder)
public function isValid(\PhpParser\Node $originalNode, string $rectorClass) : bool
{
$this->nodeComparator = $nodeComparator;
$this->betterNodeFinder = $betterNodeFinder;
}
/**
* @param mixed[]|\PhpParser\Node $node
*/
public function isValid($node, \PhpParser\Node $originalNode, string $rectorClass) : bool
{
if ($this->nodeComparator->areNodesEqual($node, $originalNode)) {
return \true;
}
$isFound = (bool) $this->betterNodeFinder->findFirst($node, function (\PhpParser\Node $subNode) use($node) : bool {
return $this->nodeComparator->areNodesEqual($node, $subNode);
});
if (!$isFound) {
return \true;
}
$createdByRule = $originalNode->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::CREATED_BY_RULE) ?? [];
if ($createdByRule === []) {
return \true;
}
return !\in_array($rectorClass, $createdByRule, \true);
}
}

2
vendor/autoload.php vendored
View File

@ -4,4 +4,4 @@
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit4b50c3212c6733f12dc6b0c0cacd8625::getLoader();
return ComposerAutoloaderInit76589e52c8b369d44fc3d9b597904d15::getLoader();

View File

@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
class ComposerAutoloaderInit4b50c3212c6733f12dc6b0c0cacd8625
class ComposerAutoloaderInit76589e52c8b369d44fc3d9b597904d15
{
private static $loader;
@ -22,15 +22,15 @@ class ComposerAutoloaderInit4b50c3212c6733f12dc6b0c0cacd8625
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInit4b50c3212c6733f12dc6b0c0cacd8625', 'loadClassLoader'), true, true);
spl_autoload_register(array('ComposerAutoloaderInit76589e52c8b369d44fc3d9b597904d15', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
spl_autoload_unregister(array('ComposerAutoloaderInit4b50c3212c6733f12dc6b0c0cacd8625', 'loadClassLoader'));
spl_autoload_unregister(array('ComposerAutoloaderInit76589e52c8b369d44fc3d9b597904d15', 'loadClassLoader'));
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
if ($useStaticLoader) {
require __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInit4b50c3212c6733f12dc6b0c0cacd8625::getInitializer($loader));
call_user_func(\Composer\Autoload\ComposerStaticInit76589e52c8b369d44fc3d9b597904d15::getInitializer($loader));
} else {
$classMap = require __DIR__ . '/autoload_classmap.php';
if ($classMap) {
@ -42,12 +42,12 @@ class ComposerAutoloaderInit4b50c3212c6733f12dc6b0c0cacd8625
$loader->register(true);
if ($useStaticLoader) {
$includeFiles = Composer\Autoload\ComposerStaticInit4b50c3212c6733f12dc6b0c0cacd8625::$files;
$includeFiles = Composer\Autoload\ComposerStaticInit76589e52c8b369d44fc3d9b597904d15::$files;
} else {
$includeFiles = require __DIR__ . '/autoload_files.php';
}
foreach ($includeFiles as $fileIdentifier => $file) {
composerRequire4b50c3212c6733f12dc6b0c0cacd8625($fileIdentifier, $file);
composerRequire76589e52c8b369d44fc3d9b597904d15($fileIdentifier, $file);
}
return $loader;
@ -59,7 +59,7 @@ class ComposerAutoloaderInit4b50c3212c6733f12dc6b0c0cacd8625
* @param string $file
* @return void
*/
function composerRequire4b50c3212c6733f12dc6b0c0cacd8625($fileIdentifier, $file)
function composerRequire76589e52c8b369d44fc3d9b597904d15($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 ComposerStaticInit4b50c3212c6733f12dc6b0c0cacd8625
class ComposerStaticInit76589e52c8b369d44fc3d9b597904d15
{
public static $files = array (
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
@ -3862,9 +3862,9 @@ class ComposerStaticInit4b50c3212c6733f12dc6b0c0cacd8625
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInit4b50c3212c6733f12dc6b0c0cacd8625::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit4b50c3212c6733f12dc6b0c0cacd8625::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInit4b50c3212c6733f12dc6b0c0cacd8625::$classMap;
$loader->prefixLengthsPsr4 = ComposerStaticInit76589e52c8b369d44fc3d9b597904d15::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit76589e52c8b369d44fc3d9b597904d15::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInit76589e52c8b369d44fc3d9b597904d15::$classMap;
}, null, ClassLoader::class);
}

View File

@ -1012,17 +1012,17 @@
},
{
"name": "phpstan\/phpstan",
"version": "1.4.5",
"version_normalized": "1.4.5.0",
"version": "1.4.6",
"version_normalized": "1.4.6.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/phpstan\/phpstan.git",
"reference": "150d1fbd82fb71ff76b3bd7f6ea6006d89c5f0c3"
"reference": "8a7761f1c520e0dad6e04d862fdc697445457cfe"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/phpstan\/phpstan\/zipball\/150d1fbd82fb71ff76b3bd7f6ea6006d89c5f0c3",
"reference": "150d1fbd82fb71ff76b3bd7f6ea6006d89c5f0c3",
"url": "https:\/\/api.github.com\/repos\/phpstan\/phpstan\/zipball\/8a7761f1c520e0dad6e04d862fdc697445457cfe",
"reference": "8a7761f1c520e0dad6e04d862fdc697445457cfe",
"shasum": ""
},
"require": {
@ -1031,7 +1031,7 @@
"conflict": {
"phpstan\/phpstan-shim": "*"
},
"time": "2022-02-02T19:35:10+00:00",
"time": "2022-02-06T12:56:13+00:00",
"bin": [
"phpstan",
"phpstan.phar"
@ -1055,7 +1055,7 @@
"description": "PHPStan - PHP Static Analysis Tool",
"support": {
"issues": "https:\/\/github.com\/phpstan\/phpstan\/issues",
"source": "https:\/\/github.com\/phpstan\/phpstan\/tree\/1.4.5"
"source": "https:\/\/github.com\/phpstan\/phpstan\/tree\/1.4.6"
},
"funding": [
{
@ -1805,12 +1805,12 @@
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
"RectorPrefix20220206\\React\\Promise\\Timer\\": "src\/"
},
"files": [
"src\/functions_include.php"
]
],
"psr-4": {
"RectorPrefix20220206\\React\\Promise\\Timer\\": "src\/"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
"license": [

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -1,16 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEE0yaA1ZV9xxFr4pwUzxoQjQ565yAFAmH63O0ACgkQzxoQjQ56
5yAGLw//XoKgrdDKO3XKrSlO8NjLC8TQcCqPX2KFbCEhIUC4HXilbjZHsyIsBnSC
VPbyWDKk5f2ugSq6/8zwdvD6VP3JGbP/4sGUxm9Y0N3EojPOEwQXueR1cRMo3EGx
fyzqRMgBJSGr43cSmokv5/mA6QpMWCtlxbMBP+g3t09MwA5ywDL/SylN+k0hXEAx
D5u/lhs+EtZ+q978CUDla1Sf2gToKnli00i3mHTLQMDs/cHQ+gVUXcLjFbIOMbW8
n2+Jp5Y2a/zRCkTgxhfuV9FWj4F43Qu00qAsfzDlltbG55ks7DcLONldP/7Qg9uN
ODiIO6fu3v7oqy4hg3lqeNPwCtNk5Gz9r6rjfuvCA2t/QDnOOIad1X3nPTxfb1i+
UyVjg3/pfLmYmhtEF48jkN6dm8TAPV2HTdv5E8bhzKbxVu/YVcRmXQOnnMs+cNAj
nU3z+SU2wxfnZH50Qw7QILEUIKpm8AfinbA5V1q1hvKsNOTsPZamYYeHvnCqdhDh
0VLFCTrD2j6Azu6CLnf8fqegXdZlEUqkuhgJ8OyZW3Mtuy5RxkYbCUCnMUnTLN5x
Ddz56sx5I0eqqnVIBPhorhZxKZLVaguEAjSuxX4WaaRiUKno7rYzojyFo0pyVa0M
rRd4hlg4bLMk+GRS3fyCZr8mQhb24AzvXTdRhAYg8WdfFTaogeM=
=Gtro
iQIzBAABCgAdFiEE0yaA1ZV9xxFr4pwUzxoQjQ565yAFAmH/xW0ACgkQzxoQjQ56
5yBk0xAAhfBd0NFaBCnqF1964bUN1pw2FNr8sBza4EvaGNki+HsjVRLVFRGMiWYV
RCYZEDW5qfkBF/GvgH5XYjZZR0LPg81CLW2SV0hanmA16KpbfkYMK68xrR8FF/bU
R+4yow0Nkizoa5u7zUWktz+l1tedhcurhrMvghONPWEyqz3e3VlfR2VsjXHSWtsr
XPrR01XK9jqNhA9kMKpzoZiRrmVUCnszj/5D+FCWa4qs7H9tMbhgUXY+X1pPU49V
YUsKFJvIzFgvs4a3tnW6mHHB855Y1grJR9rIy1oqZf7lTiRoqcrZNOO5KxYaDNRU
3zQfJbW2f9XC1sqVMQ8ZtRRLKE7dwfOwURuPILPcQ9vHQR6iiwd81s7EmszKYkr8
Ybc1SCXEoIqlPhSLz7aVrCDsS0DTCQP+MD9Ra7GjS491grHV4yzmqooZsPA4eCVi
6yCSZqRodmIjLij6uSMckesQRzBOJBNjlWX1Wzp4tED54aE6LAw0kX5AsNQVT6TK
CaeypdaNmKUZs3wB5hAO3RIu7aVduj+6+NzuEHHFsLerlSOg1OUbPmMeqmwXRqb3
N0VQORkf4Zu1Uh8ZJpzIq9GPuDaECXEzrI/xBirUhcmq2T4SfqMIDAlbiXA0gFcO
9t9ZScB90IYxNT9pgRXREQ4+bSKp3Qf8rJBq9M4F+4NH6BVJP04=
=jgQV
-----END PGP SIGNATURE-----

View File

@ -9,8 +9,8 @@ $loader = require_once __DIR__.'/autoload.php';
if (!class_exists('AutoloadIncluder', false) && !interface_exists('AutoloadIncluder', false) && !trait_exists('AutoloadIncluder', false)) {
spl_autoload_call('RectorPrefix20220206\AutoloadIncluder');
}
if (!class_exists('ComposerAutoloaderInit4b50c3212c6733f12dc6b0c0cacd8625', false) && !interface_exists('ComposerAutoloaderInit4b50c3212c6733f12dc6b0c0cacd8625', false) && !trait_exists('ComposerAutoloaderInit4b50c3212c6733f12dc6b0c0cacd8625', false)) {
spl_autoload_call('RectorPrefix20220206\ComposerAutoloaderInit4b50c3212c6733f12dc6b0c0cacd8625');
if (!class_exists('ComposerAutoloaderInit76589e52c8b369d44fc3d9b597904d15', false) && !interface_exists('ComposerAutoloaderInit76589e52c8b369d44fc3d9b597904d15', false) && !trait_exists('ComposerAutoloaderInit76589e52c8b369d44fc3d9b597904d15', false)) {
spl_autoload_call('RectorPrefix20220206\ComposerAutoloaderInit76589e52c8b369d44fc3d9b597904d15');
}
if (!class_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false) && !interface_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false) && !trait_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false)) {
spl_autoload_call('RectorPrefix20220206\Helmich\TypoScriptParser\Parser\AST\Statement');
@ -71,9 +71,9 @@ if (!function_exists('print_node')) {
return \RectorPrefix20220206\print_node(...func_get_args());
}
}
if (!function_exists('composerRequire4b50c3212c6733f12dc6b0c0cacd8625')) {
function composerRequire4b50c3212c6733f12dc6b0c0cacd8625() {
return \RectorPrefix20220206\composerRequire4b50c3212c6733f12dc6b0c0cacd8625(...func_get_args());
if (!function_exists('composerRequire76589e52c8b369d44fc3d9b597904d15')) {
function composerRequire76589e52c8b369d44fc3d9b597904d15() {
return \RectorPrefix20220206\composerRequire76589e52c8b369d44fc3d9b597904d15(...func_get_args());
}
}
if (!function_exists('scanPath')) {