summary refs log tree commit diff stats
path: root/tests/run/tonraise.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run/tonraise.nim')
-rw-r--r--tests/run/tonraise.nim34
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/run/tonraise.nim b/tests/run/tonraise.nim
new file mode 100644
index 000000000..1a555dd94
--- /dev/null
+++ b/tests/run/tonraise.nim
@@ -0,0 +1,34 @@
+discard """
+  output: '''i: 1
+success'''
+"""
+
+type
+  ESomething = object of E_Base
+  ESomeOtherErr = object of E_Base
+
+proc genErrors(s: string) =
+  if s == "error!":
+    raise newException(ESomething, "Test")
+  else:
+    raise newException(EsomeotherErr, "bla")
+
+proc foo() =
+  var i = 0
+  try:
+    inc i
+    onRaise(proc (e: ref E_Base): bool =
+      echo "i: ", i)
+    genErrors("errssor!")
+  except ESomething:
+    echo("ESomething happened")
+  except:
+    echo("Some other error happened")
+    
+  # test that raise handler is gone:
+  try:
+    genErrors("error!")
+  except ESomething:
+    echo "success"
+
+foo()