diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-01-16 15:00:18 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-01-16 18:30:57 +0100 |
commit | 47212fc763788660ff9051ccee1f6fa8a0db7bdd (patch) | |
tree | 909f449ea0d8100fc019a4ef2c78a16416bd5054 /guix/ui.scm | |
parent | 84c5da08dda4fa8fd0e0f1e6a8a115190005f84a (diff) | |
download | patches-47212fc763788660ff9051ccee1f6fa8a0db7bdd.tar patches-47212fc763788660ff9051ccee1f6fa8a0db7bdd.tar.gz |
records: Improve reporting of "invalid field specifier" errors.
Previously users would just see:
error: invalid field specifier
without source location or hints.
* guix/records.scm (expand): Add optional 'parent-form' parameter and
pass it to 'syntax-violation' when it is true.
(make-syntactic-constructor): Pass S as a third argument to
'report-invalid-field-specifier'.
* guix/ui.scm (report-load-error): For 'syntax-error', show SUBFORM or
FORM in the message.
* tests/records.scm ("define-record-type* & wrong field specifier"): Add
a 'subform' parameter and adjust test accordingly.
("define-record-type* & wrong field specifier, identifier"): New test.
* tests/guix-system.sh: Add test.
Diffstat (limited to 'guix/ui.scm')
-rw-r--r-- | guix/ui.scm | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/guix/ui.scm b/guix/ui.scm index b99a9e59f5..01aeee49eb 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -372,9 +372,10 @@ ARGS is the list of arguments received by the 'throw' handler." (format (current-error-port) (G_ "~amissing closing parenthesis~%") location)) (apply throw args))) - (('syntax-error proc message properties form . rest) + (('syntax-error proc message properties form subform . rest) (let ((loc (source-properties->location properties))) - (report-error loc (G_ "~a~%") message))) + (report-error loc (G_ "~s: ~a~%") + (or subform form) message))) (('unbound-variable _ ...) (report-unbound-variable-error args #:frame frame)) (((or 'srfi-34 '%exception) obj) |