diff --git a/build/PHPStan/Build/OrChainIdenticalComparisonToInArrayRule.php b/build/PHPStan/Build/OrChainIdenticalComparisonToInArrayRule.php index ad6f81e43a8..6078ca5ef03 100644 --- a/build/PHPStan/Build/OrChainIdenticalComparisonToInArrayRule.php +++ b/build/PHPStan/Build/OrChainIdenticalComparisonToInArrayRule.php @@ -136,7 +136,7 @@ private static function isSubjectNode(Expr $node): bool */ private function getSubjectAndValue(Identical $comparison): ?array { - if (self::isSubjectNode($comparison->left) && !self::isSubjectNode($comparison->left)) { + if (self::isSubjectNode($comparison->left) && !self::isSubjectNode($comparison->right)) { return ['subject' => $comparison->right, 'value' => $comparison->left]; } diff --git a/tests/PHPStan/Build/OrChainIdenticalComparisonToInArrayRuleTest.php b/tests/PHPStan/Build/OrChainIdenticalComparisonToInArrayRuleTest.php index 06caa79fa46..21192c09805 100644 --- a/tests/PHPStan/Build/OrChainIdenticalComparisonToInArrayRuleTest.php +++ b/tests/PHPStan/Build/OrChainIdenticalComparisonToInArrayRuleTest.php @@ -38,6 +38,14 @@ public function testRule(): void 'This chain of identical comparisons can be simplified using in_array().', 17, ], + [ + 'This chain of identical comparisons can be simplified using in_array().', + 21, + ], + [ + 'This chain of identical comparisons can be simplified using in_array().', + 25, + ], ]); } diff --git a/tests/PHPStan/Build/data/or-chain-identical-comparison.php b/tests/PHPStan/Build/data/or-chain-identical-comparison.php index ddce9715083..2164920bb5a 100644 --- a/tests/PHPStan/Build/data/or-chain-identical-comparison.php +++ b/tests/PHPStan/Build/data/or-chain-identical-comparison.php @@ -18,6 +18,14 @@ echo 'ok'; } +if ('foo' === $var || 'bar' === $var) { + echo 'ok'; +} + +if ('foo' === $var || $var === 'bar') { + echo 'ok'; +} + if ($var === 'foo' || $var === 'bar' || $var2 === 'buz') { echo 'no'; } diff --git a/tests/PHPStan/Build/data/or-chain-identical-comparison.php.fixed b/tests/PHPStan/Build/data/or-chain-identical-comparison.php.fixed index 5497bbb67d7..8053d19df36 100644 --- a/tests/PHPStan/Build/data/or-chain-identical-comparison.php.fixed +++ b/tests/PHPStan/Build/data/or-chain-identical-comparison.php.fixed @@ -18,6 +18,14 @@ if (\in_array($var, ['foo', 'bar', 'buz'], true)) { echo 'ok'; } +if (\in_array($var, ['foo', 'bar'], true)) { + echo 'ok'; +} + +if (\in_array($var, ['foo', 'bar'], true)) { + echo 'ok'; +} + if ($var === 'foo' || $var === 'bar' || $var2 === 'buz') { echo 'no'; }