From 58f9cd85edd0d1313faa7d3d1cbea05350f32ad5 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sun, 30 Nov 2008 13:25:10 +0000 Subject: [PATCH] better syntax checking for scribble defform #:literals svn: r12647 original commit: 88b0e558c3d0fc72cc7962ad29cc2142ceb81637 --- collects/scribble/private/manual-form.ss | 29 ++++++++++++++++++------ 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/collects/scribble/private/manual-form.ss b/collects/scribble/private/manual-form.ss index 08810891..76ffc103 100644 --- a/collects/scribble/private/manual-form.ss +++ b/collects/scribble/private/manual-form.ss @@ -45,6 +45,13 @@ spec spec)] [_ spec])))]) + (for-each (lambda (id) + (unless (identifier? id) + (raise-syntax-error #f + "expected an identifier for a literal" + stx + id))) + (syntax->list #'(lit ...))) #'(with-togetherable-scheme-variables (lit ...) ([form spec] [form spec1] ... @@ -109,13 +116,21 @@ (define-syntax (defform/none stx) (syntax-case stx () [(_ #:literals (lit ...) spec desc ...) - #'(with-togetherable-scheme-variables - (lit ...) - ([form spec]) - (*defforms #f - '(spec) (list (lambda (ignored) (schemeblock0/form spec))) - null null - (lambda () (list desc ...))))] + (begin + (for-each (lambda (id) + (unless (identifier? id) + (raise-syntax-error #f + "expected an identifier for a literal" + stx + id))) + (syntax->list #'(lit ...))) + #'(with-togetherable-scheme-variables + (lit ...) + ([form spec]) + (*defforms #f + '(spec) (list (lambda (ignored) (schemeblock0/form spec))) + null null + (lambda () (list desc ...)))))] [(_ spec desc ...) #'(defform/none #:literals () spec desc ...)]))