Fix error reporting when first clause is not a list.
Ok for 4.2. svn: r14965
This commit is contained in:
parent
148d945fbe
commit
1b2013dd73
|
@ -41,8 +41,11 @@
|
||||||
(syntax-case stx ()
|
(syntax-case stx ()
|
||||||
[(k [pats . rhs] ...)
|
[(k [pats . rhs] ...)
|
||||||
(let* ([pss (syntax->list #'(pats ...))]
|
(let* ([pss (syntax->list #'(pats ...))]
|
||||||
[ps1 (car pss)]
|
[ps1 (car pss)])
|
||||||
[len (length (syntax->list ps1))])
|
(unless (syntax->list ps1)
|
||||||
|
(raise-syntax-error
|
||||||
|
#f "expected a sequence of patterns" stx ps1))
|
||||||
|
(let ([len (length (syntax->list ps1))])
|
||||||
(for/list ([ps pss])
|
(for/list ([ps pss])
|
||||||
(unless (= (length (syntax->list ps)) len)
|
(unless (= (length (syntax->list ps)) len)
|
||||||
(raise-syntax-error
|
(raise-syntax-error
|
||||||
|
@ -50,7 +53,7 @@
|
||||||
stx ps)))
|
stx ps)))
|
||||||
(with-syntax ([(vars ...) (generate-temporaries (car pss))])
|
(with-syntax ([(vars ...) (generate-temporaries (car pss))])
|
||||||
(syntax/loc stx
|
(syntax/loc stx
|
||||||
(lambda (vars ...) (match* (vars ...) [pats . rhs] ...)))))]))
|
(lambda (vars ...) (match* (vars ...) [pats . rhs] ...))))))]))
|
||||||
|
|
||||||
;; there's lots of duplication here to handle named let
|
;; there's lots of duplication here to handle named let
|
||||||
;; some factoring out would do a lot of good
|
;; some factoring out would do a lot of good
|
||||||
|
|
Loading…
Reference in New Issue
Block a user