diff --git a/changelog.md b/changelog.md index 6ce4e90d54f5d..9bec0c47a8f49 100644 --- a/changelog.md +++ b/changelog.md @@ -21,6 +21,10 @@ compiler type trait instead of macro. `distinctBase` in sugar module is now deprecated. - `CountTable.mget` has been removed from `tables.nim`. It didn't work, and it was an oversight to be included in v1.0. +- `tables.merge(CountTable, CountTable): CountTable` has been removed. + It didn't work well together with the existing inplace version of the same proc + (`tables.merge(var CountTable, CountTable)`). + It was an oversight to be included in v1.0. ### Breaking changes in the compiler diff --git a/lib/pure/collections/tables.nim b/lib/pure/collections/tables.nim index 2cfb6c2c6b8cd..a0cc73ad62920 100644 --- a/lib/pure/collections/tables.nim +++ b/lib/pure/collections/tables.nim @@ -2487,18 +2487,19 @@ proc merge*[A](s: var CountTable[A], t: CountTable[A]) = for key, value in t: s.inc(key, value) -proc merge*[A](s, t: CountTable[A]): CountTable[A] = - ## Merges the two tables into a new one. - runnableExamples: - let - a = toCountTable("aaabbc") - b = toCountTable("bcc") - doAssert merge(a, b) == toCountTable("aaabbbccc") - - result = initCountTable[A](nextPowerOfTwo(max(s.len, t.len))) - for table in @[s, t]: - for key, value in table: - result.inc(key, value) +when (NimMajor, NimMinor) <= (1, 0): + proc merge*[A](s, t: CountTable[A]): CountTable[A] = + ## Merges the two tables into a new one. + runnableExamples: + let + a = toCountTable("aaabbc") + b = toCountTable("bcc") + doAssert merge(a, b) == toCountTable("aaabbbccc") + + result = initCountTable[A](nextPowerOfTwo(max(s.len, t.len))) + for table in @[s, t]: + for key, value in table: + result.inc(key, value) proc `$`*[A](t: CountTable[A]): string = ## The ``$`` operator for count tables. Used internally when calling `echo` @@ -3006,13 +3007,6 @@ when isMainModule: t2l.inc("foo", 4) t2l.inc("bar") t2l.inc("baz", 11) - let - t1merging = t1l - t2merging = t2l - let merged = merge(t1merging, t2merging) - assert(merged["foo"] == 5) - assert(merged["bar"] == 3) - assert(merged["baz"] == 14) block: const testKey = "TESTKEY"