~ chicken-core (chicken-5) fc05e0403e7895dd57919eb4638fe6cb5e736e13
commit fc05e0403e7895dd57919eb4638fe6cb5e736e13
Author: Evan Hanson <evhan@foldling.org>
AuthorDate: Thu Oct 8 18:01:35 2015 +1300
Commit: Peter Bex <peter@more-magic.net>
CommitDate: Mon Nov 2 21:29:01 2015 +0100
Add support for library lists in module definitions
diff --git a/eval.scm b/eval.scm
index bf3c5d2a..1b30b154 100644
--- a/eval.scm
+++ b/eval.scm
@@ -66,11 +66,15 @@
(define (library-part->string id)
(cond ((symbol? id) (##sys#symbol->string id))
((number? id) (##sys#number->string id))
- (else (##sys#error "invalid extension specifier" lib))))
- (do ((lib (cdr lib) (cdr lib))
- (str (library-part->string (car lib))
- (string-append str "." (library-part->string (car lib)))))
- ((null? lib) (##sys#intern-symbol str))))
+ (else (##sys#error "invalid library specifier" lib))))
+ (cond
+ ((symbol? lib) lib)
+ ((list? lib)
+ (do ((lib (cdr lib) (cdr lib))
+ (str (library-part->string (car lib))
+ (string-append str "." (library-part->string (car lib)))))
+ ((null? lib) (##sys#intern-symbol str))))
+ (else (##sys#error "invalid library specifier" lib))))
) ; chicken.core
diff --git a/expand.scm b/expand.scm
index 6c20f1b9..cef6ef41 100644
--- a/expand.scm
+++ b/expand.scm
@@ -1442,11 +1442,11 @@
'()
(##sys#er-transformer
(lambda (x r c)
- (let ((len (length x)))
- (##sys#check-syntax 'module x '(_ symbol _ . #(_ 0)))
+ (##sys#check-syntax 'module x '(_ _ _ . #(_ 0)))
+ (let ((len (length x))
+ (name (chicken.core#library-id (cadr x))))
(cond ((and (fx>= len 4) (c (r '=) (caddr x)))
(let* ((x (chicken.expand#strip-syntax x))
- (name (cadr x))
(app (cadddr x)))
(cond ((symbol? app)
(cond ((fx> len 4)
@@ -1487,7 +1487,7 @@
(##sys#validate-exports
(chicken.expand#strip-syntax (caddr x)) 'module)))
`(##core#module
- ,(cadr x)
+ ,name
,(if (eq? '* exports)
#t
exports)
Trap