From 3eadce164860c1d4465e40fd5e07fb11d3aa1b99 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Wed, 24 May 2023 11:15:17 +0700 Subject: [PATCH] [NodeTypeResolver] Reduce parent attribute usage on PHPStanNodeScopeResolver (#3943) * [NodeTypeResolver] Reduce parent attribute usage on PHPStanNodeScopeResolver * increase kernel key * clean up --- .../PHPStan/Scope/PHPStanNodeScopeResolver.php | 18 +++++------------- src/Kernel/RectorKernel.php | 2 +- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/packages/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php b/packages/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php index e84670846ab..1891f0c9a6c 100644 --- a/packages/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php +++ b/packages/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php @@ -13,7 +13,6 @@ use PhpParser\Node\Expr\AssignOp; use PhpParser\Node\Expr\BinaryOp; use PhpParser\Node\Expr\Cast; -use PhpParser\Node\Expr\Closure; use PhpParser\Node\Expr\FuncCall; use PhpParser\Node\Expr\Ternary; use PhpParser\Node\Expr\Variable; @@ -47,7 +46,6 @@ use Rector\Core\Contract\PhpParser\Node\StmtsAwareInterface; use Rector\Core\Exception\ShouldNotHappenException; use Rector\Core\NodeAnalyzer\ClassAnalyzer; -use Rector\Core\PhpParser\Node\BetterNodeFinder; use Rector\Core\Util\Reflection\PrivatesAccessor; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; @@ -79,7 +77,6 @@ public function __construct( private readonly ScopeFactory $scopeFactory, private readonly PrivatesAccessor $privatesAccessor, private readonly NodeNameResolver $nodeNameResolver, - private readonly BetterNodeFinder $betterNodeFinder, private readonly ClassAnalyzer $classAnalyzer ) { $this->nodeTraverser = new NodeTraverser(); @@ -236,25 +233,20 @@ public function processNodes( private function setChildOfUnreachableStatementNodeAttribute(Stmt $stmt): void { - if ($stmt->getAttribute(AttributeKey::IS_UNREACHABLE) === true) { + if ($stmt->getAttribute(AttributeKey::IS_UNREACHABLE) !== true) { return; } - $parentStmt = $stmt->getAttribute(AttributeKey::PARENT_NODE); - if (! $parentStmt instanceof Node) { + if (! $stmt instanceof StmtsAwareInterface) { return; } - if ($parentStmt instanceof Closure) { - $parentStmt = $this->betterNodeFinder->resolveCurrentStatement($parentStmt); - } - - if (! $parentStmt instanceof Stmt) { + if ($stmt->stmts === null) { return; } - if ($parentStmt->getAttribute(AttributeKey::IS_UNREACHABLE) === true) { - $stmt->setAttribute(AttributeKey::IS_UNREACHABLE, true); + foreach ($stmt->stmts as $childStmt) { + $childStmt->setAttribute(AttributeKey::IS_UNREACHABLE, true); } } diff --git a/src/Kernel/RectorKernel.php b/src/Kernel/RectorKernel.php index 71d933c0d47..e6f329d8380 100644 --- a/src/Kernel/RectorKernel.php +++ b/src/Kernel/RectorKernel.php @@ -17,7 +17,7 @@ final class RectorKernel /** * @var string */ - private const CACHE_KEY = 'v24'; + private const CACHE_KEY = 'v25'; private ContainerInterface|null $container = null;