diff options
author | Audun Wilhelmsen <skyfex@gmail.com> | 2014-02-23 00:19:18 +0100 |
---|---|---|
committer | Audun Wilhelmsen <skyfex@gmail.com> | 2014-02-23 00:19:18 +0100 |
commit | 66675d174b044c7e63cabfce1a235702f1da64aa (patch) | |
tree | 0b3cf5d9c2f86f7a6036daece6b67bfb560ceee4 /tests/exception/tfinally4.nim | |
parent | 8cccaebc2ed1ab6464eec52ced757bf1ec048db5 (diff) | |
download | Nim-66675d174b044c7e63cabfce1a235702f1da64aa.tar.gz |
Added tougher test case for return within finally statement.
Diffstat (limited to 'tests/exception/tfinally4.nim')
-rw-r--r-- | tests/exception/tfinally4.nim | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/exception/tfinally4.nim b/tests/exception/tfinally4.nim new file mode 100644 index 000000000..05c57c4f5 --- /dev/null +++ b/tests/exception/tfinally4.nim @@ -0,0 +1,40 @@ +discard """ + file: "tfinally4.nim" + output: "B1\nA1\n1\nB1\nB2\ncatch\nA1\n1\nB1\nA1\nA2\n2\nB1\nB2\ncatch\nA1\nA2\n0\nB1\nA1\n1\nB1\nB2\nA1\n1\nB1\nA1\nA2\n2\nB1\nB2\nA1\nA2\n3" +""" + +# More thorough test of return-in-finaly + +var raiseEx = true +var returnA = true +var returnB = false + +proc main: int = + try: #A + try: #B + if raiseEx: + raise newException(EOS, "") + return 3 + finally: #B + echo "B1" + if returnB: + return 2 + echo "B2" + except EOS: #A + echo "catch" + finally: #A + echo "A1" + if returnA: + return 1 + echo "A2" + +for x in [true, false]: + for y in [true, false]: + for z in [true, false]: + # echo "raiseEx: " & $x + # echo "returnA: " & $y + # echo "returnB: " & $z + raiseEx = x + returnA = y + returnB = z + echo main() |