diff options
Diffstat (limited to 'tests/exception/texcas.nim')
-rw-r--r-- | tests/exception/texcas.nim | 43 |
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 +)) |