1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-11 22:31:12 +02:00

Allow GOOPS getters to add methods to primitive generics

* module/oop/goops.scm (ensure-generic): If the old definition of a
  desired getter is a primitive generic, let the new method be added to
  it instead of creating a fresh new generic.

  (ensure-accessor): Modify as necessary to keep the old behavior.
  Maybe something more optimal can be done here, but it's not yet
  obvious to me how to do it.
This commit is contained in:
Mark H Weaver 2011-02-12 05:43:17 -05:00 committed by Andy Wingo
parent 5093e51839
commit 4fb8bc64a0

View file

@ -391,7 +391,8 @@
#:default (procedure old-definition)
#:setter (setter old-definition)))
((procedure? old-definition)
(make <generic> #:name name #:default old-definition))
(if (generic-capability? old-definition) old-definition
(make <generic> #:name name #:default old-definition)))
(else (make <generic> #:name name)))))
;; same semantics as <generic>
@ -428,7 +429,10 @@
#:default (procedure proc)
#:setter (ensure-generic (setter proc) name)))
((procedure? proc)
(ensure-accessor (ensure-generic proc name) name))
(ensure-accessor (if (generic-capability? proc)
(make <generic> #:name name #:default proc)
(ensure-generic proc name))
name))
(else
(make-accessor name)))))