diff --git a/module/oop/goops.scm b/module/oop/goops.scm index 70bf37562..2801aa25b 100644 --- a/module/oop/goops.scm +++ b/module/oop/goops.scm @@ -391,7 +391,8 @@ #:default (procedure old-definition) #:setter (setter old-definition))) ((procedure? old-definition) - (make #:name name #:default old-definition)) + (if (generic-capability? old-definition) old-definition + (make #:name name #:default old-definition))) (else (make #:name name))))) ;; same semantics as @@ -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 #:name name #:default proc) + (ensure-generic proc name)) + name)) (else (make-accessor name)))))