~ruther/guix-local

41766807d042023b1f807cc40e9fd09fc3682a4e — Ludovic Courtès 10 years ago cdb5b07
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.
1 files changed, 8 insertions(+), 2 deletions(-)

M guix/ui.scm
M guix/ui.scm => guix/ui.scm +8 -2
@@ 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