diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-05-26 22:38:17 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-05-26 22:38:17 +0200 |
commit | 41766807d042023b1f807cc40e9fd09fc3682a4e (patch) | |
tree | 606326462792a8b37c56eca35fae25bef210f1c0 /guix/ui.scm | |
parent | cdb5b075d545dd4e0b2a03bdc62fa0d1f6e00fc3 (diff) | |
download | gnu-guix-41766807d042023b1f807cc40e9fd09fc3682a4e.tar gnu-guix-41766807d042023b1f807cc40e9fd09fc3682a4e.tar.gz |
ui: Improve error reporting for 'read/eval'.
The effect is visible on commands like:
guix build -e '(+ 2 "foo")'
guix build -e '()'
* guix/ui.scm (read/eval): Change handler to properly report syntax errors and
use 'display-error' for other errors.
Diffstat (limited to 'guix/ui.scm')
-rw-r--r-- | guix/ui.scm | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/guix/ui.scm b/guix/ui.scm index 7490de080c..2140c2e50b 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -446,8 +446,14 @@ interpreted." (lambda () (eval exp (force %guix-user-module))) (lambda args - (leave (_ "failed to evaluate expression `~a': ~s~%") - exp args))))) + (report-error (_ "failed to evaluate expression '~a':~%") exp) + (match args + (('syntax-error proc message properties form . rest) + (report-error (_ "syntax error: ~a~%") message)) + ((error args ...) + (apply display-error #f (current-error-port) args)) + (what? #f)) + (exit 1))))) (define (read/eval-package-expression str) "Read and evaluate STR and return the package it refers to, or exit an |