diff --git a/rules-tests/Strict/Rector/If_/BooleanInIfConditionRuleFixerRector/Fixture/skip_result_object.php.inc b/rules-tests/Strict/Rector/If_/BooleanInIfConditionRuleFixerRector/Fixture/skip_result_object.php.inc new file mode 100644 index 00000000000..46d7f045267 --- /dev/null +++ b/rules-tests/Strict/Rector/If_/BooleanInIfConditionRuleFixerRector/Fixture/skip_result_object.php.inc @@ -0,0 +1,41 @@ +type === self::SELECT) { + return new ForwardCompatibilityResult(); + } + + return 1; + } +} + +class SkipResultObject +{ + public function insert(): bool { + $queryBuilder = new QueryBuilder(); + if ($queryBuilder->execute()) { + return false; + } + + throw new \RuntimeException('...'); + } +} diff --git a/rules/Strict/NodeFactory/ExactCompareFactory.php b/rules/Strict/NodeFactory/ExactCompareFactory.php index 2e21279ed1a..192e03524fa 100644 --- a/rules/Strict/NodeFactory/ExactCompareFactory.php +++ b/rules/Strict/NodeFactory/ExactCompareFactory.php @@ -113,13 +113,17 @@ final class ExactCompareFactory $compareExprs[] = $this->createNotIdenticalFalsyCompare($unionedType, $expr, $treatAsNotEmpty); } - /** @var Expr $truthyExpr */ + /** @var ?Expr $truthyExpr */ $truthyExpr = array_shift($compareExprs); foreach ($compareExprs as $compareExpr) { if (! $compareExpr instanceof Expr) { return null; } + if (! $truthyExpr instanceof Expr) { + return null; + } + /** @var Expr $compareExpr */ $truthyExpr = new BooleanOr($truthyExpr, $compareExpr); }