mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-24 00:05:25 +00:00
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:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user