Fix double defer with break in closureiterators [backport] (#20630)

Fix double defer with break in closureiterators

Signed-off-by: Tanguy <tanguy@status.im>

Signed-off-by: Tanguy <tanguy@status.im>
This commit is contained in:
Tanguy
2022-10-24 08:50:48 +02:00
committed by GitHub
parent 69cb671d8d
commit 008c3ec76a
2 changed files with 32 additions and 0 deletions

View File

@@ -38,6 +38,10 @@ nested finally
outer finally
nested finally
outer finally
In defer
trying
exception caught
finally block
'''
"""
@@ -362,3 +366,29 @@ block:
for _ in p4():
discard
# bug #18824
iterator poc_iterator: int {.closure.} =
block:
try:
break
finally:
echo "In defer"
for _ in poc_iterator():
discard
# bug #20624
iterator tryFinally() {.closure.} =
block route:
try:
echo "trying"
raise
except:
echo "exception caught"
break route
finally:
echo "finally block"
var x = tryFinally
x()