diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2020-01-01 10:01:49 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-01 10:01:49 +0100 |
commit | c3344862b0d6061cc1581f29c81b29b75c78615a (patch) | |
tree | 75661179ec450bb4e2783603c09f4304dfe42a45 /tests/exception | |
parent | 8a63caca07349742d071dcd3a7d3e3055fe617cf (diff) | |
download | Nim-c3344862b0d6061cc1581f29c81b29b75c78615a.tar.gz |
--exception:goto switch for deterministic exception handling (#12977)
This implements "deterministic" exception handling for Nim based on goto instead of setjmp. This means raising an exception is much cheaper than in C++'s table based implementations. Supports hard realtime systems. Default for --gc:arc and the C target because it's generally a good idea and arc is all about deterministic behavior. Note: This implies that fatal runtime traps are not catchable anymore! This needs to be documented.
Diffstat (limited to 'tests/exception')
-rw-r--r-- | tests/exception/tfinally4.nim | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/tests/exception/tfinally4.nim b/tests/exception/tfinally4.nim index feaf1bc96..a7dbbffef 100644 --- a/tests/exception/tfinally4.nim +++ b/tests/exception/tfinally4.nim @@ -1,5 +1,39 @@ discard """ - 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" + output: ''' +B1 +A1 +1 +B1 +B2 +catch +A1 +1 +B1 +A1 +A2 +2 +B1 +B2 +catch +A1 +A2 +0 +B1 +A1 +1 +B1 +B2 +A1 +1 +B1 +A1 +A2 +2 +B1 +B2 +A1 +A2 +3''' """ # More thorough test of return-in-finaly |