From 0dc534832e41612c488011b58c2dc9eb576fff3b Mon Sep 17 00:00:00 2001 From: Timothee Cour Date: Sun, 2 May 2021 22:07:31 -0700 Subject: [PATCH] close #16123 std/sets with closures in cpp (#17921) * close #16123 std/sets with closures in cpp * fixup --- tests/sets/tsets_various.nim | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/tests/sets/tsets_various.nim b/tests/sets/tsets_various.nim index 5f3b234366..419bcfdcc1 100644 --- a/tests/sets/tsets_various.nim +++ b/tests/sets/tsets_various.nim @@ -1,15 +1,12 @@ discard """ targets: "c cpp js" - output: ''' -set is empty -''' """ - import std/[sets, hashes] from std/sequtils import toSeq from std/algorithm import sorted +from stdtest/testutils import whenVMorJs proc sortedPairs[T](t: T): auto = toSeq(t.pairs).sorted template sortedItems(t: untyped): untyped = sorted(toSeq(t)) @@ -23,10 +20,12 @@ block tsetpop: discard a.pop() doAssert len(a) == 0 + var msg = "" try: echo a.pop() except KeyError as e: - echo e.msg + msg = e.msg + doAssert msg == "set is empty" @@ -258,6 +257,7 @@ block: # test correctness after a number of inserts/deletes template main() = + # xxx move all tests inside this block: let a = {true, false} doAssert $a == "{false, true}" @@ -273,6 +273,14 @@ template main() = doAssert $a == "{false}" doAssert a.len == 1 + block: # bug #16123 + whenVMorJs: discard + do: + type CallType = proc() {.closure.} + var setA = initHashSet[CallType]() + let foo = proc() = discard + setA.incl(foo) + doAssert setA.contains(foo) static: main() main()