mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 08:54:53 +00:00
84 lines
1.6 KiB
Nim
84 lines
1.6 KiB
Nim
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)
|
|
)
|