diff options
-rw-r--r-- | module/ice-9/local-eval.scm | 2 | ||||
-rw-r--r-- | test-suite/tests/eval.test | 20 |
2 files changed, 12 insertions, 10 deletions
diff --git a/module/ice-9/local-eval.scm b/module/ice-9/local-eval.scm index f01a9c655..28f30b991 100644 --- a/module/ice-9/local-eval.scm +++ b/module/ice-9/local-eval.scm @@ -235,7 +235,7 @@ (scope (caddr l))) (within-nested-ellipses (datum->syntax scope name) lvl))) (lexenv-patterns e)))) - ((module? e) `(lambda () #f ,exp)) + ((module? e) #`(lambda () #f #,x)) (else (error "invalid lexical environment" e)))) (define (local-eval x e) diff --git a/test-suite/tests/eval.test b/test-suite/tests/eval.test index f532059f0..b0bfd4c44 100644 --- a/test-suite/tests/eval.test +++ b/test-suite/tests/eval.test @@ -431,9 +431,10 @@ (pass-if "local-eval" - (let* ((env1 (let ((x 1) (y 2) (z 3)) - (define-syntax-rule (foo x) (quote x)) - (the-environment))) + (let* ((env1 (local-eval '(let ((x 1) (y 2) (z 3)) + (define-syntax-rule (foo x) (quote x)) + (the-environment)) + (current-module))) (env2 (local-eval '(let ((x 111) (a 'a)) (define-syntax-rule (bar x) (quote x)) (the-environment)) @@ -448,9 +449,10 @@ (pass-if "local-compile" - (let* ((env1 (let ((x 1) (y 2) (z 3)) - (define-syntax-rule (foo x) (quote x)) - (the-environment))) + (let* ((env1 (local-compile '(let ((x 1) (y 2) (z 3)) + (define-syntax-rule (foo x) (quote x)) + (the-environment)) + (current-module))) (env2 (local-compile '(let ((x 111) (a 'a)) (define-syntax-rule (bar x) (quote x)) (the-environment)) @@ -477,9 +479,9 @@ (the-environment)))) module-a) (module-use! module-b (resolve-interface '(guile))) - (let ((env (eval `(let ((x 111) (y 222)) - ((@@ ,module-a-name test))) - module-b))) + (let ((env (local-eval `(let ((x 111) (y 222)) + ((@@ ,module-a-name test))) + module-b))) (equal? (local-eval '(list x y z) env) '(1 2 3)))))) |