aboutsummaryrefslogtreecommitdiff
path: root/src/libcmd/repl.cc
diff options
context:
space:
mode:
authorPierre Bourdon <delroth@gmail.com>2024-05-23 02:52:54 +0200
committerPierre Bourdon <delroth@gmail.com>2024-05-23 02:52:54 +0200
commitd8bc3bfb6d6618f8b6b0669cb5051f85192e5978 (patch)
tree7173215a8b0f3eb0a314cef71fc690c4fd6c8c81 /src/libcmd/repl.cc
parent06c1375e52926be4455762ece825589fda86c942 (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
Diffstat (limited to 'src/libcmd/repl.cc')
-rw-r--r--src/libcmd/repl.cc3
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.
}
}