1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00

Move exceptions with key and args to core

* module/ice-9/boot-9.scm (&exception-with-key-and-args)
  (&quit-exception): New definitions.
* module/ice-9/exceptions.scm (make-guile-exception):
  (guile-exception?, guile-exception-key, guile-exception-args): Update
  definitions.
This commit is contained in:
Andy Wingo 2019-11-07 16:43:23 +01:00
parent 92d767bae2
commit 3c73d77e2a
2 changed files with 16 additions and 6 deletions

View file

@ -1492,6 +1492,11 @@ exception composed of such an instance."
(proc (car exceptions))
(lp (cdr exceptions))))))))))
(define &exception-with-key-and-args
(make-exception-type '&exception-with-key-and-args &exception '(key args)))
(define &quit-exception
(make-exception-type '&quit-exception &exception '(code)))
;; Define catch and with-throw-handler, using some common helper routines and a

View file

@ -156,13 +156,18 @@
;; When a native guile exception is caught by with-exception-handler, we
;; convert it to a compound exception that includes not only the
;; standard exception objects expected by users of R6RS, SRFI-35, and
;; R7RS, but also a special &guile condition that preserves the original
;; KEY and ARGS passed to the native Guile catch handler.
;; R7RS, but also a special &exception-with-key-and-args condition that
;; preserves the original KEY and ARGS passed to the native Guile catch
;; handler.
(define-exception-type &guile &exception
make-guile-exception guile-exception?
(key guile-exception-key)
(args guile-exception-args))
(define make-guile-exception
(record-constructor &exception-with-key-and-args))
(define guile-exception?
(record-predicate &exception-with-key-and-args))
(define guile-exception-key
(record-accessor &exception-with-key-and-args 'key))
(define guile-exception-args
(record-accessor &exception-with-key-and-args 'args))
(define (default-guile-exception-converter key args)
(make-exception (make-error)