X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Finspect.lisp;h=603319c0aeaf4f2226ff92fcff671aae7c9d9ce8;hb=dc33d6a6b84f8338e603759cec8e25da29055d50;hp=90025b57f2bc49c725bbfbd1b756aa2ff78afc78;hpb=a78d05d9bbcf148f8610c1b6f3140139989ca227;p=sbcl.git diff --git a/src/code/inspect.lisp b/src/code/inspect.lisp index 90025b5..603319c 100644 --- a/src/code/inspect.lisp +++ b/src/code/inspect.lisp @@ -155,7 +155,7 @@ evaluated expressions. (defgeneric inspected-parts (object)) (defmethod inspected-parts ((object symbol)) - (values (format nil "The object is a SYMBOL.~%" object) + (values (format nil "The object is a SYMBOL.~%") t (list (cons "Name" (symbol-name object)) (cons "Package" (symbol-package object)) @@ -172,7 +172,7 @@ evaluated expressions. (info (layout-info (sb-kernel:layout-of object)))) (when (sb-kernel::defstruct-description-p info) (dolist (dd-slot (dd-slots info) (nreverse parts-list)) - (push (cons (dsd-%name dd-slot) + (push (cons (dsd-name dd-slot) (funcall (dsd-accessor-name dd-slot) object)) parts-list))))) @@ -202,21 +202,28 @@ evaluated expressions. (values (format nil "The object is a FUNCALLABLE-INSTANCE of type ~S.~%" (type-of object)) t - (inspected-structure-elements object))) + (inspected-standard-object-elements object))) + +(defmethod inspected-parts ((object condition)) + (values (format nil "The object is a CONDITION of type ~S.~%" + (type-of object)) + t + (inspected-standard-object-elements object))) (defmethod inspected-parts ((object function)) - (let* ((type (sb-kernel:widetag-of object)) - (object (if (= type sb-vm:closure-header-widetag) - (sb-kernel:%closure-fun object) - object))) - (values (format nil "FUNCTION ~S.~@[~%Argument List: ~A~]." object - (sb-kernel:%simple-fun-arglist object) - ;; Defined-from stuff used to be here. Someone took - ;; it out. FIXME: We should make it easy to get - ;; to DESCRIBE from the inspector. - ) - t - nil))) + (values (format nil "The object is a ~A named ~S.~%" + (if (closurep object) 'closure 'function) + (%fun-name object)) + t + ;; Defined-from stuff used to be here. Someone took + ;; it out. FIXME: We should make it easy to get + ;; to DESCRIBE from the inspector. + (list* + (cons "Lambda-list" (%fun-lambda-list object)) + (cons "Ftype" (%fun-type object)) + (when (closurep object) + (list + (cons "Closed over values" (%closure-values object))))))) (defmethod inspected-parts ((object vector)) (values (format nil @@ -241,7 +248,9 @@ evaluated expressions. (defmethod inspected-parts ((object array)) (let* ((length (min (array-total-size object) *inspect-length*)) - (reference-array (make-array length :displaced-to object)) + (reference-array (make-array length + :element-type (array-element-type object) + :displaced-to object)) (dimensions (array-dimensions object)) (reversed-elements nil)) ;; FIXME: Should we respect *INSPECT-LENGTH* here? If not, what does