protected Expression GetCorrectIterator(Expression iterator)
{
IType type = GetExpressionType(iterator);
if (IsError(type))
return iterator;
if (!IsAssignableFrom(TypeSystemServices.IEnumerableType, type) &&
!IsAssignableFrom(TypeSystemServices.IEnumeratorType, type))
{
if (IsRuntimeIterator(type))
return IsTextReader(type)
? CodeBuilder.CreateMethodInvocation(MethodCache.TextReaderEnumerator_lines, iterator)
: CodeBuilder.CreateMethodInvocation(MethodCache.RuntimeServices_GetEnumerable, iterator);
}
return iterator;
}