summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-05-26 22:38:17 +0200
committerLudovic Courtès <ludo@gnu.org>2015-05-26 22:38:17 +0200
commit41766807d042023b1f807cc40e9fd09fc3682a4e (patch)
tree606326462792a8b37c56eca35fae25bef210f1c0
parentcdb5b075d545dd4e0b2a03bdc62fa0d1f6e00fc3 (diff)
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.
-rw-r--r--guix/ui.scm10
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