diff --git a/compiler/injectdestructors.nim b/compiler/injectdestructors.nim index 865b64daaf..db4053fb33 100644 --- a/compiler/injectdestructors.nim +++ b/compiler/injectdestructors.nim @@ -753,7 +753,7 @@ proc p(n: PNode; c: var Con): PNode = result = copyTree(n) result[1][0] = p(result[1][0], c) of nkRaiseStmt: - if optNimV2 in c.graph.config.globalOptions: + if optNimV2 in c.graph.config.globalOptions and n[0].kind != nkEmpty: let t = n[0].typ let tmp = getTemp(c, t, n.info) var m = genCopyNoCheck(c, t, tmp, n[0]) diff --git a/tests/destructor/tv2_raise.nim b/tests/destructor/tv2_raise.nim index 75ccadd497..f8d6d30b5e 100644 --- a/tests/destructor/tv2_raise.nim +++ b/tests/destructor/tv2_raise.nim @@ -9,10 +9,14 @@ import system / ansi_c import core / allocators proc mainA = - var e: owned(ref ValueError) - new(e) - e.msg = "message" - raise e + try: + var e: owned(ref ValueError) + new(e) + e.msg = "message" + raise e + except Exception as e: + raise + proc main = raise newException(ValueError, "argh")