if (step == 0) throw ArgumentError('step cannot be 0'); if (step > 0 && stop < start) { throw ArgumentError('if step is positive, stop must be greater than start'); } if (step < 0 && stop > start) { throw ArgumentError('if step is negative, stop must be less than start'); }
for (num value = start; step < 0 ? value > stop : value < stop; value += step) { yield value; } }