mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-14 23:33:28 +00:00
@@ -1351,13 +1351,15 @@ proc preprocess(c: var PreprocessContext; n: PNode): PNode =
|
||||
case n.kind
|
||||
of nkTryStmt:
|
||||
let f = n.lastSon
|
||||
var didAddSomething = false
|
||||
if f.kind == nkFinally:
|
||||
c.finallys.add f.lastSon
|
||||
didAddSomething = true
|
||||
|
||||
for i in 0 ..< n.len:
|
||||
result[i] = preprocess(c, n[i])
|
||||
|
||||
if f.kind == nkFinally:
|
||||
if didAddSomething:
|
||||
discard c.finallys.pop()
|
||||
|
||||
of nkWhileStmt, nkBlockStmt:
|
||||
@@ -1384,7 +1386,7 @@ proc preprocess(c: var PreprocessContext; n: PNode): PNode =
|
||||
result = newNodeI(nkStmtList, n.info)
|
||||
for i in countdown(c.finallys.high, fin):
|
||||
var vars = FreshVarsContext(tab: initTable[int, PSym](), config: c.config, info: n.info, idgen: c.idgen)
|
||||
result.add freshVars(preprocess(c, c.finallys[i]), vars)
|
||||
result.add freshVars(copyTree(c.finallys[i]), vars)
|
||||
c.idgen = vars.idgen
|
||||
result.add n
|
||||
of nkSkip: discard
|
||||
|
||||
@@ -251,3 +251,26 @@ block:
|
||||
|
||||
for x in ff(@[1, 2], @[1, 2, 3]):
|
||||
echo x
|
||||
|
||||
|
||||
# bug #19575
|
||||
|
||||
iterator bb() {.closure.} =
|
||||
while true:
|
||||
try: discard
|
||||
except: break
|
||||
finally: break
|
||||
|
||||
var a = bb
|
||||
|
||||
iterator cc() {.closure.} =
|
||||
while true:
|
||||
try: discard
|
||||
except:
|
||||
if true:
|
||||
break
|
||||
finally:
|
||||
if true:
|
||||
break
|
||||
|
||||
var a2 = cc
|
||||
|
||||
Reference in New Issue
Block a user