mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-02 19:22:40 +00:00
ref #22297; return in the finally in the closure iterators
(cherry picked from commit b02c1dd6ca)
This commit is contained in:
@@ -852,7 +852,9 @@ proc transformReturnsInTry(ctx: var Ctx, n: PNode): PNode =
|
||||
case n.kind
|
||||
of nkReturnStmt:
|
||||
# We're somewhere in try, transform to finally unrolling
|
||||
assert(ctx.nearestFinally != 0)
|
||||
if ctx.nearestFinally == 0:
|
||||
# return is within the finally
|
||||
return
|
||||
|
||||
result = newNodeI(nkStmtList, n.info)
|
||||
|
||||
|
||||
@@ -491,3 +491,14 @@ block tnoclosure:
|
||||
row = zip(row & @[0], @[0] & row).mapIt(it[0] + it[1])
|
||||
echo row
|
||||
pascal(10)
|
||||
|
||||
block: # bug #22297
|
||||
iterator f: int {.closure.} =
|
||||
try:
|
||||
yield 12
|
||||
finally:
|
||||
return 14
|
||||
|
||||
let s = f
|
||||
doAssert s() == 12
|
||||
doAssert s() == 14
|
||||
|
||||
Reference in New Issue
Block a user