diff --git a/compiler/transf.nim b/compiler/transf.nim index 50f58655f9..043f194f79 100644 --- a/compiler/transf.nim +++ b/compiler/transf.nim @@ -337,7 +337,7 @@ proc introduceNewLocalVars(c: PTransf, n: PNode): PNode = if a.kind == nkSym: n[1] = transformSymAux(c, a) return n - of nkProcDef, nkFuncDef, nkMethodDef, nkConverterDef: # todo optimize nosideeffects? + of nkLambdaKinds, 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_issues.nim b/tests/iter/titer_issues.nim index 5070a54713..468c230997 100644 --- a/tests/iter/titer_issues.nim +++ b/tests/iter/titer_issues.nim @@ -457,3 +457,12 @@ let runes1 = buggyVersion("en") # <-- CRASHES HERE doAssert runes1.len == runes2.len # echo "Got ", runes1.len, " runes" + + +block: # bug #25724 + iterator c(): int = + when nimvm: yield 0 + else: yield 1 + for w in c(): + let n = w + (proc() = discard n)() \ No newline at end of file