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:
parent
3802f9ccd3
commit
c9fa174805
2 changed files with 16 additions and 8 deletions
|
@ -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.)
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue