diff --git a/pkgs/racket-test-core/tests/racket/macro.rktl b/pkgs/racket-test-core/tests/racket/macro.rktl index 797ad251ba..6496813cb2 100644 --- a/pkgs/racket-test-core/tests/racket/macro.rktl +++ b/pkgs/racket-test-core/tests/racket/macro.rktl @@ -743,6 +743,16 @@ (syntax-test #'(datum-case '(1 "x" -> y) (->) [(a b -> c) (define q 1)]) #rx"macro.rktl:.*no expression after a sequence of internal definitions") +(let () + (define-syntax-rule (check-error clause) + (err/rt-test + (datum-case '((1 2) (3)) () clause) + (lambda (exn) + (and (regexp-match? #rx"incompatible ellipsis match counts for template" + (exn-message exn)))))) + (check-error [((a ...) (b ...)) (datum ((a b) ...))]) + (check-error [((a ...) (b ...)) (datum ((a 0 b) ...))]) + (check-error [((a ...) (b ...)) (datum (((a) (b)) ...))])) ;; ---------------------------------------- ;; Check `#%variable-reference' expansion to make sure diff --git a/racket/collects/racket/private/sc.rkt b/racket/collects/racket/private/sc.rkt index a082019c90..7cd4d77a05 100644 --- a/racket/collects/racket/private/sc.rkt +++ b/racket/collects/racket/private/sc.rkt @@ -1136,7 +1136,7 @@ [(and (syntax? p) (prefab-struct-key (syntax-e p))) (loop (cdr (vector->list (struct->vector (syntax-e p)))) use-ellipsis? depth found)] - [else #f]))) + [else found]))) (-define (no-ellipses? stx) (cond