857 |
(val2 <generic>) |
(val2 <generic>) |
858 |
(var <top>) |
(var <top>) |
859 |
(val <boolean>)) |
(val <boolean>)) |
860 |
(make-variable (make-extended-generic (list val2 val1) name))) |
(and (not (eq? val1 val2)) |
861 |
|
(make-variable (make-extended-generic (list val2 val1) name)))) |
862 |
|
|
863 |
(define-method (merge-generics (module <module>) |
(define-method (merge-generics (module <module>) |
864 |
(name <symbol>) |
(name <symbol>) |
868 |
(val2 <generic>) |
(val2 <generic>) |
869 |
(var <top>) |
(var <top>) |
870 |
(gf <extended-generic>)) |
(gf <extended-generic>)) |
871 |
(slot-set! gf |
(and (not (memq val2 (slot-ref gf 'extends))) |
872 |
'extends |
(begin |
873 |
(cons val2 (delq! val2 (slot-ref gf 'extends)))) |
(slot-set! gf |
874 |
(slot-set! val2 |
'extends |
875 |
'extended-by |
(cons val2 (delq! val2 (slot-ref gf 'extends)))) |
876 |
(cons gf (delq! gf (slot-ref val2 'extended-by)))) |
(slot-set! val2 |
877 |
var) |
'extended-by |
878 |
|
(cons gf (delq! gf (slot-ref val2 'extended-by)))) |
879 |
|
var))) |
880 |
|
|
881 |
(module-define! duplicate-handlers 'merge-generics merge-generics) |
(module-define! duplicate-handlers 'merge-generics merge-generics) |
882 |
|
|