X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fcondition.lisp;h=32db3f77f42e5f7e50c3023b4297790f9feff46d;hb=1831934a29eb9361472e4f49efbcd5398392a6b0;hp=782dcdcd7b79736e6f7c7fa41d17c2bc784c33ce;hpb=43caa89c20c70fdef77797fe31e6fd09bfcf2527;p=sbcl.git diff --git a/src/code/condition.lisp b/src/code/condition.lisp index 782dcdc..32db3f7 100644 --- a/src/code/condition.lisp +++ b/src/code/condition.lisp @@ -69,7 +69,7 @@ (!defstruct-with-alternate-metaclass condition :slot-names (actual-initargs assigned-slots) :boa-constructor %make-condition-object - :superclass-name instance + :superclass-name t :metaclass-name condition-classoid :metaclass-constructor make-condition-classoid :dd-type structure) @@ -392,10 +392,14 @@ (condition-writer-function condition new-value slot-name)))) (defun %define-condition (name parent-types layout slots documentation - report default-initargs all-readers all-writers) + report default-initargs all-readers all-writers + source-location) (with-single-package-locked-error (:symbol name "defining ~A as a condition") (%compiler-define-condition name parent-types layout all-readers all-writers) + (sb!c:with-source-location (source-location) + (setf (layout-source-location layout) + source-location)) (let ((class (find-classoid name))) (setf (condition-classoid-slots class) slots) (setf (condition-classoid-report class) report) @@ -564,7 +568,8 @@ ,report (list ,@default-initargs) ',(all-readers) - ',(all-writers))))))) + ',(all-writers) + (sb!c:source-location))))))) ;;;; DESCRIBE on CONDITIONs @@ -825,6 +830,9 @@ (format stream ", ") (destructuring-bind (type data) (cdr reference) (ecase type + (:initialization + (format stream "Initialization of ~:(~A~) Metaobjects" + (substitute #\ #\- (symbol-name data)))) (:generic-function (format stream "Generic Function ~S" data)) (:section (format stream "Section ~{~D~^.~}" data))))) (:ansi-cl