~ chicken-core (chicken-5) cc07beaa06865f7b140dcf3ee0ab1365319ac47b


commit cc07beaa06865f7b140dcf3ee0ab1365319ac47b
Author:     Evan Hanson <evhan@foldling.org>
AuthorDate: Fri Feb 5 10:24:38 2016 +1300
Commit:     Evan Hanson <evhan@foldling.org>
CommitDate: Tue Mar 8 22:52:35 2016 +1300

    Some fixes after load-extension signature changes
    
    Require that extension IDs be symbols, and make sure it's only ever
    called with a single library ID argument.

diff --git a/core.scm b/core.scm
index 3523b25c..10c405d5 100644
--- a/core.scm
+++ b/core.scm
@@ -665,7 +665,7 @@
 			   ,(walk (caddr x) e se dest ldest h ln)))
 
 			((##core#require-for-syntax)
-			 (apply ##sys#load-extension (cdr x))
+			 (for-each ##sys#load-extension (cdr x))
 			 '(##core#undefined))
 
 			((##core#require)
diff --git a/eval.scm b/eval.scm
index 27178f56..3ef9fdfb 100644
--- a/eval.scm
+++ b/eval.scm
@@ -702,14 +702,14 @@
 			  (compile `(##sys#provide (##core#quote ,(cadr x))) e #f tf cntr se)]
 
 			 [(##core#require-for-syntax)
-			  (let ((ids (cdr x)))
-			    (apply ##sys#load-extension ids)
-			    (let ((rs (lookup-runtime-requirements ids)))
-			      (compile
-			       (if (null? rs)
-				   '(##core#undefined)
-				   `(##sys#load-extension ,@(map (lambda (x) `(##core#quote ,x)) rs)))
-			       e #f tf cntr se) ) ) ]
+			  (let ((ids (strip-syntax (cdr x))))
+			    (for-each ##sys#load-extension ids)
+			    (compile
+			     `(##core#begin
+			       ,@(map (lambda (x)
+					`(##sys#load-extension (##core#quote ,x)))
+				      (lookup-runtime-requirements ids)))
+			     e #f tf cntr se))]
 
 			 [(##core#require)
 			  (compile
@@ -1219,8 +1219,6 @@
 (define (##sys#load-extension id #!optional loc)
   (define (fail message)
     (##sys#error loc message id))
-  (cond ((string? id) (set! id (string->symbol id)))
-	(else (##sys#check-symbol id loc)))
   (cond ((##sys#provided? id))
 	((memq id core-units)
 	 (or (load-library-0 id #f)
@@ -1238,6 +1236,7 @@
   (##sys#load-extension id 'load-extension))
 
 (define (require . ids)
+  (for-each (cut ##sys#check-symbol <> 'require) ids)
   (for-each (cut ##sys#load-extension <> 'require) ids))
 
 (define (provide . ids)
@@ -1245,10 +1244,7 @@
   (for-each (cut ##sys#provide <>) ids))
 
 (define (provided? . ids)
-  (let loop ((ids ids))
-    (or (null? ids)
-	(and (##sys#provided? (car ids))
-	     (loop (cdr ids))))))
+  (every ##sys#provided? ids))
 
 (define extension-information/internal
   (let ([with-input-from-file with-input-from-file]
Trap