0.9.2.26: refactoring internals of foreign linkage
[sbcl.git] / src / code / inspect.lisp
index 90025b5..603319c 100644 (file)
@@ -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