[Top][All Lists]
[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
- [Chicken-hackers] [PATCH] handle "reexport" with module using wildcard export list,
Felix <=