~ chicken-r7rs (master) 04a3ab5b3e81dbf3df123f2960a0baa0d0d8410d


commit 04a3ab5b3e81dbf3df123f2960a0baa0d0d8410d
Author:     Peter Bex <peter@more-magic.net>
AuthorDate: Sun Aug 4 10:45:17 2013 +0000
Commit:     Evan Hanson <evhan@foldling.org>
CommitDate: Sun Aug 4 10:45:17 2013 +0000

    Use register-feature to declare that the module is loaded already.  This breaks in compiled mode (might need to be fixed in core)

diff --git a/r7rs-compile-time.scm b/r7rs-compile-time.scm
index 136288c..12543d3 100644
--- a/r7rs-compile-time.scm
+++ b/r7rs-compile-time.scm
@@ -143,12 +143,17 @@
 	      (##core#begin ,@code) 
 	      ,(parse-decls more)))
 	   (decl (syntax-error 'define-library "invalid library declaration" decl))))
-       `(##core#module ,real-name ((,dummy-export))
-		       ;; gruesome hack: we add a dummy export for adding indirect exports
-		       (import (rename scheme (define-syntax hidden:define-syntax)))
-		       (import (only scheme.base import export)) ; overwrites existing "import"
-		       (hidden:define-syntax ,dummy-export (lambda () #f))
-		       ,(parse-decls decls))))
+       `(##core#begin
+         (##core#module
+          ,real-name ((,dummy-export))
+          ;; gruesome hack: we add a dummy export for adding indirect exports
+          (import (rename scheme (define-syntax hidden:define-syntax)))
+          (import (only scheme.base import export)) ; overwrites existing "import"
+          ;; Another gruesome hack: register feature so "use" works properly
+          (import (rename chicken (register-feature! hidden:register-feature!)))
+          (hidden:register-feature! (##core#quote ,real-name))
+          (hidden:define-syntax ,dummy-export (lambda () #f))
+          ,(parse-decls decls)))))
     (_ (syntax-error 'define-library "invalid library definition" form))))
 
 (define (register-r7rs-module name)
Trap