~ chicken-core (chicken-5) 044fd609cb3fc77fdefbde1069f70fd945b92189


commit 044fd609cb3fc77fdefbde1069f70fd945b92189
Author:     Evan Hanson <evhan@foldling.org>
AuthorDate: Tue Feb 9 07:34:10 2016 +1300
Commit:     Evan Hanson <evhan@foldling.org>
CommitDate: Tue Mar 8 22:52:35 2016 +1300

    Only require-for-syntax one library at a time

diff --git a/core.scm b/core.scm
index 9fc85544..33ebf6a6 100644
--- a/core.scm
+++ b/core.scm
@@ -672,7 +672,7 @@
 			   ,(walk (caddr x) e se dest ldest h ln)))
 
 			((##core#require-for-syntax)
-			 (for-each ##sys#load-extension (cdr x))
+			 (##sys#load-extension (cadr x))
 			 '(##core#undefined))
 
 			((##core#require)
diff --git a/eval.scm b/eval.scm
index 485afb67..8a4f0aef 100644
--- a/eval.scm
+++ b/eval.scm
@@ -703,13 +703,13 @@
 			  (compile `(##sys#provide (##core#quote ,(cadr x))) e #f tf cntr se)]
 
 			 [(##core#require-for-syntax)
-			  (let ((ids (strip-syntax (cdr x))))
-			    (for-each ##sys#load-extension ids)
+			  (let ((id (strip-syntax (cadr x))))
+			    (##sys#load-extension id)
 			    (compile
 			     `(##core#begin
 			       ,@(map (lambda (x)
 					`(##sys#load-extension (##core#quote ,x)))
-				      (lookup-runtime-requirements ids)))
+				      (lookup-runtime-requirements id)))
 			     e #f tf cntr se))]
 
 			 [(##core#require)
@@ -1262,19 +1262,11 @@
 (define (extension-information ext)
   (extension-information/internal ext 'extension-information))
 
-(define lookup-runtime-requirements
-  (let ([with-input-from-file with-input-from-file]
-	[read read] )
-    (lambda (ids)
-      (let loop1 ([ids ids])
-	(if (null? ids)
-	    '()
-	    (append
-	     (or (and-let* ((info (extension-information/internal (car ids) #f))
-			    (a (assq 'require-at-runtime info)))
-		   (cdr a) )
-		 '() )
-	     (loop1 (cdr ids)) ) ) ) ) ) )
+(define (lookup-runtime-requirements id)
+  (let ((info (extension-information/internal id #f)))
+    (cond ((not info) '())
+	  ((assq 'require-at-runtime info) => cdr)
+	  (else '()))))
 
 ;;
 ;; Given a library specification, returns three values:
Trap