diff --git a/packages/NodeRemoval/NodeRemover.php b/packages/NodeRemoval/NodeRemover.php index 6f54415dc27..9e898925177 100644 --- a/packages/NodeRemoval/NodeRemover.php +++ b/packages/NodeRemoval/NodeRemover.php @@ -33,6 +33,9 @@ final class NodeRemover $this->nodesToRemoveCollector = $nodesToRemoveCollector; $this->rectorChangeCollector = $rectorChangeCollector; } + /** + * @deprecated Return NodeTraverser::* to remove node directly instead + */ public function removeNode(Node $node) : void { // this make sure to keep just added nodes, e.g. added class constant, that doesn't have analysis of full code in this run diff --git a/packages/PostRector/Rector/ClassRenamingPostRector.php b/packages/PostRector/Rector/ClassRenamingPostRector.php index a8b4290012b..465a67ea539 100644 --- a/packages/PostRector/Rector/ClassRenamingPostRector.php +++ b/packages/PostRector/Rector/ClassRenamingPostRector.php @@ -98,7 +98,7 @@ final class ClassRenamingPostRector extends \Rector\PostRector\Rector\AbstractPo return $result; } $removedUses = $this->renamedClassesDataCollector->getOldClasses(); - $this->useImportsRemover->removeImportsFromStmts($this->rootNode->stmts, $removedUses); + $this->rootNode->stmts = $this->useImportsRemover->removeImportsFromStmts($this->rootNode->stmts, $removedUses); return $result; } public function getRuleDefinition() : RuleDefinition diff --git a/rules/CodingStyle/Application/UseImportsRemover.php b/rules/CodingStyle/Application/UseImportsRemover.php index ffe93e57822..c58e1c29ffc 100644 --- a/rules/CodingStyle/Application/UseImportsRemover.php +++ b/rules/CodingStyle/Application/UseImportsRemover.php @@ -5,35 +5,31 @@ namespace Rector\CodingStyle\Application; use PhpParser\Node\Stmt; use PhpParser\Node\Stmt\Use_; -use Rector\NodeRemoval\NodeRemover; final class UseImportsRemover { - /** - * @readonly - * @var \Rector\NodeRemoval\NodeRemover - */ - private $nodeRemover; - public function __construct(NodeRemover $nodeRemover) - { - $this->nodeRemover = $nodeRemover; - } /** * @param Stmt[] $stmts * @param string[] $removedUses + * @return Stmt[] */ - public function removeImportsFromStmts(array $stmts, array $removedUses) : void + public function removeImportsFromStmts(array $stmts, array $removedUses) : array { - foreach ($stmts as $stmt) { + foreach ($stmts as $key => $stmt) { if (!$stmt instanceof Use_) { continue; } - $this->removeUseFromUse($removedUses, $stmt); + $stmt = $this->removeUseFromUse($removedUses, $stmt); + // remove empty uses + if ($stmt->uses === []) { + unset($stmts[$key]); + } } + return $stmts; } /** * @param string[] $removedUses */ - private function removeUseFromUse(array $removedUses, Use_ $use) : void + private function removeUseFromUse(array $removedUses, Use_ $use) : Use_ { foreach ($use->uses as $usesKey => $useUse) { foreach ($removedUses as $removedUse) { @@ -42,8 +38,6 @@ final class UseImportsRemover } } } - if ($use->uses === []) { - $this->nodeRemover->removeNode($use); - } + return $use; } } diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index 0368df65570..76c262ce3ce 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -19,12 +19,12 @@ final class VersionResolver * @api * @var string */ - public const PACKAGE_VERSION = '7891fdab42c174d2443674004396aef362994d4a'; + public const PACKAGE_VERSION = 'f429e2811c97689001f45c420d1d674322d00822'; /** * @api * @var string */ - public const RELEASE_DATE = '2023-05-29 07:10:49'; + public const RELEASE_DATE = '2023-05-29 06:28:14'; /** * @var int */ diff --git a/vendor/autoload.php b/vendor/autoload.php index f693876bd5a..b618d825ea2 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -22,4 +22,4 @@ if (PHP_VERSION_ID < 50600) { require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInit9cbda5968d2c4a637c17f2323e474823::getLoader(); +return ComposerAutoloaderInitde431eba275ceb2d397b23a8d00be279::getLoader(); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 672df27ebb2..bb27297f598 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit9cbda5968d2c4a637c17f2323e474823 +class ComposerAutoloaderInitde431eba275ceb2d397b23a8d00be279 { private static $loader; @@ -22,17 +22,17 @@ class ComposerAutoloaderInit9cbda5968d2c4a637c17f2323e474823 return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit9cbda5968d2c4a637c17f2323e474823', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInitde431eba275ceb2d397b23a8d00be279', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInit9cbda5968d2c4a637c17f2323e474823', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInitde431eba275ceb2d397b23a8d00be279', 'loadClassLoader')); require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit9cbda5968d2c4a637c17f2323e474823::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInitde431eba275ceb2d397b23a8d00be279::getInitializer($loader)); $loader->setClassMapAuthoritative(true); $loader->register(true); - $filesToLoad = \Composer\Autoload\ComposerStaticInit9cbda5968d2c4a637c17f2323e474823::$files; + $filesToLoad = \Composer\Autoload\ComposerStaticInitde431eba275ceb2d397b23a8d00be279::$files; $requireFile = \Closure::bind(static function ($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 f138feee929..4fdcfdee47a 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit9cbda5968d2c4a637c17f2323e474823 +class ComposerStaticInitde431eba275ceb2d397b23a8d00be279 { public static $files = array ( 'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php', @@ -3086,9 +3086,9 @@ class ComposerStaticInit9cbda5968d2c4a637c17f2323e474823 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit9cbda5968d2c4a637c17f2323e474823::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit9cbda5968d2c4a637c17f2323e474823::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit9cbda5968d2c4a637c17f2323e474823::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInitde431eba275ceb2d397b23a8d00be279::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInitde431eba275ceb2d397b23a8d00be279::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInitde431eba275ceb2d397b23a8d00be279::$classMap; }, null, ClassLoader::class); }