mirror of
https://github.com/nim-lang/Nim.git
synced 2026-06-05 11:24:08 +00:00
* close #16123 std/sets with closures in cpp * fixup
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user