0.7.10.11:
[sbcl.git] / src / code / describe.lisp
index b937104..b89842f 100644 (file)
 
 (defmethod describe-object ((x array) s)
   (let ((rank (array-rank x)))
-    (cond ((> rank 1)
-          (format s "~S ~_is " x)
-          (write-string (if (%array-displaced-p x) "a displaced" "an") s)
-          (format s " array of rank ~S." rank)
-          (format s "~@:_Its dimensions are ~S." (array-dimensions x)))
-         (t
+    (cond ((= rank 1)
           (format s
                   "~@:_~S is a ~:[~;displaced ~]vector of length ~S." x
                   (and (array-header-p x) (%array-displaced-p x)) (length x))
           (when (array-has-fill-pointer-p x)
             (format s "~@:_It has a fill pointer, currently ~S."
-                    (fill-pointer x))))))
+                    (fill-pointer x))))
+         (t
+          (format s "~S ~_is " x)
+          (write-string (if (%array-displaced-p x) "a displaced" "an") s)
+          (format s " array of rank ~S." rank)
+          (format s "~@:_Its dimensions are ~S." (array-dimensions x)))))
   (let ((array-element-type (array-element-type x)))
     (unless (eq array-element-type t)
       (format s
     (:function (if name
                   (format s "Function: ~S" x)
                   (format s "~S is a function." x))))
-  (format s "~@:_Its associated name (as in ~S) is ~S."
+  (format s "~@:_~@<Its associated name (as in ~S) is ~2I~_~S.~:>"
          'function-lambda-expression
          (%fun-name x))
   (case (widetag-of x)