From 40683b820a17fa26a5610fdfc5975b06c4be1b92 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Wed, 30 Jul 2025 05:26:00 +0700 Subject: [PATCH 1/2] [DeadCode] Skip mixed fallback null on trait on RemoveAlwaysTrueIfConditionRector --- .../skip_mixed_fallback_null_on_trait.php.inc | 26 +++++++++++++++++++ .../If_/RemoveAlwaysTrueIfConditionRector.php | 6 +++++ 2 files changed, 32 insertions(+) create mode 100644 rules-tests/DeadCode/Rector/If_/RemoveAlwaysTrueIfConditionRector/Fixture/skip_mixed_fallback_null_on_trait.php.inc diff --git a/rules-tests/DeadCode/Rector/If_/RemoveAlwaysTrueIfConditionRector/Fixture/skip_mixed_fallback_null_on_trait.php.inc b/rules-tests/DeadCode/Rector/If_/RemoveAlwaysTrueIfConditionRector/Fixture/skip_mixed_fallback_null_on_trait.php.inc new file mode 100644 index 00000000000..a46f037c35f --- /dev/null +++ b/rules-tests/DeadCode/Rector/If_/RemoveAlwaysTrueIfConditionRector/Fixture/skip_mixed_fallback_null_on_trait.php.inc @@ -0,0 +1,26 @@ + + */ + private $dispatchesEvents; + + protected function fireResourceEvent(string $event, Model $model, mixed ...$args): void + { + if ($this->silent) { + return; + } + + $event = $this->dispatchesEvents[$event] ?? null; + + if (is_null($event)) { + return; + } + + event(new $event($model, ...$args)); + } +} diff --git a/rules/DeadCode/Rector/If_/RemoveAlwaysTrueIfConditionRector.php b/rules/DeadCode/Rector/If_/RemoveAlwaysTrueIfConditionRector.php index f4b74f71ec6..eeee2a4a950 100644 --- a/rules/DeadCode/Rector/If_/RemoveAlwaysTrueIfConditionRector.php +++ b/rules/DeadCode/Rector/If_/RemoveAlwaysTrueIfConditionRector.php @@ -22,6 +22,7 @@ use Rector\DeadCode\NodeAnalyzer\SafeLeftTypeBooleanAndOrAnalyzer; use Rector\NodeAnalyzer\ExprAnalyzer; use Rector\PhpParser\Node\BetterNodeFinder; +use Rector\PHPStan\ScopeFetcher; use Rector\Rector\AbstractRector; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; @@ -116,6 +117,11 @@ public function refactor(Node $node): int|null|array|If_ return null; } + $scope = ScopeFetcher::fetch($node)->getNativeType($node->cond); + if (! $scope->isTrue()->yes()) { + return null; + } + if ($node->stmts === []) { return NodeVisitor::REMOVE_NODE; } From beb31e975476e80c6819da217758ce70d0f47a05 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Tue, 29 Jul 2025 22:28:47 +0000 Subject: [PATCH 2/2] [ci-review] Rector Rectify --- .../DeadCode/Rector/If_/RemoveAlwaysTrueIfConditionRector.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rules/DeadCode/Rector/If_/RemoveAlwaysTrueIfConditionRector.php b/rules/DeadCode/Rector/If_/RemoveAlwaysTrueIfConditionRector.php index eeee2a4a950..4e0bae1fe97 100644 --- a/rules/DeadCode/Rector/If_/RemoveAlwaysTrueIfConditionRector.php +++ b/rules/DeadCode/Rector/If_/RemoveAlwaysTrueIfConditionRector.php @@ -117,8 +117,8 @@ public function refactor(Node $node): int|null|array|If_ return null; } - $scope = ScopeFetcher::fetch($node)->getNativeType($node->cond); - if (! $scope->isTrue()->yes()) { + $type = ScopeFetcher::fetch($node)->getNativeType($node->cond); + if (! $type->isTrue()->yes()) { return null; }