Clean createVar template.
This commit is contained in:
parent
d54b902441
commit
b4366366d1
1 changed files with 8 additions and 7 deletions
|
|
@ -813,8 +813,9 @@ proc generateExceptionCheck(futSym,
|
||||||
elseNode[0].add rootReceiver
|
elseNode[0].add rootReceiver
|
||||||
result.add elseNode
|
result.add elseNode
|
||||||
|
|
||||||
template createVar(futSymName: string, asyncProc: PNimrodNode,
|
template createVar(result: var PNimrodNode, futSymName: string,
|
||||||
valueReceiver, rootReceiver: expr) {.immediate, dirty.} =
|
asyncProc: PNimrodNode,
|
||||||
|
valueReceiver, rootReceiver: expr) =
|
||||||
result = newNimNode(nnkStmtList)
|
result = newNimNode(nnkStmtList)
|
||||||
var futSym = genSym(nskVar, "future")
|
var futSym = genSym(nskVar, "future")
|
||||||
result.add newVarStmt(futSym, asyncProc) # -> var future<x> = y
|
result.add newVarStmt(futSym, asyncProc) # -> var future<x> = y
|
||||||
|
|
@ -851,7 +852,7 @@ proc processBody(node, retFutureSym: PNimrodNode,
|
||||||
of nnkCall:
|
of nnkCall:
|
||||||
# await foo(p, x)
|
# await foo(p, x)
|
||||||
var futureValue: PNimrodNode
|
var futureValue: PNimrodNode
|
||||||
createVar("future" & $node[1][0].toStrLit, node[1], futureValue,
|
result.createVar("future" & $node[1][0].toStrLit, node[1], futureValue,
|
||||||
futureValue)
|
futureValue)
|
||||||
else:
|
else:
|
||||||
error("Invalid node kind in 'await', got: " & $node[1].kind)
|
error("Invalid node kind in 'await', got: " & $node[1].kind)
|
||||||
|
|
@ -859,7 +860,7 @@ proc processBody(node, retFutureSym: PNimrodNode,
|
||||||
node[1][0].ident == !"await":
|
node[1][0].ident == !"await":
|
||||||
# foo await x
|
# foo await x
|
||||||
var newCommand = node
|
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)
|
newCommand)
|
||||||
|
|
||||||
of nnkVarSection, nnkLetSection:
|
of nnkVarSection, nnkLetSection:
|
||||||
|
|
@ -868,7 +869,7 @@ proc processBody(node, retFutureSym: PNimrodNode,
|
||||||
if node[0][2][0].ident == !"await":
|
if node[0][2][0].ident == !"await":
|
||||||
# var x = await y
|
# var x = await y
|
||||||
var newVarSection = node # TODO: Should this use copyNimNode?
|
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)
|
newVarSection[0][2], newVarSection)
|
||||||
else: discard
|
else: discard
|
||||||
of nnkAsgn:
|
of nnkAsgn:
|
||||||
|
|
@ -877,14 +878,14 @@ proc processBody(node, retFutureSym: PNimrodNode,
|
||||||
if node[1][0].ident == !"await":
|
if node[1][0].ident == !"await":
|
||||||
# x = await y
|
# x = await y
|
||||||
var newAsgn = node
|
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
|
else: discard
|
||||||
of nnkDiscardStmt:
|
of nnkDiscardStmt:
|
||||||
# discard await x
|
# discard await x
|
||||||
if node[0].kind != nnkEmpty and node[0][0].kind == nnkIdent and
|
if node[0].kind != nnkEmpty and node[0][0].kind == nnkIdent and
|
||||||
node[0][0].ident == !"await":
|
node[0][0].ident == !"await":
|
||||||
var newDiscard = node
|
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)
|
newDiscard[0], newDiscard)
|
||||||
of nnkTryStmt:
|
of nnkTryStmt:
|
||||||
# try: await x; except: ...
|
# try: await x; except: ...
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue