1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-20 11:40:18 +02:00

* goops.scm (merge-generics): Make sure not to merge a gf with

itself.  That would be the cause of a real binding collision.
This commit is contained in:
Mikael Djurfeldt 2003-03-12 18:41:44 +00:00
parent 3802f9ccd3
commit c9fa174805
2 changed files with 16 additions and 8 deletions

View file

@ -1,3 +1,8 @@
2003-03-12 Mikael Djurfeldt <djurfeldt@nada.kth.se>
* goops.scm (merge-generics): Make sure not to merge a gf with
itself. That would be the cause of a real binding collision.
2003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
* goops/util.scm (filter): Removed. (Now supplied by core.)

View file

@ -857,7 +857,8 @@
(val2 <generic>)
(var <top>)
(val <boolean>))
(make-variable (make-extended-generic (list val2 val1) name)))
(and (not (eq? val1 val2))
(make-variable (make-extended-generic (list val2 val1) name))))
(define-method (merge-generics (module <module>)
(name <symbol>)
@ -867,13 +868,15 @@
(val2 <generic>)
(var <top>)
(gf <extended-generic>))
(slot-set! gf
'extends
(cons val2 (delq! val2 (slot-ref gf 'extends))))
(slot-set! val2
'extended-by
(cons gf (delq! gf (slot-ref val2 'extended-by))))
var)
(and (not (memq val2 (slot-ref gf 'extends)))
(begin
(slot-set! gf
'extends
(cons val2 (delq! val2 (slot-ref gf 'extends))))
(slot-set! val2
'extended-by
(cons gf (delq! gf (slot-ref val2 'extended-by))))
var)))
(module-define! duplicate-handlers 'merge-generics merge-generics)