~ chicken-core (chicken-5) 634e3041bc34baa8f7df6265dca00b7ee008e077
commit 634e3041bc34baa8f7df6265dca00b7ee008e077
Author: Evan Hanson <evhan@foldling.org>
AuthorDate: Mon Oct 16 08:21:39 2017 +1300
Commit: Peter Bex <peter@more-magic.net>
CommitDate: Mon Oct 16 14:27:35 2017 +0200
Add unit dependency info to the scheme and rnrs[-null] modules
The r4rs module depends on the "library" unit, so we add that dependency
to its module registration in modules.scm.
The r[45]rs-null modules don't depend on any unit since they only export
syntax, so set their module-library slots to #f to indicate "no unit".
The scheme module only depends on the "library" unit, so remove it from
the list of `core-unit-requirements` and add "library" to its module
registration so that it's treated like any other unit.
Add a test to make sure the r4rs and r4-null libraries are working.
Signed-off-by: Peter Bex <peter@more-magic.net>
diff --git a/eval.scm b/eval.scm
index 10162865..dbdab377 100644
--- a/eval.scm
+++ b/eval.scm
@@ -894,10 +894,10 @@
(define-foreign-variable install-lib-name c-string "C_INSTALL_LIB_NAME")
(define-foreign-variable uses-soname? bool "C_USES_SONAME")
+;;; Core unit information
+
(define-constant core-unit-requirements
- '((scheme ; XXX not totally correct, also needs eval
- . (##core#require library))
- (chicken.foreign
+ '((chicken.foreign
. (##core#require-for-syntax chicken-ffi-syntax))
(chicken.condition
. (##core#begin
diff --git a/modules.scm b/modules.scm
index f71519b6..8d99a0f4 100644
--- a/modules.scm
+++ b/modules.scm
@@ -941,13 +941,13 @@
;; ##sys#initial-macro-environment and thus always available inside
;; modules.
##sys#default-macro-environment))
- (##sys#register-primitive-module 'r4rs r4rs-values r4rs-syntax)
- (##sys#register-primitive-module
- 'scheme
+ (##sys#register-core-module 'r4rs 'library r4rs-values r4rs-syntax)
+ (##sys#register-core-module
+ 'scheme 'library
(append '(dynamic-wind values call-with-values) r4rs-values)
r4rs-syntax)
- (##sys#register-primitive-module 'r4rs-null '() r4rs-syntax)
- (##sys#register-primitive-module 'r5rs-null '() r4rs-syntax))
+ (##sys#register-core-module 'r4rs-null #f '() r4rs-syntax)
+ (##sys#register-core-module 'r5rs-null #f '() r4rs-syntax))
(##sys#register-module-alias 'r5rs 'scheme)
(##sys#register-module-alias 'srfi-88 'chicken.keyword)
diff --git a/tests/module-tests.scm b/tests/module-tests.scm
index e6969e76..12d63bc4 100644
--- a/tests/module-tests.scm
+++ b/tests/module-tests.scm
@@ -10,6 +10,18 @@
(test-begin "modules")
+(test-assert
+ "r4rs"
+ (module test-r4rs ()
+ (import r4rs)
+ (equal? 1 1)))
+
+(test-assert
+ "r4rs-null"
+ (module test-r4rs-null ()
+ (import r4rs-null)
+ (begin #t)))
+
(test-equal "internal/variable"
(module foo (abc def)
(import scheme)
Trap