diff --git a/collects/scribble/reader.ss b/collects/scribble/reader.ss index f8f5707da4..1833327c32 100644 --- a/collects/scribble/reader.ss +++ b/collects/scribble/reader.ss @@ -391,10 +391,12 @@ (let*-values ([(line col pos) (port-next-location inp)] [(xs) (get)]) (cond [(not xs) xs] - [(null? xs) (make-special-comment #f)] - [(null? (cdr xs)) (car xs)] - [else (read-error line col pos - "too many escape expressions")])) + [(or (null? xs) (not (null? (cdr xs)))) + (read-error line col pos + "a ~a|...| form in Scheme mode must have ~a" + ch:command + "exactly one escaped expression")] + [else (car xs)])) (get)))) ;; called only when we must see a command in the input diff --git a/collects/tests/scribble/reader.ss b/collects/tests/scribble/reader.ss index 6700f8700b..43755b7773 100644 --- a/collects/tests/scribble/reader.ss +++ b/collects/tests/scribble/reader.ss @@ -636,6 +636,22 @@ bar} --- \foo{\" -\error-> #rx":1:6: read: expected a closing '\"'$" --- +@|1 2| +-@error-> +#rx"a @|...| form in Scheme mode must have exactly one escaped expression" +--- +@|| +-@error-> +#rx"a @|...| form in Scheme mode must have exactly one escaped expression" +--- +\|1 2| +-\error-> +#rx"a \\\\|...| form in Scheme mode must have exactly one escaped expression" +--- +\|| +-\error-> +#rx"a \\\\|...| form in Scheme mode must have exactly one escaped expression" +--- ;; -------------------- inside-reader --- foo bar baz -@i-> "foo bar baz"