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
This commit is contained in:
parent
631a8ab57f
commit
710cfcecd3
4 changed files with 238 additions and 106 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue