From 4b1960e1f07f58a6be12b172c3bbaf994a2d4e0c Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Thu, 10 Feb 2011 14:20:15 -0500 Subject: [PATCH] Don't assume that the user sexpr is a list. Fixes PR 11718 --- collects/racket/private/misc.rkt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/collects/racket/private/misc.rkt b/collects/racket/private/misc.rkt index 916c07620d..26aba931c1 100644 --- a/collects/racket/private/misc.rkt +++ b/collects/racket/private/misc.rkt @@ -22,10 +22,17 @@ (lambda (user-stx) (syntax-case** dr #t user-stx () free-identifier=? [(_ . pattern) (syntax/loc user-stx template)] - [_ (let*-values ([(sexpr) (syntax->datum user-stx)] - [(msg) (format - "~.s did not match pattern ~.s" - sexpr (cons (car sexpr) 'pattern))]) + [_ (let*-values + ([(sexpr) (syntax->datum user-stx)] + [(msg) + (if (pair? sexpr) + (format "~.s did not match pattern ~.s" + sexpr (cons (car sexpr) 'pattern)) + (if (symbol? sexpr) + (format "must be used in a pattern ~.s" + (cons sexpr 'pattern)) + (error 'internal-error + "something bad happened")))]) (raise-syntax-error #f msg user-stx))]))))] [(_ (name . ptrn) tmpl) (err "expected an identifier" #'name)] [(_ (name . ptrn)) (err "missing template")]