~ 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