tests/run-compiler.sh: use gcc, not cc.
[sbcl.git] / src / code / pprint.lisp
index 08e25e9..24e7d97 100644 (file)
   ;; Buffer holding the per-line prefix active at the buffer start.
   ;; Indentation is included in this. The length of this is stored
   ;; in the logical block stack.
-  (prefix (make-string initial-buffer-size) :type simple-string)
+  (prefix (make-string initial-buffer-size) :type (simple-array character (*)))
   ;; Buffer holding the total remaining suffix active at the buffer start.
   ;; The characters are right-justified in the buffer to make it easier
   ;; to output the buffer. The length is stored in the logical block
   ;; stack.
-  (suffix (make-string initial-buffer-size) :type simple-string)
+  (suffix (make-string initial-buffer-size) :type (simple-array character (*)))
   ;; Queue of pending operations. When empty, HEAD=TAIL=NIL. Otherwise,
   ;; TAIL holds the first (oldest) cons and HEAD holds the last (newest)
   ;; cons. Adding things to the queue is basically (setf (cdr head) (list
@@ -1007,16 +1007,11 @@ line break."
          (output-ugly-object array stream))
         ((and *print-readably*
               (not (array-readably-printable-p array)))
-         (restart-case
-             (error 'print-not-readable :object array)
-           (print-unreadably ()
-             :report "Print unreadably."
-             (let ((*print-readably* nil))
-               (pprint-array stream array)))
-           (use-value (o)
-             :report "Supply an object to be printed instead."
-             :interactive read-unreadable-replacement
-             (write o :stream stream))))
+         (if *read-eval*
+             (if (vectorp array)
+                 (sb!impl::output-unreadable-vector-readably array stream)
+                 (sb!impl::output-unreadable-array-readably array stream))
+             (print-not-readable-error array stream)))
         ((vectorp array)
          (pprint-vector stream array))
         (t
@@ -1147,7 +1142,8 @@ line break."
            (consp (cdr list))
            (cddr list)
            ;; Filter out (FLET FOO :IN BAR) names.
-           (not (eq :in (third list))))
+           (and (consp (cddr list))
+                (not (eq :in (third list)))))
       (funcall (formatter
                 "~:<~^~W~^ ~@_~:<~@{~:<~^~W~^~3I ~:_~/SB!PRETTY:PPRINT-LAMBDA-LIST/~1I~:@_~@{~W~^ ~_~}~:>~^ ~_~}~:>~1I~@:_~@{~W~^ ~_~}~:>")
                stream
@@ -1222,6 +1218,8 @@ line break."
     (output-object (pprint-pop) stream)
     (pprint-exit-if-list-exhausted)
     (write-char #\space stream)
+    (unless (listp (cdr list))
+      (write-string ". " stream))
     (pprint-newline :miser stream)
     (pprint-logical-block (stream (cdr list) :prefix "" :suffix "")
       (loop
@@ -1271,7 +1269,9 @@ line break."
 
 (defun pprint-defmethod (stream list &rest noise)
   (declare (ignore noise))
-  (if (consp (third list))
+  (if (and (consp (cdr list))
+           (consp (cddr list))
+           (consp (third list)))
       (pprint-defun stream list)
       (funcall (formatter
                 "~:<~^~W~^ ~@_~:I~W~^ ~W~^ ~:_~/SB!PRETTY:PPRINT-LAMBDA-LIST/~1I~@{ ~_~W~}~:>")
@@ -1378,7 +1378,7 @@ line break."
   (declare (ignore noise))
   (destructuring-bind (loop-symbol . clauses) list
     (declare (ignore loop-symbol))
-    (if (or (null clauses) (consp (car clauses)))
+    (if (or (atom clauses) (consp (car clauses)))
         (pprint-spread-fun-call stream list)
         (pprint-extended-loop stream list))))