Skip to content

Commit 06d47b0

Browse files
committed
Updated Rector to commit d146323f5efed116b4dc465e0b03dccd0faf771f
rectorphp/rector-src@d146323 [deprecation] Deprecate SwitchTrueToIfRector (#8109)
1 parent a800970 commit 06d47b0

3 files changed

Lines changed: 9 additions & 46 deletions

File tree

rules/CodeQuality/Rector/Switch_/SwitchTrueToIfRector.php

Lines changed: 6 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,17 @@
44
namespace Rector\CodeQuality\Rector\Switch_;
55

66
use PhpParser\Node;
7-
use PhpParser\Node\Expr;
8-
use PhpParser\Node\Stmt;
9-
use PhpParser\Node\Stmt\Case_;
10-
use PhpParser\Node\Stmt\If_;
11-
use PhpParser\Node\Stmt\Return_;
127
use PhpParser\Node\Stmt\Switch_;
13-
use Rector\PhpParser\Node\Value\ValueResolver;
8+
use Rector\Configuration\Deprecation\Contract\DeprecatedInterface;
9+
use Rector\Exception\ShouldNotHappenException;
1410
use Rector\Rector\AbstractRector;
1511
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
1612
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
1713
/**
18-
* @see \Rector\Tests\CodeQuality\Rector\Switch_\SwitchTrueToIfRector\SwitchTrueToIfRectorTest
14+
* @deprecated as it worsens readability by expanding a compact `switch (true)` into many separate `if` statements. Use `match (true)` for the same logic instead.
1915
*/
20-
final class SwitchTrueToIfRector extends AbstractRector
16+
final class SwitchTrueToIfRector extends AbstractRector implements DeprecatedInterface
2117
{
22-
/**
23-
* @readonly
24-
*/
25-
private ValueResolver $valueResolver;
26-
public function __construct(ValueResolver $valueResolver)
27-
{
28-
$this->valueResolver = $valueResolver;
29-
}
3018
public function getRuleDefinition(): RuleDefinition
3119
{
3220
return new RuleDefinition('Change `switch (true)` to `if` statements', [new CodeSample(<<<'CODE_SAMPLE'
@@ -75,33 +63,9 @@ public function getNodeTypes(): array
7563
}
7664
/**
7765
* @param Switch_ $node
78-
* @return Stmt[]|null
7966
*/
80-
public function refactor(Node $node): ?array
67+
public function refactor(Node $node): ?Node
8168
{
82-
if (!$this->valueResolver->isTrue($node->cond)) {
83-
return null;
84-
}
85-
$newStmts = [];
86-
$defaultCase = null;
87-
foreach ($node->cases as $case) {
88-
if (!end($case->stmts) instanceof Return_) {
89-
return null;
90-
}
91-
if (!$case->cond instanceof Expr) {
92-
$defaultCase = $case;
93-
continue;
94-
}
95-
$if = new If_($case->cond);
96-
$if->stmts = $case->stmts;
97-
$newStmts[] = $if;
98-
}
99-
if ($defaultCase instanceof Case_) {
100-
$newStmts = array_merge($newStmts, $defaultCase->stmts);
101-
}
102-
if ($newStmts === []) {
103-
return null;
104-
}
105-
return $newStmts;
69+
throw new ShouldNotHappenException(sprintf('"%s" is deprecated as it worsens readability. Use "match (true)" for the same logic instead', self::class));
10670
}
10771
}

src/Application/VersionResolver.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ final class VersionResolver
1919
* @api
2020
* @var string
2121
*/
22-
public const PACKAGE_VERSION = 'eebd08648851e64a18c19c62710546c14729da00';
22+
public const PACKAGE_VERSION = 'd146323f5efed116b4dc465e0b03dccd0faf771f';
2323
/**
2424
* @api
2525
* @var string
2626
*/
27-
public const RELEASE_DATE = '2026-06-29 11:18:40';
27+
public const RELEASE_DATE = '2026-06-29 09:25:31';
2828
/**
2929
* @var int
3030
*/

src/Config/Level/CodeQualityLevel.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@
7474
use Rector\CodeQuality\Rector\Property\FixClassCaseSensitivityVarDocblockRector;
7575
use Rector\CodeQuality\Rector\StmtsAwareInterface\MoveInnerFunctionToTopLevelRector;
7676
use Rector\CodeQuality\Rector\Switch_\SingularSwitchToIfRector;
77-
use Rector\CodeQuality\Rector\Switch_\SwitchTrueToIfRector;
7877
use Rector\CodeQuality\Rector\Ternary\ArrayKeyExistsTernaryThenValueToCoalescingRector;
7978
use Rector\CodeQuality\Rector\Ternary\NumberCompareToMaxFuncCallRector;
8079
use Rector\CodeQuality\Rector\Ternary\SimplifyTautologyTernaryRector;
@@ -107,7 +106,7 @@ final class CodeQualityLevel
107106
*
108107
* @var array<class-string<RectorInterface>>
109108
*/
110-
public const RULES = [FixClassCaseSensitivityVarDocblockRector::class, CombinedAssignRector::class, NewArrayItemConcatAssignToAssignRector::class, SimplifyEmptyArrayCheckRector::class, ReplaceMultipleBooleanNotRector::class, ReplaceConstantBooleanNotRector::class, ForeachToInArrayRector::class, RepeatedOrEqualToInArrayRector::class, RepeatedAndNotEqualToNotInArrayRector::class, MoveInnerFunctionToTopLevelRector::class, InnerFunctionToPrivateMethodRector::class, SimplifyForeachToCoalescingRector::class, SimplifyFuncGetArgsCountRector::class, SimplifyInArrayValuesRector::class, SimplifyStrposLowerRector::class, SimplifyArraySearchRector::class, SimplifyConditionsRector::class, SimplifyIfNotNullReturnRector::class, SimplifyIfReturnBoolRector::class, UnnecessaryTernaryExpressionRector::class, RemoveExtraParametersRector::class, SimplifyDeMorganBinaryRector::class, NegatedAndsToPositiveOrsRector::class, SimplifyTautologyTernaryRector::class, SingleInArrayToCompareRector::class, SimplifyIfElseToTernaryRector::class, TernaryImplodeToImplodeRector::class, ConsecutiveNullCompareReturnsToNullCoalesceQueueRector::class, ExplicitBoolCompareRector::class, CombineIfRector::class, UseIdenticalOverEqualWithSameTypeRector::class, SimplifyBoolIdenticalTrueRector::class, SimplifyRegexPatternRector::class, BooleanNotIdenticalToNotIdenticalRector::class, AndAssignsToSeparateLinesRector::class, CompactToVariablesRector::class, CompleteDynamicPropertiesRector::class, IsAWithStringWithThirdArgumentRector::class, StrlenZeroToIdenticalEmptyStringRector::class, ThrowWithPreviousExceptionRector::class, RemoveSoleValueSprintfRector::class, ShortenElseIfRector::class, ExplicitReturnNullRector::class, ArrayMergeOfNonArraysToSimpleArrayRector::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, VariableConstFetchToClassConstFetchRector::class, SwitchNegatedTernaryRector::class, SingularSwitchToIfRector::class, SimplifyIfNullableReturnRector::class, CallUserFuncWithArrowFunctionToInlineRector::class, FlipTypeControlToUseExclusiveTypeRector::class, InlineArrayReturnAssignRector::class, InlineIsAInstanceOfRector::class, TernaryFalseExpressionToIfRector::class, InlineConstructorDefaultToPropertyRector::class, TernaryEmptyArrayArrayDimFetchToCoalesceRector::class, OptionalParametersAfterRequiredRector::class, SimplifyEmptyCheckOnEmptyArrayRector::class, SwitchTrueToIfRector::class, CleanupUnneededNullsafeOperatorRector::class, DisallowedEmptyRuleFixerRector::class, LocallyCalledStaticMethodToNonStaticRector::class, NumberCompareToMaxFuncCallRector::class, CompleteMissingIfElseBracketRector::class, RemoveUselessIsObjectCheckRector::class, ConvertStaticToSelfRector::class, SortCallLikeNamedArgsRector::class, SortAttributeNamedArgsRector::class, RemoveReadonlyPropertyVisibilityOnReadonlyClassRector::class, SafeDeclareStrictTypesRector::class];
109+
public const RULES = [FixClassCaseSensitivityVarDocblockRector::class, CombinedAssignRector::class, NewArrayItemConcatAssignToAssignRector::class, SimplifyEmptyArrayCheckRector::class, ReplaceMultipleBooleanNotRector::class, ReplaceConstantBooleanNotRector::class, ForeachToInArrayRector::class, RepeatedOrEqualToInArrayRector::class, RepeatedAndNotEqualToNotInArrayRector::class, MoveInnerFunctionToTopLevelRector::class, InnerFunctionToPrivateMethodRector::class, SimplifyForeachToCoalescingRector::class, SimplifyFuncGetArgsCountRector::class, SimplifyInArrayValuesRector::class, SimplifyStrposLowerRector::class, SimplifyArraySearchRector::class, SimplifyConditionsRector::class, SimplifyIfNotNullReturnRector::class, SimplifyIfReturnBoolRector::class, UnnecessaryTernaryExpressionRector::class, RemoveExtraParametersRector::class, SimplifyDeMorganBinaryRector::class, NegatedAndsToPositiveOrsRector::class, SimplifyTautologyTernaryRector::class, SingleInArrayToCompareRector::class, SimplifyIfElseToTernaryRector::class, TernaryImplodeToImplodeRector::class, ConsecutiveNullCompareReturnsToNullCoalesceQueueRector::class, ExplicitBoolCompareRector::class, CombineIfRector::class, UseIdenticalOverEqualWithSameTypeRector::class, SimplifyBoolIdenticalTrueRector::class, SimplifyRegexPatternRector::class, BooleanNotIdenticalToNotIdenticalRector::class, AndAssignsToSeparateLinesRector::class, CompactToVariablesRector::class, CompleteDynamicPropertiesRector::class, IsAWithStringWithThirdArgumentRector::class, StrlenZeroToIdenticalEmptyStringRector::class, ThrowWithPreviousExceptionRector::class, RemoveSoleValueSprintfRector::class, ShortenElseIfRector::class, ExplicitReturnNullRector::class, ArrayMergeOfNonArraysToSimpleArrayRector::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, VariableConstFetchToClassConstFetchRector::class, SwitchNegatedTernaryRector::class, SingularSwitchToIfRector::class, SimplifyIfNullableReturnRector::class, CallUserFuncWithArrowFunctionToInlineRector::class, FlipTypeControlToUseExclusiveTypeRector::class, InlineArrayReturnAssignRector::class, InlineIsAInstanceOfRector::class, TernaryFalseExpressionToIfRector::class, InlineConstructorDefaultToPropertyRector::class, TernaryEmptyArrayArrayDimFetchToCoalesceRector::class, OptionalParametersAfterRequiredRector::class, SimplifyEmptyCheckOnEmptyArrayRector::class, CleanupUnneededNullsafeOperatorRector::class, DisallowedEmptyRuleFixerRector::class, LocallyCalledStaticMethodToNonStaticRector::class, NumberCompareToMaxFuncCallRector::class, CompleteMissingIfElseBracketRector::class, RemoveUselessIsObjectCheckRector::class, ConvertStaticToSelfRector::class, SortCallLikeNamedArgsRector::class, SortAttributeNamedArgsRector::class, RemoveReadonlyPropertyVisibilityOnReadonlyClassRector::class, SafeDeclareStrictTypesRector::class];
111110
/**
112111
* @var array<class-string<RectorInterface>, mixed[]>
113112
*/

0 commit comments

Comments
 (0)