From ca33321aa7a0b243f313e46bc2ea94f973b8a6f3 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 16 May 2012 10:41:09 -0600 Subject: [PATCH] fix phase-shifted compile-time use of `variable-reference->namespace' --- collects/tests/racket/module.rktl | 12 ++++++++++++ src/racket/src/module.c | 5 +++++ 2 files changed, 17 insertions(+) diff --git a/collects/tests/racket/module.rktl b/collects/tests/racket/module.rktl index 0d1ef2c8b7..82e33fcb6a 100644 --- a/collects/tests/racket/module.rktl +++ b/collects/tests/racket/module.rktl @@ -776,6 +776,18 @@ (dynamic-require ''order-check-module #f)) (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) diff --git a/src/racket/src/module.c b/src/racket/src/module.c index dcfaac74d2..2d875a7b93 100644 --- a/src/racket/src/module.c +++ b/src/racket/src/module.c @@ -2695,6 +2695,11 @@ static int add_simple_require_renames(Scheme_Object *orig_src, 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); start_module(menv->module, menv, 0, NULL, -1, 1, menv->phase, scheme_null, 1);