From f85d18aed67965d8f8f5f7f80fc04360522afb52 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 1 Jan 2019 13:58:48 -0700 Subject: [PATCH] io: fix printing of '|| --- pkgs/racket-test-core/tests/racket/print.rktl | 1 + racket/src/io/print/symbol.rkt | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/pkgs/racket-test-core/tests/racket/print.rktl b/pkgs/racket-test-core/tests/racket/print.rktl index b9fb7e03cd..d475a7c70a 100644 --- a/pkgs/racket-test-core/tests/racket/print.rktl +++ b/pkgs/racket-test-core/tests/racket/print.rktl @@ -60,6 +60,7 @@ (ptest "#\\x" #\x) (ptest "'apple" 'apple) (ptest "'|apple banana|" '|apple banana|) + (ptest "'||" '||) (ptest "'#:apple" '#:apple) (ptest "\"apple\"" "apple") (ptest "#\"apple\"" #"apple") diff --git a/racket/src/io/print/symbol.rkt b/racket/src/io/print/symbol.rkt index f1bc8b4b9f..9d97a35a5f 100644 --- a/racket/src/io/print/symbol.rkt +++ b/racket/src/io/print/symbol.rkt @@ -56,12 +56,19 @@ (cond [(or for-keyword? for-type? - (not (string->number? str))) + (and (not (string->number? str)) + (not (string=? str "")))) str] ;; Remaining two cases add some form of quoting to ;; protect against a symbol looking like a number [(and config (not (config-get config read-accept-bar-quote))) - (string-append "\\" str)] + (cond + [(string=? str "") + ;; There's no good answer in this case. Traditionally, Racket + ;; just prints an empty string, anyway. + str] + [else + (string-append "\\" str)])] [else (string-append "|" str "|")])] [(or (and config (not (config-get config read-accept-bar-quote)))