IType InferGeneratorItemTypeFor(InternalMethod generator) { if (TypeSystemServices.IsGenericGeneratorReturnType(generator.ReturnType)) { return(generator.ReturnType.ConstructedInfo.GenericArguments[0]); } var yieldExpressions = generator.YieldExpressions; return(yieldExpressions.Count > 0 ? TypeSystemServices.GetMostGenericType(yieldExpressions) : TypeSystemServices.ObjectType); }
private IType GetMostGenericType(BinaryExpression node) { return(TypeSystemServices.GetMostGenericType(GetExpressionType(node.Left), GetExpressionType(node.Right))); }