void CheckGeneratorYieldType(InternalMethod method, IType returnType)
{
if (!TypeSystemServices.IsGenericGeneratorReturnType(returnType))
return;
IType returnElementType = returnType.ConstructedInfo.GenericArguments[0];
foreach (var yieldExpression in method.YieldExpressions)
{
var yieldType = yieldExpression.ExpressionType;
if (!IsAssignableFrom(returnElementType, yieldType) &&
!TypeSystemServices.CanBeReachedByDownCastOrPromotion(returnElementType, yieldType))
{
Error(CompilerErrorFactory.YieldTypeDoesNotMatchReturnType(
yieldExpression, yieldType, returnElementType));
}
}
}