Skip to content

Commit 18bf879

Browse files
committed
Updated Rector to commit 6602925c051b7b30930ddbd938ef12d8af8dd20b
rectorphp/rector-src@6602925 [code-quality] Add ReplaceConstantBooleanNotRector (#7527)
1 parent 6467d60 commit 18bf879

File tree

4 files changed

+78
-2
lines changed

4 files changed

+78
-2
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<?php
2+
3+
declare (strict_types=1);
4+
namespace Rector\CodeQuality\Rector\BooleanNot;
5+
6+
use PhpParser\Node;
7+
use PhpParser\Node\Expr\BooleanNot;
8+
use PhpParser\Node\Expr\ConstFetch;
9+
use PhpParser\Node\Name;
10+
use Rector\PhpParser\Node\Value\ValueResolver;
11+
use Rector\Rector\AbstractRector;
12+
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
13+
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
14+
/**
15+
* Replace negated boolean literals with their simplified equivalents
16+
*
17+
* @see \Rector\Tests\CodeQuality\Rector\BooleanNot\ReplaceConstantBooleanNotRector\ReplaceConstantBooleanNotRectorTest
18+
*/
19+
final class ReplaceConstantBooleanNotRector extends AbstractRector
20+
{
21+
/**
22+
* @readonly
23+
*/
24+
private ValueResolver $valueResolver;
25+
public function __construct(ValueResolver $valueResolver)
26+
{
27+
$this->valueResolver = $valueResolver;
28+
}
29+
public function getRuleDefinition(): RuleDefinition
30+
{
31+
return new RuleDefinition('Replace negated boolean literals (!false, !true) with their simplified equivalents (true, false)', [new CodeSample(<<<'CODE_SAMPLE'
32+
if (!false) {
33+
return 'always true';
34+
}
35+
36+
if (!true) {
37+
return 'never reached';
38+
}
39+
CODE_SAMPLE
40+
, <<<'CODE_SAMPLE'
41+
if (true) {
42+
return 'always true';
43+
}
44+
45+
if (false) {
46+
return 'never reached';
47+
}
48+
CODE_SAMPLE
49+
)]);
50+
}
51+
/**
52+
* @return array<class-string<Node>>
53+
*/
54+
public function getNodeTypes(): array
55+
{
56+
return [BooleanNot::class];
57+
}
58+
/**
59+
* @param BooleanNot $node
60+
*/
61+
public function refactor(Node $node): ?Node
62+
{
63+
if (!$node instanceof BooleanNot) {
64+
return null;
65+
}
66+
if ($this->valueResolver->isFalse($node->expr)) {
67+
return new ConstFetch(new Name('true'));
68+
}
69+
if ($this->valueResolver->isTrue($node->expr)) {
70+
return new ConstFetch(new Name('false'));
71+
}
72+
return null;
73+
}
74+
}

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 = '4515af7a6494374c9284bf8811ef271c67685711';
22+
public const PACKAGE_VERSION = '6602925c051b7b30930ddbd938ef12d8af8dd20b';
2323
/**
2424
* @api
2525
* @var string
2626
*/
27-
public const RELEASE_DATE = '2025-10-21 16:51:59';
27+
public const RELEASE_DATE = '2025-10-21 18:07:18';
2828
/**
2929
* @var int
3030
*/

vendor/composer/autoload_classmap.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1154,6 +1154,7 @@
11541154
'Rector\\CodeQuality\\Rector\\BooleanAnd\\RemoveUselessIsObjectCheckRector' => $baseDir . '/rules/CodeQuality/Rector/BooleanAnd/RemoveUselessIsObjectCheckRector.php',
11551155
'Rector\\CodeQuality\\Rector\\BooleanAnd\\RepeatedAndNotEqualToNotInArrayRector' => $baseDir . '/rules/CodeQuality/Rector/BooleanAnd/RepeatedAndNotEqualToNotInArrayRector.php',
11561156
'Rector\\CodeQuality\\Rector\\BooleanAnd\\SimplifyEmptyArrayCheckRector' => $baseDir . '/rules/CodeQuality/Rector/BooleanAnd/SimplifyEmptyArrayCheckRector.php',
1157+
'Rector\\CodeQuality\\Rector\\BooleanNot\\ReplaceConstantBooleanNotRector' => $baseDir . '/rules/CodeQuality/Rector/BooleanNot/ReplaceConstantBooleanNotRector.php',
11571158
'Rector\\CodeQuality\\Rector\\BooleanNot\\ReplaceMultipleBooleanNotRector' => $baseDir . '/rules/CodeQuality/Rector/BooleanNot/ReplaceMultipleBooleanNotRector.php',
11581159
'Rector\\CodeQuality\\Rector\\BooleanNot\\SimplifyDeMorganBinaryRector' => $baseDir . '/rules/CodeQuality/Rector/BooleanNot/SimplifyDeMorganBinaryRector.php',
11591160
'Rector\\CodeQuality\\Rector\\BooleanOr\\RepeatedOrEqualToInArrayRector' => $baseDir . '/rules/CodeQuality/Rector/BooleanOr/RepeatedOrEqualToInArrayRector.php',

vendor/composer/autoload_static.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1402,6 +1402,7 @@ class ComposerStaticInit100ccc9176c32b7be45ab2960a573d86
14021402
'Rector\\CodeQuality\\Rector\\BooleanAnd\\RemoveUselessIsObjectCheckRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/BooleanAnd/RemoveUselessIsObjectCheckRector.php',
14031403
'Rector\\CodeQuality\\Rector\\BooleanAnd\\RepeatedAndNotEqualToNotInArrayRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/BooleanAnd/RepeatedAndNotEqualToNotInArrayRector.php',
14041404
'Rector\\CodeQuality\\Rector\\BooleanAnd\\SimplifyEmptyArrayCheckRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/BooleanAnd/SimplifyEmptyArrayCheckRector.php',
1405+
'Rector\\CodeQuality\\Rector\\BooleanNot\\ReplaceConstantBooleanNotRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/BooleanNot/ReplaceConstantBooleanNotRector.php',
14051406
'Rector\\CodeQuality\\Rector\\BooleanNot\\ReplaceMultipleBooleanNotRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/BooleanNot/ReplaceMultipleBooleanNotRector.php',
14061407
'Rector\\CodeQuality\\Rector\\BooleanNot\\SimplifyDeMorganBinaryRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/BooleanNot/SimplifyDeMorganBinaryRector.php',
14071408
'Rector\\CodeQuality\\Rector\\BooleanOr\\RepeatedOrEqualToInArrayRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/BooleanOr/RepeatedOrEqualToInArrayRector.php',

0 commit comments

Comments
 (0)