diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-08-04 21:27:30 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-08-05 22:28:28 +0200 |
commit | 05f3d34094b23dc9612ff6641a0257bc4f7dcd12 (patch) | |
tree | d4b424cd03c58374d2e2bcc50537465d4a8c7d56 | |
parent | fc45f2fcf8c1cd19fa162d5c8fd43956f442f11d (diff) | |
download | guix-05f3d34094b23dc9612ff6641a0257bc4f7dcd12.tar.gz |
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 efe037fc5cc3134bbc3ef4e36b49a3f788921b68 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 a07d5e558b5403dad0a59776b950b6b02169c249. * guix/ui.scm (call-with-error-handling): Move 'message-condition?' clause after '&exception-with-kind-and-args' clause.
-rw-r--r-- | guix/ui.scm | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/guix/ui.scm b/guix/ui.scm index 42afdc2856..efc3f39186 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -795,14 +795,6 @@ directories:~{ ~a~}~%") (invoke-error-stop-signal c) (cons (invoke-error-program 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) (apply report-error @@ -825,7 +817,16 @@ directories:~{ ~a~}~%") (guile-3 ((exception-predicate &exception-with-kind-and-args) c)) (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 'system-error thunk |