From 1725b8b7fd82f8bec63b6f237778f4b3e9ebc609 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sat, 22 Jan 2022 16:02:37 +0000 Subject: [PATCH] Updated Rector to commit 081958a2ceb52dfae66457910750c1126cb97358 https://github.com/rectorphp/rector-src/commit/081958a2ceb52dfae66457910750c1126cb97358 [DeadCode] Handle RemoveUnusedConstructorParamRector + RemoveUnusedPrivatePropertyRector (#1714) --- .../RemoveUnusedConstructorParamRector.php | 26 ++++++++-- .../NodeManipulator/ComplexNodeRemover.php | 50 ++++++++++--------- src/Application/VersionResolver.php | 4 +- vendor/autoload.php | 2 +- vendor/composer/autoload_real.php | 14 +++--- vendor/composer/autoload_static.php | 8 +-- vendor/scoper-autoload.php | 10 ++-- 7 files changed, 67 insertions(+), 47 deletions(-) diff --git a/rules/DeadCode/Rector/ClassMethod/RemoveUnusedConstructorParamRector.php b/rules/DeadCode/Rector/ClassMethod/RemoveUnusedConstructorParamRector.php index ecac696c07b..6cf0eeab4ee 100644 --- a/rules/DeadCode/Rector/ClassMethod/RemoveUnusedConstructorParamRector.php +++ b/rules/DeadCode/Rector/ClassMethod/RemoveUnusedConstructorParamRector.php @@ -9,6 +9,7 @@ use PhpParser\Node\Stmt\ClassMethod; use Rector\Core\NodeAnalyzer\ParamAnalyzer; use Rector\Core\Rector\AbstractRector; use Rector\Core\ValueObject\MethodName; +use Rector\Removing\NodeManipulator\ComplexNodeRemover; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; /** @@ -21,9 +22,15 @@ final class RemoveUnusedConstructorParamRector extends \Rector\Core\Rector\Abstr * @var \Rector\Core\NodeAnalyzer\ParamAnalyzer */ private $paramAnalyzer; - public function __construct(\Rector\Core\NodeAnalyzer\ParamAnalyzer $paramAnalyzer) + /** + * @readonly + * @var \Rector\Removing\NodeManipulator\ComplexNodeRemover + */ + private $complexNodeRemover; + public function __construct(\Rector\Core\NodeAnalyzer\ParamAnalyzer $paramAnalyzer, \Rector\Removing\NodeManipulator\ComplexNodeRemover $complexNodeRemover) { $this->paramAnalyzer = $paramAnalyzer; + $this->complexNodeRemover = $complexNodeRemover; } public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition { @@ -79,12 +86,21 @@ CODE_SAMPLE if ($node->isAbstract()) { return null; } - foreach ($node->params as $param) { - if ($this->paramAnalyzer->isParamUsedInClassMethod($node, $param)) { + return $this->processRemoveParams($node); + } + private function processRemoveParams(\PhpParser\Node\Stmt\ClassMethod $classMethod) : ?\PhpParser\Node\Stmt\ClassMethod + { + $paramKeysToBeRemoved = []; + foreach ($classMethod->params as $key => $param) { + if ($this->paramAnalyzer->isParamUsedInClassMethod($classMethod, $param)) { continue; } - $this->nodeRemover->removeParam($node, $param); + $paramKeysToBeRemoved[] = $key; } - return null; + $removedParamKeys = $this->complexNodeRemover->processRemoveParamWithKeys($classMethod->params, $paramKeysToBeRemoved); + if ($removedParamKeys === []) { + return null; + } + return $classMethod; } } diff --git a/rules/Removing/NodeManipulator/ComplexNodeRemover.php b/rules/Removing/NodeManipulator/ComplexNodeRemover.php index b2fe5e0eb1d..087dcd98d99 100644 --- a/rules/Removing/NodeManipulator/ComplexNodeRemover.php +++ b/rules/Removing/NodeManipulator/ComplexNodeRemover.php @@ -94,6 +94,33 @@ final class ComplexNodeRemover } $this->nodeRemover->removeNode($property); } + /** + * @param Param[] $params + * @param int[] $paramKeysToBeRemoved + * @return int[] + */ + public function processRemoveParamWithKeys(array $params, array $paramKeysToBeRemoved) : array + { + $totalKeys = \count($params) - 1; + $removedParamKeys = []; + foreach ($paramKeysToBeRemoved as $paramKeyToBeRemoved) { + $startNextKey = $paramKeyToBeRemoved + 1; + for ($nextKey = $startNextKey; $nextKey <= $totalKeys; ++$nextKey) { + if (!isset($params[$nextKey])) { + // no next param, break the inner loop, remove the param + break; + } + if (\in_array($nextKey, $paramKeysToBeRemoved, \true)) { + // keep searching next key not in $paramKeysToBeRemoved + continue; + } + return []; + } + $this->nodeRemover->removeNode($params[$paramKeyToBeRemoved]); + $removedParamKeys[] = $paramKeyToBeRemoved; + } + return $removedParamKeys; + } /** * @param Assign[] $assigns */ @@ -208,29 +235,6 @@ final class ComplexNodeRemover } return \false; } - /** - * @param Param[] $params - * @param int[] $paramKeysToBeRemoved - */ - private function processRemoveParamWithKeys(array $params, array $paramKeysToBeRemoved) : void - { - $totalKeys = \count($params) - 1; - foreach ($paramKeysToBeRemoved as $paramKeyToBeRemoved) { - $startNextKey = $paramKeyToBeRemoved + 1; - for ($nextKey = $startNextKey; $nextKey <= $totalKeys; ++$nextKey) { - if (!isset($params[$nextKey])) { - // no next param, break the inner loop, remove the param - break; - } - if (\in_array($nextKey, $paramKeysToBeRemoved, \true)) { - // keep searching next key not in $paramKeysToBeRemoved - continue; - } - return; - } - $this->nodeRemover->removeNode($params[$paramKeyToBeRemoved]); - } - } private function isExpressionVariableNotAssign(\PhpParser\Node $node) : bool { $expressionVariable = $node->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::PARENT_NODE); diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index 66b20f031fe..0871c566683 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -16,11 +16,11 @@ final class VersionResolver /** * @var string */ - public const PACKAGE_VERSION = '88a32076c60552b87afe4a0e9fe436c961c6c78a'; + public const PACKAGE_VERSION = '081958a2ceb52dfae66457910750c1126cb97358'; /** * @var string */ - public const RELEASE_DATE = '2022-01-22 10:38:37'; + public const RELEASE_DATE = '2022-01-22 16:55:11'; public static function resolvePackageVersion() : string { $process = new \RectorPrefix20220122\Symfony\Component\Process\Process(['git', 'log', '--pretty="%H"', '-n1', 'HEAD'], __DIR__); diff --git a/vendor/autoload.php b/vendor/autoload.php index bdcc01ab559..54972ac0bc0 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInit79cf20d8d31d65668954316be37148c4::getLoader(); +return ComposerAutoloaderInit4cd74556152b1ac62df6df75d505a9f7::getLoader(); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 2a105988572..1a0c0f7a299 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit79cf20d8d31d65668954316be37148c4 +class ComposerAutoloaderInit4cd74556152b1ac62df6df75d505a9f7 { private static $loader; @@ -22,15 +22,15 @@ class ComposerAutoloaderInit79cf20d8d31d65668954316be37148c4 return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit79cf20d8d31d65668954316be37148c4', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit4cd74556152b1ac62df6df75d505a9f7', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__))); - spl_autoload_unregister(array('ComposerAutoloaderInit79cf20d8d31d65668954316be37148c4', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit4cd74556152b1ac62df6df75d505a9f7', '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\ComposerStaticInit79cf20d8d31d65668954316be37148c4::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit4cd74556152b1ac62df6df75d505a9f7::getInitializer($loader)); } else { $classMap = require __DIR__ . '/autoload_classmap.php'; if ($classMap) { @@ -42,12 +42,12 @@ class ComposerAutoloaderInit79cf20d8d31d65668954316be37148c4 $loader->register(true); if ($useStaticLoader) { - $includeFiles = Composer\Autoload\ComposerStaticInit79cf20d8d31d65668954316be37148c4::$files; + $includeFiles = Composer\Autoload\ComposerStaticInit4cd74556152b1ac62df6df75d505a9f7::$files; } else { $includeFiles = require __DIR__ . '/autoload_files.php'; } foreach ($includeFiles as $fileIdentifier => $file) { - composerRequire79cf20d8d31d65668954316be37148c4($fileIdentifier, $file); + composerRequire4cd74556152b1ac62df6df75d505a9f7($fileIdentifier, $file); } return $loader; @@ -59,7 +59,7 @@ class ComposerAutoloaderInit79cf20d8d31d65668954316be37148c4 * @param string $file * @return void */ -function composerRequire79cf20d8d31d65668954316be37148c4($fileIdentifier, $file) +function composerRequire4cd74556152b1ac62df6df75d505a9f7($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 0a95795852f..70ecf4d3112 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit79cf20d8d31d65668954316be37148c4 +class ComposerStaticInit4cd74556152b1ac62df6df75d505a9f7 { public static $files = array ( '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', @@ -3872,9 +3872,9 @@ class ComposerStaticInit79cf20d8d31d65668954316be37148c4 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit79cf20d8d31d65668954316be37148c4::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit79cf20d8d31d65668954316be37148c4::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit79cf20d8d31d65668954316be37148c4::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit4cd74556152b1ac62df6df75d505a9f7::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit4cd74556152b1ac62df6df75d505a9f7::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInit4cd74556152b1ac62df6df75d505a9f7::$classMap; }, null, ClassLoader::class); } diff --git a/vendor/scoper-autoload.php b/vendor/scoper-autoload.php index 25782407cbd..eb334ebd462 100644 --- a/vendor/scoper-autoload.php +++ b/vendor/scoper-autoload.php @@ -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('RectorPrefix20220122\AutoloadIncluder'); } -if (!class_exists('ComposerAutoloaderInit79cf20d8d31d65668954316be37148c4', false) && !interface_exists('ComposerAutoloaderInit79cf20d8d31d65668954316be37148c4', false) && !trait_exists('ComposerAutoloaderInit79cf20d8d31d65668954316be37148c4', false)) { - spl_autoload_call('RectorPrefix20220122\ComposerAutoloaderInit79cf20d8d31d65668954316be37148c4'); +if (!class_exists('ComposerAutoloaderInit4cd74556152b1ac62df6df75d505a9f7', false) && !interface_exists('ComposerAutoloaderInit4cd74556152b1ac62df6df75d505a9f7', false) && !trait_exists('ComposerAutoloaderInit4cd74556152b1ac62df6df75d505a9f7', false)) { + spl_autoload_call('RectorPrefix20220122\ComposerAutoloaderInit4cd74556152b1ac62df6df75d505a9f7'); } 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('RectorPrefix20220122\Helmich\TypoScriptParser\Parser\AST\Statement'); @@ -71,9 +71,9 @@ if (!function_exists('print_node')) { return \RectorPrefix20220122\print_node(...func_get_args()); } } -if (!function_exists('composerRequire79cf20d8d31d65668954316be37148c4')) { - function composerRequire79cf20d8d31d65668954316be37148c4() { - return \RectorPrefix20220122\composerRequire79cf20d8d31d65668954316be37148c4(...func_get_args()); +if (!function_exists('composerRequire4cd74556152b1ac62df6df75d505a9f7')) { + function composerRequire4cd74556152b1ac62df6df75d505a9f7() { + return \RectorPrefix20220122\composerRequire4cd74556152b1ac62df6df75d505a9f7(...func_get_args()); } } if (!function_exists('scanPath')) {