diff options
author | EXetoC <exetoc@gmail.com> | 2014-05-04 01:52:42 +0200 |
---|---|---|
committer | EXetoC <exetoc@gmail.com> | 2014-05-04 01:52:42 +0200 |
commit | b1c865a656d6ee422f7d841a1e881874766a2b77 (patch) | |
tree | 7b530f2b809db1d11693817f4ba47992fb3e6c8b | |
parent | 05712fe8053420ecf481757e529a7ef2f32fb75c (diff) | |
download | Nim-b1c865a656d6ee422f7d841a1e881874766a2b77.tar.gz |
Fix #1170.
-rw-r--r-- | lib/pure/asyncdispatch.nim | 3 | ||||
-rw-r--r-- | tests/async/tasyncdiscard.nim | 39 |
2 files changed, 41 insertions, 1 deletions
diff --git a/lib/pure/asyncdispatch.nim b/lib/pure/asyncdispatch.nim index fe9c16308..fcf947831 100644 --- a/lib/pure/asyncdispatch.nim +++ b/lib/pure/asyncdispatch.nim @@ -869,7 +869,8 @@ proc processBody(node, retFutureSym: PNimrodNode, else: discard of nnkDiscardStmt: # discard await x - if node[0][0].kind == nnkIdent and node[0][0].ident == !"await": + if node[0].kind != nnkEmpty and node[0][0].kind == nnkIdent and + node[0][0].ident == !"await": var newDiscard = node createVar("futureDiscard_" & $toStrLit(node[0][1]), node[0][1], newDiscard[0], newDiscard) diff --git a/tests/async/tasyncdiscard.nim b/tests/async/tasyncdiscard.nim new file mode 100644 index 000000000..48d8a8c4d --- /dev/null +++ b/tests/async/tasyncdiscard.nim @@ -0,0 +1,39 @@ +discard """ + output: ''' +1 +2 +3 +4 +1 +2 +1 +6 +''' +""" +import asyncio, asyncdispatch, asyncnet + +proc main {.async.} = + proc f: PFuture[int] {.async.} = + discard + echo 1 + discard + result = 2 + discard + + let x = await f() + echo x + echo 3 + + proc g: PFuture[int] {.async.} = + discard + echo 4 + discard + result = 6 + discard + echo await f() + discard await f() + + discard await g() + echo 6 + +main() |