1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-06 07:30:28 +02:00

* boot-9.scm (defmacro, define-macro, define-syntax-macro):

Define only at the top level.
This commit is contained in:
Keisuke Nishida 2001-04-15 15:20:28 +00:00
parent a54e6fa326
commit 8add1522ae
2 changed files with 20 additions and 6 deletions

View file

@ -1,3 +1,8 @@
2001-04-15 Keisuke Nishida <kxn30@po.cwru.edu>
* boot-9.scm (defmacro, define-macro, define-syntax-macro):
Define only at the top level.
2001-04-06 Thien-Thi Nguyen <ttn@revel.glug.org> 2001-04-06 Thien-Thi Nguyen <ttn@revel.glug.org>
* threads.scm: Update copyright. * threads.scm: Update copyright.

View file

@ -2021,10 +2021,11 @@
(let ((defmacro-transformer (let ((defmacro-transformer
(lambda (name parms . body) (lambda (name parms . body)
(let ((transformer `(lambda ,parms ,@body))) (let ((transformer `(lambda ,parms ,@body)))
`(define ,name `(eval-case
(,(lambda (transformer) ((load-toplevel)
(defmacro:transformer transformer)) (define ,name (defmacro:transformer ,transformer)))
,transformer)))))) (else
(error "defmacro can only be used at the top level")))))))
(defmacro:transformer defmacro-transformer))) (defmacro:transformer defmacro-transformer)))
(define defmacro:syntax-transformer (define defmacro:syntax-transformer
@ -2560,7 +2561,11 @@
(if (symbol? first) (if (symbol? first)
(car rest) (car rest)
`(lambda ,(cdr first) ,@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) (defmacro define-syntax-macro (first . rest)
@ -2569,7 +2574,11 @@
(if (symbol? first) (if (symbol? first)
(car rest) (car rest)
`(lambda ,(cdr first) ,@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} ;;; {Module System Macros}