module-use-interfaces! handles duplicate interfaces
authorAndy Wingo <wingo@pobox.com>
Tue, 8 Feb 2011 22:37:54 +0000 (23:37 +0100)
committerAndy Wingo <wingo@pobox.com>
Tue, 8 Feb 2011 22:46:00 +0000 (23:46 +0100)
* module/ice-9/boot-9.scm (module-use-interfaces!): Fix to have the same
  interface de-duplication characteristics as module-use!.

module/ice-9/boot-9.scm

index da882a4..fe7f2b2 100644 (file)
@@ -1965,10 +1965,16 @@ VALUE."
 ;; Same as MODULE-USE! but add multiple interfaces and check for duplicates
 ;;
 (define (module-use-interfaces! module interfaces)
-  (set-module-uses! module
-                    (append (module-uses module) interfaces))
-  (hash-clear! (module-import-obarray module))
-  (module-modified module))
+  (let ((prev (filter (lambda (used)
+                        (and-map (lambda (iface)
+                                   (not (equal? (module-name used)
+                                                (module-name iface))))
+                                 interfaces))
+                      (module-uses module))))
+    (set-module-uses! module
+                      (append prev interfaces))
+    (hash-clear! (module-import-obarray module))
+    (module-modified module)))
 
 \f