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:
parent
5093e51839
commit
4fb8bc64a0
1 changed files with 6 additions and 2 deletions
|
@ -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)))))
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue