~ chicken-core (chicken-5) 1e4cd5ff9206cbae2434a3ae487de9987c8a54b0


commit 1e4cd5ff9206cbae2434a3ae487de9987c8a54b0
Author:     unknown <felix@.(none)>
AuthorDate: Mon Oct 19 14:21:51 2009 +0200
Commit:     unknown <felix@.(none)>
CommitDate: Wed Oct 28 16:36:35 2009 +0100

    possible fix for reexport bug; no timing output for benchmarks in test suite

diff --git a/expand.scm b/expand.scm
index 1e8b0b51..58eefaea 100644
--- a/expand.scm
+++ b/expand.scm
@@ -879,15 +879,19 @@
        (lambda (spec)
 	 (let* ((vs (import-spec spec))
 		(vsv (car vs))
-		(vss (cdr vs)))
+		(vss (cdr vs))
+		(prims '()))
 	   (dd `(IMPORT: ,loc))
 	   (dd `(V: ,(if cm (module-name cm) '<toplevel>) ,(map-se vsv)))
 	   (dd `(S: ,(if cm (module-name cm) '<toplevel>) ,(map-se vss)))
 	   (##sys#mark-imported-symbols vsv) ; mark imports as ##core#aliased
 	   (for-each
 	    (lambda (imp)
-	      (let ((id (car imp))
-		    (aid (cdr imp)))
+	      (let* ((id (car imp))
+		     (aid (cdr imp))
+		     (prim (##sys#get aid '##core#primitive)))
+		(when prim
+		  (set! prims (cons imp prims)))
 		(and-let* ((a (assq id (import-env)))
 			   ((not (eq? aid (cdr a)))))
 		  (##sys#warn "re-importing already imported identifier" id))))
@@ -907,12 +911,23 @@
 	       (module-export-list cm) 
 	       (map car vsv)
 	       (map car vss)))
+	     (when (pair? prims)
+	       (set-module-meta-expressions! 
+		cm
+		(append
+		 (module-meta-expressions cm)
+		 `((##sys#mark-primitive ',prims)))))
 	     (dm "export-list: " (module-export-list cm)))
 	   (import-env (append vsv (import-env)))
 	   (macro-env (append vss (macro-env)))))
        (cdr x))
       '(##core#undefined))))
 
+(define (##sys#mark-primitive prims)
+  (for-each
+   (lambda (a) (##sys#put! (cdr a) '##core#primitive (car a)))
+   prims))
+
 (##sys#extend-macro-environment
  'import '() 
  (##sys#er-transformer 
diff --git a/tests/reexport-m1.scm b/tests/reexport-m1.scm
new file mode 100644
index 00000000..2358ef47
--- /dev/null
+++ b/tests/reexport-m1.scm
@@ -0,0 +1,4 @@
+(module reexport-m1 ()
+  (import scheme chicken)
+  (require-library srfi-1)
+  (reexport (only srfi-1 cons*)))
diff --git a/tests/reexport-m2.scm b/tests/reexport-m2.scm
new file mode 100644
index 00000000..ec955f39
--- /dev/null
+++ b/tests/reexport-m2.scm
@@ -0,0 +1,4 @@
+(module foo ()
+  (import scheme chicken)
+  (use reexport-m1)
+  (print (cons* 1 2 3)))
diff --git a/tests/runtests.sh b/tests/runtests.sh
index e260339e..d53c1b91 100644
--- a/tests/runtests.sh
+++ b/tests/runtests.sh
@@ -80,14 +80,20 @@ $compile syntax-tests-2.scm
 
 #echo "======================================== meta-syntax tests ..."
 #$interpret -bnq meta-syntax-test.scm -e '(import foo)' -e '(bar 1 2)'
-#$compile_s -s meta-syntax-test.scm -j foo
-#$compile_s -s foo.import.scm
+#$compile_s meta-syntax-test.scm -j foo
+#$compile_s foo.import.scm
 #$interpret -bnq -e '(require-library meta-syntax-test)' -e '(import foo)' -e '(bar 1 2)'
 
 echo "======================================== reexport tests ..."
 $interpret -bnq reexport-tests.scm
 $compile reexport-tests.scm
 ./a.out
+rm -f reexport-m*.import*
+$compile_s reexport-m1.scm -J
+$compile_s reexport-m1.import.scm
+$interpret -s reexport-m2.scm
+$compile reexport-m2.scm
+./a.out
 
 echo "======================================== compiler syntax tests ..."
 $compile compiler-syntax-tests.scm
@@ -97,7 +103,7 @@ echo "======================================== import library tests ..."
 rm -f foo.import.*
 $compile import-library-test1.scm -emit-import-library foo
 $interpret -s import-library-test2.scm
-$compile_s -s foo.import.scm -o foo.import.so
+$compile_s foo.import.scm -o foo.import.so
 $interpret -s import-library-test2.scm
 $compile import-library-test2.scm
 ./a.out
@@ -215,7 +221,7 @@ for x in `ls *.scm`; do
 	"plists.scm");;
 	*)
 	    echo $x
-	    ../csc $x -compiler $CHICKEN -I.. -L.. -O3 -d0
+	    ../csc $x -compiler $CHICKEN -I.. -L.. -O3 -d0 -prelude '(define-syntax time (syntax-rules () ((_ x) x)))'
 	    ./`basename $x .scm`;;
     esac
 done
Trap