diff --git a/rules-tests/CodeQuality/Rector/BooleanAnd/RemoveUselessIsObjectCheckRector/Fixture/left_instanceof_right_is_object.php.inc b/rules-tests/CodeQuality/Rector/BooleanAnd/RemoveUselessIsObjectCheckRector/Fixture/left_instanceof_right_is_object.php.inc deleted file mode 100644 index f9c4fd4d369..00000000000 --- a/rules-tests/CodeQuality/Rector/BooleanAnd/RemoveUselessIsObjectCheckRector/Fixture/left_instanceof_right_is_object.php.inc +++ /dev/null @@ -1,27 +0,0 @@ - ------ - diff --git a/rules-tests/CodeQuality/Rector/BooleanAnd/RemoveUselessIsObjectCheckRector/Fixture/left_is_object_right_instanceof.php.inc b/rules-tests/CodeQuality/Rector/BooleanAnd/RemoveUselessIsObjectCheckRector/Fixture/left_is_object_right_instanceof.php.inc deleted file mode 100644 index 022be644152..00000000000 --- a/rules-tests/CodeQuality/Rector/BooleanAnd/RemoveUselessIsObjectCheckRector/Fixture/left_is_object_right_instanceof.php.inc +++ /dev/null @@ -1,27 +0,0 @@ - ------ - diff --git a/rules-tests/CodeQuality/Rector/BooleanAnd/RemoveUselessIsObjectCheckRector/Fixture/skip_different_expr.php.inc b/rules-tests/CodeQuality/Rector/BooleanAnd/RemoveUselessIsObjectCheckRector/Fixture/skip_different_expr.php.inc deleted file mode 100644 index 9b7a9eb0f74..00000000000 --- a/rules-tests/CodeQuality/Rector/BooleanAnd/RemoveUselessIsObjectCheckRector/Fixture/skip_different_expr.php.inc +++ /dev/null @@ -1,11 +0,0 @@ -data) === 1; - } -} diff --git a/rules-tests/CodeQuality/Rector/BooleanAnd/RemoveUselessIsObjectCheckRector/RemoveUselessIsObjectCheckRectorTest.php b/rules-tests/CodeQuality/Rector/BooleanAnd/RemoveUselessIsObjectCheckRector/RemoveUselessIsObjectCheckRectorTest.php deleted file mode 100644 index fc932e2b8cb..00000000000 --- a/rules-tests/CodeQuality/Rector/BooleanAnd/RemoveUselessIsObjectCheckRector/RemoveUselessIsObjectCheckRectorTest.php +++ /dev/null @@ -1,28 +0,0 @@ -doTestFile($filePath); - } - - public static function provideData(): Iterator - { - return self::yieldFilesFromDirectory(__DIR__ . '/Fixture'); - } - - public function provideConfigFilePath(): string - { - return __DIR__ . '/config/configured_rule.php'; - } -} diff --git a/rules-tests/CodeQuality/Rector/BooleanAnd/RemoveUselessIsObjectCheckRector/config/configured_rule.php b/rules-tests/CodeQuality/Rector/BooleanAnd/RemoveUselessIsObjectCheckRector/config/configured_rule.php deleted file mode 100644 index c4735385d7b..00000000000 --- a/rules-tests/CodeQuality/Rector/BooleanAnd/RemoveUselessIsObjectCheckRector/config/configured_rule.php +++ /dev/null @@ -1,9 +0,0 @@ -withRules([RemoveUselessIsObjectCheckRector::class]); diff --git a/rules/CodeQuality/Rector/BooleanAnd/RemoveUselessIsObjectCheckRector.php b/rules/CodeQuality/Rector/BooleanAnd/RemoveUselessIsObjectCheckRector.php index 84672198d91..f1484b843e0 100644 --- a/rules/CodeQuality/Rector/BooleanAnd/RemoveUselessIsObjectCheckRector.php +++ b/rules/CodeQuality/Rector/BooleanAnd/RemoveUselessIsObjectCheckRector.php @@ -6,16 +6,16 @@ use PhpParser\Node; use PhpParser\Node\Expr\BinaryOp\BooleanAnd; -use PhpParser\Node\Expr\FuncCall; -use PhpParser\Node\Expr\Instanceof_; +use Rector\Configuration\Deprecation\Contract\DeprecatedInterface; +use Rector\Exception\ShouldNotHappenException; use Rector\Rector\AbstractRector; use Rector\RuleDoc\CodeSample\CodeSample; use Rector\RuleDoc\RuleDefinition; /** - * @see \Rector\Tests\CodeQuality\Rector\BooleanAnd\RemoveUselessIsObjectCheckRector\RemoveUselessIsObjectCheckRectorTest + * @deprecated This rule is deprecated, as it handles a niche is_object() with instanceof case that is not part of the PHP upgrade path. */ -final class RemoveUselessIsObjectCheckRector extends AbstractRector +final class RemoveUselessIsObjectCheckRector extends AbstractRector implements DeprecatedInterface { public function getRuleDefinition(): RuleDefinition { @@ -38,42 +38,9 @@ public function getNodeTypes(): array */ public function refactor(Node $node): ?Node { - if ($node->left instanceof FuncCall - && $this->isName($node->left, 'is_object') - && $node->right instanceof Instanceof_) { - return $this->processRemoveUselessIsObject($node->left, $node->right); - } - - if (! $node->left instanceof Instanceof_) { - return null; - } - - if (! $node->right instanceof FuncCall) { - return null; - } - - if (! $this->isName($node->right, 'is_object')) { - return null; - } - - return $this->processRemoveUselessIsObject($node->right, $node->left); - } - - private function processRemoveUselessIsObject(FuncCall $funcCall, Instanceof_ $instanceof): ?Instanceof_ - { - if ($funcCall->isFirstClassCallable()) { - return null; - } - - $args = $funcCall->getArgs(); - if (! isset($args[0])) { - return null; - } - - if (! $this->nodeComparator->areNodesEqual($args[0]->value, $instanceof->expr)) { - return null; - } - - return $instanceof; + throw new ShouldNotHappenException(sprintf( + '"%s" rule is deprecated, as it handles a niche is_object() with instanceof case that is not part of the PHP upgrade path', + self::class + )); } } diff --git a/src/Config/Level/CodeQualityLevel.php b/src/Config/Level/CodeQualityLevel.php index 17026f84675..acde2b5b739 100644 --- a/src/Config/Level/CodeQualityLevel.php +++ b/src/Config/Level/CodeQualityLevel.php @@ -7,7 +7,6 @@ use Rector\CodeQuality\Rector\Assign\CombinedAssignRector; use Rector\CodeQuality\Rector\AssignOp\NewArrayItemConcatAssignToAssignRector; use Rector\CodeQuality\Rector\Attribute\SortAttributeNamedArgsRector; -use Rector\CodeQuality\Rector\BooleanAnd\RemoveUselessIsObjectCheckRector; use Rector\CodeQuality\Rector\BooleanAnd\RepeatedAndNotEqualToNotInArrayRector; use Rector\CodeQuality\Rector\BooleanAnd\SimplifyEmptyArrayCheckRector; use Rector\CodeQuality\Rector\BooleanNot\NegatedAndsToPositiveOrsRector; @@ -175,7 +174,6 @@ final class CodeQualityLevel CleanupUnneededNullsafeOperatorRector::class, LocallyCalledStaticMethodToNonStaticRector::class, NumberCompareToMaxFuncCallRector::class, - RemoveUselessIsObjectCheckRector::class, ConvertStaticToSelfRector::class, SortCallLikeNamedArgsRector::class, SortAttributeNamedArgsRector::class,