Skip to content

Commit 84bfd7c

Browse files
committed
Updated Rector to commit b4e4c3814ab45e1b7e85b46b2ad8f4c90e8da4b3
rectorphp/rector-src@b4e4c38 [DeadCode] Add RemoveUselessTernaryRector (#7961)
1 parent e802a26 commit 84bfd7c

12 files changed

Lines changed: 177 additions & 10 deletions

File tree

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
<?php
2+
3+
declare (strict_types=1);
4+
namespace Rector\DeadCode\Rector\Ternary;
5+
6+
use PhpParser\Node;
7+
use PhpParser\Node\Expr;
8+
use PhpParser\Node\Expr\Array_;
9+
use PhpParser\Node\Expr\BooleanNot;
10+
use PhpParser\Node\Expr\Ternary;
11+
use PhpParser\Node\Scalar\Int_;
12+
use PHPStan\Type\ArrayType;
13+
use PHPStan\Type\BooleanType;
14+
use PHPStan\Type\IntegerType;
15+
use Rector\PhpParser\Node\Value\ValueResolver;
16+
use Rector\Rector\AbstractRector;
17+
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
18+
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
19+
/**
20+
* @see \Rector\Tests\DeadCode\Rector\Ternary\RemoveUselessTernaryRector\RemoveUselessTernaryRectorTest
21+
*/
22+
final class RemoveUselessTernaryRector extends AbstractRector
23+
{
24+
/**
25+
* @readonly
26+
*/
27+
private ValueResolver $valueResolver;
28+
public function __construct(ValueResolver $valueResolver)
29+
{
30+
$this->valueResolver = $valueResolver;
31+
}
32+
public function getRuleDefinition(): RuleDefinition
33+
{
34+
return new RuleDefinition('Remove useless ternary if fallback is falsey of left code', [new CodeSample(<<<'CODE_SAMPLE'
35+
function go(bool $value)
36+
{
37+
return $value ?: false;
38+
}
39+
CODE_SAMPLE
40+
, <<<'CODE_SAMPLE'
41+
function go(bool $value)
42+
{
43+
return $value;
44+
}
45+
CODE_SAMPLE
46+
)]);
47+
}
48+
/**
49+
* @return array<class-string<Node>>
50+
*/
51+
public function getNodeTypes(): array
52+
{
53+
return [Ternary::class];
54+
}
55+
/**
56+
* @param Ternary $node
57+
*/
58+
public function refactor(Node $node): ?Node
59+
{
60+
/**
61+
* if condition is negated, skip
62+
* switch negated ternary condition early via SwitchNegatedTernaryRector for that
63+
* if needed
64+
*/
65+
if ($node->cond instanceof BooleanNot) {
66+
return null;
67+
}
68+
$nativeType = $this->nodeTypeResolver->getNativeType($node->cond);
69+
if ($nativeType instanceof BooleanType && $node->if instanceof Expr && $this->valueResolver->isTrue($node->if) && $this->valueResolver->isFalse($node->else)) {
70+
return $node->cond;
71+
}
72+
if ($node->if instanceof Expr && !$this->nodeComparator->areNodesEqual($node->if, $node->cond)) {
73+
return null;
74+
}
75+
if ($nativeType instanceof BooleanType && $this->valueResolver->isFalse($node->else)) {
76+
return $node->cond;
77+
}
78+
if ($nativeType instanceof ArrayType && $node->else instanceof Array_ && $node->else->items === []) {
79+
return $node->cond;
80+
}
81+
if ($nativeType instanceof IntegerType && $node->else instanceof Int_ && $node->else->value === 0) {
82+
return $node->cond;
83+
}
84+
return null;
85+
}
86+
}

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 = 'ffbf1039f74226453855afadb17d0449c79347fd';
22+
public const PACKAGE_VERSION = 'b4e4c3814ab45e1b7e85b46b2ad8f4c90e8da4b3';
2323
/**
2424
* @api
2525
* @var string
2626
*/
27-
public const RELEASE_DATE = '2026-04-05 15:21:47';
27+
public const RELEASE_DATE = '2026-04-06 16:35:53';
2828
/**
2929
* @var int
3030
*/

src/Config/Level/DeadCodeLevel.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
use Rector\DeadCode\Rector\Stmt\RemoveNextSameValueConditionRector;
6161
use Rector\DeadCode\Rector\Stmt\RemoveUnreachableStatementRector;
6262
use Rector\DeadCode\Rector\Switch_\RemoveDuplicatedCaseInSwitchRector;
63+
use Rector\DeadCode\Rector\Ternary\RemoveUselessTernaryRector;
6364
use Rector\DeadCode\Rector\Ternary\TernaryToBooleanOrFalseToBooleanAndRector;
6465
use Rector\DeadCode\Rector\TryCatch\RemoveDeadCatchRector;
6566
use Rector\DeadCode\Rector\TryCatch\RemoveDeadTryCatchRector;
@@ -97,6 +98,7 @@ final class DeadCodeLevel
9798
RemoveFilterVarOnExactTypeRector::class,
9899
RemoveTypedPropertyDeadInstanceOfRector::class,
99100
TernaryToBooleanOrFalseToBooleanAndRector::class,
101+
RemoveUselessTernaryRector::class,
100102
RemoveDoubleAssignRector::class,
101103
RemoveUselessAssignFromPropertyPromotionRector::class,
102104
RemoveConcatAutocastRector::class,

vendor/composer/autoload_classmap.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1448,6 +1448,7 @@
14481448
'Rector\\DeadCode\\Rector\\Stmt\\RemoveNextSameValueConditionRector' => $baseDir . '/rules/DeadCode/Rector/Stmt/RemoveNextSameValueConditionRector.php',
14491449
'Rector\\DeadCode\\Rector\\Stmt\\RemoveUnreachableStatementRector' => $baseDir . '/rules/DeadCode/Rector/Stmt/RemoveUnreachableStatementRector.php',
14501450
'Rector\\DeadCode\\Rector\\Switch_\\RemoveDuplicatedCaseInSwitchRector' => $baseDir . '/rules/DeadCode/Rector/Switch_/RemoveDuplicatedCaseInSwitchRector.php',
1451+
'Rector\\DeadCode\\Rector\\Ternary\\RemoveUselessTernaryRector' => $baseDir . '/rules/DeadCode/Rector/Ternary/RemoveUselessTernaryRector.php',
14511452
'Rector\\DeadCode\\Rector\\Ternary\\TernaryToBooleanOrFalseToBooleanAndRector' => $baseDir . '/rules/DeadCode/Rector/Ternary/TernaryToBooleanOrFalseToBooleanAndRector.php',
14521453
'Rector\\DeadCode\\Rector\\TryCatch\\RemoveDeadCatchRector' => $baseDir . '/rules/DeadCode/Rector/TryCatch/RemoveDeadCatchRector.php',
14531454
'Rector\\DeadCode\\Rector\\TryCatch\\RemoveDeadTryCatchRector' => $baseDir . '/rules/DeadCode/Rector/TryCatch/RemoveDeadTryCatchRector.php',
@@ -1697,6 +1698,7 @@
16971698
'Rector\\DowngradePhp84\\Rector\\FuncCall\\DowngradeRoundingModeEnumRector' => $vendorDir . '/rector/rector-downgrade-php/rules/DowngradePhp84/Rector/FuncCall/DowngradeRoundingModeEnumRector.php',
16981699
'Rector\\DowngradePhp84\\Rector\\MethodCall\\DowngradeNewMethodCallWithoutParenthesesRector' => $vendorDir . '/rector/rector-downgrade-php/rules/DowngradePhp84/Rector/MethodCall/DowngradeNewMethodCallWithoutParenthesesRector.php',
16991700
'Rector\\DowngradePhp85\\Rector\\Class_\\DowngradeFinalPropertyPromotionRector' => $vendorDir . '/rector/rector-downgrade-php/rules/DowngradePhp85/Rector/Class_/DowngradeFinalPropertyPromotionRector.php',
1701+
'Rector\\DowngradePhp85\\Rector\\Expression\\DowngradeVoidCastRector' => $vendorDir . '/rector/rector-downgrade-php/rules/DowngradePhp85/Rector/Expression/DowngradeVoidCastRector.php',
17001702
'Rector\\DowngradePhp85\\Rector\\FuncCall\\DowngradeArrayFirstLastRector' => $vendorDir . '/rector/rector-downgrade-php/rules/DowngradePhp85/Rector/FuncCall/DowngradeArrayFirstLastRector.php',
17011703
'Rector\\DowngradePhp85\\Rector\\StmtsAwareInterface\\DowngradePipeOperatorRector' => $vendorDir . '/rector/rector-downgrade-php/rules/DowngradePhp85/Rector/StmtsAwareInterface/DowngradePipeOperatorRector.php',
17021704
'Rector\\DowngradePhp86\\Rector\\FuncCall\\DowngradeClampRector' => $vendorDir . '/rector/rector-downgrade-php/rules/DowngradePhp86/Rector/FuncCall/DowngradeClampRector.php',

vendor/composer/autoload_static.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1708,6 +1708,7 @@ class ComposerStaticInitc9819cb6f85619d8e1cbb4426044dd33
17081708
'Rector\\DeadCode\\Rector\\Stmt\\RemoveNextSameValueConditionRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/Stmt/RemoveNextSameValueConditionRector.php',
17091709
'Rector\\DeadCode\\Rector\\Stmt\\RemoveUnreachableStatementRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/Stmt/RemoveUnreachableStatementRector.php',
17101710
'Rector\\DeadCode\\Rector\\Switch_\\RemoveDuplicatedCaseInSwitchRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/Switch_/RemoveDuplicatedCaseInSwitchRector.php',
1711+
'Rector\\DeadCode\\Rector\\Ternary\\RemoveUselessTernaryRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/Ternary/RemoveUselessTernaryRector.php',
17111712
'Rector\\DeadCode\\Rector\\Ternary\\TernaryToBooleanOrFalseToBooleanAndRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/Ternary/TernaryToBooleanOrFalseToBooleanAndRector.php',
17121713
'Rector\\DeadCode\\Rector\\TryCatch\\RemoveDeadCatchRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/TryCatch/RemoveDeadCatchRector.php',
17131714
'Rector\\DeadCode\\Rector\\TryCatch\\RemoveDeadTryCatchRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/TryCatch/RemoveDeadTryCatchRector.php',
@@ -1957,6 +1958,7 @@ class ComposerStaticInitc9819cb6f85619d8e1cbb4426044dd33
19571958
'Rector\\DowngradePhp84\\Rector\\FuncCall\\DowngradeRoundingModeEnumRector' => __DIR__ . '/..' . '/rector/rector-downgrade-php/rules/DowngradePhp84/Rector/FuncCall/DowngradeRoundingModeEnumRector.php',
19581959
'Rector\\DowngradePhp84\\Rector\\MethodCall\\DowngradeNewMethodCallWithoutParenthesesRector' => __DIR__ . '/..' . '/rector/rector-downgrade-php/rules/DowngradePhp84/Rector/MethodCall/DowngradeNewMethodCallWithoutParenthesesRector.php',
19591960
'Rector\\DowngradePhp85\\Rector\\Class_\\DowngradeFinalPropertyPromotionRector' => __DIR__ . '/..' . '/rector/rector-downgrade-php/rules/DowngradePhp85/Rector/Class_/DowngradeFinalPropertyPromotionRector.php',
1961+
'Rector\\DowngradePhp85\\Rector\\Expression\\DowngradeVoidCastRector' => __DIR__ . '/..' . '/rector/rector-downgrade-php/rules/DowngradePhp85/Rector/Expression/DowngradeVoidCastRector.php',
19601962
'Rector\\DowngradePhp85\\Rector\\FuncCall\\DowngradeArrayFirstLastRector' => __DIR__ . '/..' . '/rector/rector-downgrade-php/rules/DowngradePhp85/Rector/FuncCall/DowngradeArrayFirstLastRector.php',
19611963
'Rector\\DowngradePhp85\\Rector\\StmtsAwareInterface\\DowngradePipeOperatorRector' => __DIR__ . '/..' . '/rector/rector-downgrade-php/rules/DowngradePhp85/Rector/StmtsAwareInterface/DowngradePipeOperatorRector.php',
19621964
'Rector\\DowngradePhp86\\Rector\\FuncCall\\DowngradeClampRector' => __DIR__ . '/..' . '/rector/rector-downgrade-php/rules/DowngradePhp86/Rector/FuncCall/DowngradeClampRector.php',

vendor/composer/installed.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1759,12 +1759,12 @@
17591759
"source": {
17601760
"type": "git",
17611761
"url": "https:\/\/github.com\/rectorphp\/rector-downgrade-php.git",
1762-
"reference": "549a1e316e5e123c13edf4d6e825c6fcb9224f57"
1762+
"reference": "9828dbed83a1e3e356c8f3111f2407c7b2b134a2"
17631763
},
17641764
"dist": {
17651765
"type": "zip",
1766-
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-downgrade-php\/zipball\/549a1e316e5e123c13edf4d6e825c6fcb9224f57",
1767-
"reference": "549a1e316e5e123c13edf4d6e825c6fcb9224f57",
1766+
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-downgrade-php\/zipball\/9828dbed83a1e3e356c8f3111f2407c7b2b134a2",
1767+
"reference": "9828dbed83a1e3e356c8f3111f2407c7b2b134a2",
17681768
"shasum": ""
17691769
},
17701770
"require": {
@@ -1788,7 +1788,7 @@
17881788
"tomasvotruba\/unused-public": "^2.2",
17891789
"tracy\/tracy": "^2.11"
17901790
},
1791-
"time": "2026-04-05T10:59:16+00:00",
1791+
"time": "2026-04-06T14:35:10+00:00",
17921792
"default-branch": true,
17931793
"type": "rector-extension",
17941794
"extra": {

0 commit comments

Comments
 (0)