diff options
author | LemonBoy <thatlemon@gmail.com> | 2018-06-24 15:13:34 +0200 |
---|---|---|
committer | LemonBoy <thatlemon@gmail.com> | 2018-06-24 15:13:34 +0200 |
commit | bfa3d62cc1a9485cc7030216f5859258131ea5bb (patch) | |
tree | 2b108cb035d0cbffe1dad1bf1a2d6c84350d5726 /tests | |
parent | 105a472dc5eb239c68d7e13d8eef93c8dc0311be (diff) | |
download | Nim-bfa3d62cc1a9485cc7030216f5859258131ea5bb.tar.gz |
More concept fixes
Fixes #7705, #7703, #7702
Diffstat (limited to 'tests')
-rw-r--r-- | tests/concepts/treversable.nim | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/concepts/treversable.nim b/tests/concepts/treversable.nim new file mode 100644 index 000000000..6ebc077d9 --- /dev/null +++ b/tests/concepts/treversable.nim @@ -0,0 +1,31 @@ +# issue 7705, 7703, 7702 +discard """ + output: ''' +z +e + ''' +""" + +type + Reversable*[T] = concept a + a[int] is T + a.high is int + a.len is int + a.low is int + +proc get[T](s: Reversable[T], n: int): T = + s[n] + +proc hi[T](s: Reversable[T]): int = + s.high + +proc lo[T](s: Reversable[T]): int = + s.low + +iterator reverse*[T](s: Reversable[T]): T = + assert hi(s) - lo(s) == len(s) - 1 + for z in hi(s).countdown(lo(s)): + yield s.get(z) + +for s in @["e", "z"].reverse: + echo s |