From 8add1522aededbc973055d2ee60e4ae2cedb9c81 Mon Sep 17 00:00:00 2001 From: Keisuke Nishida Date: Sun, 15 Apr 2001 15:20:28 +0000 Subject: [PATCH] * boot-9.scm (defmacro, define-macro, define-syntax-macro): Define only at the top level. --- ice-9/ChangeLog | 5 +++++ ice-9/boot-9.scm | 21 +++++++++++++++------ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/ice-9/ChangeLog b/ice-9/ChangeLog index bd4b6095b..2a49030ee 100644 --- a/ice-9/ChangeLog +++ b/ice-9/ChangeLog @@ -1,3 +1,8 @@ +2001-04-15 Keisuke Nishida + + * boot-9.scm (defmacro, define-macro, define-syntax-macro): + Define only at the top level. + 2001-04-06 Thien-Thi Nguyen * threads.scm: Update copyright. diff --git a/ice-9/boot-9.scm b/ice-9/boot-9.scm index 22a1fe051..17bdf5c38 100644 --- a/ice-9/boot-9.scm +++ b/ice-9/boot-9.scm @@ -2021,10 +2021,11 @@ (let ((defmacro-transformer (lambda (name parms . body) (let ((transformer `(lambda ,parms ,@body))) - `(define ,name - (,(lambda (transformer) - (defmacro:transformer transformer)) - ,transformer)))))) + `(eval-case + ((load-toplevel) + (define ,name (defmacro:transformer ,transformer))) + (else + (error "defmacro can only be used at the top level"))))))) (defmacro:transformer defmacro-transformer))) (define defmacro:syntax-transformer @@ -2560,7 +2561,11 @@ (if (symbol? first) (car rest) `(lambda ,(cdr first) ,@rest)))) - `(define ,name (defmacro:transformer ,transformer)))) + `(eval-case + ((load-toplevel) + (define ,name (defmacro:transformer ,transformer))) + (else + (error "define-macro can only be used at the top level"))))) (defmacro define-syntax-macro (first . rest) @@ -2569,7 +2574,11 @@ (if (symbol? first) (car rest) `(lambda ,(cdr first) ,@rest)))) - `(define ,name (defmacro:syntax-transformer ,transformer)))) + `(eval-case + ((load-toplevel) + (define ,name (defmacro:syntax-transformer ,transformer))) + (else + (error "define-syntax-macro can only be used at the top level"))))) ;;; {Module System Macros}