diff options
Diffstat (limited to 'tests/compile/titer2.nim')
-rw-r--r-- | tests/compile/titer2.nim | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/tests/compile/titer2.nim b/tests/compile/titer2.nim deleted file mode 100644 index dab2713e8..000000000 --- a/tests/compile/titer2.nim +++ /dev/null @@ -1,51 +0,0 @@ -discard """ - output: '''true''' - cmd: "nimrod cc --gc:none --hints:on $# $#" -""" - -import hashes - -type - TSlotEnum = enum seEmpty, seFilled, seDeleted - TKeyValuePair[A, B] = tuple[slot: TSlotEnum, key: A, val: B] - TKeyValuePairSeq[A, B] = seq[TKeyValuePair[A, B]] - TTable* {.final.}[A, B] = object - data: TKeyValuePairSeq[A, B] - counter: int - -iterator mycountup(a, b: int): int = - var res = a - while res <= b: - yield res - inc(res) - -when true: - iterator pairs*[A, B](t: TTable[A, B]): tuple[key: A, val: B] = - ## iterates over any (key, value) pair in the table `t`. - for h in mycountup(0, high(t.data)): - var k = t.data[h].key - if t.data[h].slot == seFilled: yield (k, t.data[h].val) -else: - iterator pairs*(t: TTable[int, string]): tuple[key: int, val: string] = - ## iterates over any (key, value) pair in the table `t`. - for h in mycountup(0, high(t.data)): - var k = t.data[h].key - if t.data[h].slot == seFilled: yield (k, t.data[h].val) - -proc initTable*[A, B](initialSize=64): TTable[A, B] = - ## creates a new hash table that is empty. `initialSize` needs to be - ## a power of two. - result.counter = 0 - newSeq(result.data, initialSize) - -block Test1: - # generic cache does not instantiate the same iterator[types] twice. This - # means we have only one instantiation of 'h'. However, this is the same for - # a non-generic iterator! - - var t = initTable[int, string]() - for k, v in t.pairs: nil - for k, v in t.pairs: nil - -echo "true" - |