From 571fe38a8e69d91f157500d219eee43300cb6026 Mon Sep 17 00:00:00 2001 From: ringabout <43030857+ringabout@users.noreply.github.com> Date: Mon, 22 Dec 2025 20:42:47 +0800 Subject: [PATCH] progress --- compiler/lambdalifting.nim | 5 +++-- compiler/transf.nim | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/compiler/lambdalifting.nim b/compiler/lambdalifting.nim index b108e2c0a4..42c6c5b0ab 100644 --- a/compiler/lambdalifting.nim +++ b/compiler/lambdalifting.nim @@ -687,8 +687,9 @@ proc liftCapturedVars(n: PNode; owner: PSym; d: var DetectionPass; finishClosureCreation(s, d, c, n.info, s.transformedBody) if isIterator(s) and s.closureBody == nil: - let injected = injectDestructorCalls(d.graph, d.idgen, s, body) - let closureBody = transformClosureIterator(d.graph, d.idgen, s, injected) + if sfInjectDestructors in s.flags: + body = injectDestructorCalls(d.graph, d.idgen, s, body) + let closureBody = transformClosureIterator(d.graph, d.idgen, s, body) s.closureBody = closureBody c.inContainer = oldInContainer diff --git a/compiler/transf.nim b/compiler/transf.nim index 5b221abee1..9d529cefa0 100644 --- a/compiler/transf.nim +++ b/compiler/transf.nim @@ -131,8 +131,9 @@ proc transformSymAux(c: PTransf, n: PNode): PNode = return n else: if s.closureBody == nil: - let injected = injectDestructorCalls(c.graph, c.idgen, s, body) - let closureBody = transformClosureIterator(c.graph, c.idgen, s, injected) + if sfInjectDestructors in s.flags: + body = injectDestructorCalls(c.graph, c.idgen, s, body) + let closureBody = transformClosureIterator(c.graph, c.idgen, s, body) s.closureBody = closureBody return liftIterSym(c.graph, n, c.idgen, getCurrOwner(c)) elif s.kind in {skProc, skFunc, skConverter, skMethod} and not c.tooEarly: