Merge pull request #7991 from yglukhov/fix-7985

Fixes #7985
This commit is contained in:
Andreas Rumpf
2018-06-07 23:15:31 +02:00
committed by GitHub
2 changed files with 29 additions and 11 deletions

View File

@@ -397,18 +397,17 @@ proc hasYieldsInExpressions(n: PNode): bool =
proc exprToStmtList(n: PNode): tuple[s, res: PNode] =
assert(n.kind == nkStmtListExpr)
var parent = n
var lastSon = n[^1]
while lastSon.kind == nkStmtListExpr:
parent = lastSon
lastSon = lastSon[^1]
result.s = newNodeI(nkStmtList, n.info)
result.s.sons = parent.sons
result.s.sons.setLen(result.s.sons.len - 1) # delete last son
result.res = lastSon
result.s.sons = @[]
var n = n
while n.kind == nkStmtListExpr:
result.s.sons.add(n.sons)
result.s.sons.setLen(result.s.sons.len - 1) # delete last son
n = n[^1]
result.res = n
proc newEnvVarAsgn(ctx: Ctx, s: PSym, v: PNode): PNode =
result = newTree(nkFastAsgn, ctx.newEnvVarAccess(s), v)

19
tests/async/t7985.nim Normal file
View File

@@ -0,0 +1,19 @@
discard """
file: "t7985.nim"
exitcode: 0
output: "(value: 1)"
"""
import json, asyncdispatch
proc getData(): Future[JsonNode] {.async.} =
result = %*{"value": 1}
type
MyData = object
value: BiggestInt
proc main() {.async.} =
let data = to(await(getData()), MyData)
echo data
waitFor(main())