~ chicken-core (chicken-5) 3875d1361b2f285cd5bafd987869e5a011e304fb
commit 3875d1361b2f285cd5bafd987869e5a011e304fb Author: felix <felix@call-with-current-continuation.org> AuthorDate: Tue Jun 12 10:40:15 2012 +0200 Commit: Christian Kellermann <ckeen@pestilenz.org> CommitDate: Tue Jun 12 10:40:15 2012 +0200 reexport must update module-exist-list for modules having 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 1a4cadad..6cea21e9 100644 --- a/modules.scm +++ b/modules.scm @@ -696,13 +696,21 @@ (when reexp? (unless cm (##sys#syntax-error-hook loc "`reexport' only valid inside a module")) - (set-module-export-list! - cm - (append - (let ((xl (module-export-list cm) )) - (if (eq? #t xl) '() xl)) - (map car vsv) - (map car vss))) + + (if (eq? #t (module-export-list cm)) + (begin + (set-module-exist-list! + cm + (append (module-exist-list cm) + (map car vsv) + (map car vss)))) + (set-module-export-list! + cm + (append + (let ((xl (module-export-list cm) )) + (if (eq? #t xl) '() xl)) + (map car vsv) + (map car vss)))) (when (pair? prims) (set-module-meta-expressions! cm diff --git a/tests/module-tests.scm b/tests/module-tests.scm index ca1de1a4..4314f689 100644 --- a/tests/module-tests.scm +++ b/tests/module-tests.scm @@ -248,5 +248,33 @@ b) 2) +;; (contributed by "megane") + +(module m25 * + (import chicken scheme) + (define foo 1)) + +(module m26 (bar) + (import chicken scheme) + (reexport m25) + (define bar 2)) + +(module m27 * + (import chicken scheme) + (reexport m25) ;; <- oops, bar not exported anymore + (define bar 2)) + +(test-equal + "handle star-exporting module with reexport" + (module m28 () + (import scheme chicken) + (import (prefix m26 b/)) + (import (prefix m27 c/)) + (print b/foo) + (print c/foo) + (print b/bar) + c/bar) ;; <- Error: unbound variable: c/bar + 2) + (test-end "modules")Trap