diff options
author | Andy Wingo <wingo@pobox.com> | 2019-11-07 16:43:23 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2019-11-07 16:43:23 +0100 |
commit | 3c73d77e2a5865b4b006e7363791dae7617cb5ac (patch) | |
tree | b5290f01b3987d793b6c3ccf2610bae1f9ddbf93 | |
parent | 92d767bae2035b2ad782cfb18befde838a752bac (diff) | |
download | guile-3c73d77e2a5865b4b006e7363791dae7617cb5ac.tar.gz |
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.
-rw-r--r-- | module/ice-9/boot-9.scm | 5 | ||||
-rw-r--r-- | module/ice-9/exceptions.scm | 19 |
2 files changed, 17 insertions, 7 deletions
diff --git a/module/ice-9/boot-9.scm b/module/ice-9/boot-9.scm index f725686c6..7f7ad935b 100644 --- a/module/ice-9/boot-9.scm +++ b/module/ice-9/boot-9.scm @@ -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 diff --git a/module/ice-9/exceptions.scm b/module/ice-9/exceptions.scm index 721140ca7..d3f63c232 100644 --- a/module/ice-9/exceptions.scm +++ b/module/ice-9/exceptions.scm @@ -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. - -(define-exception-type &guile &exception - make-guile-exception guile-exception? - (key guile-exception-key) - (args guile-exception-args)) +;; 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 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) |