1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
import json, asyncdispatch
block: #6100
let done = newFuture[int]()
done.complete(1)
proc asyncSum: Future[int] {.async.} =
for _ in 1..1_000_000:
result += await done
let res = waitFor asyncSum()
doAssert(res == 1_000_000)
block: #7985
proc getData(): Future[JsonNode] {.async.} =
result = %*{"value": 1}
type
MyData = object
value: BiggestInt
proc main() {.async.} =
let data = to(await(getData()), MyData)
doAssert($data == "(value: 1)")
waitFor(main())
block: #8399
proc bar(): Future[string] {.async.} = discard
proc foo(line: string) {.async.} =
var res =
case line[0]
of '+', '-': @[]
of '$': (let x = await bar(); @[""])
else: @[]
doAssert(res == @[""])
waitFor foo("$asd")
block: # nkCheckedFieldExpr
proc bar(): Future[JsonNode] {.async.} =
return newJInt(5)
proc foo() {.async.} =
let n = 10 + (await bar()).num
doAssert(n == 15)
waitFor foo()
block: # 12743
template templ = await sleepAsync 0
proc prc {.async.} = templ
waitFor prc()
block: # issue #13899
proc someConnect() {.async.} =
await sleepAsync(1)
proc someClose() {.async.} =
await sleepAsync(2)
proc testFooFails(): Future[bool] {.async.} =
await someConnect()
defer:
await someClose()
result = true
proc testFooSucceed(): Future[bool] {.async.} =
try:
await someConnect()
finally:
await someClose()
result = true
doAssert waitFor testFooSucceed()
doAssert waitFor testFooFails()
block: # issue #9313
doAssert compiles(block:
proc a() {.async.} =
echo "Hi"
quit(0)
)
|