Index: stxcase.ss =================================================================== --- stxcase.ss (revision 18484) +++ stxcase.ss (working copy) @@ -269,12 +269,13 @@ (stx->list kws)) (for-each (lambda (clause) - (unless (and (stx-list? clause) - (<= 2 (length (stx->list clause)) 3)) - (raise-syntax-error - (syntax-e who) - "bad clause" - clause))) + (-define (fail message) + (raise-syntax-error (syntax-e who) message clause)) + (cond + [(not (stx-list? clause)) + (fail "expected a list of clauses")] + [(not (<= 2 (length (stx->list clause)) 3)) + (fail "expected 2 or 3 expressions in a clause")])) clauses) (let ([patterns (map stx-car clauses)] [fenders (map (lambda (clause) @@ -317,7 +318,7 @@ (list (quote-syntax raise-syntax-error) #f - "bad syntax" + "syntax-case was unable to match any patterns" arg)] [else (let ([rest (loop (cdr patterns) (cdr fenders)