mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-06 04:57:49 +00:00
nested finally bug (#7207)
This commit is contained in:
@@ -569,7 +569,7 @@ proc genBreakStmt(p: BProc, t: PNode) =
|
||||
lineF(p, cpsStmts, "goto $1;$n", [label])
|
||||
|
||||
proc genRaiseStmt(p: BProc, t: PNode) =
|
||||
if p.inExceptBlock > 0:
|
||||
if p.inExceptBlock > 0 and p.inExceptBlock == p.nestedTryStmts.len:
|
||||
# if the current try stmt have a finally block,
|
||||
# we must execute it before reraising
|
||||
var finallyBlock = p.nestedTryStmts[p.nestedTryStmts.len - 1].lastSon
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
discard """
|
||||
file: "tfinally.nim"
|
||||
output: "came\nhere\n3"
|
||||
output: '''came
|
||||
here
|
||||
3
|
||||
msg1
|
||||
msg2
|
||||
finally2
|
||||
finally1
|
||||
'''
|
||||
"""
|
||||
# Test return in try statement:
|
||||
|
||||
@@ -17,3 +24,19 @@ proc main: int =
|
||||
|
||||
echo main() #OUT came here 3
|
||||
|
||||
#bug 7204
|
||||
proc nested_finally =
|
||||
try:
|
||||
raise newException(KeyError, "msg1")
|
||||
except KeyError as ex:
|
||||
echo ex.msg
|
||||
try:
|
||||
raise newException(ValueError, "msg2")
|
||||
except:
|
||||
echo getCurrentExceptionMsg()
|
||||
finally:
|
||||
echo "finally2"
|
||||
finally:
|
||||
echo "finally1"
|
||||
|
||||
nested_finally()
|
||||
Reference in New Issue
Block a user