From 6410689857537a82564c3ee501e93ba10f893362 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sat, 29 Aug 2026 23:32:52 +0200 Subject: [PATCH 1/4] [dx] Remove RemoveDeadInstanceOfRector from instanceof set, already in dead-code set Claude-Session: https://claude.ai/code/session_012HQ19gVsT8wVkekuVqVXGx --- config/set/instanceof.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/config/set/instanceof.php b/config/set/instanceof.php index 9305d1c8240..3560adc6633 100644 --- a/config/set/instanceof.php +++ b/config/set/instanceof.php @@ -5,7 +5,6 @@ use Rector\CodeQuality\Rector\FuncCall\InlineIsAInstanceOfRector; use Rector\CodeQuality\Rector\Identical\FlipTypeControlToUseExclusiveTypeRector; use Rector\Config\RectorConfig; -use Rector\DeadCode\Rector\If_\RemoveDeadInstanceOfRector; use Rector\Instanceof_\Rector\Ternary\FlipNegatedTernaryInstanceofRector; use Rector\TypeDeclaration\Rector\BooleanAnd\BinaryOpNullableToInstanceofRector; use Rector\TypeDeclaration\Rector\Empty_\EmptyOnNullableObjectToInstanceOfRector; @@ -16,7 +15,6 @@ EmptyOnNullableObjectToInstanceOfRector::class, InlineIsAInstanceOfRector::class, FlipTypeControlToUseExclusiveTypeRector::class, - RemoveDeadInstanceOfRector::class, FlipNegatedTernaryInstanceofRector::class, BinaryOpNullableToInstanceofRector::class, WhileNullableToInstanceofRector::class, From 82f3f645d1323e8829ae777403e6a28af53a0ff1 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sat, 29 Aug 2026 23:33:41 +0200 Subject: [PATCH 2/4] [dx] Remove InlineIsAInstanceOfRector and EmptyOnNullableObjectToInstanceOfRector from instanceof set, already in code-quality and type-declaration sets Claude-Session: https://claude.ai/code/session_012HQ19gVsT8wVkekuVqVXGx --- config/set/instanceof.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/config/set/instanceof.php b/config/set/instanceof.php index 3560adc6633..7ee88830c04 100644 --- a/config/set/instanceof.php +++ b/config/set/instanceof.php @@ -2,18 +2,14 @@ declare(strict_types=1); -use Rector\CodeQuality\Rector\FuncCall\InlineIsAInstanceOfRector; use Rector\CodeQuality\Rector\Identical\FlipTypeControlToUseExclusiveTypeRector; use Rector\Config\RectorConfig; use Rector\Instanceof_\Rector\Ternary\FlipNegatedTernaryInstanceofRector; use Rector\TypeDeclaration\Rector\BooleanAnd\BinaryOpNullableToInstanceofRector; -use Rector\TypeDeclaration\Rector\Empty_\EmptyOnNullableObjectToInstanceOfRector; use Rector\TypeDeclaration\Rector\While_\WhileNullableToInstanceofRector; return static function (RectorConfig $rectorConfig): void { $rectorConfig->rules([ - EmptyOnNullableObjectToInstanceOfRector::class, - InlineIsAInstanceOfRector::class, FlipTypeControlToUseExclusiveTypeRector::class, FlipNegatedTernaryInstanceofRector::class, BinaryOpNullableToInstanceofRector::class, From 340fdab912bb18fd8ef978240b5f54f946b73767 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sat, 29 Aug 2026 23:35:06 +0200 Subject: [PATCH 3/4] [dx] Move nullable-to-instanceof type rules to type-declaration set, remove FlipNegatedTernaryInstanceofRector duplicate Move WhileNullableToInstanceofRector and BinaryOpNullableToInstanceofRector into TypeDeclarationLevel next to EmptyOnNullableObjectToInstanceOfRector. Drop FlipNegatedTernaryInstanceofRector from instanceof set, already in code-quality set. Claude-Session: https://claude.ai/code/session_012HQ19gVsT8wVkekuVqVXGx --- config/set/instanceof.php | 6 ------ src/Config/Level/TypeDeclarationLevel.php | 4 ++++ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/config/set/instanceof.php b/config/set/instanceof.php index 7ee88830c04..e77958a609e 100644 --- a/config/set/instanceof.php +++ b/config/set/instanceof.php @@ -4,15 +4,9 @@ use Rector\CodeQuality\Rector\Identical\FlipTypeControlToUseExclusiveTypeRector; use Rector\Config\RectorConfig; -use Rector\Instanceof_\Rector\Ternary\FlipNegatedTernaryInstanceofRector; -use Rector\TypeDeclaration\Rector\BooleanAnd\BinaryOpNullableToInstanceofRector; -use Rector\TypeDeclaration\Rector\While_\WhileNullableToInstanceofRector; return static function (RectorConfig $rectorConfig): void { $rectorConfig->rules([ FlipTypeControlToUseExclusiveTypeRector::class, - FlipNegatedTernaryInstanceofRector::class, - BinaryOpNullableToInstanceofRector::class, - WhileNullableToInstanceofRector::class, ]); }; diff --git a/src/Config/Level/TypeDeclarationLevel.php b/src/Config/Level/TypeDeclarationLevel.php index f76e8b39fa2..1deb2643fcc 100644 --- a/src/Config/Level/TypeDeclarationLevel.php +++ b/src/Config/Level/TypeDeclarationLevel.php @@ -8,6 +8,7 @@ use Rector\Contract\Rector\RectorInterface; use Rector\Symfony\CodeQuality\Rector\ClassMethod\ResponseReturnTypeControllerActionRector; use Rector\TypeDeclaration\Rector\ArrowFunction\AddArrowFunctionReturnTypeRector; +use Rector\TypeDeclaration\Rector\BooleanAnd\BinaryOpNullableToInstanceofRector; use Rector\TypeDeclaration\Rector\Class_\AddTestsVoidReturnTypeWhereNoReturnRector; use Rector\TypeDeclaration\Rector\Class_\ChildDoctrineRepositoryClassTypeRector; use Rector\TypeDeclaration\Rector\Class_\MergeDateTimePropertyTypeDeclarationRector; @@ -78,6 +79,7 @@ use Rector\TypeDeclaration\Rector\Property\TypedPropertyFromAssignsRector; use Rector\TypeDeclaration\Rector\Property\TypedPropertyFromStrictConstructorRector; use Rector\TypeDeclaration\Rector\Property\TypedPropertyFromStrictSetUpRector; +use Rector\TypeDeclaration\Rector\While_\WhileNullableToInstanceofRector; final class TypeDeclarationLevel { @@ -126,6 +128,8 @@ final class TypeDeclarationLevel // php 7.4 EmptyOnNullableObjectToInstanceOfRector::class, + WhileNullableToInstanceofRector::class, + BinaryOpNullableToInstanceofRector::class, // php 7.4 TypedPropertyFromStrictConstructorRector::class, From 708a4540680c7fddcaa537276c88b30f722b9777 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sat, 29 Aug 2026 23:36:34 +0200 Subject: [PATCH 4/4] [dx] Deprecate SetList::INSTANCEOF, empty the set, suggest code-quality Remove FlipTypeControlToUseExclusiveTypeRector (already in code-quality). The instanceof set is now empty as all its rules moved to code-quality and type-declaration sets; deprecate the constant. Claude-Session: https://claude.ai/code/session_012HQ19gVsT8wVkekuVqVXGx --- config/set/instanceof.php | 6 ++---- src/Set/ValueObject/SetList.php | 3 +++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/config/set/instanceof.php b/config/set/instanceof.php index e77958a609e..bdd7eb6f575 100644 --- a/config/set/instanceof.php +++ b/config/set/instanceof.php @@ -2,11 +2,9 @@ declare(strict_types=1); -use Rector\CodeQuality\Rector\Identical\FlipTypeControlToUseExclusiveTypeRector; use Rector\Config\RectorConfig; +// note: all instanceof rules were moved to code quality and type declaration sets return static function (RectorConfig $rectorConfig): void { - $rectorConfig->rules([ - FlipTypeControlToUseExclusiveTypeRector::class, - ]); + $rectorConfig->rules([]); }; diff --git a/src/Set/ValueObject/SetList.php b/src/Set/ValueObject/SetList.php index 5683b300cda..69edadc1645 100644 --- a/src/Set/ValueObject/SetList.php +++ b/src/Set/ValueObject/SetList.php @@ -131,6 +131,9 @@ final class SetList */ public const string EARLY_RETURN = __DIR__ . '/../../../config/set/early-return.php'; + /** + * @deprecated Use code-quality set instead, as most instanceof rules were moved there + */ public const string INSTANCEOF = __DIR__ . '/../../../config/set/instanceof.php'; public const string IF = __DIR__ . '/../../../config/set/if.php';