1.0.37.57: better DEFMETHOD pretty-printing
[sbcl.git] / tests / pprint.impure.lisp
index 9c6fcee..29a3e93 100644 (file)
   (assert (string= "#1=(#2=(#2# . #3=(#1# . #3#)))"
                    (with-output-to-string (s)
                      (write '#1=(#2=(#2# . #3=(#1# . #3#))) :stream s)))))
+
+;;; Printing malformed defpackage forms without errors.
+(with-test (:name :pprint-defpackage)
+  (with-open-stream (null (make-broadcast-stream))
+    (pprint '(defpackage :foo nil))
+    (pprint '(defpackage :foo 42))))
+
+(with-test (:name :standard-pprint-dispatch-modified)
+  (assert
+   (eq :error
+       (handler-case (with-standard-io-syntax
+                       (set-pprint-dispatch 'symbol (constantly nil))
+                       :no-error)
+         (sb-int:standard-pprint-dispatch-table-modified-error ()
+           :error)))))
+
+(with-test (:name :pprint-defmethod-lambda-list-function)
+  (flet ((to-string (form)
+           (let ((string (with-output-to-string (s) (pprint form s))))
+             (assert (eql #\newline (char string 0)))
+             (subseq string 1))))
+    (assert (equal "(DEFMETHOD FOO ((FUNCTION CONS)) FUNCTION)"
+                   (to-string `(defmethod foo ((function cons)) function))))
+    (assert (equal "(DEFMETHOD FOO :AFTER (FUNCTION CONS) FUNCTION)"
+                   (to-string `(defmethod foo :after (function cons) function))))))
 \f
 ;;; success
-(quit :unix-status 104)