~ chicken-core (chicken-5) ffb143ee56c25598fde0097f04cf9c6d1e363824
commit ffb143ee56c25598fde0097f04cf9c6d1e363824
Author: felix <felix@z.(none)>
AuthorDate: Fri Feb 25 12:26:46 2011 +0100
Commit: felix <felix@z.(none)>
CommitDate: Fri Feb 25 12:26:46 2011 +0100
eval/meta change also in compiler (untested)
diff --git a/compiler.scm b/compiler.scm
index ec03085d..8b300de0 100644
--- a/compiler.scm
+++ b/compiler.scm
@@ -475,13 +475,23 @@
(else x))))
(define (eval/meta form)
- (parameterize ((##sys#current-module #f)
- (##sys#macro-environment (##sys#meta-macro-environment)))
- ((##sys#compile-to-closure
- form
- '()
- (##sys#current-meta-environment))
- '() ) ))
+ (let ((oldcm (##sys#current-module))
+ (oldme (##sys#macro-environment))
+ (mme (##sys#meta-macro-environment)))
+ (dynamic-wind
+ (lambda ()
+ (##sys#current-module #f)
+ (##sys#macro-environment mme))
+ (lambda ()
+ ((##sys#compile-to-closure
+ form
+ '()
+ (##sys#current-meta-environment))
+ '() ) )
+ (lambda ()
+ (##sys#current-module oldcm)
+ (##sys#meta-macro-environment (##sys#macro-environment))
+ (##sys#macro-environment oldme)))))
(define (emit-import-lib name il)
(let* ((fname (if all-import-libraries
Trap