From 4e3c997d407896e4298d50172bf834b22e07379b Mon Sep 17 00:00:00 2001 From: Yuriy Glukhov Date: Tue, 15 Oct 2019 10:16:06 +0300 Subject: [PATCH] Fixed yield in nkCheckedFieldExpr (#12429) [backport] (cherry picked from commit 1aed455e7cc22368299a40bb16f73d43ed8c544e) --- compiler/closureiters.nim | 5 +++-- tests/async/tasync_misc.nim | 10 ++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/compiler/closureiters.nim b/compiler/closureiters.nim index 84da6a84d5..7d3637645f 100644 --- a/compiler/closureiters.nim +++ b/compiler/closureiters.nim @@ -683,7 +683,8 @@ proc lowerStmtListExprs(ctx: var Ctx, n: PNode, needsSplit: var bool): PNode = n[0] = ex result.add(n) - of nkCast, nkHiddenStdConv, nkHiddenSubConv, nkConv, nkObjDownConv: + of nkCast, nkHiddenStdConv, nkHiddenSubConv, nkConv, nkObjDownConv, + nkDerefExpr, nkHiddenDeref: var ns = false for i in 0 ..< n.len: n[i] = ctx.lowerStmtListExprs(n[i], ns) @@ -757,7 +758,7 @@ proc lowerStmtListExprs(ctx: var Ctx, n: PNode, needsSplit: var bool): PNode = n[0] = newSymNode(ctx.g.getSysSym(n[0].info, "true")) n[1] = newBody - of nkDotExpr: + of nkDotExpr, nkCheckedFieldExpr: var ns = false n[0] = ctx.lowerStmtListExprs(n[0], ns) if ns: diff --git a/tests/async/tasync_misc.nim b/tests/async/tasync_misc.nim index dbc2ea434f..1febdedb3b 100644 --- a/tests/async/tasync_misc.nim +++ b/tests/async/tasync_misc.nim @@ -43,4 +43,14 @@ block: #8399 waitFor foo("$asd") +block: # nkCheckedFieldExpr + proc bar(): Future[JsonNode] {.async.} = + return newJInt(5) + + proc foo() {.async.} = + let n = 10 + (await bar()).num + doAssert(n == 15) + + waitFor foo() + echo "ok"