Skip to content

Commit

Permalink
[NodeManipulator] Clean up AssignManipulator take 2 (#3696)
Browse files Browse the repository at this point in the history
* [NodeManipulator] Clean up AssignManipulator take 2

* clean up

* [ci-review] Rector Rectify

* clean up isOnArrayDestructuring() as well

* Revert clean up isOnArrayDestructuring() as well

This reverts commit ddb227c.

---------

Co-authored-by: GitHub Action <actions@github.com>
  • Loading branch information
samsonasik and actions-user committed Apr 28, 2023
1 parent 14b6073 commit 92a992e
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 30 deletions.
2 changes: 1 addition & 1 deletion rules/CodeQuality/NodeAnalyzer/ForAnalyzer.php
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ public function isArrayDimFetchPartOfAssignOrArgParentCount(ArrayDimFetch $array
return false;
}

if ($this->assignManipulator->isNodePartOfAssign($parentNode)) {
if ($this->assignManipulator->isLeftPartOfAssign($arrayDimFetch)) {
return true;
}

Expand Down
33 changes: 4 additions & 29 deletions src/NodeManipulator/AssignManipulator.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@
use PhpParser\Node\Expr\PropertyFetch;
use PhpParser\Node\Expr\StaticPropertyFetch;
use PhpParser\Node\FunctionLike;
use PhpParser\Node\Stmt\Expression;
use Rector\Core\NodeAnalyzer\PropertyFetchAnalyzer;
use Rector\Core\PhpParser\Comparing\NodeComparator;
use Rector\Core\PhpParser\Node\BetterNodeFinder;
use Rector\Core\Util\MultiInstanceofChecker;
use Rector\NodeNameResolver\NodeNameResolver;
Expand All @@ -34,6 +32,7 @@ final class AssignManipulator
* @var array<class-string<Expr>>
*/
private const MODIFYING_NODE_TYPES = [
Assign::class,
AssignOp::class,
PreDec::class,
PostDec::class,
Expand All @@ -43,7 +42,6 @@ final class AssignManipulator

public function __construct(
private readonly NodeNameResolver $nodeNameResolver,
private readonly NodeComparator $nodeComparator,
private readonly BetterNodeFinder $betterNodeFinder,
private readonly PropertyFetchAnalyzer $propertyFetchAnalyzer,
private readonly MultiInstanceofChecker $multiInstanceofChecker
Expand All @@ -70,15 +68,12 @@ public function isListToEachAssign(Assign $assign): bool
public function isLeftPartOfAssign(Node $node): bool
{
$parentNode = $node->getAttribute(AttributeKey::PARENT_NODE);
if ($parentNode instanceof Assign || $parentNode instanceof AssignOp) {
return $this->nodeComparator->areNodesEqual($parentNode->var, $node);
}

if ($parentNode instanceof Node && $this->multiInstanceofChecker->isInstanceOf(
$parentNode,
self::MODIFYING_NODE_TYPES
)) {
return true;
/** @var Assign|AssignOp|PreDec|PostDec|PreInc|PostInc $parentNode */
return $parentNode->var === $node;
}

if ($this->isOnArrayDestructuring($parentNode)) {
Expand All @@ -95,7 +90,7 @@ public function isLeftPartOfAssign(Node $node): bool

if ($parentNode instanceof Node && $this->multiInstanceofChecker->isInstanceOf(
$parentNode,
[Assign::class, ...self::MODIFYING_NODE_TYPES]
self::MODIFYING_NODE_TYPES
)) {
/** @var Assign|AssignOp|PreDec|PostDec|PreInc|PostInc $parentNode */
return $parentNode->var === $previousParent;
Expand All @@ -105,26 +100,6 @@ public function isLeftPartOfAssign(Node $node): bool
return false;
}

public function isNodePartOfAssign(Node $node): bool
{
$previousNode = $node;
$parentNode = $node->getAttribute(AttributeKey::PARENT_NODE);

while ($parentNode instanceof Node && ! $parentNode instanceof Expression) {
if ($parentNode instanceof Assign && $this->nodeComparator->areNodesEqual(
$parentNode->var,
$previousNode
)) {
return true;
}

$previousNode = $parentNode;
$parentNode = $parentNode->getAttribute(AttributeKey::PARENT_NODE);
}

return false;
}

/**
* @api doctrine
* @return array<PropertyFetch|StaticPropertyFetch>
Expand Down

0 comments on commit 92a992e

Please sign in to comment.