From b4366366d1aa235bdf24ac3b739652960f5161d0 Mon Sep 17 00:00:00 2001 From: Dominik Picheta Date: Sun, 25 May 2014 13:09:18 +0100 Subject: [PATCH] Clean createVar template. --- lib/pure/asyncdispatch.nim | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/pure/asyncdispatch.nim b/lib/pure/asyncdispatch.nim index 9f1711f088..87ee83ad9c 100644 --- a/lib/pure/asyncdispatch.nim +++ b/lib/pure/asyncdispatch.nim @@ -813,8 +813,9 @@ proc generateExceptionCheck(futSym, elseNode[0].add rootReceiver result.add elseNode -template createVar(futSymName: string, asyncProc: PNimrodNode, - valueReceiver, rootReceiver: expr) {.immediate, dirty.} = +template createVar(result: var PNimrodNode, futSymName: string, + asyncProc: PNimrodNode, + valueReceiver, rootReceiver: expr) = result = newNimNode(nnkStmtList) var futSym = genSym(nskVar, "future") result.add newVarStmt(futSym, asyncProc) # -> var future = y @@ -851,7 +852,7 @@ proc processBody(node, retFutureSym: PNimrodNode, of nnkCall: # await foo(p, x) var futureValue: PNimrodNode - createVar("future" & $node[1][0].toStrLit, node[1], futureValue, + result.createVar("future" & $node[1][0].toStrLit, node[1], futureValue, futureValue) else: error("Invalid node kind in 'await', got: " & $node[1].kind) @@ -859,7 +860,7 @@ proc processBody(node, retFutureSym: PNimrodNode, node[1][0].ident == !"await": # foo await x var newCommand = node - createVar("future" & $node[0].toStrLit, node[1][1], newCommand[1], + result.createVar("future" & $node[0].toStrLit, node[1][1], newCommand[1], newCommand) of nnkVarSection, nnkLetSection: @@ -868,7 +869,7 @@ proc processBody(node, retFutureSym: PNimrodNode, if node[0][2][0].ident == !"await": # var x = await y var newVarSection = node # TODO: Should this use copyNimNode? - createVar("future" & $node[0][0].ident, node[0][2][1], + result.createVar("future" & $node[0][0].ident, node[0][2][1], newVarSection[0][2], newVarSection) else: discard of nnkAsgn: @@ -877,14 +878,14 @@ proc processBody(node, retFutureSym: PNimrodNode, if node[1][0].ident == !"await": # x = await y var newAsgn = node - createVar("future" & $node[0].toStrLit, node[1][1], newAsgn[1], newAsgn) + result.createVar("future" & $node[0].toStrLit, node[1][1], newAsgn[1], newAsgn) else: discard of nnkDiscardStmt: # discard await x 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], + result.createVar("futureDiscard_" & $toStrLit(node[0][1]), node[0][1], newDiscard[0], newDiscard) of nnkTryStmt: # try: await x; except: ...