From 93aa73284eb22f6ed2f48920685e640829de1f3e Mon Sep 17 00:00:00 2001 From: Hans Raaf Date: Sat, 21 Feb 2015 23:20:02 +0100 Subject: [PATCH] Fix unknown symbol in tables mpairs iterator. Fixes an error with mpairs iterator which was introduced with 5fbcf93860. This is used by nimforum thats why I found it. I also added a testcase for the mpairs iterator. --- lib/pure/collections/tables.nim | 2 +- tests/collections/ttables.nim | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/pure/collections/tables.nim b/lib/pure/collections/tables.nim index c75386cf18..959688d6a7 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 7af14a75b3..3a923610ec 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]({:})