diff options
-rw-r--r-- | lib/pure/collections/tables.nim | 2 | ||||
-rw-r--r-- | tests/collections/ttables.nim | 16 |
2 files changed, 17 insertions, 1 deletions
diff --git a/lib/pure/collections/tables.nim b/lib/pure/collections/tables.nim index c75386cf1..959688d6a 100644 --- a/lib/pure/collections/tables.nim +++ b/lib/pure/collections/tables.nim @@ -104,7 +104,7 @@ iterator mpairs*[A, B](t: var Table[A, B]): tuple[key: A, val: var B] = ## iterates over any (key, value) pair in the table `t`. The values ## can be modified. for h in 0..high(t.data): - if isFilled(t.data[h].slot): yield (t.data[h].key, t.data[h].val) + if isFilled(t.data[h].hcode): yield (t.data[h].key, t.data[h].val) iterator keys*[A, B](t: Table[A, B]): A = ## iterates over any key in the table `t`. diff --git a/tests/collections/ttables.nim b/tests/collections/ttables.nim index 7af14a75b..3a923610e 100644 --- a/tests/collections/ttables.nim +++ b/tests/collections/ttables.nim @@ -109,6 +109,22 @@ block countTableTest1: else: break inc i +block mpairsTableTest1: + var t = initTable[string, int]() + t["a"] = 1 + t["b"] = 2 + t["c"] = 3 + t["d"] = 4 + for k, v in t.mpairs: + if k == "a" or k == "c": + v = 9 + + for k, v in t.pairs: + if k == "a" or k == "c": + assert v == 9 + else: + assert v != 1 and v != 3 + block SyntaxTest: var x = toTable[int, string]({:}) |