pp is not busted; I just didn't know about pp-avoid-circularity.
authorTaylor R Campbell <campbell@mumble.net>
Sun, 2 Dec 2018 02:00:17 +0000 (02:00 +0000)
committerTaylor R Campbell <campbell@mumble.net>
Sun, 2 Dec 2018 02:00:17 +0000 (02:00 +0000)
TIL.

tests/runtime/test-pp.scm

index 69893f0657838aaf5c54612829e59252a57e244c..2174a58e18f78ce4d54b929938542fb50a4ca531 100644 (file)
@@ -74,9 +74,10 @@ USA.
     (define (doit)
       (let ((c (cons 0 0)))
         (set-cdr! c c)
-        (call-with-output-string (lambda (p) (pp c p)))))
-    (expect-failure
-     (lambda ()
-       (assert-eqv
-        (carefully doit (lambda () 'stack-overflow) (lambda () 'timeout))
-        "#0=(0 . #0#)")))))
+        (call-with-output-string
+          (lambda (p)
+            (parameterize ((param:pp-avoid-circularity? #t))
+              (pp c p))))))
+    (assert-equal
+     (carefully doit (lambda () 'stack-overflow) (lambda () 'timeout))
+     "(0 0 . #[circularity (current parenthetical level, downstream 1 cdr.)])\n")))