(pprint-newline :mandatory s)))
n)))))
+(with-test (:name :can-restore-orig-pprint-dispatch-table)
+ (let* ((orig (pprint-dispatch 'some-symbol))
+ (alt (lambda (&rest args) (apply orig args))))
+ (set-pprint-dispatch 'symbol alt)
+ (assert (eq alt (pprint-dispatch 'some-symbol)))
+ (setf *print-pprint-dispatch* (copy-pprint-dispatch nil))
+ (assert (eq orig (pprint-dispatch 'some-symbol)))
+ (assert (not (eq alt orig)))))
+
+(with-test (:name :pprint-improper-list)
+ (let* ((max-length 10)
+ (stream (make-broadcast-stream))
+ (errors
+ (loop for symbol being the symbol in :cl
+ nconc
+ (loop for i from 1 below max-length
+ for list = (cons symbol 10) then (cons symbol list)
+ when (nth-value 1 (ignore-errors (pprint list stream)))
+ collect (format nil "(~{~a ~}~a . 10)" (butlast list) symbol)))))
+ (when errors
+ (error "Can't PPRINT imporper lists: ~a" errors))))
+
+(with-test (:name :pprint-circular-backq-comma)
+ ;; LP 1161218 reported by James M. Lawrence
+ (let ((string (write-to-string '(let ((#1=#:var '(99)))
+ `(progn ,@(identity #1#)))
+ :circle t :pretty t)))
+ (assert (not (search "#2#" string)))))
\f
;;; success