~ chicken-core (chicken-5) 4f4738fdec98062301fa8f970eca9e92a67bccb9
commit 4f4738fdec98062301fa8f970eca9e92a67bccb9
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Tue Jun 12 09:39:29 2012 +0200
Commit: Christian Kellermann <ckeen@pestilenz.org>
CommitDate: Tue Jun 12 10:15:06 2012 +0200
update module-exist-list when doing an deferred export in a module with wildcard export list (contributed by 'megane')
Signed-off-by: felix <felix@call-with-current-continuation.org>
Signed-off-by: Christian Kellermann <ckeen@pestilenz.org>
diff --git a/modules.scm b/modules.scm
index fd17c627..1a4cadad 100644
--- a/modules.scm
+++ b/modules.scm
@@ -157,11 +157,13 @@
(##sys#current-module mod))))))
(define (##sys#add-to-export-list mod exps)
- (set-module-export-list!
- mod
- (let ((xl (module-export-list mod)))
- (or (eq? xl #t) ; ==> #t
- (append xl exps)))))
+ (let ((xl (module-export-list mod)))
+ (if (eq? xl #t)
+ (let ((el (module-exist-list mod)))
+ (set-module-exist-list!
+ mod (append el exps)))
+ (set-module-export-list!
+ mod (append xl exps)))))
(define (##sys#toplevel-definition-hook sym mod exp val) #f)
diff --git a/tests/module-tests.scm b/tests/module-tests.scm
index 1bbacfab..ca1de1a4 100644
--- a/tests/module-tests.scm
+++ b/tests/module-tests.scm
@@ -225,5 +225,28 @@
a)
1)
+;; #865 - "*" export list needs special treatment when using "export"
+;; (fix contributed by "megane")
+
+(module
+ m22
+ *
+ (import chicken scheme)
+ (define b 2))
+
+(module
+ m23
+ *
+ (import chicken scheme)
+ (import m22)
+ (export b) )
+
+(test-equal
+ "`*' export-list + explicit export"
+ (module m24 ()
+ (import m23)
+ b)
+ 2)
+
(test-end "modules")
Trap