From 0bc5a1b06ad5f83a3a82b27c08af005466ddd658 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sun, 19 Jul 2015 12:07:53 -0600 Subject: [PATCH] fix nested `begin-for-syntax` Initialize a phase-2 namespace before trying to use it. --- pkgs/racket-test-core/tests/racket/module.rktl | 8 ++++++++ racket/src/racket/src/module.c | 5 +++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/pkgs/racket-test-core/tests/racket/module.rktl b/pkgs/racket-test-core/tests/racket/module.rktl index 2542ec806d..8c71368351 100644 --- a/pkgs/racket-test-core/tests/racket/module.rktl +++ b/pkgs/racket-test-core/tests/racket/module.rktl @@ -1495,6 +1495,14 @@ case of module-leve bindings; it doesn't cover local bindings. (begin-for-syntax (local-require (only-in racket [+ ++])))) +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Try trivial nested `begin-for-syntax`, +;; avoiding anything else that might prepare phase 2 in advance + +(module starts-phase-2-without-any-content racket + (begin-for-syntax + (begin-for-syntax))) + ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (report-errs) diff --git a/racket/src/racket/src/module.c b/racket/src/racket/src/module.c index d53b9311b3..119152fd44 100644 --- a/racket/src/racket/src/module.c +++ b/racket/src/racket/src/module.c @@ -8968,10 +8968,11 @@ static Scheme_Object *do_module_begin_at_phase(Scheme_Object *form, Scheme_Comp_ SCHEME_EXPAND_OBSERVE_PREPARE_ENV(observer); - frame_scopes = scheme_module_context_use_site_frame_scopes(env->genv->exp_env->stx_context); - scheme_prepare_exp_env(env->genv); scheme_prepare_compile_env(env->genv->exp_env); + + frame_scopes = scheme_module_context_use_site_frame_scopes(env->genv->exp_env->stx_context); + eenv = scheme_new_comp_env(env->genv->exp_env, env->insp, frame_scopes, 0);