chicken-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Chicken-hackers] [PATCH] handle "reexport" with module using wildcard e


From: Felix
Subject: [Chicken-hackers] [PATCH] handle "reexport" with module using wildcard export list
Date: Tue, 12 Jun 2012 09:52:05 +0200 (CEST)

The attached patch (also contributed by "megane") fixes a problem with
"reexport" and modules that use "*" as export list.


cheers,
felix
>From 0bceb5b69779458eb3d0439cb05ab57af4b5e4cc Mon Sep 17 00:00:00 2001
From: felix <address@hidden>
Date: Tue, 12 Jun 2012 09:46:35 +0200
Subject: [PATCH] reexport must update module-exist-list for modules having 
wildcard export list (contributed by megane)

Signed-off-by: felix <address@hidden>
---
 modules.scm            |   22 +++++++++++++++-------
 tests/module-tests.scm |   29 +++++++++++++++++++++++++++++
 2 files changed, 44 insertions(+), 7 deletions(-)

diff --git a/modules.scm b/modules.scm
index fd17c62..c26e4f7 100644
--- a/modules.scm
+++ b/modules.scm
@@ -694,13 +694,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 1bbacfa..a392ec2 100644
--- a/tests/module-tests.scm
+++ b/tests/module-tests.scm
@@ -225,5 +225,34 @@
    a)
  1)
 
+;; #843 - "reexport" must update module-exist-list in module with wildcard 
exports
+;; (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")
 
-- 
1.6.0.4


reply via email to

[Prev in Thread] Current Thread [Next in Thread]