Files
Nim/tests/lookups/t23749.nim
metagn 948fc29bb2 adapt semOpAux to opt-in symchoices (#23750)
fixes #23749, refs #22716

`semIndirectOp` is used here because of the callback expressions, in
this case `db.getProc(...)`, and `semIndirectOp` calls `semOpAux` to
type its arguments before overloading starts. Hence it can opt in to
symchoices since overloading will resolve them.
2024-06-25 15:49:43 +02:00

38 lines
866 B
Nim

discard """
action: compile
"""
{.pragma: callback, gcsafe, raises: [].}
type
DataProc* = proc(val: openArray[byte]) {.callback.}
GetProc = proc (db: RootRef, key: openArray[byte], onData: DataProc): bool {.nimcall, callback.}
KvStoreRef* = ref object
obj: RootRef
getProc: GetProc
template get(dbParam: KvStoreRef, key: openArray[byte], onData: untyped): bool =
let db = dbParam
db.getProc(db.obj, key, onData)
func decode(input: openArray[byte], maxSize = 128): seq[byte] =
@[]
proc getSnappySSZ(db: KvStoreRef, key: openArray[byte]): string =
var status = "not found"
proc decode(data: openArray[byte]) =
status =
if true: "found"
else: "corrupted"
discard db.get(key, decode)
status
var ksr: KvStoreRef
var k = [byte(1), 2, 3, 4, 5]
proc foo(): string =
getSnappySSZ(ksr, toOpenArray(k, 1, 3))
echo foo()