From 9ded1cc2d2b507e4abfc6fca8b9099755f8d1977 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sat, 4 Oct 2025 07:04:39 +0700 Subject: [PATCH 1/5] [CodeQuality] Skip bool equal integer on UseIdenticalOverEqualWithSameTypeRector --- .../Fixture/skip_bool_equal_integer.php.inc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 rules-tests/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector/Fixture/skip_bool_equal_integer.php.inc diff --git a/rules-tests/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector/Fixture/skip_bool_equal_integer.php.inc b/rules-tests/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector/Fixture/skip_bool_equal_integer.php.inc new file mode 100644 index 00000000000..78e249f481f --- /dev/null +++ b/rules-tests/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector/Fixture/skip_bool_equal_integer.php.inc @@ -0,0 +1,18 @@ + Date: Sat, 4 Oct 2025 07:07:02 +0700 Subject: [PATCH 2/5] Fix --- .../Equal/UseIdenticalOverEqualWithSameTypeRector.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rules/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector.php b/rules/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector.php index cbe3e39262f..1dfce466856 100644 --- a/rules/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector.php +++ b/rules/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector.php @@ -74,7 +74,7 @@ public function refactor(Node $node): ?Node $leftStaticType = $this->nodeTypeResolver->getNativeType($node->left); $rightStaticType = $this->nodeTypeResolver->getNativeType($node->right); - if ($this->shouldSkipCompareNumericString($leftStaticType, $rightStaticType)) { + if ($this->shouldSkipCompareBoolToNumeric($leftStaticType, $rightStaticType)) { return null; } @@ -101,15 +101,15 @@ public function refactor(Node $node): ?Node return $this->processIdenticalOrNotIdentical($node); } - private function shouldSkipCompareNumericString(Type $leftStaticType, Type $rightStaticType): bool + private function shouldSkipCompareBoolToNumeric(Type $leftStaticType, Type $rightStaticType): bool { // use ! ->no() as to support both yes and maybe if ($leftStaticType instanceof BooleanType) { - return ! $rightStaticType->isNumericString()->no(); + return ! $rightStaticType->isNumericString()->no() || ! $rightStaticType->isInteger()->no() ; } if ($rightStaticType instanceof BooleanType) { - return ! $leftStaticType->isNumericString()->no(); + return ! $leftStaticType->isNumericString()->no() || ! $leftStaticType->isInteger()->no(); } return false; From 655c71cd29bf56f30d3039e84cdd40d212fab2c5 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sat, 4 Oct 2025 07:07:34 +0700 Subject: [PATCH 3/5] Fix --- .../Rector/Equal/UseIdenticalOverEqualWithSameTypeRector.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rules/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector.php b/rules/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector.php index 1dfce466856..ee6790a8c6f 100644 --- a/rules/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector.php +++ b/rules/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector.php @@ -103,7 +103,7 @@ public function refactor(Node $node): ?Node private function shouldSkipCompareBoolToNumeric(Type $leftStaticType, Type $rightStaticType): bool { - // use ! ->no() as to support both yes and maybe + // use ! ->no() as to verify both yes and maybe if ($leftStaticType instanceof BooleanType) { return ! $rightStaticType->isNumericString()->no() || ! $rightStaticType->isInteger()->no() ; } From 8d1b29d5a2bad1c29c2accf5d15da5bb6d1ae6aa Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sat, 4 Oct 2025 00:10:06 +0000 Subject: [PATCH 4/5] [ci-review] Rector Rectify --- .../Equal/UseIdenticalOverEqualWithSameTypeRector.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/rules/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector.php b/rules/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector.php index ee6790a8c6f..13646747dff 100644 --- a/rules/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector.php +++ b/rules/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector.php @@ -105,11 +105,17 @@ private function shouldSkipCompareBoolToNumeric(Type $leftStaticType, Type $righ { // use ! ->no() as to verify both yes and maybe if ($leftStaticType instanceof BooleanType) { - return ! $rightStaticType->isNumericString()->no() || ! $rightStaticType->isInteger()->no() ; + if (! $rightStaticType->isNumericString()->no()) { + return true; + } + return ! $rightStaticType->isInteger()->no(); } if ($rightStaticType instanceof BooleanType) { - return ! $leftStaticType->isNumericString()->no() || ! $leftStaticType->isInteger()->no(); + if (! $leftStaticType->isNumericString()->no()) { + return true; + } + return ! $leftStaticType->isInteger()->no(); } return false; From 0c1481a46f907168d50db478c092f671eacade7b Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sat, 4 Oct 2025 07:13:31 +0700 Subject: [PATCH 5/5] re-run rector --- .../Equal/UseIdenticalOverEqualWithSameTypeRector.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/rules/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector.php b/rules/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector.php index 13646747dff..cfee206643d 100644 --- a/rules/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector.php +++ b/rules/CodeQuality/Rector/Equal/UseIdenticalOverEqualWithSameTypeRector.php @@ -108,14 +108,18 @@ private function shouldSkipCompareBoolToNumeric(Type $leftStaticType, Type $righ if (! $rightStaticType->isNumericString()->no()) { return true; } - return ! $rightStaticType->isInteger()->no(); + + return ! $rightStaticType->isInteger() + ->no(); } if ($rightStaticType instanceof BooleanType) { if (! $leftStaticType->isNumericString()->no()) { return true; } - return ! $leftStaticType->isInteger()->no(); + + return ! $leftStaticType->isInteger() + ->no(); } return false;