mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-19 14:00:35 +00:00
@@ -207,6 +207,9 @@ proc asyncSingleProc(prc: NimNode): NimNode {.compileTime.} =
|
||||
futureVarIdents)
|
||||
# don't do anything with forward bodies (empty)
|
||||
if procBody.kind != nnkEmpty:
|
||||
# fix #13899, defer should not escape its original scope
|
||||
procBody = newStmtList(newTree(nnkBlockStmt, newEmptyNode(), procBody))
|
||||
|
||||
procBody.add(createFutureVarCompletions(futureVarIdents, nil))
|
||||
|
||||
if not subtypeIsVoid:
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
discard """
|
||||
exitcode: 0
|
||||
output: "ok"
|
||||
"""
|
||||
|
||||
import json, asyncdispatch
|
||||
block: #6100
|
||||
let done = newFuture[int]()
|
||||
@@ -61,5 +56,21 @@ block: # 12743
|
||||
|
||||
waitFor prc()
|
||||
|
||||
|
||||
echo "ok"
|
||||
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()
|
||||
|
||||
Reference in New Issue
Block a user