diff options
-rw-r--r-- | lib/system.nim | 14 | ||||
-rw-r--r-- | tests/iter/tcountup.nim | 20 |
2 files changed, 32 insertions, 2 deletions
diff --git a/lib/system.nim b/lib/system.nim index bf2e156b4..b13419eb9 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -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 diff --git a/tests/iter/tcountup.nim b/tests/iter/tcountup.nim index f93f1536e..5f75e653c 100644 --- a/tests/iter/tcountup.nim +++ b/tests/iter/tcountup.nim @@ -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 |