private function lookForEnterVariableAssign(Scope $scope, Node $node) : Scope
{
if ($node instanceof Variable && is_string($node->name)) {
$scope = $scope->enterVariableAssign($node->name);
} elseif ($node instanceof ArrayDimFetch) {
while ($node instanceof ArrayDimFetch) {
$node = $node->var;
}
if ($node instanceof Variable && is_string($node->name)) {
$scope = $scope->enterVariableAssign($node->name);
}
} elseif ($node instanceof List_ || $node instanceof Array_) {
$listItems = isset($node->items) ? $node->items : $node->vars;
foreach ($listItems as $listItem) {
if ($listItem === null) {
continue;
}
$listItemValue = $listItem;
if ($listItemValue instanceof Expr\ArrayItem) {
$listItemValue = $listItemValue->value;
}
$scope = $this->lookForEnterVariableAssign($scope, $listItemValue);
}
}
return $scope;
}