~ chicken-core (chicken-5) be4ec378a6f47a94805652b6f126e95967cbb805
commit be4ec378a6f47a94805652b6f126e95967cbb805
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Fri Mar 12 11:14:35 2010 +0100
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Fri Mar 12 11:14:35 2010 +0100
module bodies are completely stripped (#131)
diff --git a/compiler.scm b/compiler.scm
index 6ca15a62..47fa3b7d 100644
--- a/compiler.scm
+++ b/compiler.scm
@@ -812,7 +812,8 @@
e se dest))
((##core#module)
- (let* ((name (##sys#strip-syntax (cadr x)))
+ (let* ((x (##sys#strip-syntax x))
+ (name (##sys#strip-syntax (cadr x)))
(exports
(or (eq? #t (caddr x))
(map (lambda (exp)
diff --git a/eval.scm b/eval.scm
index 6bf69fda..c51f12c4 100644
--- a/eval.scm
+++ b/eval.scm
@@ -645,7 +645,8 @@
e #f tf cntr se))
((##core#module)
- (let* ((name (##sys#strip-syntax (cadr x)))
+ (let* ((x (##sys#strip-syntax x))
+ (name (##sys#strip-syntax (cadr x)))
(exports
(or (eq? #t (caddr x))
(map (lambda (exp)
diff --git a/expand.scm b/expand.scm
index bd37221c..1df2b394 100644
--- a/expand.scm
+++ b/expand.scm
@@ -57,7 +57,7 @@
(no-procedure-checks)))
(else))
-(begin
+#;(begin
(define-syntax dd (syntax-rules () ((_ . _) (void))))
(define-syntax dm (syntax-rules () ((_ . _) (void))))
(define-syntax dc (syntax-rules () ((_ . _) (void)))) )
diff --git a/tests/module-tests.scm b/tests/module-tests.scm
index 71846074..ac62197f 100644
--- a/tests/module-tests.scm
+++ b/tests/module-tests.scm
@@ -163,4 +163,38 @@
(use (prefix (rename srfi-1 (filter f)) 99:))
(print 99:f))
+
+;;; expansion of macros into modules:
+
+(module m16 (foo-module)
+
+(import scheme chicken)
+
+(define-syntax foo-module
+ (syntax-rules ()
+ ((_ name)
+ (module name (maker definer)
+ (import scheme chicken)
+ (define (maker) 'name)
+ (define-syntax definer
+ (syntax-rules ()
+ ((_) (define (name) 'name))))))))
+
+)
+
+(import m16)
+(foo-module abc)
+(import abc)
+
+(test-equal
+ "function defined in module that is the result of an expansion"
+ 'abc (maker))
+
+(definer)
+
+(test-equal
+ "syntax defined in module that is the result of an expansion"
+ 'abc (abc))
+
(test-end "modules")
+
diff --git a/tests/runtests.sh b/tests/runtests.sh
index f14acc3d..e95fe19a 100644
--- a/tests/runtests.sh
+++ b/tests/runtests.sh
@@ -164,7 +164,7 @@ $interpret -s srfi-4-tests.scm
echo "======================================== srfi-18 tests ..."
$interpret -s srfi-18-tests.scm
-echo "*** Skipping \"feeley-dynwind\" (for now) ***"
+echo "*** Skipping \"feeley-dynwind\" for now ***"
# $interpret -s feeley-dynwind.scm
echo "======================================== path tests ..."
Trap