fix phase-shifted compile-time use of `variable-reference->namespace'

This commit is contained in:
Matthew Flatt 2012-05-16 10:41:09 -06:00
parent 3dcc8ec92f
commit ca33321aa7
2 changed files with 17 additions and 0 deletions

View File

@ -776,6 +776,18 @@
(dynamic-require ''order-check-module #f)) (dynamic-require ''order-check-module #f))
(test "'a\n'b\n" get-output-string o)) (test "'a\n'b\n" get-output-string o))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Check phase-shifted, compile-time use of `variable-reference->namespace'
(module uses-variable-reference->namespace racket/base
(require (for-syntax racket/base))
(begin-for-syntax
(variable-reference->namespace (#%variable-reference))))
(module uses-uses-variable-reference->namespace racket/base
(require (for-template 'uses-variable-reference->namespace)))
(require 'uses-uses-variable-reference->namespace)
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(report-errs) (report-errs)

View File

@ -2695,6 +2695,11 @@ static int add_simple_require_renames(Scheme_Object *orig_src,
void scheme_prep_namespace_rename(Scheme_Env *menv) void scheme_prep_namespace_rename(Scheme_Env *menv)
{ {
while (menv->mod_phase > 0) {
scheme_prepare_template_env(menv);
menv = menv->template_env;
}
scheme_prepare_exp_env(menv); scheme_prepare_exp_env(menv);
start_module(menv->module, menv, 0, NULL, -1, 1, menv->phase, scheme_null, 1); start_module(menv->module, menv, 0, NULL, -1, 1, menv->phase, scheme_null, 1);