diff --git a/collects/redex/private/rewrite-side-conditions.rkt b/collects/redex/private/rewrite-side-conditions.rkt index 07830a0e3e..a1148ed799 100644 --- a/collects/redex/private/rewrite-side-conditions.rkt +++ b/collects/redex/private/rewrite-side-conditions.rkt @@ -38,6 +38,10 @@ (define ((expect-identifier src) stx) (unless (identifier? stx) (raise-syntax-error what "expected an identifier" src stx))) + + ;; call this and discard the result to ensure that all names are at the right ellipsis depths. + (extract-names all-nts what bind-names? orig-stx) + (let loop ([term orig-stx]) (syntax-case term (side-condition variable-except variable-prefix hole name in-hole hide-hole side-condition cross) [(side-condition pre-pat (and)) diff --git a/collects/redex/tests/tl-test.rkt b/collects/redex/tests/tl-test.rkt index 77c882a146..727c4f84a7 100644 --- a/collects/redex/tests/tl-test.rkt +++ b/collects/redex/tests/tl-test.rkt @@ -1206,6 +1206,18 @@ #rx"different depths" 2) + (test-syn-err (redex-match + grammar + ((name x any) (name x any_2) ...)) + #rx"different depths" + 2) + + (test-syn-err (define-language bad-lang5 + (e ((name x any) (name x any_2) ...))) + #rx"different depths" + 2) + + (test-syn-err (reduction-relation grammar (--> 1 2)