From fc28a000c662bae9321b2305dd9cb5bbd7e42a5c Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Mon, 5 Jun 2023 13:46:42 +0000 Subject: [PATCH] Updated Rector to commit cdc9e6b6d8ce2446e8860016997ad37e8d3b7d44 https://github.com/rectorphp/rector-src/commit/cdc9e6b6d8ce2446e8860016997ad37e8d3b7d44 Remove ArrayKeysAndInArrayToArrayKeyExistsRector as narrow, does not check variable usage and might be on purpose (#4084) --- config/set/code-quality.php | 3 +- docs/rector_rules_overview.md | 68 +---------- ...ayKeysAndInArrayToArrayKeyExistsRector.php | 113 ------------------ src/Application/VersionResolver.php | 4 +- vendor/autoload.php | 2 +- vendor/composer/autoload_classmap.php | 1 - vendor/composer/autoload_real.php | 10 +- vendor/composer/autoload_static.php | 9 +- 8 files changed, 18 insertions(+), 192 deletions(-) delete mode 100644 rules/CodeQuality/Rector/FuncCall/ArrayKeysAndInArrayToArrayKeyExistsRector.php diff --git a/config/set/code-quality.php b/config/set/code-quality.php index f8af8e1c62e..8b5dfde2df6 100644 --- a/config/set/code-quality.php +++ b/config/set/code-quality.php @@ -25,7 +25,6 @@ use Rector\CodeQuality\Rector\Foreach_\ForeachToInArrayRector; use Rector\CodeQuality\Rector\Foreach_\SimplifyForeachToArrayFilterRector; use Rector\CodeQuality\Rector\Foreach_\SimplifyForeachToCoalescingRector; use Rector\CodeQuality\Rector\Foreach_\UnusedForeachValueToArrayKeysRector; -use Rector\CodeQuality\Rector\FuncCall\ArrayKeysAndInArrayToArrayKeyExistsRector; use Rector\CodeQuality\Rector\FuncCall\ArrayMergeOfNonArraysToSimpleArrayRector; use Rector\CodeQuality\Rector\FuncCall\BoolvalToTypeCastRector; use Rector\CodeQuality\Rector\FuncCall\CallUserFuncWithArrowFunctionToInlineRector; @@ -108,5 +107,5 @@ return static function (RectorConfig $rectorConfig) : void { 'mbstrrpos' => 'mb_strrpos', 'mbsubstr' => 'mb_substr', ]); - $rectorConfig->rules([CombinedAssignRector::class, SimplifyEmptyArrayCheckRector::class, ReplaceMultipleBooleanNotRector::class, ForeachToInArrayRector::class, SimplifyForeachToCoalescingRector::class, SimplifyFuncGetArgsCountRector::class, SimplifyInArrayValuesRector::class, SimplifyStrposLowerRector::class, GetClassToInstanceOfRector::class, SimplifyArraySearchRector::class, SimplifyConditionsRector::class, SimplifyIfNotNullReturnRector::class, SimplifyIfReturnBoolRector::class, SimplifyUselessVariableRector::class, UnnecessaryTernaryExpressionRector::class, RemoveExtraParametersRector::class, SimplifyDeMorganBinaryRector::class, SimplifyTautologyTernaryRector::class, SimplifyForeachToArrayFilterRector::class, SingleInArrayToCompareRector::class, SimplifyIfElseToTernaryRector::class, JoinStringConcatRector::class, ConsecutiveNullCompareReturnsToNullCoalesceQueueRector::class, ExplicitBoolCompareRector::class, CombineIfRector::class, UseIdenticalOverEqualWithSameTypeRector::class, SimplifyBoolIdenticalTrueRector::class, SimplifyRegexPatternRector::class, BooleanNotIdenticalToNotIdenticalRector::class, StrvalToTypeCastRector::class, FloatvalToTypeCastRector::class, CallableThisArrayToAnonymousFunctionRector::class, AndAssignsToSeparateLinesRector::class, CompactToVariablesRector::class, CompleteDynamicPropertiesRector::class, IsAWithStringWithThirdArgumentRector::class, StrlenZeroToIdenticalEmptyStringRector::class, ThrowWithPreviousExceptionRector::class, RemoveSoleValueSprintfRector::class, ShortenElseIfRector::class, ArrayMergeOfNonArraysToSimpleArrayRector::class, IntvalToTypeCastRector::class, BoolvalToTypeCastRector::class, ArrayKeyExistsTernaryThenValueToCoalescingRector::class, AbsolutizeRequireAndIncludePathRector::class, ChangeArrayPushToArrayAssignRector::class, ForRepeatedCountToOwnVariableRector::class, ForeachItemsAssignToEmptyArrayToAssignRector::class, InlineIfToExplicitIfRector::class, ArrayKeysAndInArrayToArrayKeyExistsRector::class, UnusedForeachValueToArrayKeysRector::class, CommonNotEqualRector::class, SetTypeToCastRector::class, LogicalToBooleanRector::class, VarToPublicPropertyRector::class, IssetOnPropertyObjectToPropertyExistsRector::class, NewStaticToNewSelfRector::class, UnwrapSprintfOneArgumentRector::class, SwitchNegatedTernaryRector::class, SingularSwitchToIfRector::class, SimplifyIfNullableReturnRector::class, FuncGetArgsToVariadicParamRector::class, CallUserFuncToMethodCallRector::class, CallUserFuncWithArrowFunctionToInlineRector::class, CountArrayToEmptyArrayComparisonRector::class, FlipTypeControlToUseExclusiveTypeRector::class, InlineArrayReturnAssignRector::class, InlineIsAInstanceOfRector::class, TernaryFalseExpressionToIfRector::class, InlineConstructorDefaultToPropertyRector::class, ReturnTypeFromStrictScalarReturnExprRector::class, TernaryEmptyArrayArrayDimFetchToCoalesceRector::class, OptionalParametersAfterRequiredRector::class, SimplifyEmptyCheckOnEmptyArrayRector::class, SwitchTrueToIfRector::class, CleanupUnneededNullsafeOperatorRector::class, DisallowedEmptyRuleFixerRector::class]); + $rectorConfig->rules([CombinedAssignRector::class, SimplifyEmptyArrayCheckRector::class, ReplaceMultipleBooleanNotRector::class, ForeachToInArrayRector::class, SimplifyForeachToCoalescingRector::class, SimplifyFuncGetArgsCountRector::class, SimplifyInArrayValuesRector::class, SimplifyStrposLowerRector::class, GetClassToInstanceOfRector::class, SimplifyArraySearchRector::class, SimplifyConditionsRector::class, SimplifyIfNotNullReturnRector::class, SimplifyIfReturnBoolRector::class, SimplifyUselessVariableRector::class, UnnecessaryTernaryExpressionRector::class, RemoveExtraParametersRector::class, SimplifyDeMorganBinaryRector::class, SimplifyTautologyTernaryRector::class, SimplifyForeachToArrayFilterRector::class, SingleInArrayToCompareRector::class, SimplifyIfElseToTernaryRector::class, JoinStringConcatRector::class, ConsecutiveNullCompareReturnsToNullCoalesceQueueRector::class, ExplicitBoolCompareRector::class, CombineIfRector::class, UseIdenticalOverEqualWithSameTypeRector::class, SimplifyBoolIdenticalTrueRector::class, SimplifyRegexPatternRector::class, BooleanNotIdenticalToNotIdenticalRector::class, StrvalToTypeCastRector::class, FloatvalToTypeCastRector::class, CallableThisArrayToAnonymousFunctionRector::class, AndAssignsToSeparateLinesRector::class, CompactToVariablesRector::class, CompleteDynamicPropertiesRector::class, IsAWithStringWithThirdArgumentRector::class, StrlenZeroToIdenticalEmptyStringRector::class, ThrowWithPreviousExceptionRector::class, RemoveSoleValueSprintfRector::class, ShortenElseIfRector::class, ArrayMergeOfNonArraysToSimpleArrayRector::class, IntvalToTypeCastRector::class, BoolvalToTypeCastRector::class, ArrayKeyExistsTernaryThenValueToCoalescingRector::class, AbsolutizeRequireAndIncludePathRector::class, ChangeArrayPushToArrayAssignRector::class, ForRepeatedCountToOwnVariableRector::class, ForeachItemsAssignToEmptyArrayToAssignRector::class, InlineIfToExplicitIfRector::class, UnusedForeachValueToArrayKeysRector::class, CommonNotEqualRector::class, SetTypeToCastRector::class, LogicalToBooleanRector::class, VarToPublicPropertyRector::class, IssetOnPropertyObjectToPropertyExistsRector::class, NewStaticToNewSelfRector::class, UnwrapSprintfOneArgumentRector::class, SwitchNegatedTernaryRector::class, SingularSwitchToIfRector::class, SimplifyIfNullableReturnRector::class, FuncGetArgsToVariadicParamRector::class, CallUserFuncToMethodCallRector::class, CallUserFuncWithArrowFunctionToInlineRector::class, CountArrayToEmptyArrayComparisonRector::class, FlipTypeControlToUseExclusiveTypeRector::class, InlineArrayReturnAssignRector::class, InlineIsAInstanceOfRector::class, TernaryFalseExpressionToIfRector::class, InlineConstructorDefaultToPropertyRector::class, ReturnTypeFromStrictScalarReturnExprRector::class, TernaryEmptyArrayArrayDimFetchToCoalesceRector::class, OptionalParametersAfterRequiredRector::class, SimplifyEmptyCheckOnEmptyArrayRector::class, SwitchTrueToIfRector::class, CleanupUnneededNullsafeOperatorRector::class, DisallowedEmptyRuleFixerRector::class]); }; diff --git a/docs/rector_rules_overview.md b/docs/rector_rules_overview.md index 51abf140cdf..aa63933da58 100644 --- a/docs/rector_rules_overview.md +++ b/docs/rector_rules_overview.md @@ -1,4 +1,4 @@ -# 386 Rules Overview +# 384 Rules Overview
@@ -6,11 +6,11 @@ - [Arguments](#arguments) (6) -- [CodeQuality](#codequality) (72) +- [CodeQuality](#codequality) (71) - [CodingStyle](#codingstyle) (34) -- [DeadCode](#deadcode) (46) +- [DeadCode](#deadcode) (45) - [DependencyInjection](#dependencyinjection) (2) @@ -366,23 +366,6 @@ Change `array_key_exists()` ternary to coalescing
-### ArrayKeysAndInArrayToArrayKeyExistsRector - -Replace `array_keys()` and `in_array()` to `array_key_exists()` - -- class: [`Rector\CodeQuality\Rector\FuncCall\ArrayKeysAndInArrayToArrayKeyExistsRector`](../rules/CodeQuality/Rector/FuncCall/ArrayKeysAndInArrayToArrayKeyExistsRector.php) - -```diff - function run($packageName, $values) - { -- $keys = array_keys($values); -- return in_array($packageName, $keys, true); -+ return array_key_exists($packageName, $values); - } -``` - -
- ### ArrayMergeOfNonArraysToSimpleArrayRector Change array_merge of non arrays to array directly @@ -2615,18 +2598,14 @@ Remove if, foreach and for that does not do anything ```diff class SomeClass { - public function run($someObject) + public function run($value) { - $value = 5; - if ($value) { - } - - if ($someObject->run()) { +- foreach ($values as $value) { - } - -- foreach ($values as $value) { - } - return $value; } } @@ -3367,43 +3346,6 @@ Removes unneeded `$value` = `$value` assigns
-### TargetRemoveClassMethodRector - -Remove defined class method - -:wrench: **configure it!** - -- class: [`Rector\DeadCode\Rector\Class_\TargetRemoveClassMethodRector`](../rules/DeadCode/Rector/Class_/TargetRemoveClassMethodRector.php) - -```php -ruleWithConfiguration(TargetRemoveClassMethodRector::class, [ - new TargetRemoveClassMethod('SomeClass', 'run'), - ]); -}; -``` - -↓ - -```diff - class SomeClass - { -- public function run() -- { -- } - } -``` - -
- ### TernaryToBooleanOrFalseToBooleanAndRector Change ternary of bool : false to && bool diff --git a/rules/CodeQuality/Rector/FuncCall/ArrayKeysAndInArrayToArrayKeyExistsRector.php b/rules/CodeQuality/Rector/FuncCall/ArrayKeysAndInArrayToArrayKeyExistsRector.php deleted file mode 100644 index bc3bef830a1..00000000000 --- a/rules/CodeQuality/Rector/FuncCall/ArrayKeysAndInArrayToArrayKeyExistsRector.php +++ /dev/null @@ -1,113 +0,0 @@ -> - */ - public function getNodeTypes() : array - { - return [FuncCall::class]; - } - /** - * @param FuncCall $node - */ - public function refactor(Node $node) : ?Node - { - if (!$this->nodeNameResolver->isName($node, 'in_array')) { - return null; - } - if ($node->isFirstClassCallable()) { - return null; - } - $args = $node->getArgs(); - $secondArg = $args[1]; - $arrayVariable = $secondArg->value; - $previousAssignArraysKeysFuncCall = $this->findPreviousAssignToArrayKeys($node, $arrayVariable); - if ($previousAssignArraysKeysFuncCall instanceof Assign) { - /** @var FuncCall $arrayKeysFuncCall */ - $arrayKeysFuncCall = $previousAssignArraysKeysFuncCall->expr; - $this->removeNode($previousAssignArraysKeysFuncCall); - return $this->createArrayKeyExists($node, $arrayKeysFuncCall); - } - if ($arrayVariable instanceof FuncCall && $this->isName($arrayVariable, 'array_keys')) { - $arrayKeysFuncCallArgs = $arrayVariable->getArgs(); - if (\count($arrayKeysFuncCallArgs) > 1) { - return null; - } - // unwrap array func call - $secondArg->value = $arrayKeysFuncCallArgs[0]->value; - $node->name = new Name('array_key_exists'); - unset($node->args[2]); - return $node; - } - return null; - } - private function createArrayKeyExists(FuncCall $inArrayFuncCall, FuncCall $arrayKeysFuncCall) : ?FuncCall - { - if (!isset($inArrayFuncCall->getArgs()[0])) { - return null; - } - if (!isset($arrayKeysFuncCall->getArgs()[0])) { - return null; - } - $arguments = [$inArrayFuncCall->getArgs()[0], $arrayKeysFuncCall->getArgs()[0]]; - return new FuncCall(new Name('array_key_exists'), $arguments); - } - /** - * @return null|\PhpParser\Node|\PhpParser\Node\FunctionLike - */ - private function findPreviousAssignToArrayKeys(FuncCall $funcCall, Expr $expr) - { - return $this->betterNodeFinder->findFirstPrevious($funcCall, function (Node $node) use($expr) : bool { - // breaking out of scope - if ($node instanceof FunctionLike) { - return \true; - } - if (!$node instanceof Assign) { - return !(bool) $this->betterNodeFinder->findFirst($node, function (Node $subNode) use($expr) : bool { - return $this->nodeComparator->areNodesEqual($expr, $subNode); - }); - } - if (!$this->nodeComparator->areNodesEqual($expr, $node->var)) { - return \false; - } - if (!$node->expr instanceof FuncCall) { - return \false; - } - return $this->nodeNameResolver->isName($node->expr, 'array_keys'); - }); - } -} diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index e5a761a59cd..6f9c8912d89 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 = 'a61fbf265d2995453ad8d9f12b6bb00ff1937162'; + public const PACKAGE_VERSION = 'cdc9e6b6d8ce2446e8860016997ad37e8d3b7d44'; /** * @api * @var string */ - public const RELEASE_DATE = '2023-06-05 13:38:47'; + public const RELEASE_DATE = '2023-06-05 13:42:45'; /** * @var int */ diff --git a/vendor/autoload.php b/vendor/autoload.php index 4a9e834a744..8f304383bd5 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 ComposerAutoloaderInit3a11c776258046af5ada1aa5e6635840::getLoader(); +return ComposerAutoloaderInit81fb50a001fc3a5b67552be5bc7095a0::getLoader(); diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 7c91b9cbdb8..3482313a9e7 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -1247,7 +1247,6 @@ return array( 'Rector\\CodeQuality\\Rector\\Foreach_\\SimplifyForeachToArrayFilterRector' => $baseDir . '/rules/CodeQuality/Rector/Foreach_/SimplifyForeachToArrayFilterRector.php', 'Rector\\CodeQuality\\Rector\\Foreach_\\SimplifyForeachToCoalescingRector' => $baseDir . '/rules/CodeQuality/Rector/Foreach_/SimplifyForeachToCoalescingRector.php', 'Rector\\CodeQuality\\Rector\\Foreach_\\UnusedForeachValueToArrayKeysRector' => $baseDir . '/rules/CodeQuality/Rector/Foreach_/UnusedForeachValueToArrayKeysRector.php', - 'Rector\\CodeQuality\\Rector\\FuncCall\\ArrayKeysAndInArrayToArrayKeyExistsRector' => $baseDir . '/rules/CodeQuality/Rector/FuncCall/ArrayKeysAndInArrayToArrayKeyExistsRector.php', 'Rector\\CodeQuality\\Rector\\FuncCall\\ArrayMergeOfNonArraysToSimpleArrayRector' => $baseDir . '/rules/CodeQuality/Rector/FuncCall/ArrayMergeOfNonArraysToSimpleArrayRector.php', 'Rector\\CodeQuality\\Rector\\FuncCall\\BoolvalToTypeCastRector' => $baseDir . '/rules/CodeQuality/Rector/FuncCall/BoolvalToTypeCastRector.php', 'Rector\\CodeQuality\\Rector\\FuncCall\\CallUserFuncWithArrowFunctionToInlineRector' => $baseDir . '/rules/CodeQuality/Rector/FuncCall/CallUserFuncWithArrowFunctionToInlineRector.php', diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 6daf563cbab..bd208dc48af 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit3a11c776258046af5ada1aa5e6635840 +class ComposerAutoloaderInit81fb50a001fc3a5b67552be5bc7095a0 { private static $loader; @@ -22,17 +22,17 @@ class ComposerAutoloaderInit3a11c776258046af5ada1aa5e6635840 return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit3a11c776258046af5ada1aa5e6635840', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit81fb50a001fc3a5b67552be5bc7095a0', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInit3a11c776258046af5ada1aa5e6635840', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit81fb50a001fc3a5b67552be5bc7095a0', 'loadClassLoader')); require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit3a11c776258046af5ada1aa5e6635840::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit81fb50a001fc3a5b67552be5bc7095a0::getInitializer($loader)); $loader->setClassMapAuthoritative(true); $loader->register(true); - $filesToLoad = \Composer\Autoload\ComposerStaticInit3a11c776258046af5ada1aa5e6635840::$files; + $filesToLoad = \Composer\Autoload\ComposerStaticInit81fb50a001fc3a5b67552be5bc7095a0::$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 c2b4cbb66db..f19481408af 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit3a11c776258046af5ada1aa5e6635840 +class ComposerStaticInit81fb50a001fc3a5b67552be5bc7095a0 { public static $files = array ( 'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php', @@ -1489,7 +1489,6 @@ class ComposerStaticInit3a11c776258046af5ada1aa5e6635840 'Rector\\CodeQuality\\Rector\\Foreach_\\SimplifyForeachToArrayFilterRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/Foreach_/SimplifyForeachToArrayFilterRector.php', 'Rector\\CodeQuality\\Rector\\Foreach_\\SimplifyForeachToCoalescingRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/Foreach_/SimplifyForeachToCoalescingRector.php', 'Rector\\CodeQuality\\Rector\\Foreach_\\UnusedForeachValueToArrayKeysRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/Foreach_/UnusedForeachValueToArrayKeysRector.php', - 'Rector\\CodeQuality\\Rector\\FuncCall\\ArrayKeysAndInArrayToArrayKeyExistsRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/FuncCall/ArrayKeysAndInArrayToArrayKeyExistsRector.php', 'Rector\\CodeQuality\\Rector\\FuncCall\\ArrayMergeOfNonArraysToSimpleArrayRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/FuncCall/ArrayMergeOfNonArraysToSimpleArrayRector.php', 'Rector\\CodeQuality\\Rector\\FuncCall\\BoolvalToTypeCastRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/FuncCall/BoolvalToTypeCastRector.php', 'Rector\\CodeQuality\\Rector\\FuncCall\\CallUserFuncWithArrowFunctionToInlineRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/FuncCall/CallUserFuncWithArrowFunctionToInlineRector.php', @@ -3051,9 +3050,9 @@ class ComposerStaticInit3a11c776258046af5ada1aa5e6635840 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit3a11c776258046af5ada1aa5e6635840::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit3a11c776258046af5ada1aa5e6635840::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit3a11c776258046af5ada1aa5e6635840::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit81fb50a001fc3a5b67552be5bc7095a0::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit81fb50a001fc3a5b67552be5bc7095a0::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInit81fb50a001fc3a5b67552be5bc7095a0::$classMap; }, null, ClassLoader::class); }