INim
INim copied to clipboard
Handling `sysFatal` gracefully
Unhandled sysFatal from top level scope can crash the repl:
%zsh> inim
👑 INim 0.6.1
Nim Compiler Version 1.6.0 [Linux: amd64] at /usr/bin/nim
nim> var s = newSeq[int](5)
nim> s[5] = 42
fatal.nim(53) sysFatal
Error: unhandled exception: value out of range: -1 notin 0 .. 9223372036854775807 [RangeDefect]
Other unhandled sysFatal don't show the error message:
%zsh> inim
👑 INim 0.6.1
Nim Compiler Version 1.6.0 [Linux: amd64] at /usr/bin/nim
nim> proc oof() =
.... var s = newSeq[int](5)
.... s[5] = 42
....
nim> oof()
/usr/lib/nim/lib/system/fatal.nim(53) sysFatal
confirmed, these should not crash the repl, ideally. Perhaps they should be removed from execution so that further commands can continue?
Looks like the crash isn't happening any more with nim 1.6.6, the message is still missing in the second case however.
Crash is back, either I was talking nonsense before or it is reintroduced. My naive idea for this was to somehow catch sysFatal
during the internal compile cycle (although I understand that it's more like a panic than an exception), but that requires a better understanding of fatal.nim
than I have:
https://github.com/nim-lang/Nim/blob/devel/lib/system/fatal.nim
In particular, Nim is not always simply raise
ing something, there's a few platform/compiler-flag specific behaviours.