summary refs log tree commit diff stats
path: root/tests/exception/texcas.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/exception/texcas.nim')
-rw-r--r--tests/exception/texcas.nim43
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/exception/texcas.nim b/tests/exception/texcas.nim
new file mode 100644
index 000000000..ad6819f11
--- /dev/null
+++ b/tests/exception/texcas.nim
@@ -0,0 +1,43 @@
+discard """
+  targets: "c cpp"
+  output: '''
+Hello
+Hello
+'''
+"""
+proc test[T]() =
+  try:
+    raise newException(T, "Hello")
+  except T as foobar:
+    echo(foobar.msg)
+  doAssert(not declared(foobar))
+
+template testTemplate(excType: typedesc) =
+  try:
+    raise newException(excType, "Hello")
+  except excType as foobar:
+    echo(foobar.msg)
+  doAssert(not declared(foobar))
+
+proc test2() =
+  testTemplate(Exception)
+  doAssert(not declared(foobar))
+
+
+proc testTryAsExpr(i: int) =
+  let x = try: i    
+  except ValueError as ex:
+    echo(ex.msg)
+    -1
+
+test[Exception]()
+test2()
+testTryAsExpr(5)
+
+# see bug #7115
+doAssert(not compiles(
+  try: 
+    echo 1
+  except [KeyError as ex1, ValueError as ex2]:
+    echo 2
+))