(princ (make-condition 'sb-kernel::heap-exhausted-error)))))
(assert (string/= result "#<" :end1 2)))
+(with-test (:name (:with-standard-io-syntax :bind-print-pprint-dispatch))
+ (let ((*print-pprint-dispatch* (copy-pprint-dispatch nil)))
+ (set-pprint-dispatch 'symbol #'(lambda (stream obj)
+ (declare (ignore obj))
+ (write-string "FOO" stream)))
+ (with-standard-io-syntax
+ (let ((*print-pretty* t))
+ (assert (string= (princ-to-string 'bar) "BAR"))))))
+
+;;; bug-lp#488979
+
+(defclass a-class-name () ())
+
+(assert (find #\Newline
+ (let ((*print-pretty* t)
+ (*print-right-margin* 10))
+ (format nil "~A" (make-instance 'a-class-name)))
+ :test #'char=))
+
+(assert (not (find #\Newline
+ (let ((*print-pretty* nil)
+ (*print-right-margin* 10))
+ (format nil "~A" (make-instance 'a-class-name)))
+ :test #'char=)))
+
+;;; The PRINT-OBJECT method for RANDOM-STATE used to have a bogus
+;;; dimension argument for MAKE-ARRAY.
+(with-test (:name :print-random-state)
+ (assert (equalp *random-state*
+ (read-from-string
+ (write-to-string *random-state*)))))
+
+(with-test (:name :write-return-value)
+ (assert (= 123 (funcall (compile nil (lambda ()
+ (write 123)))))))
+
+(with-test (:name :write/write-to-string-compiler-macro-lp/598374+581564)
+ (let ((test (compile nil
+ `(lambda (object &optional output-stream)
+ (write object
+ :stream output-stream)))))
+ (assert (equal "(HELLO WORLD)"
+ (with-output-to-string (*standard-output*)
+ (let ((list '(hello world)))
+ (assert (eq list (funcall test list)))))))
+ (assert (equal "12"
+ (with-output-to-string (*standard-output*)
+ (assert (eql 12 (funcall test 12)))))))
+ (let ((test (compile nil
+ `(lambda ()
+ (let ((*print-length* 42))
+ (write-to-string *print-length* :length nil))))))
+ (assert (equal "42" (funcall test)))))
+
;;; success