summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorTimothee Cour <timothee.cour2@gmail.com>2021-05-02 22:07:31 -0700
committerGitHub <noreply@github.com>2021-05-03 07:07:31 +0200
commit0dc534832e41612c488011b58c2dc9eb576fff3b (patch)
treee7219a599ae68871233173a846b2b8e9d7361b68
parent6d485f545a9ccdde866348867eecf2d4e0fbfef4 (diff)
downloadNim-0dc534832e41612c488011b58c2dc9eb576fff3b.tar.gz
close #16123 std/sets with closures in cpp (#17921)
* close #16123 std/sets with closures in cpp

* fixup
-rw-r--r--tests/sets/tsets_various.nim18
1 files changed, 13 insertions, 5 deletions
diff --git a/tests/sets/tsets_various.nim b/tests/sets/tsets_various.nim
index 5f3b23436..419bcfdcc 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()