Skip to content

Commit

Permalink
[DeadCode] Skip return false pseudo type in union on RemoveUselessRet…
Browse files Browse the repository at this point in the history
…urnTagRector (#5172)

* [DeadCode] Skip return false pseudo type in union on RemoveUselessReturnTagRector

* [ci-review] Rector Rectify

---------

Co-authored-by: GitHub Action <actions@github.com>
  • Loading branch information
samsonasik and actions-user committed Oct 15, 2023
1 parent 9cf016c commit e2ba601
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 4 deletions.
@@ -0,0 +1,18 @@
<?php

namespace Rector\Tests\DeadCode\Rector\ClassMethod\RemoveUselessReturnTagRector\Fixture;

final class SkipReturnFalseOnUnionBool
{
/**
* @return false|\stdClass
*/
function run(): bool|\stdClass
{
if (rand(0, 1)) {
return false;
}

return new \stdClass();
}
}
6 changes: 3 additions & 3 deletions rules/DeadCode/PhpDoc/DeadReturnTagValueNodeAnalyzer.php
Expand Up @@ -68,10 +68,10 @@ public function isDead(ReturnTagValueNode $returnTagValueNode, ClassMethod $clas
return false;
}

return ! $this->hasTruePseudoType($returnTagValueNode->type);
return ! $this->hasTrueFalsePseudoType($returnTagValueNode->type);
}

private function hasTruePseudoType(BracketsAwareUnionTypeNode $bracketsAwareUnionTypeNode): bool
private function hasTrueFalsePseudoType(BracketsAwareUnionTypeNode $bracketsAwareUnionTypeNode): bool
{
$unionTypes = $bracketsAwareUnionTypeNode->types;

Expand All @@ -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;
}
}
Expand Down
Expand Up @@ -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;
Expand Down Expand Up @@ -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()) {
Expand Down

0 comments on commit e2ba601

Please sign in to comment.