From f14b7158cd7c024efd6b5ac739ca71a797cea48a Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 19 Mar 2009 12:33:22 +0000 Subject: [PATCH] better error message for R5RS transformer expressions that are not 'syntax-rules' svn: r14183 --- collects/r5rs/main.ss | 8 ++++++-- collects/r5rs/private/r5rs-trans.ss | 11 +++++++++++ collects/r5rs/r5rs.scrbl | 3 ++- 3 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 collects/r5rs/private/r5rs-trans.ss diff --git a/collects/r5rs/main.ss b/collects/r5rs/main.ss index a39d84d29d..6e48ff2b52 100644 --- a/collects/r5rs/main.ss +++ b/collects/r5rs/main.ss @@ -1,10 +1,14 @@ (module main scheme/base (require scheme/mpair - (for-syntax scheme/base syntax/kerncase) + (for-syntax scheme/base syntax/kerncase + "private/r5rs-trans.ss") (only-in mzscheme transcript-on transcript-off)) - (provide (for-syntax syntax-rules ...) + (provide (for-syntax syntax-rules ... + (rename-out [syntax-rules-only #%top] + [syntax-rules-only #%app] + [syntax-rules-only #%datum])) (rename-out [mcons cons] [mcar car] diff --git a/collects/r5rs/private/r5rs-trans.ss b/collects/r5rs/private/r5rs-trans.ss new file mode 100644 index 0000000000..62fa57ccef --- /dev/null +++ b/collects/r5rs/private/r5rs-trans.ss @@ -0,0 +1,11 @@ +#lang scheme/base +(require (for-syntax scheme/base)) +(provide syntax-rules-only) + +(define-syntax (syntax-rules-only stx) + (syntax-case stx () + [(_ . form) + (raise-syntax-error + 'macro-transformer + "only a `syntax-rules' form is allowed" + #'form)])) diff --git a/collects/r5rs/r5rs.scrbl b/collects/r5rs/r5rs.scrbl index 6da1ff522a..ffcb6a8629 100644 --- a/collects/r5rs/r5rs.scrbl +++ b/collects/r5rs/r5rs.scrbl @@ -1,6 +1,7 @@ #lang scribble/doc @(require scribble/manual - (for-label r5rs + (for-label (only-meta-in 0 r5rs) + (only-in r5rs syntax-rules ...) (only-in mzscheme #%plain-module-begin) (only-in scheme/mpair mmap) (only-in scheme/contract one-of/c)