Skip to content

Commit 3ed0fe8

Browse files
committed
[CodeQuality] Skip same boolean in both branches in SimplifyIfReturnBoolRector
1 parent e9ef0ac commit 3ed0fe8

2 files changed

Lines changed: 24 additions & 0 deletions

File tree

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
namespace Rector\Tests\CodeQuality\Rector\If_\SimplifyIfReturnBoolRector\Fixture;
4+
5+
function skipSameBoolReturnFalse(): false
6+
{
7+
return false;
8+
}
9+
10+
function skipSameBoolReturn(): bool
11+
{
12+
if (! skipSameBoolReturnFalse()) {
13+
return true;
14+
}
15+
16+
return true;
17+
}

rules/CodeQuality/Rector/If_/SimplifyIfReturnBoolRector.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,13 @@ private function shouldSkipIfAndReturn(If_ $if, Return_ $return): bool
141141
return true;
142142
}
143143

144+
// both branches return the same boolean → condition is pointless, transform would be unsound
145+
if ($this->valueResolver->isTrueOrFalse($return->expr) && $this->valueResolver->isTrue(
146+
$returnedExpr
147+
) === $this->valueResolver->isTrue($return->expr)) {
148+
return true;
149+
}
150+
144151
// negate + negate → skip for now
145152
if (! $this->valueResolver->isFalse($returnedExpr)) {
146153
return ! $this->valueResolver->isTrueOrFalse($return->expr);

0 commit comments

Comments
 (0)