protected function assertTypeMatchesValue(ITypeAnalysis $analysis, O\Expression $expression, IType $metadataType = null) { $type = $this->typeSystem->getTypeFromValue($expression->evaluate(O\EvaluationContext::staticContext(__NAMESPACE__, __CLASS__))); $this->assertEqualTypes($type, $analysis->getReturnTypeOf($expression)); if ($metadataType !== null) { $this->assertEqualTypes($metadataType, $type, $expression->compileDebug()); } }
public function __construct($namespace, $scopeType, $callableId, array $parameterScopedVariableMap, array $unusedParameterDefaultExpressionMap) { $this->callableId = $callableId; $this->namespace = $namespace; $this->parameterScopedVariableMap = $parameterScopedVariableMap; $this->scopeType = $scopeType; foreach ($unusedParameterDefaultExpressionMap as $parameter => $expression) { if ($expression !== null) { /** @var $expression O\Expression */ $this->unusedParameterDefaultMap[$parameter] = $expression->asEvaluator(O\EvaluationContext::staticContext($this->namespace, $this->scopeType)); } } }