diff --git a/compiler/lambdalifting.nim b/compiler/lambdalifting.nim index a94db43211..3c8f4317cd 100644 --- a/compiler/lambdalifting.nim +++ b/compiler/lambdalifting.nim @@ -520,6 +520,8 @@ proc detectCapturedVars(n: PNode; owner: PSym; c: var DetectionPass) = of nkLambdaKinds, nkIteratorDef: if n.typ != nil: detectCapturedVars(n[namePos], owner, c) + of nkClosure: + detectCapturedVars(n[1], owner, c) of nkReturnStmt: detectCapturedVars(n[0], owner, c) of nkIdentDefs: diff --git a/tests/iter/titer_issues.nim b/tests/iter/titer_issues.nim index 468c230997..d94640e9be 100644 --- a/tests/iter/titer_issues.nim +++ b/tests/iter/titer_issues.nim @@ -239,6 +239,17 @@ block t2023_objiter: var o = init() echo(o.iter()) + block: # bug #25591 + iterator h(): int = + let n = 0 + (proc() = discard n)() + yield 0 + + proc a() = + iterator m(): int {.closure.} = (for _ in h(): discard) + let _ = m + + a() block: # bug #13739