fix namespace-attach

svn: r9399
This commit is contained in:
Matthew Flatt 2008-04-22 20:08:01 +00:00
parent 82e2df7f8b
commit 8203977a21

View File

@ -238,6 +238,7 @@ static void start_module(Scheme_Module *m, Scheme_Env *env, int restart, Scheme_
int eval_exp, int eval_run, Scheme_Object *cycle_list); int eval_exp, int eval_run, Scheme_Object *cycle_list);
static void finish_expstart_module(Scheme_Env *menv); static void finish_expstart_module(Scheme_Env *menv);
static void finish_expstart_module_in_namespace(Scheme_Env *menv, Scheme_Env *env); static void finish_expstart_module_in_namespace(Scheme_Env *menv, Scheme_Env *env);
static void finish_start_module_in_namespace(Scheme_Env *menv, Scheme_Env *env, int eval_run);
static void eval_module_body(Scheme_Env *menv); static void eval_module_body(Scheme_Env *menv);
static Scheme_Object *do_namespace_require(Scheme_Env *env, int argc, Scheme_Object *argv[], static Scheme_Object *do_namespace_require(Scheme_Env *env, int argc, Scheme_Object *argv[],
@ -1277,7 +1278,7 @@ static Scheme_Object *namespace_attach_module(int argc, Scheme_Object *argv[])
if (first_iteration) { if (first_iteration) {
/* Run everything */ /* Run everything */
first_iteration = 0; first_iteration = 0;
start_module(menv->module, from_env, 0, menv->module->self_modidx, 1, 1, scheme_null); finish_start_module_in_namespace(menv, from_env, 1);
} }
@ -3585,7 +3586,7 @@ void scheme_run_module_exptime(Scheme_Env *menv, int set_ns)
show_done("rne!", menv, 1, 1); show_done("rne!", menv, 1, 1);
} }
static void finish_expstart_module_in_namespace(Scheme_Env *menv, Scheme_Env *from_env) static void finish_start_module_in_namespace(Scheme_Env *menv, Scheme_Env *from_env, int eval_run)
{ {
Scheme_Cont_Frame_Data cframe; Scheme_Cont_Frame_Data cframe;
Scheme_Config *config; Scheme_Config *config;
@ -3599,12 +3600,17 @@ static void finish_expstart_module_in_namespace(Scheme_Env *menv, Scheme_Env *fr
scheme_set_cont_mark(scheme_parameterization_key, (Scheme_Object *)config); scheme_set_cont_mark(scheme_parameterization_key, (Scheme_Object *)config);
} }
start_module(menv->module, menv, 0, NULL, 1, 0, scheme_null); start_module(menv->module, menv, 0, NULL, 1, eval_run, scheme_null);
if (from_env) if (from_env)
scheme_pop_continuation_frame(&cframe); scheme_pop_continuation_frame(&cframe);
} }
static void finish_expstart_module_in_namespace(Scheme_Env *menv, Scheme_Env *from_env)
{
return finish_start_module_in_namespace(menv, from_env, 0);
}
static void start_module(Scheme_Module *m, Scheme_Env *env, int restart, static void start_module(Scheme_Module *m, Scheme_Env *env, int restart,
Scheme_Object *syntax_idx, int eval_exp, int eval_run, Scheme_Object *syntax_idx, int eval_exp, int eval_run,
Scheme_Object *cycle_list) Scheme_Object *cycle_list)