~ 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