diff --git a/collects/racket/private/qq-and-or.rkt b/collects/racket/private/qq-and-or.rkt index 296467d52d..b13a565576 100644 --- a/collects/racket/private/qq-and-or.rkt +++ b/collects/racket/private/qq-and-or.rkt @@ -25,26 +25,28 @@ (stx-null? (stx-cdr (stx-cdr x))) #f) #f))) - (if (if (not (stx-list? stx)) - #t - (let-values ([(tail1) (stx-cdr stx)]) - (if (stx-null? tail1) - (if named? - (raise-syntax-error #f "bad syntax (missing name or binding pairs)") - (raise-syntax-error #f "bad syntax (missing binding pairs)" stx)) - (if (stx-null? (stx-cdr tail1)) - (if named? - (raise-syntax-error #f "bad syntax (missing binding pairs or body)" stx) - (raise-syntax-error #f "bad syntax (missing body)" stx)) - (if named? - (if (symbol? (syntax-e (stx-car tail1))) - (if (stx-null? (stx-cdr (stx-cdr tail1))) - (raise-syntax-error #f "bad syntax (missing body)" stx) - #f) - #f) - #f))))) - (raise-syntax-error #f "bad syntax" stx) - (void)) + (let-values ([(maybe-msg) + (if (not (stx-list? stx)) + "" + (let-values ([(tail1) (stx-cdr stx)]) + (if (stx-null? tail1) + (if named? + "(missing name or binding pairs)" + "(missing binding pairs)") + (if (stx-null? (stx-cdr tail1)) + (if named? + "(missing binding pairs or body)" + "(missing body)") + (if named? + (if (symbol? (syntax-e (stx-car tail1))) + (if (stx-null? (stx-cdr (stx-cdr tail1))) + "(missing body)" + #f) + #f) + #f)))))]) + (if maybe-msg + (raise-syntax-error #f (string-append "bad syntax " maybe-msg) stx) + (void))) (let-values ([(name) (if named? (let-values ([(n) (stx-cadr stx)]) (if (symbol? (syntax-e n))