~ chicken-core (chicken-5) 847b172baf18178b1d87fdb57d0d13b213c62607


commit 847b172baf18178b1d87fdb57d0d13b213c62607
Author:     Evan Hanson <evhan@foldling.org>
AuthorDate: Sat Jun 17 12:32:20 2017 +1200
Commit:     Peter Bex <peter@more-magic.net>
CommitDate: Sun Jun 18 15:19:55 2017 +0200

    Move `module-environment' into chicken.eval
    
    To align more closely with R7RS's library organisation, we put the
    `module-environment' procedure in the "chicken.eval" module.
    
    Also, drop the [undocumented] second argument from the user-facing
    version of this procedure, and remove it from the plain "chicken"
    module. The dropped argument is still used internally, but doesn't need
    to be part of the public API.
    
    Signed-off-by: Peter Bex <peter@more-magic.net>

diff --git a/chicken.import.scm b/chicken.import.scm
index 3ebc9c9d..3b20bb7a 100644
--- a/chicken.import.scm
+++ b/chicken.import.scm
@@ -130,7 +130,6 @@
    make-parameter
    make-promise
    (make-property-condition . chicken.condition#make-property-condition)
-   module-environment
    (most-negative-fixnum . chicken.fixnum#most-negative-fixnum)
    (most-positive-fixnum . chicken.fixnum#most-positive-fixnum)
    nan?
diff --git a/eval.scm b/eval.scm
index 8167774f..2c62136e 100644
--- a/eval.scm
+++ b/eval.scm
@@ -45,8 +45,10 @@
 <#
 
 (module chicken.eval
-  (eval eval-handler
-   interaction-environment null-environment scheme-report-environment)
+  (eval-handler module-environment
+
+   ;; TODO These should only be exported by the scheme module (and r4rs/r5rs):
+   eval interaction-environment null-environment scheme-report-environment)
 
 ;; Exclude bindings defined within this module.
 (import (except scheme eval interaction-environment null-environment scheme-report-environment)
@@ -752,6 +754,12 @@
   (apply (eval-handler) x env))
 
 
+;;; User-facing `module-environment` procedure:
+
+(define (module-environment name)
+  (chicken.module#module-environment name))
+
+
 ;;; Setting properties dynamically scoped
 
 (define-values (##sys#put/restore! ##sys#with-property-restore)
@@ -812,10 +820,10 @@
 (define scheme-report-environment)
 (define null-environment)
 
-(let* ((r4s (module-environment 'r4rs 'scheme-report-environment/4))
-       (r5s (module-environment 'scheme 'scheme-report-environment/5))
-       (r4n (module-environment 'r4rs-null 'null-environment/4))
-       (r5n (module-environment 'r5rs-null 'null-environment/5)))
+(let* ((r4s (chicken.module#module-environment 'r4rs 'scheme-report-environment/4))
+       (r5s (chicken.module#module-environment 'scheme 'scheme-report-environment/5))
+       (r4n (chicken.module#module-environment 'r4rs-null 'null-environment/4))
+       (r5n (chicken.module#module-environment 'r5rs-null 'null-environment/5)))
   (define (strip se)
     (foldr
      (lambda (s r)
diff --git a/modules.scm b/modules.scm
index 0b818904..637eda0c 100644
--- a/modules.scm
+++ b/modules.scm
@@ -1057,7 +1057,7 @@
 
 (register-feature! 'module-environments)
 
-(define (module-environment mname #!optional (ename mname))
+(define (chicken.module#module-environment mname #!optional (ename mname))
   (let ((mod (find-module/import-library mname 'module-environment)))
     (if (not mod)
 	(##sys#syntax-error-hook
diff --git a/tests/environment-tests.scm b/tests/environment-tests.scm
index 285ad65e..61f50f03 100644
--- a/tests/environment-tests.scm
+++ b/tests/environment-tests.scm
@@ -33,6 +33,8 @@
 (test-equal 1 (eval '(if #t 1 2) (null-environment 5)))
 (test-equal (eval '((lambda (x) x) 123) (null-environment 5)) 123)
 
+(import (chicken eval))
+
 (define baz 100)
 
 (module foo (bar)
diff --git a/tests/module-tests.scm b/tests/module-tests.scm
index 421560e6..e6969e76 100644
--- a/tests/module-tests.scm
+++ b/tests/module-tests.scm
@@ -1,5 +1,6 @@
 ;;;; module-tests.scm
 
+(import (chicken eval))
 
 (cond-expand
  (compiling
diff --git a/types.db b/types.db
index 07258c46..dfc1d0bf 100644
--- a/types.db
+++ b/types.db
@@ -862,6 +862,8 @@
 (chicken.eval#interaction-environment
  (#(procedure #:clean) chicken.eval#interaction-environment () (struct environment)))
 
+(chicken.eval#module-environment
+ (#(procedure #:clean #:enforce) chicken.eval#module-environment ((or symbol (list-of (or symbol fixnum)))) (struct environment)))
 
 ;; chicken
 
@@ -1266,7 +1268,6 @@
 (chicken.flonum#minimum-flonum float)
 (chicken.fixnum#most-negative-fixnum fixnum)
 (chicken.fixnum#most-positive-fixnum fixnum)
-(module-environment (#(procedure #:clean #:enforce) module-environment ((or symbol (list-of (or symbol fixnum))) #!optional *) (struct environment)))
 (on-exit (#(procedure #:clean #:enforce) on-exit ((procedure () . *)) undefined))
 (open-input-string (#(procedure #:clean #:enforce) open-input-string (string #!rest) input-port))
 (open-output-string (#(procedure #:clean) open-output-string (#!rest) output-port))
Trap