fix problems with syntax-local-get-shadower and syntax-local-lift-require
svn: r14744
This commit is contained in:
parent
5232691355
commit
c9b76801ed
|
@ -4515,6 +4515,8 @@ local_module_introduce(int argc, Scheme_Object *argv[])
|
||||||
if (SCHEME_FALSEP(v)) {
|
if (SCHEME_FALSEP(v)) {
|
||||||
if (env->genv->rename_set)
|
if (env->genv->rename_set)
|
||||||
s = scheme_add_rename(s, env->genv->rename_set);
|
s = scheme_add_rename(s, env->genv->rename_set);
|
||||||
|
if (env->genv->post_ex_rename_set)
|
||||||
|
s = scheme_add_rename(s, env->genv->post_ex_rename_set);
|
||||||
}
|
}
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
|
|
|
@ -5555,6 +5555,7 @@ static Scheme_Object *do_module(Scheme_Object *form, Scheme_Comp_Env *env,
|
||||||
if (rec[drec].comp || (rec[drec].depth != -2)) {
|
if (rec[drec].comp || (rec[drec].depth != -2)) {
|
||||||
/* rename tables no longer needed; NULL them out */
|
/* rename tables no longer needed; NULL them out */
|
||||||
menv->rename_set = NULL;
|
menv->rename_set = NULL;
|
||||||
|
menv->post_ex_rename_set = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_END_EXPAND(m);
|
LOG_END_EXPAND(m);
|
||||||
|
@ -6020,6 +6021,7 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env,
|
||||||
post_ex_rn_set = scheme_make_module_rename_set(mzMOD_RENAME_MARKED, rn_set);
|
post_ex_rn_set = scheme_make_module_rename_set(mzMOD_RENAME_MARKED, rn_set);
|
||||||
post_ex_rn = scheme_get_module_rename_from_set(post_ex_rn_set, scheme_make_integer(0), 1);
|
post_ex_rn = scheme_get_module_rename_from_set(post_ex_rn_set, scheme_make_integer(0), 1);
|
||||||
post_ex_et_rn = scheme_get_module_rename_from_set(post_ex_rn_set, scheme_make_integer(1), 1);
|
post_ex_et_rn = scheme_get_module_rename_from_set(post_ex_rn_set, scheme_make_integer(1), 1);
|
||||||
|
env->genv->post_ex_rename_set = post_ex_rn_set;
|
||||||
|
|
||||||
/* For syntax-local-context, etc., in a d-s RHS: */
|
/* For syntax-local-context, etc., in a d-s RHS: */
|
||||||
rhs_env = scheme_new_comp_env(env->genv, env->insp, SCHEME_TOPLEVEL_FRAME);
|
rhs_env = scheme_new_comp_env(env->genv, env->insp, SCHEME_TOPLEVEL_FRAME);
|
||||||
|
@ -9098,14 +9100,11 @@ static void check_dup_require(Scheme_Object *prnt_name, Scheme_Object *name,
|
||||||
}
|
}
|
||||||
|
|
||||||
static Scheme_Object *
|
static Scheme_Object *
|
||||||
top_level_require_execute(Scheme_Object *data)
|
do_require_execute(Scheme_Env *env, Scheme_Object *form)
|
||||||
{
|
{
|
||||||
Scheme_Hash_Table *ht;
|
Scheme_Hash_Table *ht;
|
||||||
Scheme_Object *rn_set, *modidx;
|
Scheme_Object *rn_set, *modidx;
|
||||||
Scheme_Object *form = SCHEME_CDR(data), *rest;
|
Scheme_Object *rest;
|
||||||
Scheme_Env *env;
|
|
||||||
|
|
||||||
env = scheme_environment_from_dummy(SCHEME_CAR(data));
|
|
||||||
|
|
||||||
if (env->module)
|
if (env->module)
|
||||||
modidx = env->module->self_modidx;
|
modidx = env->module->self_modidx;
|
||||||
|
@ -9147,6 +9146,13 @@ top_level_require_execute(Scheme_Object *data)
|
||||||
return scheme_void;
|
return scheme_void;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Scheme_Object *
|
||||||
|
top_level_require_execute(Scheme_Object *data)
|
||||||
|
{
|
||||||
|
do_require_execute(scheme_environment_from_dummy(SCHEME_CAR(data)),
|
||||||
|
SCHEME_CDR(data));
|
||||||
|
}
|
||||||
|
|
||||||
static Scheme_Object *
|
static Scheme_Object *
|
||||||
top_level_require_jit(Scheme_Object *data)
|
top_level_require_jit(Scheme_Object *data)
|
||||||
{
|
{
|
||||||
|
@ -9252,7 +9258,7 @@ Scheme_Object *scheme_toplevel_require_for_expand(Scheme_Object *module_path,
|
||||||
|
|
||||||
form = make_require_form(module_path, phase, mark);
|
form = make_require_form(module_path, phase, mark);
|
||||||
|
|
||||||
do_require(form, cenv, NULL, 0);
|
do_require_execute(cenv->genv, form);
|
||||||
|
|
||||||
return form;
|
return form;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2090,6 +2090,7 @@ static int namespace_val_MARK(void *p) {
|
||||||
|
|
||||||
gcMARK(e->rename_set);
|
gcMARK(e->rename_set);
|
||||||
gcMARK(e->temp_marked_names);
|
gcMARK(e->temp_marked_names);
|
||||||
|
gcMARK(e->post_ex_rename_set);
|
||||||
|
|
||||||
gcMARK(e->syntax);
|
gcMARK(e->syntax);
|
||||||
gcMARK(e->exp_env);
|
gcMARK(e->exp_env);
|
||||||
|
@ -2128,6 +2129,7 @@ static int namespace_val_FIXUP(void *p) {
|
||||||
|
|
||||||
gcFIXUP(e->rename_set);
|
gcFIXUP(e->rename_set);
|
||||||
gcFIXUP(e->temp_marked_names);
|
gcFIXUP(e->temp_marked_names);
|
||||||
|
gcFIXUP(e->post_ex_rename_set);
|
||||||
|
|
||||||
gcFIXUP(e->syntax);
|
gcFIXUP(e->syntax);
|
||||||
gcFIXUP(e->exp_env);
|
gcFIXUP(e->exp_env);
|
||||||
|
|
|
@ -833,6 +833,7 @@ namespace_val {
|
||||||
|
|
||||||
gcMARK(e->rename_set);
|
gcMARK(e->rename_set);
|
||||||
gcMARK(e->temp_marked_names);
|
gcMARK(e->temp_marked_names);
|
||||||
|
gcMARK(e->post_ex_rename_set);
|
||||||
|
|
||||||
gcMARK(e->syntax);
|
gcMARK(e->syntax);
|
||||||
gcMARK(e->exp_env);
|
gcMARK(e->exp_env);
|
||||||
|
|
|
@ -2552,6 +2552,7 @@ struct Scheme_Env {
|
||||||
|
|
||||||
Scheme_Object *rename_set;
|
Scheme_Object *rename_set;
|
||||||
Scheme_Hash_Table *temp_marked_names; /* used to correlate imports with re-exports */
|
Scheme_Hash_Table *temp_marked_names; /* used to correlate imports with re-exports */
|
||||||
|
Scheme_Object *post_ex_rename_set; /* during module expansion */
|
||||||
|
|
||||||
Scheme_Bucket_Table *syntax;
|
Scheme_Bucket_Table *syntax;
|
||||||
struct Scheme_Env *exp_env;
|
struct Scheme_Env *exp_env;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user