ui: Report key-and-arg exceptions correctly.

Fixes <https://bugs.gnu.org/42601>.
Reported by Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>.

Regression introduced in efe037fc5c
whereby errors like 'wrong-type-arg' would be improperly reported:

  guix environment: error: Wrong type argument in position ~A (expecting ~A): ~S

See also commit a07d5e558b.

* guix/ui.scm (call-with-error-handling): Move 'message-condition?'
clause after '&exception-with-kind-and-args' clause.
This commit is contained in:
Ludovic Courtès 2020-08-04 21:27:30 +02:00
parent fc45f2fcf8
commit 05f3d34094
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -795,14 +795,6 @@ (define (manifest-entry-output* entry)
(invoke-error-stop-signal c) (invoke-error-stop-signal c)
(cons (invoke-error-program c) (cons (invoke-error-program c)
(invoke-error-arguments c)))) (invoke-error-arguments c))))
((message-condition? c)
;; Normally '&message' error conditions have an i18n'd message.
(report-error (and (error-location? c) (error-location c))
(G_ "~a~%")
(gettext (condition-message c) %gettext-domain))
(when (fix-hint? c)
(display-hint (condition-fix-hint c)))
(exit 1))
((formatted-message? c) ((formatted-message? c)
(apply report-error (apply report-error
@ -825,7 +817,16 @@ (define (manifest-entry-output* entry)
(guile-3 (guile-3
((exception-predicate &exception-with-kind-and-args) c)) ((exception-predicate &exception-with-kind-and-args) c))
(else #f)) (else #f))
(raise c))) (raise c))
((message-condition? c)
;; Normally '&message' error conditions have an i18n'd message.
(report-error (and (error-location? c) (error-location c))
(G_ "~a~%")
(gettext (condition-message c) %gettext-domain))
(when (fix-hint? c)
(display-hint (condition-fix-hint c)))
(exit 1)))
;; Catch EPIPE and the likes. ;; Catch EPIPE and the likes.
(catch 'system-error (catch 'system-error
thunk thunk