~ chicken-core (chicken-5) 81e400fc2516b64d2c768fcd5e97772ecc8e5327
commit 81e400fc2516b64d2c768fcd5e97772ecc8e5327 Author: Evan Hanson <evhan@foldling.org> AuthorDate: Tue Jan 16 23:01:57 2018 +1300 Commit: Evan Hanson <evhan@foldling.org> CommitDate: Tue Jan 16 23:34:26 2018 +1300 Make the "eval-modules" unit depend on "modules" The "eval-modules" unit needs to load the "modules" unit, since the `##sys#import-library-hook' procedure must be defined before it can be redefined in eval-modules.scm. So, we add a dependency on "eval" (since "eval" loads "modules", but must itself be loaded first). Also, drop the "eval" dependency from "modules", since "modules" must be loaded before "eval", and add a comment explaining why. This is similar to the relationship between "expand" and "modules", which already has a comment to explain it. Make "modules" use the "chicken-syntax" unit, since "modules" needs the various ##sys#-prefixed macro environments to be defined before it can refer to them when registering core modules. "chicken-syntax" will then load "expand" and "internal" as necessary. diff --git a/eval-modules.scm b/eval-modules.scm index 7f97d1cf..4083868f 100644 --- a/eval-modules.scm +++ b/eval-modules.scm @@ -25,7 +25,8 @@ (declare - (unit eval-modules)) + (unit eval-modules) + (uses eval)) (include "common-declarations.scm") diff --git a/eval.scm b/eval.scm index b47407e7..f819999b 100644 --- a/eval.scm +++ b/eval.scm @@ -27,7 +27,7 @@ (declare (unit eval) - (uses chicken-syntax expand internal modules) + (uses modules) (not inline ##sys#alias-global-hook ##sys#user-read-hook ##sys#syntax-error-hook)) #> diff --git a/modules.scm b/modules.scm index 6606c35c..b02717cb 100644 --- a/modules.scm +++ b/modules.scm @@ -24,9 +24,12 @@ ; POSSIBILITY OF SUCH DAMAGE. +;; this unit needs the "eval" unit, but must be initialized first, so it doesn't +;; declare "eval" as used - if you use "-explicit-use", take care of this. + (declare (unit modules) - (uses eval expand internal) + (uses chicken-syntax) (disable-interrupts) (fixnum) (not inline ##sys#alias-global-hook) diff --git a/tests/scrutiny.expected b/tests/scrutiny.expected index f4ec7931..44afef85 100644 --- a/tests/scrutiny.expected +++ b/tests/scrutiny.expected @@ -43,10 +43,10 @@ Warning: at toplevel: assignment of value of type `fixnum' to toplevel variable `scheme#car' does not match declared type `(forall (a) (procedure scheme#car ((pair a *)) a))' Warning: at toplevel: - expected a single result in `let' binding of `g127', but received 2 results + expected a single result in `let' binding of `g19', but received 2 results Warning: at toplevel: - in procedure call to `g127', expected a value of type `(procedure () *)' but was given a value of type `fixnum' + in procedure call to `g19', expected a value of type `(procedure () *)' but was given a value of type `fixnum' Note: in toplevel procedure `foo': expected a value of type boolean in conditional, but was given a value of type `(procedure bar () *)' which is always true:Trap