PHPStan\Analyser\NodeScopeResolver::assignVariable PHP Method

assignVariable() private method

private assignVariable ( Scope $scope, PhpParser\Node $var, PHPStan\Type\Type $subNodeType = null ) : Scope
$scope Scope
$var PhpParser\Node
$subNodeType PHPStan\Type\Type
return Scope
    private function assignVariable(Scope $scope, Node $var, Type $subNodeType = null) : Scope
    {
        if ($var instanceof Variable && is_string($var->name)) {
            $scope = $scope->assignVariable($var->name, $subNodeType);
        } elseif ($var instanceof ArrayDimFetch) {
            $depth = 0;
            while ($var instanceof ArrayDimFetch) {
                $var = $var->var;
                $depth++;
            }
            if ($var instanceof Variable && is_string($var->name)) {
                $arrayType = ArrayType::createDeepArrayType(new NestedArrayItemType($subNodeType !== null ? $subNodeType : new MixedType(true), $depth), false);
                if ($scope->hasVariableType($var->name)) {
                    $arrayType = $scope->getVariableType($var->name)->combineWith($arrayType);
                }
                $scope = $scope->assignVariable($var->name, $arrayType);
            }
            if (isset($var->dim)) {
                $scope = $this->lookForAssigns($scope, $var->dim);
            }
        } else {
            $scope = $this->lookForAssigns($scope, $var);
        }
        return $scope;
    }