mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-29 08:20:20 +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>
|
2003-03-11 Mikael Djurfeldt <djurfeldt@nada.kth.se>
|
||||||
|
|
||||||
* goops/util.scm (filter): Removed. (Now supplied by core.)
|
* goops/util.scm (filter): Removed. (Now supplied by core.)
|
||||||
|
|
|
@ -857,7 +857,8 @@
|
||||||
(val2 <generic>)
|
(val2 <generic>)
|
||||||
(var <top>)
|
(var <top>)
|
||||||
(val <boolean>))
|
(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>)
|
(define-method (merge-generics (module <module>)
|
||||||
(name <symbol>)
|
(name <symbol>)
|
||||||
|
@ -867,13 +868,15 @@
|
||||||
(val2 <generic>)
|
(val2 <generic>)
|
||||||
(var <top>)
|
(var <top>)
|
||||||
(gf <extended-generic>))
|
(gf <extended-generic>))
|
||||||
(slot-set! gf
|
(and (not (memq val2 (slot-ref gf 'extends)))
|
||||||
'extends
|
(begin
|
||||||
(cons val2 (delq! val2 (slot-ref gf 'extends))))
|
(slot-set! gf
|
||||||
(slot-set! val2
|
'extends
|
||||||
'extended-by
|
(cons val2 (delq! val2 (slot-ref gf 'extends))))
|
||||||
(cons gf (delq! gf (slot-ref val2 'extended-by))))
|
(slot-set! val2
|
||||||
var)
|
'extended-by
|
||||||
|
(cons gf (delq! gf (slot-ref val2 'extended-by))))
|
||||||
|
var)))
|
||||||
|
|
||||||
(module-define! duplicate-handlers 'merge-generics merge-generics)
|
(module-define! duplicate-handlers 'merge-generics merge-generics)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue