mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-03 19:52:36 +00:00
Clean createVar template.
This commit is contained in:
@@ -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<x> = 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: ...
|
||||
|
||||
Reference in New Issue
Block a user