diff --git a/compiler/dfa.nim b/compiler/dfa.nim index 5534d07e7c..ef6a767f07 100644 --- a/compiler/dfa.nim +++ b/compiler/dfa.nim @@ -439,8 +439,8 @@ proc gen(c: var Con; n: PNode) = genUse(c, n) of nkIfStmt, nkIfExpr: genIf(c, n) of nkWhenStmt: - # This is "when nimvm" node. Chose the first branch. - gen(c, n[0][1]) + # This is "when nimvm" node. Chose the second branch. + gen(c, n[1][0]) of nkCaseStmt: genCase(c, n) of nkWhileStmt: genWhile(c, n) of nkBlockExpr, nkBlockStmt: genBlock(c, n) diff --git a/tests/destructor/t23837.nim b/tests/destructor/t23837.nim index e219dd6b55..7ee20fee41 100644 --- a/tests/destructor/t23837.nim +++ b/tests/destructor/t23837.nim @@ -48,4 +48,18 @@ proc main() = let s = leakyWrapper() echo s -main() \ No newline at end of file +main() + +block: + proc foo = + var x = "1234" + var y = x + when nimvm: + discard + else: + var s = x + doAssert s == "1234" + doAssert y == "1234" + + static: foo() + foo()