~ 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