summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2010-04-23 15:44:31 +0200
committerAndy Wingo <wingo@pobox.com>2010-04-24 17:42:00 +0200
commit9e0bfdbaa39ff87e002ec5bbf7183de4ce8f6b61 (patch)
tree428ee0b219a0341f57600a18ea43de781db4ac29
parentb910c4ac4ec8c66d1c6495ae958fd76641a32e53 (diff)
downloadguile-9e0bfdbaa39ff87e002ec5bbf7183de4ce8f6b61.tar.gz
use the define-module variants in module-name and make-modules-in
* module/ice-9/boot-9.scm (module-name): Use module-define-submodule! instead of nested-define!. (make-modules-in): Rewrite in terms of nested-define-module!.
-rw-r--r--module/ice-9/boot-9.scm22
1 files changed, 7 insertions, 15 deletions
diff --git a/module/ice-9/boot-9.scm b/module/ice-9/boot-9.scm
index 9fef3a795..b6b077c6c 100644
--- a/module/ice-9/boot-9.scm
+++ b/module/ice-9/boot-9.scm
@@ -2267,24 +2267,16 @@ If there is no handler at all, Guile prints an error and then exits."
;; `resolve-module'. This is important as `psyntax' stores module
;; names and relies on being able to `resolve-module' them.
(set-module-name! mod name)
- (nested-define! (resolve-module '() #f) name mod)
+ (nested-define-module! (resolve-module '() #f) name mod)
(accessor mod))))))
(define (make-modules-in module name)
- (if (null? name)
- module
- (make-modules-in
- (let* ((var (module-local-variable module (car name)))
- (val (and var (variable-bound? var) (variable-ref var))))
- (if (module? val)
- val
- (let ((m (make-module 31)))
- (set-module-kind! m 'directory)
- (set-module-name! m (append (module-name module)
- (list (car name))))
- (module-define! module (car name) m)
- m)))
- (cdr name))))
+ (or (nested-ref-module module name)
+ (let ((m (make-module 31)))
+ (set-module-kind! m 'directory)
+ (set-module-name! m (append (module-name module) name))
+ (nested-define-module! module name m)
+ m)))
(define (beautify-user-module! module)
(let ((interface (module-public-interface module)))