Pinq\Analysis\ExpressionAnalyser::visitAssignment PHP Метод

visitAssignment() публичный Метод

public visitAssignment ( AssignmentExpression $expression )
$expression Pinq\Expressions\AssignmentExpression
    public function visitAssignment(O\AssignmentExpression $expression)
    {
        $assignTo = $expression->getAssignTo();
        $assignmentValue = $expression->getAssignmentValue();
        $this->walk($assignmentValue);
        $operator = $expression->getOperator();
        if ($operator === O\Operators\Assignment::EQUAL) {
            $this->analysisContext->setExpressionType($assignTo, $this->analysis[$assignmentValue]);
            $this->analysis[$expression] = $this->analysis[$assignmentValue];
        } elseif ($operator === O\Operators\Assignment::EQUAL_REFERENCE) {
            $this->analysisContext->removeExpressionType($assignTo);
            $this->analysisContext->setExpressionType($assignTo, $this->analysis[$assignmentValue]);
            $this->analysisContext->createReference($assignTo, $assignmentValue);
            $this->analysis[$expression] = $this->analysis[$assignmentValue];
        } else {
            $this->walk($assignTo);
            $binaryOperation = $this->typeSystem->getBinaryOperation($this->analysis[$assignTo], O\Operators\Assignment::toBinaryOperator($operator), $this->analysis[$assignmentValue]);
            $this->analysis[$expression] = $binaryOperation->getReturnType();
        }
    }