diff --git a/packages/PostRector/Rector/NameImportingPostRector.php b/packages/PostRector/Rector/NameImportingPostRector.php index fd7212bf615..e9fee171a3a 100644 --- a/packages/PostRector/Rector/NameImportingPostRector.php +++ b/packages/PostRector/Rector/NameImportingPostRector.php @@ -161,7 +161,7 @@ CODE_SAMPLE if (!$originalName instanceof FullyQualified) { return null; } - $aliasName = $this->aliasNameResolver->resolveByName($name); + $aliasName = $this->aliasNameResolver->resolveByName($name, $currentUses); if (\is_string($aliasName)) { return new Name($aliasName); } diff --git a/rules/CodingStyle/Rector/Catch_/CatchExceptionNameMatchingTypeRector.php b/rules/CodingStyle/Rector/Catch_/CatchExceptionNameMatchingTypeRector.php index 3b030d139ee..aece9019754 100644 --- a/rules/CodingStyle/Rector/Catch_/CatchExceptionNameMatchingTypeRector.php +++ b/rules/CodingStyle/Rector/Catch_/CatchExceptionNameMatchingTypeRector.php @@ -21,6 +21,7 @@ use Rector\Core\PhpParser\Node\CustomNode\FileWithoutNamespace; use Rector\Core\Rector\AbstractRector; use Rector\Naming\Naming\AliasNameResolver; use Rector\Naming\Naming\PropertyNaming; +use Rector\Naming\Naming\UseImportsResolver; use Rector\NodeTypeResolver\Node\AttributeKey; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; @@ -39,15 +40,21 @@ final class CatchExceptionNameMatchingTypeRector extends AbstractRector * @var \Rector\Naming\Naming\AliasNameResolver */ private $aliasNameResolver; + /** + * @readonly + * @var \Rector\Naming\Naming\UseImportsResolver + */ + private $useImportsResolver; /** * @var string * @see https://regex101.com/r/xmfMAX/1 */ private const STARTS_WITH_ABBREVIATION_REGEX = '#^([A-Za-z]+?)([A-Z]{1}[a-z]{1})([A-Za-z]*)#'; - public function __construct(PropertyNaming $propertyNaming, AliasNameResolver $aliasNameResolver) + public function __construct(PropertyNaming $propertyNaming, AliasNameResolver $aliasNameResolver, UseImportsResolver $useImportsResolver) { $this->propertyNaming = $propertyNaming; $this->aliasNameResolver = $aliasNameResolver; + $this->useImportsResolver = $useImportsResolver; } public function getRuleDefinition() : RuleDefinition { @@ -95,6 +102,7 @@ CODE_SAMPLE return null; } $hasChanged = \false; + $uses = null; foreach ($node->stmts as $key => $stmt) { if ($this->shouldSkip($stmt)) { continue; @@ -110,9 +118,12 @@ CODE_SAMPLE $catchVar = $catch->var; /** @var string $oldVariableName */ $oldVariableName = (string) $this->getName($catchVar); + if ($uses === null) { + $uses = $this->useImportsResolver->resolve(); + } $type = $catch->types[0]; $typeShortName = $this->nodeNameResolver->getShortName($type); - $aliasName = $this->aliasNameResolver->resolveByName($type); + $aliasName = $this->aliasNameResolver->resolveByName($type, $uses); if (\is_string($aliasName)) { $typeShortName = $aliasName; } diff --git a/rules/Naming/Naming/AliasNameResolver.php b/rules/Naming/Naming/AliasNameResolver.php index ba1be94040c..c817c713062 100644 --- a/rules/Naming/Naming/AliasNameResolver.php +++ b/rules/Naming/Naming/AliasNameResolver.php @@ -5,6 +5,8 @@ namespace Rector\Naming\Naming; use PhpParser\Node\Identifier; use PhpParser\Node\Name; +use PhpParser\Node\Stmt\GroupUse; +use PhpParser\Node\Stmt\Use_; final class AliasNameResolver { /** @@ -16,9 +18,11 @@ final class AliasNameResolver { $this->useImportsResolver = $useImportsResolver; } - public function resolveByName(Name $name) : ?string + /** + * @param Use_[]|GroupUse[] $uses + */ + public function resolveByName(Name $name, array $uses) : ?string { - $uses = $this->useImportsResolver->resolve(); $nameString = $name->toString(); foreach ($uses as $use) { $prefix = $this->useImportsResolver->resolvePrefix($use); diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index 174bb586ba7..612ada03bc7 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 = '4882807e5be5c2fc04079d387e49e44c694a6492'; + public const PACKAGE_VERSION = 'c94645b3ab7debe9c00531597c1b896080a2cf9d'; /** * @api * @var string */ - public const RELEASE_DATE = '2023-07-22 08:32:26'; + public const RELEASE_DATE = '2023-07-22 17:51:58'; /** * @var int */ diff --git a/vendor/autoload.php b/vendor/autoload.php index e51111b01cd..94f333eb609 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 ComposerAutoloaderInitc0eed61c7490f2bf2e7a928c07badcab::getLoader(); +return ComposerAutoloaderInita99de4062acb80aa9520b1a6f5be2373::getLoader(); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 5133f1be590..440ae59741c 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInitc0eed61c7490f2bf2e7a928c07badcab +class ComposerAutoloaderInita99de4062acb80aa9520b1a6f5be2373 { private static $loader; @@ -22,17 +22,17 @@ class ComposerAutoloaderInitc0eed61c7490f2bf2e7a928c07badcab return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInitc0eed61c7490f2bf2e7a928c07badcab', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInita99de4062acb80aa9520b1a6f5be2373', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInitc0eed61c7490f2bf2e7a928c07badcab', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInita99de4062acb80aa9520b1a6f5be2373', 'loadClassLoader')); require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInitc0eed61c7490f2bf2e7a928c07badcab::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInita99de4062acb80aa9520b1a6f5be2373::getInitializer($loader)); $loader->setClassMapAuthoritative(true); $loader->register(true); - $filesToLoad = \Composer\Autoload\ComposerStaticInitc0eed61c7490f2bf2e7a928c07badcab::$files; + $filesToLoad = \Composer\Autoload\ComposerStaticInita99de4062acb80aa9520b1a6f5be2373::$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 2fb7e8f8ef4..142360ed320 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInitc0eed61c7490f2bf2e7a928c07badcab +class ComposerStaticInita99de4062acb80aa9520b1a6f5be2373 { public static $files = array ( 'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php', @@ -3020,9 +3020,9 @@ class ComposerStaticInitc0eed61c7490f2bf2e7a928c07badcab public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInitc0eed61c7490f2bf2e7a928c07badcab::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInitc0eed61c7490f2bf2e7a928c07badcab::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInitc0eed61c7490f2bf2e7a928c07badcab::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInita99de4062acb80aa9520b1a6f5be2373::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInita99de4062acb80aa9520b1a6f5be2373::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInita99de4062acb80aa9520b1a6f5be2373::$classMap; }, null, ClassLoader::class); }