* Fixes #17849 * Update compiler/closureiters.nim Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
This commit is contained in:
parent
4a7f2c386c
commit
a6bd6c7ed8
2 changed files with 21 additions and 1 deletions
|
|
@ -606,6 +606,12 @@ proc lowerStmtListExprs(ctx: var Ctx, n: PNode, needsSplit: var bool): PNode =
|
||||||
internalError(ctx.g.config, "lowerStmtListExpr(nkCaseStmt): " & $branch.kind)
|
internalError(ctx.g.config, "lowerStmtListExpr(nkCaseStmt): " & $branch.kind)
|
||||||
result.add(n)
|
result.add(n)
|
||||||
result.add(ctx.newEnvVarAccess(tmp))
|
result.add(ctx.newEnvVarAccess(tmp))
|
||||||
|
elif n[0].kind == nkStmtListExpr:
|
||||||
|
result = newNodeI(nkStmtList, n.info)
|
||||||
|
let (st, ex) = exprToStmtList(n[0])
|
||||||
|
result.add(st)
|
||||||
|
n[0] = ex
|
||||||
|
result.add(n)
|
||||||
|
|
||||||
of nkCallKinds, nkChckRange, nkChckRangeF, nkChckRange64:
|
of nkCallKinds, nkChckRange, nkChckRangeF, nkChckRange64:
|
||||||
var ns = false
|
var ns = false
|
||||||
|
|
|
||||||
|
|
@ -483,5 +483,19 @@ block: # nnkChckRange
|
||||||
|
|
||||||
test(it, 1, 2, 3)
|
test(it, 1, 2, 3)
|
||||||
|
|
||||||
echo "ok"
|
block: #17849 - yield in case subject
|
||||||
|
template yieldInCase: int =
|
||||||
|
yield 2
|
||||||
|
3
|
||||||
|
|
||||||
|
iterator it(): int {.closure.} =
|
||||||
|
yield 1
|
||||||
|
case yieldInCase()
|
||||||
|
of 1: checkpoint(11)
|
||||||
|
of 3: checkpoint(13)
|
||||||
|
else: checkpoint(14)
|
||||||
|
yield 5
|
||||||
|
|
||||||
|
test(it, 1, 2, 13, 5)
|
||||||
|
|
||||||
|
echo "ok"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue