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:
parent
658b35a01e
commit
9ffa41dbae
3 changed files with 18 additions and 8 deletions
|
@ -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.
|
||||
|
|
|
@ -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>))
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue