Fix ..< iterator (#11103)

* add iterator overloads

* add test
This commit is contained in:
Arne Döring 2019-05-03 23:43:41 +02:00 • committed by GitHub
commit 9c3e23e075
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 2 deletions

View file

@ -2641,6 +2641,20 @@ when defined(nimNewRoof):
yield i
inc i
template dotdotLessImpl(t) {.dirty.} =
iterator `..<`*(a, b: t): t {.inline.} =
## A type specialized version of ``..<`` for convenience so that
## mixing integer types works better.
var res = a
while res < b:
yield res
inc(res)
dotdotLessImpl(int64)
dotdotLessImpl(int32)
dotdotLessImpl(uint64)
dotdotLessImpl(uint32)
else:
iterator countup*[S, T](a: S, b: T, step = 1): T {.inline.} =
## Counts from ordinal value `a` up to `b` (inclusive) with the given

View file

@ -1,9 +1,25 @@
discard """
output: "0123456789"
output: '''
0123456789
0.0
'''
"""
# Test new countup
for i in 0 ..< 10'i64:
stdout.write(i)
echo "\n"
echo()
# 11099
var
x: uint32
y: float
for i in 0 ..< x:
if i == 1: echo i
y += 1
echo y