~ 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