From 2c2f2de6147698ee5939765b342edf0890286c4c Mon Sep 17 00:00:00 2001 From: Araq Date: Tue, 9 Jul 2019 09:40:53 +0200 Subject: [PATCH] asyncmacro produces 'owned' types --- lib/pure/asyncmacro.nim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/pure/asyncmacro.nim b/lib/pure/asyncmacro.nim index 39b1931181..f48a18afb9 100644 --- a/lib/pure/asyncmacro.nim +++ b/lib/pure/asyncmacro.nim @@ -297,7 +297,7 @@ proc asyncSingleProc(prc: NimNode): NimNode {.compileTime.} = # -> complete(retFuture) procBody.add(newCall(newIdentNode("complete"), retFutureSym)) - var closureIterator = newProc(iteratorNameSym, [newIdentNode("FutureBase")], + var closureIterator = newProc(iteratorNameSym, [parseExpr("owned(FutureBase)")], procBody, nnkIteratorDef) closureIterator.pragma = newNimNode(nnkPragma, lineInfoFrom=prc.body) closureIterator.addPragma(newIdentNode("closure")) @@ -326,7 +326,7 @@ proc asyncSingleProc(prc: NimNode): NimNode {.compileTime.} = # Add discardable pragma. if returnType.kind == nnkEmpty: # Add Future[void] - result.params[0] = parseExpr("Future[void]") + result.params[0] = parseExpr("owned(Future[void])") if procBody.kind != nnkEmpty: result.body = outerProcBody #echo(treeRepr(result))