The attached patch was contributed by "megane" and fixes a problem when a module with "*" as export list uses the "export" form.
cheers, felix
>From 1397abcbee61d65bc17d5b448798abdd20cb62ae Mon Sep 17 00:00:00 2001 From: felix <[email protected]> Date: Tue, 12 Jun 2012 09:39:29 +0200 Subject: [PATCH] update module-exist-list when doing an deferred export in a module with wildcard export list (contributed by 'megane') Signed-off-by: felix <[email protected]> --- modules.scm | 12 +++++++----- tests/module-tests.scm | 23 +++++++++++++++++++++++ 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/modules.scm b/modules.scm index fd17c62..1a4cada 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 1bbacfa..ca1de1a 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") -- 1.6.0.4
_______________________________________________ Chicken-hackers mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/chicken-hackers
