summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--module/ice-9/r6rs-libraries.scm24
-rw-r--r--test-suite/tests/rnrs-libraries.test9
2 files changed, 23 insertions, 10 deletions
diff --git a/module/ice-9/r6rs-libraries.scm b/module/ice-9/r6rs-libraries.scm
index 56d430025..482f8264b 100644
--- a/module/ice-9/r6rs-libraries.scm
+++ b/module/ice-9/r6rs-libraries.scm
@@ -190,13 +190,19 @@
(define-syntax import
(lambda (stx)
- (syntax-case stx (for)
- ((_ (for import-set import-level ...))
- #'(import import-set))
- ((_ import-set)
- #'(eval-when (eval load compile expand)
- (let ((iface (resolve-r6rs-interface 'import-set)))
- (call-with-deferred-observers
- (lambda ()
- (module-use-interfaces! (current-module) (list iface))))
+ (define (strip-for import-set)
+ (syntax-case import-set (for)
+ ((for import-set import-level ...)
+ #'import-set)
+ (import-set
+ #'import-set)))
+ (syntax-case stx ()
+ ((_ import-set ...)
+ (with-syntax (((library-reference ...) (map strip-for #'(import-set ...))))
+ #'(eval-when (eval load compile expand)
+ (let ((iface (resolve-r6rs-interface 'library-reference)))
+ (call-with-deferred-observers
+ (lambda ()
+ (module-use-interfaces! (current-module) (list iface)))))
+ ...
(if #f #f)))))))
diff --git a/test-suite/tests/rnrs-libraries.test b/test-suite/tests/rnrs-libraries.test
index 4396c6769..e16271400 100644
--- a/test-suite/tests/rnrs-libraries.test
+++ b/test-suite/tests/rnrs-libraries.test
@@ -183,4 +183,11 @@
(with-test-prefix "srfi"
(pass-if "renaming works"
(eq? (resolve-interface '(srfi srfi-1))
- (resolve-r6rs-interface '(srfi :1))))))
+ (resolve-r6rs-interface '(srfi :1)))))
+
+ (with-test-prefix "macro"
+ (pass-if "multiple clauses"
+ (eval '(begin
+ (import (rnrs) (for (rnrs) expand) (rnrs))
+ #t)
+ (current-module)))))