1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-14 15:40:19 +02:00

* goops.scm (define-generic, define-accessor): Make sure that

implicit redefines only happen on top level.

* goops.scm (define-class, define-generic, define-accessor),
goops/stklos.scm (define-class):  Use mmacros instead of macros.
This commit is contained in:
Dirk Herrmann 2002-07-08 20:40:32 +00:00
parent 658b35a01e
commit 9ffa41dbae
3 changed files with 18 additions and 8 deletions

View file

@ -1,3 +1,11 @@
2002-07-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
* goops.scm (define-generic, define-accessor): Make sure that
implicit redefines only happen on top level.
* goops.scm (define-class, define-generic, define-accessor),
goops/stklos.scm (define-class): Use mmacros instead of macros.
2002-07-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
* goops/save.scm (restore): Replaced "macro" by mmacro.

View file

@ -1,6 +1,6 @@
;;; installed-scm-file
;;;; Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
;;;; Copyright (C) 1998,1999,2000,2001,2002 Free Software Foundation, Inc.
;;;;
;;;; This program is free software; you can redistribute it and/or modify
;;;; it under the terms of the GNU General Public License as published by
@ -224,7 +224,7 @@
(name cadr)
(slots cdddr))
(procedure->macro
(procedure->memoizing-macro
(lambda (exp env)
(cond ((not (top-level-env? env))
(goops-error "define-class: Only allowed at top level"))
@ -361,12 +361,13 @@
;;;
(define define-generic
(procedure->macro
(procedure->memoizing-macro
(lambda (exp env)
(let ((name (cadr exp)))
(cond ((not (symbol? name))
(goops-error "bad generic function name: ~S" name))
((defined? name env)
((and (top-level-env? env)
(defined? name env))
`(define ,name
(if (is-a? ,name <generic>)
(make <generic> #:name ',name)
@ -391,12 +392,13 @@
(else (make <generic> #:name name)))))
(define define-accessor
(procedure->macro
(procedure->memoizing-macro
(lambda (exp env)
(let ((name (cadr exp)))
(cond ((not (symbol? name))
(goops-error "bad accessor name: ~S" name))
((defined? name env)
((and (top-level-env? env)
(defined? name env))
`(define ,name
(if (and (is-a? ,name <generic-with-setter>)
(is-a? (setter ,name) <generic>))

View file

@ -1,4 +1,4 @@
;;;; Copyright (C) 1999 Free Software Foundation, Inc.
;;;; Copyright (C) 1999,2002 Free Software Foundation, Inc.
;;;;
;;;; This program is free software; you can redistribute it and/or modify
;;;; it under the terms of the GNU General Public License as published by
@ -81,7 +81,7 @@
(supers caddr)
(slots cadddr)
(rest cddddr))
(procedure->macro
(procedure->memoizing-macro
(lambda (exp env)
(standard-define-class-transformer
`(define-class ,(name exp) ,(supers exp) ,@(slots exp)