From dacadf5e8f9d35f084f3993883d34329927dd1fd Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sun, 14 Nov 2021 08:50:26 +0000 Subject: [PATCH] Updated Rector to commit 4b3a51cff96bcca65a8178465c3c00d6ff520da9 https://github.com/rectorphp/rector-src/commit/4b3a51cff96bcca65a8178465c3c00d6ff520da9 [Naming] Add StaticPropertyFetch support on RenameForeachValueVariableToMatchExprVariableRector (#1232) --- ...ValueVariableToMatchExprVariableRector.php | 39 ++++++++++++++----- 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 ++--- 6 files changed, 48 insertions(+), 29 deletions(-) diff --git a/rules/Naming/Rector/Foreach_/RenameForeachValueVariableToMatchExprVariableRector.php b/rules/Naming/Rector/Foreach_/RenameForeachValueVariableToMatchExprVariableRector.php index 14763e88c29..cf2624a1aeb 100644 --- a/rules/Naming/Rector/Foreach_/RenameForeachValueVariableToMatchExprVariableRector.php +++ b/rules/Naming/Rector/Foreach_/RenameForeachValueVariableToMatchExprVariableRector.php @@ -5,12 +5,16 @@ namespace Rector\Naming\Rector\Foreach_; use PhpParser\Node; use PhpParser\Node\Expr\PropertyFetch; +use PhpParser\Node\Expr\StaticPropertyFetch; use PhpParser\Node\Expr\Variable; +use PhpParser\Node\Stmt\ClassLike; use PhpParser\Node\Stmt\Foreach_; use PHPStan\Type\ThisType; use Rector\CodeQuality\NodeAnalyzer\ForeachAnalyzer; +use Rector\Core\NodeAnalyzer\PropertyFetchAnalyzer; use Rector\Core\Rector\AbstractRector; use Rector\Naming\ExpectedNameResolver\InflectorSingularResolver; +use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; /** @@ -26,10 +30,15 @@ final class RenameForeachValueVariableToMatchExprVariableRector extends \Rector\ * @var \Rector\CodeQuality\NodeAnalyzer\ForeachAnalyzer */ private $foreachAnalyzer; - public function __construct(\Rector\Naming\ExpectedNameResolver\InflectorSingularResolver $inflectorSingularResolver, \Rector\CodeQuality\NodeAnalyzer\ForeachAnalyzer $foreachAnalyzer) + /** + * @var \Rector\Core\NodeAnalyzer\PropertyFetchAnalyzer + */ + private $propertyFetchAnalyzer; + public function __construct(\Rector\Naming\ExpectedNameResolver\InflectorSingularResolver $inflectorSingularResolver, \Rector\CodeQuality\NodeAnalyzer\ForeachAnalyzer $foreachAnalyzer, \Rector\Core\NodeAnalyzer\PropertyFetchAnalyzer $propertyFetchAnalyzer) { $this->inflectorSingularResolver = $inflectorSingularResolver; $this->foreachAnalyzer = $foreachAnalyzer; + $this->propertyFetchAnalyzer = $propertyFetchAnalyzer; } public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition { @@ -71,13 +80,16 @@ CODE_SAMPLE */ public function refactor(\PhpParser\Node $node) : ?\PhpParser\Node { - if (!$node->expr instanceof \PhpParser\Node\Expr\Variable && !$node->expr instanceof \PhpParser\Node\Expr\PropertyFetch) { + $isPropertyFetch = $this->propertyFetchAnalyzer->isPropertyFetch($node->expr); + if (!$node->expr instanceof \PhpParser\Node\Expr\Variable && !$isPropertyFetch) { return null; } - if ($this->isNotThisTypePropertyFetch($node->expr)) { + /** @var Variable|PropertyFetch|StaticPropertyFetch $expr */ + $expr = $node->expr; + if ($this->isNotCurrentClassLikePropertyFetch($expr, $isPropertyFetch)) { return null; } - $exprName = $this->getName($node->expr); + $exprName = $this->getName($expr); if ($exprName === null) { return null; } @@ -101,15 +113,22 @@ CODE_SAMPLE return $this->processRename($node, $valueVarName, $singularValueVarName); } /** - * @param \PhpParser\Node\Expr\PropertyFetch|\PhpParser\Node\Expr\Variable $expr + * @param \PhpParser\Node\Expr\PropertyFetch|\PhpParser\Node\Expr\StaticPropertyFetch|\PhpParser\Node\Expr\Variable $expr */ - private function isNotThisTypePropertyFetch($expr) : bool + private function isNotCurrentClassLikePropertyFetch($expr, bool $isPropertyFetch) : bool { - if ($expr instanceof \PhpParser\Node\Expr\PropertyFetch) { - $variableType = $this->getType($expr->var); - return !$variableType instanceof \PHPStan\Type\ThisType; + if (!$isPropertyFetch) { + return \false; } - return \false; + /** @var PropertyFetch|StaticPropertyFetch $expr */ + $variableType = $expr instanceof \PhpParser\Node\Expr\PropertyFetch ? $this->nodeTypeResolver->getType($expr->var) : $this->nodeTypeResolver->getType($expr->class); + if ($variableType instanceof \Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType) { + $currentClassLike = $this->betterNodeFinder->findParentType($expr, \PhpParser\Node\Stmt\ClassLike::class); + if ($currentClassLike instanceof \PhpParser\Node\Stmt\ClassLike) { + return !$this->nodeNameResolver->isName($currentClassLike, $variableType->getClassName()); + } + } + return !$variableType instanceof \PHPStan\Type\ThisType; } private function processRename(\PhpParser\Node\Stmt\Foreach_ $foreach, string $valueVarName, string $singularValueVarName) : \PhpParser\Node\Stmt\Foreach_ { diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index 0d0ccddd770..8ae92667842 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -16,11 +16,11 @@ final class VersionResolver /** * @var string */ - public const PACKAGE_VERSION = 'e2fdc96b7c3fa18a634af62cd646d2665505cc95'; + public const PACKAGE_VERSION = '4b3a51cff96bcca65a8178465c3c00d6ff520da9'; /** * @var string */ - public const RELEASE_DATE = '2021-11-14 11:33:18'; + public const RELEASE_DATE = '2021-11-14 11:34:06'; public static function resolvePackageVersion() : string { $process = new \RectorPrefix20211114\Symfony\Component\Process\Process(['git', 'log', '--pretty="%H"', '-n1', 'HEAD'], __DIR__); diff --git a/vendor/autoload.php b/vendor/autoload.php index 223723ce38d..33371263026 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInit182c38be8bcd92713a790a05a3edd2ef::getLoader(); +return ComposerAutoloaderInit066918b5ecba7ccaceeb1a73324a9e0b::getLoader(); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 8af069f7f29..2aade77d8f0 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit182c38be8bcd92713a790a05a3edd2ef +class ComposerAutoloaderInit066918b5ecba7ccaceeb1a73324a9e0b { private static $loader; @@ -22,15 +22,15 @@ class ComposerAutoloaderInit182c38be8bcd92713a790a05a3edd2ef return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit182c38be8bcd92713a790a05a3edd2ef', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit066918b5ecba7ccaceeb1a73324a9e0b', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__))); - spl_autoload_unregister(array('ComposerAutoloaderInit182c38be8bcd92713a790a05a3edd2ef', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit066918b5ecba7ccaceeb1a73324a9e0b', '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\ComposerStaticInit182c38be8bcd92713a790a05a3edd2ef::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit066918b5ecba7ccaceeb1a73324a9e0b::getInitializer($loader)); } else { $classMap = require __DIR__ . '/autoload_classmap.php'; if ($classMap) { @@ -42,19 +42,19 @@ class ComposerAutoloaderInit182c38be8bcd92713a790a05a3edd2ef $loader->register(true); if ($useStaticLoader) { - $includeFiles = Composer\Autoload\ComposerStaticInit182c38be8bcd92713a790a05a3edd2ef::$files; + $includeFiles = Composer\Autoload\ComposerStaticInit066918b5ecba7ccaceeb1a73324a9e0b::$files; } else { $includeFiles = require __DIR__ . '/autoload_files.php'; } foreach ($includeFiles as $fileIdentifier => $file) { - composerRequire182c38be8bcd92713a790a05a3edd2ef($fileIdentifier, $file); + composerRequire066918b5ecba7ccaceeb1a73324a9e0b($fileIdentifier, $file); } return $loader; } } -function composerRequire182c38be8bcd92713a790a05a3edd2ef($fileIdentifier, $file) +function composerRequire066918b5ecba7ccaceeb1a73324a9e0b($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { require $file; diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 6a1af7a6ebb..13bb9bfbf68 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit182c38be8bcd92713a790a05a3edd2ef +class ComposerStaticInit066918b5ecba7ccaceeb1a73324a9e0b { public static $files = array ( 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', @@ -3542,9 +3542,9 @@ class ComposerStaticInit182c38be8bcd92713a790a05a3edd2ef public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit182c38be8bcd92713a790a05a3edd2ef::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit182c38be8bcd92713a790a05a3edd2ef::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit182c38be8bcd92713a790a05a3edd2ef::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit066918b5ecba7ccaceeb1a73324a9e0b::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit066918b5ecba7ccaceeb1a73324a9e0b::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInit066918b5ecba7ccaceeb1a73324a9e0b::$classMap; }, null, ClassLoader::class); } diff --git a/vendor/scoper-autoload.php b/vendor/scoper-autoload.php index 68da6c6243b..79aa8db4cd8 100644 --- a/vendor/scoper-autoload.php +++ b/vendor/scoper-autoload.php @@ -12,8 +12,8 @@ if (!class_exists('GenerateChangelogCommand', false) && !interface_exists('Gener if (!class_exists('AutoloadIncluder', false) && !interface_exists('AutoloadIncluder', false) && !trait_exists('AutoloadIncluder', false)) { spl_autoload_call('RectorPrefix20211114\AutoloadIncluder'); } -if (!class_exists('ComposerAutoloaderInit182c38be8bcd92713a790a05a3edd2ef', false) && !interface_exists('ComposerAutoloaderInit182c38be8bcd92713a790a05a3edd2ef', false) && !trait_exists('ComposerAutoloaderInit182c38be8bcd92713a790a05a3edd2ef', false)) { - spl_autoload_call('RectorPrefix20211114\ComposerAutoloaderInit182c38be8bcd92713a790a05a3edd2ef'); +if (!class_exists('ComposerAutoloaderInit066918b5ecba7ccaceeb1a73324a9e0b', false) && !interface_exists('ComposerAutoloaderInit066918b5ecba7ccaceeb1a73324a9e0b', false) && !trait_exists('ComposerAutoloaderInit066918b5ecba7ccaceeb1a73324a9e0b', false)) { + spl_autoload_call('RectorPrefix20211114\ComposerAutoloaderInit066918b5ecba7ccaceeb1a73324a9e0b'); } 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('RectorPrefix20211114\Helmich\TypoScriptParser\Parser\AST\Statement'); @@ -3309,9 +3309,9 @@ if (!function_exists('print_node')) { return \RectorPrefix20211114\print_node(...func_get_args()); } } -if (!function_exists('composerRequire182c38be8bcd92713a790a05a3edd2ef')) { - function composerRequire182c38be8bcd92713a790a05a3edd2ef() { - return \RectorPrefix20211114\composerRequire182c38be8bcd92713a790a05a3edd2ef(...func_get_args()); +if (!function_exists('composerRequire066918b5ecba7ccaceeb1a73324a9e0b')) { + function composerRequire066918b5ecba7ccaceeb1a73324a9e0b() { + return \RectorPrefix20211114\composerRequire066918b5ecba7ccaceeb1a73324a9e0b(...func_get_args()); } } if (!function_exists('parseArgs')) {