From fe6ee0528b08d48a8305dc6809e09dac97060118 Mon Sep 17 00:00:00 2001 From: Mikael Djurfeldt Date: Wed, 12 Mar 2003 16:52:07 +0000 Subject: [PATCH] * boot-9.scm (ipow-by-squaring): Removed. (default-duplicate-binding-handler): Set default to '(replace warn last) --- NEWS | 31 +++++++++++++++++++++++-------- ice-9/ChangeLog | 4 ++++ ice-9/boot-9.scm | 14 +------------- 3 files changed, 28 insertions(+), 21 deletions(-) diff --git a/NEWS b/NEWS index d81113e96..bac814d1b 100644 --- a/NEWS +++ b/NEWS @@ -63,23 +63,32 @@ debugging evaluator gives better error messages. ** Checking for duplicate bindings in module system -The module system now checks for duplicate imported bindings. +The module system now can check for name conflicts among imported +bindings. The behavior can be controlled by specifying one or more duplicates -handlers. For example, to get back the old behavior (which was to use -the last imported binding of a certain name), write: +handlers. For example, to make Guile return an error for every name +collision, write: (define-module (foo) :use-module (bar) :use-module (baz) - :duplicates last) + :duplicates check) -If you want the old behavior without changing your module headers, put -the line: +The new default behavior of the module system when a name collision +has been detected is to + + 1. Give priority to bindings marked as a replacement. + 2. Issue a warning. + 3. Give priority to the last encountered binding (this corresponds to + the old behavior). + +If you want the old behavior back without replacements or warnings you +can add the line: (default-duplicate-binding-handler 'last) -in your .guile init file. +to your .guile init file. The syntax for the :duplicates option is: @@ -95,6 +104,7 @@ Currently available duplicates handlers are: warn issue a warning for bindings with a common name replace replace bindings which have an imported replacement warn-override-core issue a warning for imports which override core bindings + and accept the override first select the first encountered binding (override) last select the last encountered binding (override) @@ -106,7 +116,12 @@ These two are provided by the (oop goops) module: The default duplicates handler is: - (replace warn-override-core check) + (replace warn last) + +A recommended handler (which is likely to correspond to future Guile +behavior) can be installed with: + + (default-duplicate-binding-handler '(replace warn-override-core check)) ** New define-module option: :replace diff --git a/ice-9/ChangeLog b/ice-9/ChangeLog index e4410a37b..7087f0bd3 100644 --- a/ice-9/ChangeLog +++ b/ice-9/ChangeLog @@ -1,5 +1,9 @@ 2003-03-12 Mikael Djurfeldt + * boot-9.scm (ipow-by-squaring): Removed. + (default-duplicate-binding-handler): Set default to + '(replace warn last) + * boot-9.scm (module-make-local-var!): Use module-add!. (module-primitive-add!): New function. (resolve-interface): Use diff --git a/ice-9/boot-9.scm b/ice-9/boot-9.scm index adc9db896..84887aadb 100644 --- a/ice-9/boot-9.scm +++ b/ice-9/boot-9.scm @@ -153,18 +153,6 @@ -;;; {Integer Math} -;;; - -(define (ipow-by-squaring x k acc proc) - (cond ((zero? k) acc) - ((= 1 k) (proc acc x)) - (else (ipow-by-squaring (proc x x) - (quotient k 2) - (if (even? k) acc (proc acc x)) - proc)))) - - ;;; {Symbol Properties} ;;; @@ -2916,7 +2904,7 @@ (make-mutable-parameter #f)) (define default-duplicate-binding-handler - (make-mutable-parameter '(replace warn-override-core check) + (make-mutable-parameter '(replace warn last) (lambda (handler-names) (default-duplicate-binding-procedures (lookup-duplicates-handlers handler-names)) -- 2.20.1