getBodyExpressions() public method

public getBodyExpressions ( ) : Expression[]
return Expression[]
Ejemplo n.º 1
0
 public function visitClosure(O\ClosureExpression $expression)
 {
     $originalContext = $this->analysisContext;
     $this->analysisContext = $originalContext->inNewScope();
     foreach ($expression->getParameters() as $parameter) {
         $this->walk($parameter);
         $typeHintType = $this->typeSystem->getTypeFromTypeHint($parameter->getTypeHint());
         if (!$parameter->hasDefaultValue() || $this->analysis[$parameter->getDefaultValue()]->isEqualTo($typeHintType)) {
             $this->analysisContext->setExpressionType($parameter->asVariable(), $typeHintType);
         } else {
             $this->analysisContext->setExpressionType($parameter->asVariable(), $this->typeSystem->getNativeType(INativeType::TYPE_MIXED));
         }
     }
     foreach ($expression->getUsedVariables() as $usedVariable) {
         $variable = $usedVariable->asVariable();
         //TODO: handle references with used variables. Probably impossible though.
         $this->analysisContext->setExpressionType($variable, $originalContext->getExpressionType($variable));
     }
     $this->walkAll($expression->getBodyExpressions());
     $this->analysis[$expression] = $this->typeSystem->getObjectType('Closure');
     $this->analysisContext = $originalContext;
 }