Skip to content

Commit

Permalink
[CodeQuality][DeadCode] Add For_, Closure, and Finally_, Case_, Catch…
Browse files Browse the repository at this point in the history
…_ to NodeTypeGroup::STMTS_AWARE (#2258)

* [CodeQuality][DeadCode] Add For_, Closure, and Finally_, Case_, Catch_ to NodeTypeGroup::STMTS_AWARE and re-use in RemoveUnreachableStatementRector

* list

* cs fix

* use Assert::propertyExists
  • Loading branch information
samsonasik committed May 7, 2022
1 parent 333933b commit 2dd8c6b
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 42 deletions.
20 changes: 19 additions & 1 deletion rules/CodeQuality/NodeTypeGroup.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,15 @@
namespace Rector\CodeQuality;

use PhpParser\Node;
use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Stmt\Case_;
use PhpParser\Node\Stmt\Catch_;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Do_;
use PhpParser\Node\Stmt\Else_;
use PhpParser\Node\Stmt\ElseIf_;
use PhpParser\Node\Stmt\Finally_;
use PhpParser\Node\Stmt\For_;
use PhpParser\Node\Stmt\Foreach_;
use PhpParser\Node\Stmt\Function_;
use PhpParser\Node\Stmt\If_;
Expand All @@ -23,6 +28,19 @@ final class NodeTypeGroup
* @var array<class-string<Node>>
*/
public const STMTS_AWARE = [
ClassMethod::class, Function_::class, If_::class, Else_::class, ElseIf_::class, Do_::class, Foreach_::class, TryCatch::class, While_::class,
ClassMethod::class,
Function_::class,
If_::class,
Else_::class,
ElseIf_::class,
Do_::class,
Foreach_::class,
TryCatch::class,
While_::class,
For_::class,
Closure::class,
Finally_::class,
Case_::class,
Catch_::class,
];
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,15 @@
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Expression;
use PhpParser\Node\Stmt\Function_;
use PhpParser\Node\Stmt\Return_;
use Rector\CodeQuality\NodeAnalyzer\VariableDimFetchAssignResolver;
use Rector\CodeQuality\NodeTypeGroup;
use Rector\CodeQuality\ValueObject\KeyAndExpr;
use Rector\Core\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
use Webmozart\Assert\Assert;

/**
* @see \Rector\Tests\CodeQuality\Rector\ClassMethod\InlineArrayReturnAssignRector\InlineArrayReturnAssignRectorTest
Expand Down Expand Up @@ -68,11 +67,10 @@ public function getNodeTypes(): array
return NodeTypeGroup::STMTS_AWARE;
}

/**
* @param ClassMethod|Function_ $node
*/
public function refactor(Node $node): ?Node
{
Assert::propertyExists($node, 'stmts');

/** @var Stmt[]|null $stmts */
$stmts = $node->stmts;
if ($stmts === null) {
Expand Down
36 changes: 5 additions & 31 deletions rules/DeadCode/Rector/Stmt/RemoveUnreachableStatementRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,35 +5,25 @@
namespace Rector\DeadCode\Rector\Stmt;

use PhpParser\Node;
use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Expr\Exit_;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\Break_;
use PhpParser\Node\Stmt\Case_;
use PhpParser\Node\Stmt\Catch_;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Continue_;
use PhpParser\Node\Stmt\Do_;
use PhpParser\Node\Stmt\Else_;
use PhpParser\Node\Stmt\ElseIf_;
use PhpParser\Node\Stmt\Expression;
use PhpParser\Node\Stmt\Finally_;
use PhpParser\Node\Stmt\For_;
use PhpParser\Node\Stmt\Foreach_;
use PhpParser\Node\Stmt\Function_;
use PhpParser\Node\Stmt\Goto_;
use PhpParser\Node\Stmt\If_;
use PhpParser\Node\Stmt\InlineHTML;
use PhpParser\Node\Stmt\Label;
use PhpParser\Node\Stmt\Nop;
use PhpParser\Node\Stmt\Return_;
use PhpParser\Node\Stmt\Throw_;
use PhpParser\Node\Stmt\TryCatch;
use PhpParser\Node\Stmt\While_;
use Rector\CodeQuality\NodeTypeGroup;
use Rector\Core\Rector\AbstractRector;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
use Webmozart\Assert\Assert;

/**
* @changelog https://github.com/phpstan/phpstan/blob/83078fe308a383c618b8c1caec299e5765d9ac82/src/Node/UnreachableStatementNode.php
Expand Down Expand Up @@ -76,29 +66,13 @@ public function run()
*/
public function getNodeTypes(): array
{
return [
For_::class,
Foreach_::class,
Do_::class,
While_::class,
ClassMethod::class,
Function_::class,
Closure::class,
If_::class,
ElseIf_::class,
Else_::class,
Case_::class,
TryCatch::class,
Catch_::class,
Finally_::class,
];
return NodeTypeGroup::STMTS_AWARE;
}

/**
* @param For_|Foreach_|Do_|While_|ClassMethod|Function_|Closure|If_|ElseIf_|Else_|Case_|TryCatch|Catch_|Finally_ $node
*/
public function refactor(Node $node): ?Node
{
Assert::propertyExists($node, 'stmts');

if ($node->stmts === null) {
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@
use PhpParser\Node\Expr\BinaryOp\BooleanAnd;
use PhpParser\Node\Expr\BooleanNot;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Function_;
use PhpParser\Node\Stmt\If_;
use PhpParser\Node\Stmt\Return_;
use Rector\CodeQuality\NodeTypeGroup;
Expand All @@ -18,6 +16,7 @@
use Rector\EarlyReturn\NodeTransformer\ConditionInverter;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
use Webmozart\Assert\Assert;

/**
* @see \Rector\Tests\EarlyReturn\Rector\If_\ChangeNestedIfsToEarlyReturnRector\ChangeNestedIfsToEarlyReturnRectorTest
Expand Down Expand Up @@ -79,11 +78,10 @@ public function getNodeTypes(): array
return NodeTypeGroup::STMTS_AWARE;
}

/**
* @param Function_|ClassMethod $node
*/
public function refactor(Node $node): ?Node
{
Assert::propertyExists($node, 'stmts');

$stmts = $node->stmts;
if ($stmts === null) {
return null;
Expand Down

0 comments on commit 2dd8c6b

Please sign in to comment.