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:
parent
69cb671d8d
commit
008c3ec76a
2 changed files with 32 additions and 0 deletions
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue