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

Reply via email to