diff options
author | Pierre Bourdon <delroth@gmail.com> | 2024-05-23 02:52:54 +0200 |
---|---|---|
committer | Pierre Bourdon <delroth@gmail.com> | 2024-05-23 02:52:54 +0200 |
commit | d8bc3bfb6d6618f8b6b0669cb5051f85192e5978 (patch) | |
tree | 7173215a8b0f3eb0a314cef71fc690c4fd6c8c81 | |
parent | 06c1375e52926be4455762ece825589fda86c942 (diff) |
repl: do not crash when tab-completing import errors
File not found while importing causes a SysError, not an EvalError,
which is not currently caught by the tab-completion handler. Ignoring
all SysErrors might seem "dangerous" but this is the tab-completion
handler, any exception being bubbled up from there causes unexpected
behavior (causes the whole repl to exit).
Fixes #340.
Change-Id: I643048a47935e77f582decc539d9e51bdb96c890
-rw-r--r-- | src/libcmd/repl.cc | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/libcmd/repl.cc b/src/libcmd/repl.cc index 525c25560..a74ea8e5f 100644 --- a/src/libcmd/repl.cc +++ b/src/libcmd/repl.cc @@ -375,6 +375,9 @@ StringSet NixRepl::completePrefix(const std::string & prefix) // Quietly ignore evaluation errors. } catch (BadURL & e) { // Quietly ignore BadURL flake-related errors. + } catch (SysError & e) { + // Quietly ignore system errors which can for example be raised by + // a non-existent file being `import`-ed. } } |