summary refs log tree commit diff stats
path: root/tests/cpp/tcppraise.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/cpp/tcppraise.nim')
-rw-r--r--tests/cpp/tcppraise.nim71
1 files changed, 71 insertions, 0 deletions
diff --git a/tests/cpp/tcppraise.nim b/tests/cpp/tcppraise.nim
new file mode 100644
index 000000000..f03956d4c
--- /dev/null
+++ b/tests/cpp/tcppraise.nim
@@ -0,0 +1,71 @@
+discard """
+  targets: "cpp"
+  output: '''foo
+bar
+Need odd and >= 3 digits##
+baz
+caught
+--------
+Triggered raises2
+Raising ValueError
+'''
+"""
+
+# bug #1888
+echo "foo"
+try:
+  echo "bar"
+  raise newException(ValueError, "Need odd and >= 3 digits")
+#  echo "baz"
+except ValueError:
+  echo getCurrentExceptionMsg(), "##"
+echo "baz"
+
+
+# bug 7232
+try:
+ discard
+except KeyError, ValueError:
+  echo "except handler" # should not be invoked
+
+
+#bug 7239
+try:
+  try:
+    raise newException(ValueError, "asdf")
+  except KeyError, ValueError:
+    raise
+except:
+  echo "caught"
+
+
+# issue 5549
+
+var strs: seq[string] = @[]
+
+try:
+  discard
+finally:
+  for foobar in strs:
+    discard
+
+
+# issue #11118
+echo "--------"
+proc raises() =
+  raise newException(ValueError, "Raising ValueError")
+
+proc raises2() =
+  try:
+    raises()
+  except ValueError as e:
+    echo "Triggered raises2"
+    raise e
+
+try:
+  raises2()
+except:
+  echo getCurrentExceptionMsg()
+  discard
+
+doAssert: getCurrentException() == nil