private void InferClosureSignature(BlockExpression node) { ClosureSignatureInferrer inferrer = new ClosureSignatureInferrer(node); ICallableType inferredCallableType = inferrer.InferCallableType(); BindExpressionType(node, inferredCallableType); AddInferredClosureParameterTypes(node, inferredCallableType); }
private bool InferClosureSignature(BlockExpression node) { ClosureSignatureInferrer inferrer = new ClosureSignatureInferrer(node); ICallableType inferredCallableType = inferrer.InferCallableType(); BindExpressionType(node, inferredCallableType); AddInferredClosureParameterTypes(node, inferredCallableType); if (inferrer.IsExpression && inferredCallableType != null) { if (!(inferredCallableType.GetSignature().ReturnType is IGenericParameter)) { node.ReturnType = CodeBuilder.CreateTypeReference(inferredCallableType.GetSignature().ReturnType); } } return inferrer.IsExpression; }