mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 03:30:27 +02:00
Print the faulty object upon invalid-keyword errors.
* libguile/vm.c (vm_error_kwargs_invalid_keyword, vm_error_kwargs_unrecognized_keyword): Add parameter. Pass it enclosed in a list as the last argument to `scm_error_scm'. * libguile/vm-i-system.c (bind_kwargs): Adjust accordingly. * libguile/eval.c (error_invalid_keyword, error_unrecognized_keyword): Add parameter. (prepare_boot_closure_env_for_apply): Adjust accordingly. * module/ice-9/eval.scm (primitive-eval): Likewise. * libguile/error.c (scm_error_scm): Mention `keyword-argument-error' in docstring. * module/ice-9/boot-9.scm (keyword-error-printer): New procedure; use it. * test-suite/tests/optargs.test (c&e, with-test-prefix/c&e): Remove. ("define*")["unrecognized keyword"]: Test the value passed along the `keyword-argument-error' exception. ["invalid keyword"]: New test. * doc/ref/api-control.texi (Error Reporting): Update `scm-error' description.
This commit is contained in:
parent
6fe2803b45
commit
4af0d97ee6
8 changed files with 41 additions and 42 deletions
|
@ -944,12 +944,17 @@ procedures, their behavior is implementation dependent."
|
|||
(_ (default-printer)))
|
||||
args))
|
||||
|
||||
(define (keyword-error-printer port key args default-printer)
|
||||
(let ((message (cadr args))
|
||||
(faulty (car (cadddr args)))) ; I won't do it again, I promise.
|
||||
(format port "~a: ~s" message faulty)))
|
||||
|
||||
(define (getaddrinfo-error-printer port key args default-printer)
|
||||
(format port "In procedure getaddrinfo: ~a" (gai-strerror (car args))))
|
||||
|
||||
(set-exception-printer! 'goops-error scm-error-printer)
|
||||
(set-exception-printer! 'host-not-found scm-error-printer)
|
||||
(set-exception-printer! 'keyword-argument-error scm-error-printer)
|
||||
(set-exception-printer! 'keyword-argument-error keyword-error-printer)
|
||||
(set-exception-printer! 'misc-error scm-error-printer)
|
||||
(set-exception-printer! 'no-data scm-error-printer)
|
||||
(set-exception-printer! 'no-recovery scm-error-printer)
|
||||
|
|
|
@ -351,7 +351,7 @@
|
|||
(scm-error
|
||||
'keyword-argument-error
|
||||
"eval" "Unrecognized keyword"
|
||||
'() #f)))
|
||||
'() (list (car args)))))
|
||||
(lp (cddr args)))
|
||||
(if (pair? args)
|
||||
(if rest?
|
||||
|
@ -359,7 +359,7 @@
|
|||
(lp (cdr args))
|
||||
(scm-error 'keyword-argument-error
|
||||
"eval" "Invalid keyword"
|
||||
'() #f))
|
||||
'() (list (car args))))
|
||||
;; Finished parsing keywords. Fill in
|
||||
;; uninitialized kwargs by evalling init
|
||||
;; expressions in their appropriate
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue