aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/manual/rl-next/better-errors-in-nix-repl.md40
1 files changed, 40 insertions, 0 deletions
diff --git a/doc/manual/rl-next/better-errors-in-nix-repl.md b/doc/manual/rl-next/better-errors-in-nix-repl.md
new file mode 100644
index 000000000..4deaa8c70
--- /dev/null
+++ b/doc/manual/rl-next/better-errors-in-nix-repl.md
@@ -0,0 +1,40 @@
+---
+synopsis: Concise error printing in `nix repl`
+prs: 9928
+---
+
+Previously, if an element of a list or attribute set threw an error while
+evaluating, `nix repl` would print the entire error (including source location
+information) inline. This output was clumsy and difficult to parse:
+
+```
+nix-repl> { err = builtins.throw "uh oh!"; }
+{ err = «error:
+ … while calling the 'throw' builtin
+ at «string»:1:9:
+ 1| { err = builtins.throw "uh oh!"; }
+ | ^
+
+ error: uh oh!»; }
+```
+
+Now, only the error message is displayed, making the output much more readable.
+```
+nix-repl> { err = builtins.throw "uh oh!"; }
+{ err = «error: uh oh!»; }
+```
+
+However, if the whole expression being evaluated throws an error, source
+locations and (if applicable) a stack trace are printed, just like you'd expect:
+
+```
+nix-repl> builtins.throw "uh oh!"
+error:
+ … while calling the 'throw' builtin
+ at «string»:1:1:
+ 1| builtins.throw "uh oh!"
+ | ^
+
+ error: uh oh!
+```
+