diff --git a/packages/NodeTypeResolver/PHPStan/Scope/NodeVisitor/AssignedToNodeVisitor.php b/packages/NodeTypeResolver/PHPStan/Scope/NodeVisitor/AssignedToNodeVisitor.php new file mode 100644 index 00000000000..311351b862a --- /dev/null +++ b/packages/NodeTypeResolver/PHPStan/Scope/NodeVisitor/AssignedToNodeVisitor.php @@ -0,0 +1,26 @@ +expr->setAttribute(AttributeKey::ASSIGNED_TO, $node->var); + return null; + } +} diff --git a/packages/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php b/packages/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php index dbd9901f29e..94435f22732 100644 --- a/packages/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php +++ b/packages/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php @@ -50,6 +50,7 @@ use Rector\Core\Util\Reflection\PrivatesAccessor; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; +use Rector\NodeTypeResolver\PHPStan\Scope\NodeVisitor\AssignedToNodeVisitor; use Rector\NodeTypeResolver\PHPStan\Scope\NodeVisitor\RemoveDeepChainMethodCallNodeVisitor; use Webmozart\Assert\Assert; @@ -72,6 +73,7 @@ public function __construct( private readonly NodeScopeResolver $nodeScopeResolver, private readonly ReflectionProvider $reflectionProvider, RemoveDeepChainMethodCallNodeVisitor $removeDeepChainMethodCallNodeVisitor, + AssignedToNodeVisitor $assignedToNodeVisitor, private readonly ScopeFactory $scopeFactory, private readonly PrivatesAccessor $privatesAccessor, private readonly NodeNameResolver $nodeNameResolver, @@ -80,6 +82,7 @@ public function __construct( ) { $this->nodeTraverser = new NodeTraverser(); $this->nodeTraverser->addVisitor($removeDeepChainMethodCallNodeVisitor); + $this->nodeTraverser->addVisitor($assignedToNodeVisitor); } /**