diff --git a/pkgs/racket-test-core/tests/racket/print.rktl b/pkgs/racket-test-core/tests/racket/print.rktl index 629c4255de..86b1866014 100644 --- a/pkgs/racket-test-core/tests/racket/print.rktl +++ b/pkgs/racket-test-core/tests/racket/print.rktl @@ -288,6 +288,20 @@ (define o (open-output-bytes)) (print ht o))) +;; ---------------------------------------- +;; Check that recursive printing accepts a structure +;; with the `prop:output-port` property + +(let () + (struct p (out) #:property prop:output-port 0) + (struct s () + #:property prop:custom-write + (lambda (v out mode) + (display "ok" (p out)))) + (define o (open-output-bytes)) + (write (s) (p o)) + (test "ok" get-output-string o)) + ;; ---------------------------------------- (report-errs) diff --git a/racket/src/racket/src/print.c b/racket/src/racket/src/print.c index b42dccb472..29c0189efc 100644 --- a/racket/src/racket/src/print.c +++ b/racket/src/racket/src/print.c @@ -4235,7 +4235,7 @@ static Scheme_Object *custom_recur(int notdisplay, void *_vec, int argc, Scheme_ mz_jmp_buf escape, * volatile save; volatile intptr_t save_max; - if (!SCHEME_OUTPORTP(argv[1])) { + if (!SCHEME_OUTPUT_PORTP(argv[1])) { scheme_wrong_contract((notdisplay > 1) ? "print/recursive" : (notdisplay ? "write/recursive" : "display/recursive"),