diff --git a/rules-tests/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector/Fixture/identical_bool.php.inc b/rules-tests/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector/Fixture/identical_bool.php.inc new file mode 100644 index 00000000000..46aa0de51fb --- /dev/null +++ b/rules-tests/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector/Fixture/identical_bool.php.inc @@ -0,0 +1,45 @@ +getValue() == true) { + return 'yes'; + } + + return 'no'; + } + + private function getValue(): bool + { + return true; + } +} + +?> +----- +getValue() === true) { + return 'yes'; + } + + return 'no'; + } + + private function getValue(): bool + { + return true; + } +} + +?> diff --git a/rules-tests/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector/Fixture/identical_string.php.inc b/rules-tests/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector/Fixture/identical_string.php.inc new file mode 100644 index 00000000000..9ff1e51cb49 --- /dev/null +++ b/rules-tests/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector/Fixture/identical_string.php.inc @@ -0,0 +1,45 @@ +getValue() == 'hi') { + return 'yes'; + } + + return 'no'; + } + + private function getValue(): string + { + return 'hello'; + } +} + +?> +----- +getValue() === 'hi') { + return 'yes'; + } + + return 'no'; + } + + private function getValue(): string + { + return 'hello'; + } +} + +?> diff --git a/rules/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector.php b/rules/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector.php index 8b763799b5c..e50d6a8f5b8 100644 --- a/rules/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector.php +++ b/rules/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector.php @@ -10,6 +10,7 @@ use PhpParser\Node\Expr\BinaryOp\Identical; use PhpParser\Node\Expr\BinaryOp\NotEqual; use PhpParser\Node\Expr\BinaryOp\NotIdentical; +use PHPStan\Type\BooleanType; use PHPStan\Type\MixedType; use Rector\Rector\AbstractRector; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; @@ -86,7 +87,9 @@ public function refactor(Node $node): ?Node } // different types - if (! $leftStaticType->equals($rightStaticType)) { + if (! $leftStaticType->equals( + $rightStaticType + ) && (! $leftStaticType instanceof BooleanType && ! $rightStaticType instanceof BooleanType)) { return null; }