From fdc3f54f9760b6512c5bdc3af6ed034187e70ffe Mon Sep 17 00:00:00 2001 From: cooldome Date: Sat, 13 Apr 2019 09:50:30 +0100 Subject: [PATCH] fix reraise (#11017) --- compiler/injectdestructors.nim | 2 +- tests/destructor/tv2_raise.nim | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) 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")