summary refs log tree commit diff stats
path: root/tests/vm/tmisc_vm.nim
diff options
context:
space:
mode:
authorLemonBoy <LemonBoy@users.noreply.github.com>2019-02-08 11:57:47 +0100
committerAndreas Rumpf <rumpf_a@web.de>2019-02-08 11:57:47 +0100
commit710cfcecd30a779a38a1196fd031200ad8a8fe9b (patch)
tree17cadd065653045e1b980e2d46849bdbf15eaad2 /tests/vm/tmisc_vm.nim
parent631a8ab57f6935d34d290089b7cc36d23dc03504 (diff)
downloadNim-710cfcecd30a779a38a1196fd031200ad8a8fe9b.tar.gz
Rework exception handling in the VM (#10544)
* Rework exception handling in the VM

Make the safepoint handling more precise and less forgiving.
The new code is clearer and more commented.
Perform cleanup on `return`.
The no-exception-thrown case in a try block should be slightly faster
since we don't parse the whole set of exceptions every time.
More tests.

* Fix silly error that broke a few tests

* Testament doesn't like files having the same name

* Remove test case that failed compilation to js
Diffstat (limited to 'tests/vm/tmisc_vm.nim')
-rw-r--r--tests/vm/tmisc_vm.nim20
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/vm/tmisc_vm.nim b/tests/vm/tmisc_vm.nim
index 6eb3dd627..bce0159ce 100644
--- a/tests/vm/tmisc_vm.nim
+++ b/tests/vm/tmisc_vm.nim
@@ -49,3 +49,23 @@ static:
     echo "caught Defect"
   except ValueError:
     echo "caught ValueError"
+
+# bug #10538
+
+block:
+  proc fun1(): seq[int] =
+    try:
+      try:
+        result.add(1)
+        return
+      except:
+        result.add(-1)
+      finally:
+        result.add(2)
+    finally:
+      result.add(3)
+    result.add(4)
+
+  let x1 = fun1()
+  const x2 = fun1()
+  doAssert(x1 == x2)
f='#n171'>171 172 173 174 175 176 177 178 179 180 181 182 183 184 185