X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fcondition.lisp;h=ae934684ebe9fd914bc30ab96e78dcbce114a9ff;hb=1363121ddb1d2e722e2e41d1c93758551066797c;hp=32db3f77f42e5f7e50c3023b4297790f9feff46d;hpb=1831934a29eb9361472e4f49efbcd5398392a6b0;p=sbcl.git diff --git a/src/code/condition.lisp b/src/code/condition.lisp index 32db3f7..ae93468 100644 --- a/src/code/condition.lisp +++ b/src/code/condition.lisp @@ -391,6 +391,8 @@ (lambda (new-value condition) (condition-writer-function condition new-value slot-name)))) +(defvar *define-condition-hooks* nil) + (defun %define-condition (name parent-types layout slots documentation report default-initargs all-readers all-writers source-location) @@ -440,7 +442,10 @@ (dolist (initarg (condition-slot-initargs slot) nil) (when (functionp (getf e-def-initargs initarg)) (return t)))) - (push slot (condition-classoid-hairy-slots class)))))))) + (push slot (condition-classoid-hairy-slots class))))))) + (when (boundp '*define-condition-hooks*) + (dolist (fun *define-condition-hooks*) + (funcall fun class)))) name)) (defmacro define-condition (name (&rest parent-types) (&rest slot-specs)