From e2ba601e7ca2e8d602bfc2ffa36bf60a88b1a1f0 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sun, 15 Oct 2023 09:03:46 +0700 Subject: [PATCH] [DeadCode] Skip return false pseudo type in union on RemoveUselessReturnTagRector (#5172) * [DeadCode] Skip return false pseudo type in union on RemoveUselessReturnTagRector * [ci-review] Rector Rectify --------- Co-authored-by: GitHub Action --- .../skip_return_false_in_union_bool.php.inc | 18 ++++++++++++++++++ .../PhpDoc/DeadReturnTagValueNodeAnalyzer.php | 6 +++--- ...eUnusedNonEmptyArrayBeforeForeachRector.php | 3 ++- 3 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 rules-tests/DeadCode/Rector/ClassMethod/RemoveUselessReturnTagRector/Fixture/skip_return_false_in_union_bool.php.inc diff --git a/rules-tests/DeadCode/Rector/ClassMethod/RemoveUselessReturnTagRector/Fixture/skip_return_false_in_union_bool.php.inc b/rules-tests/DeadCode/Rector/ClassMethod/RemoveUselessReturnTagRector/Fixture/skip_return_false_in_union_bool.php.inc new file mode 100644 index 00000000000..32b80620e47 --- /dev/null +++ b/rules-tests/DeadCode/Rector/ClassMethod/RemoveUselessReturnTagRector/Fixture/skip_return_false_in_union_bool.php.inc @@ -0,0 +1,18 @@ +hasTruePseudoType($returnTagValueNode->type); + return ! $this->hasTrueFalsePseudoType($returnTagValueNode->type); } - private function hasTruePseudoType(BracketsAwareUnionTypeNode $bracketsAwareUnionTypeNode): bool + private function hasTrueFalsePseudoType(BracketsAwareUnionTypeNode $bracketsAwareUnionTypeNode): bool { $unionTypes = $bracketsAwareUnionTypeNode->types; @@ -81,7 +81,7 @@ private function hasTruePseudoType(BracketsAwareUnionTypeNode $bracketsAwareUnio } $name = strtolower((string) $unionType); - if ($name === 'true') { + if (in_array($name, ['true', 'false'], true)) { return true; } } diff --git a/rules/DeadCode/Rector/If_/RemoveUnusedNonEmptyArrayBeforeForeachRector.php b/rules/DeadCode/Rector/If_/RemoveUnusedNonEmptyArrayBeforeForeachRector.php index 8bfd4fda632..476a2f32e1a 100644 --- a/rules/DeadCode/Rector/If_/RemoveUnusedNonEmptyArrayBeforeForeachRector.php +++ b/rules/DeadCode/Rector/If_/RemoveUnusedNonEmptyArrayBeforeForeachRector.php @@ -4,6 +4,7 @@ namespace Rector\DeadCode\Rector\If_; +use PhpParser\Node\Expr\ArrayDimFetch; use PhpParser\Node; use PhpParser\Node\Expr; use PhpParser\Node\Expr\BinaryOp\BooleanAnd; @@ -203,7 +204,7 @@ private function refactorIf(If_ $if, Scope $scope): ?Foreach_ private function shouldSkipForeachExpr(Expr $foreachExpr, Scope $scope): bool { - if ($foreachExpr instanceof Expr\ArrayDimFetch && $foreachExpr->dim !== null) { + if ($foreachExpr instanceof ArrayDimFetch && $foreachExpr->dim !== null) { $exprType = $this->nodeTypeResolver->getNativeType($foreachExpr->var); $dimType = $this->nodeTypeResolver->getNativeType($foreachExpr->dim); if (! $exprType->hasOffsetValueType($dimType)->yes()) {