diff --git a/compiler/transf.nim b/compiler/transf.nim index a8296d2f25..7ad4634ea3 100644 --- a/compiler/transf.nim +++ b/compiler/transf.nim @@ -329,7 +329,7 @@ proc introduceNewLocalVars(c: PTransf, n: PNode): PNode = if a.kind == nkSym: n[1] = transformSymAux(c, a) return n - of nkProcDef: # todo optimize nosideeffects? + of nkProcDef, nkFuncDef, nkMethodDef, nkConverterDef: # todo optimize nosideeffects? result = newTransNode(n) let x = newSymNode(copySym(n[namePos].sym, c.idgen)) c.transCon.mapping[n[namePos].sym.itemId] = x diff --git a/tests/iter/titer.nim b/tests/iter/titer.nim index b03d43f36c..1587f45844 100644 --- a/tests/iter/titer.nim +++ b/tests/iter/titer.nim @@ -145,3 +145,18 @@ proc main123() = discard main123() + +# bug #21138 +iterator ubi(): int = + when nimvm: + yield 0 + else: + yield 0 + +block: + for k in ubi(): + func e() {.closure.} = discard + +static: + for k in ubi(): + func e() {.closure.} = discard