1.0.29.38: better DESCRIBE
[sbcl.git] / src / code / condition.lisp
index a4fbb97..0e87f35 100644 (file)
                               ',(all-writers)
                               (sb!c:source-location)))))))
 \f
-;;;; DESCRIBE on CONDITIONs
-
-;;; a function to be used as the guts of DESCRIBE-OBJECT (CONDITION T)
-;;; eventually (once we get CLOS up and running so that we can define
-;;; methods)
-(defun describe-condition (condition stream)
-  (format stream
-          "~&~@<~S ~_is a ~S. ~_Its slot values are ~_~S.~:>~%"
-          condition
-          (type-of condition)
-          (concatenate 'list
-                       (condition-actual-initargs condition)
-                       (condition-assigned-slots condition))))
-\f
 ;;;; various CONDITIONs specified by ANSI
 
 (define-condition serious-condition (condition) ())
                    '(:ansi-cl :function make-array)
                    '(:ansi-cl :function sb!xc:upgraded-array-element-type))))
 
-(define-condition displaced-to-array-too-small-error
-    (reference-condition simple-error)
-  ()
-  (:default-initargs
-      :references (list '(:ansi-cl :function adjust-array))))
-
 (define-condition type-warning (reference-condition simple-warning)
   ()
   (:default-initargs :references (list '(:sbcl :node "Handling of Types"))))
@@ -1116,6 +1096,21 @@ SB-EXT:PACKAGE-LOCKED-ERROR-SYMBOL."))
                ;; Extract the bound from (INTEGER 0 (BOUND))
                (caaddr (type-error-expected-type condition)))))))
 
+(define-condition invalid-array-error (reference-condition type-error) ()
+  (:report
+   (lambda (condition stream)
+     (let ((*print-array* nil))
+       (format stream
+               "~@<Displaced array originally of type ~S has been invalidated ~
+                due its displaced-to array ~S having become too small to hold ~
+                it: the displaced array's dimensions have all been set to zero ~
+                to trap accesses to it.~:@>"
+               (type-error-expected-type condition)
+               (array-displacement (type-error-datum condition))))))
+  (:default-initargs
+      :references
+      (list '(:ansi-cl :function adjust-array))))
+
 (define-condition index-too-large-error (type-error)
   ()
   (:report
@@ -1272,14 +1267,6 @@ holds the source-path to the original form within that file or NIL.
 Associated with this condition are always the restarts STEP-INTO,
 STEP-NEXT, and STEP-CONTINUE."))
 
-#!+sb-doc
-(setf (fdocumentation 'step-condition-source-path 'function)
-      "Source-path of the original form associated with the
-STEP-FORM-CONDITION or NIL."
-      (fdocumentation 'step-condition-pathname 'function)
-      "Pathname of the original source-file associated with the
-STEP-FORM-CONDITION or NIL.")
-
 (define-condition step-result-condition (step-condition)
   ((result :initarg :result :reader step-condition-result)))