~ chicken-core (chicken-5) 4e36ed938b523d1d3b89e2df48065c47edfc395e


commit 4e36ed938b523d1d3b89e2df48065c47edfc395e
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Thu Jun 23 19:54:52 2011 +0200
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Thu Jun 23 19:54:52 2011 +0200

    treat core syntax-modules differently when doing the right thing

diff --git a/chicken-install.scm b/chicken-install.scm
index a19ce5ff..e6d692b1 100644
--- a/chicken-install.scm
+++ b/chicken-install.scm
@@ -214,7 +214,9 @@
   (define (ext-version x)
     (cond ((or (eq? x 'chicken)
                (equal? x "chicken")
-               (member (->string x) ##sys#core-library-modules))
+               (let ((xs (->string x)))
+		 (or (member xs ##sys#core-library-modules)
+		     (member xs ##sys#core-syntax-modules))))
            (chicken-version) )
           ((extension-information x) =>
            (lambda (info)
diff --git a/eval.scm b/eval.scm
index 0d55ca8b..dfad23e9 100644
--- a/eval.scm
+++ b/eval.scm
@@ -56,8 +56,10 @@
 
 (define ##sys#core-library-modules
   '(extras lolevel utils files tcp irregex posix srfi-1 srfi-4 srfi-13 
-	   srfi-14 srfi-18 srfi-69 data-structures ports chicken-syntax
-	   chicken-ffi-syntax))
+	   srfi-14 srfi-18 srfi-69 data-structures ports))
+
+(define ##sys#core-syntax-modules
+  '(chicken-syntax chicken-ffi-syntax))
 
 (define ##sys#explicit-library-modules '())
 
@@ -1152,7 +1154,8 @@
 	    (else (##sys#check-symbol id loc)) )
       (let ([p (##sys#canonicalize-extension-path id loc)])
 	(cond ((member p ##sys#loaded-extensions))
-	      ((memq id ##sys#core-library-modules)
+	      ((or (memq id ##sys#core-library-modules)
+		   (memq id ##sys#core-syntax-modules))
 	       (or (##sys#load-library-0 id #f)
 		   (and err?
 			(##sys#error loc "cannot load core library" id))))
@@ -1253,6 +1256,14 @@
 		     `(##sys#load-library ',id #f) )
 		 impid #f)
 		#t) )
+	      ((memq id ##sys#core-syntax-modules)
+	       (values
+		(impform
+		 (if comp?
+		     `(##core#declare (uses ,id))
+		     `(##sys#load-library ',id #f) )
+		 impid #t)
+		#t) )
 	      ((memq id ##sys#explicit-library-modules)
 	       (let* ((info (##sys#extension-information id 'require-extension))
 		      (nr (assq 'import-only info))
Trap