From 0e87b8a73ff016ca754be2fc6a98dfc8a1e44c0c Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 26 Nov 2019 09:17:02 -0700 Subject: [PATCH] cs & io: fix ellipses printing in structs that are partially opaque --- pkgs/racket-test-core/tests/racket/print.rktl | 9 +++++++++ racket/src/io/print/main.rkt | 4 +++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/pkgs/racket-test-core/tests/racket/print.rktl b/pkgs/racket-test-core/tests/racket/print.rktl index dc3b18dcdb..5ce95c9c0c 100644 --- a/pkgs/racket-test-core/tests/racket/print.rktl +++ b/pkgs/racket-test-core/tests/racket/print.rktl @@ -442,6 +442,15 @@ (struct s () #:transparent) (define x (s)) ; a shared value to use in the test + (struct s+ (v) #:transparent) + (struct sub s+ ()) + (test-print/all (sub '(x)) + "#(struct:sub (x) ...)" + "#(struct:sub (x) ...)" + "#(struct:sub (x) ...)" + "(sub '(x) ...)" + "#(struct:sub (x) ...)") + (parameterize ([print-graph #t]) (for*/parameterize ([print-pair-curly-braces (in-list '(#t #f))] [print-mpair-curly-braces (in-list '(#t #f))]) diff --git a/racket/src/io/print/main.rkt b/racket/src/io/print/main.rkt index 245912f447..b43ccc34b6 100644 --- a/racket/src/io/print/main.rkt +++ b/racket/src/io/print/main.rkt @@ -306,7 +306,7 @@ (config-get config print-struct)) (cond [(eq? mode PRINT-MODE/UNQUOTED) - (define l (vector->list (struct->vector v))) + (define l (vector->list (struct->vector v struct-dots))) (define alt-list-constructor ;; strip "struct:" from the first element of `l`: (string-append "(" (substring (symbol->string (car l)) 7))) @@ -350,3 +350,5 @@ (when (and (eq? mode WRITE-MODE) (not (config-get config print-unreadable))) (fail-unreadable who v))) + +(define struct-dots (unquoted-printing-string "..."))