1457 |
;; |
;; |
1458 |
(define (module-use-interfaces! module interfaces) |
(define (module-use-interfaces! module interfaces) |
1459 |
(let* ((duplicates-info (module-duplicates-info module)) |
(let* ((duplicates-info (module-duplicates-info module)) |
1460 |
(duplicates-handlers? (car duplicates-info)) |
(duplicates-handlers? (or (car duplicates-info) |
1461 |
|
(default-duplicate-binding-procedures))) |
1462 |
(uses (module-uses module))) |
(uses (module-uses module))) |
1463 |
;; remove duplicates-interface |
;; remove duplicates-interface |
1464 |
(set! uses (delq! (cdr duplicates-info) uses)) |
(set! uses (delq! (cdr duplicates-info) uses)) |
1610 |
(set-module-name! interface (module-name module)) |
(set-module-name! interface (module-name module)) |
1611 |
(set-module-kind! interface 'interface) |
(set-module-kind! interface 'interface) |
1612 |
(set-module-public-interface! module interface) |
(set-module-public-interface! module interface) |
1613 |
(set-module-duplicates-info! |
(set-module-duplicates-info! module (cons #f #f))))) |
|
module |
|
|
(cons (default-module-duplicates-handler) #f))))) |
|
1614 |
(if (and (not (memq the-scm-module (module-uses module))) |
(if (and (not (memq the-scm-module (module-uses module))) |
1615 |
(not (eq? module the-root-module))) |
(not (eq? module the-root-module))) |
1616 |
(set-module-uses! module |
(set-module-uses! module |
2872 |
handler-names |
handler-names |
2873 |
(list handler-names))))) |
(list handler-names))))) |
2874 |
|
|
2875 |
(define default-module-duplicates-handler |
(define default-duplicate-binding-procedures |
2876 |
|
(make-mutable-parameter #f)) |
2877 |
|
|
2878 |
|
(define default-duplicate-binding-handler |
2879 |
(make-mutable-parameter '(replace warn-override-core check) |
(make-mutable-parameter '(replace warn-override-core check) |
2880 |
lookup-duplicates-handlers)) |
(lambda (handler-names) |
2881 |
|
(default-duplicate-binding-procedures |
2882 |
|
(lookup-duplicates-handlers handler-names)) |
2883 |
|
handler-names))) |
2884 |
|
|
2885 |
(define (make-duplicates-interface) |
(define (make-duplicates-interface) |
2886 |
(let ((m (make-module))) |
(let ((m (make-module))) |
2890 |
|
|
2891 |
(define (process-duplicates module interface) |
(define (process-duplicates module interface) |
2892 |
(let* ((duplicates-info (module-duplicates-info module)) |
(let* ((duplicates-info (module-duplicates-info module)) |
2893 |
(duplicates-handlers (car duplicates-info)) |
(duplicates-handlers (or (car duplicates-info) |
2894 |
|
(default-duplicate-binding-procedures))) |
2895 |
(duplicates-interface (cdr duplicates-info))) |
(duplicates-interface (cdr duplicates-info))) |
2896 |
(module-for-each |
(module-for-each |
2897 |
(lambda (name var) |
(lambda (name var) |