From 1b2013dd7334f9e4ee945d37f2e40db67e1e371d Mon Sep 17 00:00:00 2001 From: Sam Tobin-Hochstadt Date: Sat, 23 May 2009 23:51:52 +0000 Subject: [PATCH] Fix error reporting when first clause is not a list. Ok for 4.2. svn: r14965 --- collects/scheme/match/define-forms.ss | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/collects/scheme/match/define-forms.ss b/collects/scheme/match/define-forms.ss index 7ab16fdae2..e23f216341 100644 --- a/collects/scheme/match/define-forms.ss +++ b/collects/scheme/match/define-forms.ss @@ -41,16 +41,19 @@ (syntax-case stx () [(k [pats . rhs] ...) (let* ([pss (syntax->list #'(pats ...))] - [ps1 (car pss)] - [len (length (syntax->list ps1))]) - (for/list ([ps pss]) - (unless (= (length (syntax->list ps)) len) - (raise-syntax-error - #f "unequal number of patterns in match clauses" - stx ps))) - (with-syntax ([(vars ...) (generate-temporaries (car pss))]) - (syntax/loc stx - (lambda (vars ...) (match* (vars ...) [pats . rhs] ...)))))])) + [ps1 (car pss)]) + (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]) + (unless (= (length (syntax->list ps)) len) + (raise-syntax-error + #f "unequal number of patterns in match clauses" + stx ps))) + (with-syntax ([(vars ...) (generate-temporaries (car pss))]) + (syntax/loc stx + (lambda (vars ...) (match* (vars ...) [pats . rhs] ...))))))])) ;; there's lots of duplication here to handle named let ;; some factoring out would do a lot of good