Stricter signature for countdown/countup (#8549)

This commit is contained in:
Oscar Nihlgård
2018-08-07 09:24:54 +02:00
committed by Andreas Rumpf
parent c3d5ec8ead
commit 9b9cfa7306

View File

@@ -1978,7 +1978,7 @@ when sizeof(int) <= 2:
else:
type IntLikeForCount = int|int8|int16|int32|char|bool|uint8|uint16|enum
iterator countdown*[T](a, b: T, step = 1): T {.inline.} =
iterator countdown*[T](a, b: T, step: Positive = 1): T {.inline.} =
## Counts from ordinal value `a` down to `b` (inclusive) with the given
## step count. `T` may be any ordinal type, `step` may only
## be positive. **Note**: This fails to count to ``low(int)`` if T = int for
@@ -2001,7 +2001,7 @@ iterator countdown*[T](a, b: T, step = 1): T {.inline.} =
dec(res, step)
when defined(nimNewRoof):
iterator countup*[T](a, b: T, step = 1): T {.inline.} =
iterator countup*[T](a, b: T, step: Positive = 1): T {.inline.} =
## Counts from ordinal value `a` up to `b` (inclusive) with the given
## step count. `S`, `T` may be any ordinal type, `step` may only
## be positive. **Note**: This fails to count to ``high(int)`` if T = int for
@@ -2018,7 +2018,7 @@ when defined(nimNewRoof):
inc(res, step)
iterator `..`*[T](a, b: T): T {.inline.} =
## An alias for `countup`.
## An alias for `countup(a, b, 1)`.
when T is IntLikeForCount:
var res = int(a)
while res <= int(b):