diff options
author | heterodoxic <122719743+heterodoxic@users.noreply.github.com> | 2023-06-07 15:15:08 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-07 15:15:08 +0200 |
commit | 7fad6e5c701ef81c443871ec61fdca0c19c9f588 (patch) | |
tree | f7554ac1f43aeba3587e5ea16f9a8dce51f9ccce | |
parent | 47fa7506ab8105eac80fac50a9f01ef89ba95cc3 (diff) | |
download | Nim-7fad6e5c701ef81c443871ec61fdca0c19c9f588.tar.gz |
fixes #21995: align C++ with C backend behavior for empty raise state… (#21998)
* fixes #21995: align C with C++ backend behavior for empty raise statements * make runtime behavior match across both C and C++ backend and all exception modes
-rw-r--r-- | compiler/ccgstmts.nim | 6 | ||||
-rw-r--r-- | tests/ccgbugs/t21995.nim | 9 |
2 files changed, 10 insertions, 5 deletions
diff --git a/compiler/ccgstmts.nim b/compiler/ccgstmts.nim index 09350c034..f536a82c1 100644 --- a/compiler/ccgstmts.nim +++ b/compiler/ccgstmts.nim @@ -779,11 +779,7 @@ proc genRaiseStmt(p: BProc, t: PNode) = else: finallyActions(p) genLineDir(p, t) - # reraise the last exception: - if p.config.exc == excCpp: - line(p, cpsStmts, "throw;\n") - else: - linefmt(p, cpsStmts, "#reraiseException();$n", []) + linefmt(p, cpsStmts, "#reraiseException();$n", []) raiseInstr(p, p.s(cpsStmts)) template genCaseGenericBranch(p: BProc, b: PNode, e: TLoc, diff --git a/tests/ccgbugs/t21995.nim b/tests/ccgbugs/t21995.nim new file mode 100644 index 000000000..0ec88aa59 --- /dev/null +++ b/tests/ccgbugs/t21995.nim @@ -0,0 +1,9 @@ +discard """ + targets: "c cpp" + output: "Hi!" +""" + +try: + raise +except: + echo "Hi!" \ No newline at end of file |