diff --git a/collects/redex/private/core-layout.rkt b/collects/redex/private/core-layout.rkt index 763124bc46..c10b4870ee 100644 --- a/collects/redex/private/core-layout.rkt +++ b/collects/redex/private/core-layout.rkt @@ -258,9 +258,13 @@ (just-after (close-white-square-bracket) last)))] [(null? (cddr lst)) (cons (car lst) (loop (cdr lst)))] - [else (list* (car lst) - (just-after (basic-text "," (default-style)) (car lst)) - (loop (cdr lst)))])))) + [else + (if (eq? '... (lw-e (cadr lst))) + (cons (car lst) + (loop (cdr lst))) + (list* (car lst) + (just-after (basic-text "," (default-style)) (car lst)) + (loop (cdr lst))))])))) (define (just-before what lw) (build-lw (if (symbol? what) diff --git a/collects/redex/tests/bitmap-test.rkt b/collects/redex/tests/bitmap-test.rkt index 6efb9e7ed5..4b0c5a40d4 100644 --- a/collects/redex/tests/bitmap-test.rkt +++ b/collects/redex/tests/bitmap-test.rkt @@ -187,6 +187,18 @@ ;; make sure two metafunctions simultaneously rewritten line up properly (test (render-metafunctions S T TL) "metafunctions-multiple.png") +;; make sure that the ellipses don't have commas before them. +(define-metafunction lang + rdups : x ... -> (x ...) + [(rdups x_1 x_2 ... x_1 x_3 ...) + (rdups x_2 ... x_1 x_3 ...)] + [(rdups x_1 x_2 ...) + (x_1 x_3 ...) + (where (x_3 ...) (rdups x_2 ...))] + [(rdups) ()]) + +(test (render-metafunction rdups) "rdups.png") + ;; Non-terminal superscripts (test (render-lw lang (to-lw (x_^abcdef x_q^abcdef))) "superscripts.png") diff --git a/collects/redex/tests/bmps-macosx/rdups.png b/collects/redex/tests/bmps-macosx/rdups.png new file mode 100644 index 0000000000..7bb959b600 Binary files /dev/null and b/collects/redex/tests/bmps-macosx/rdups.png differ