fix (#%variable-reference) in let-syntax RHS (PR 10696)
svn: r17745
This commit is contained in:
parent
d8b7906fd5
commit
a6231d88e9
|
@ -9723,7 +9723,7 @@ static void *eval_k(void)
|
|||
v = scheme_eval_clone(v);
|
||||
rp = scheme_prefix_eval_clone(top->prefix);
|
||||
|
||||
save_runstack = scheme_push_prefix(env, top->prefix, NULL, NULL, 0, env->phase);
|
||||
save_runstack = scheme_push_prefix(env, top->prefix, NULL, NULL, 0, env->phase, NULL);
|
||||
|
||||
if (as_tail) {
|
||||
/* Cons up a closure to capture the prefix */
|
||||
|
@ -11031,7 +11031,8 @@ int scheme_prefix_depth(Resolve_Prefix *rp)
|
|||
|
||||
Scheme_Object **scheme_push_prefix(Scheme_Env *genv, Resolve_Prefix *rp,
|
||||
Scheme_Object *src_modidx, Scheme_Object *now_modidx,
|
||||
int src_phase, int now_phase)
|
||||
int src_phase, int now_phase,
|
||||
Scheme_Env *dummy_env)
|
||||
{
|
||||
Scheme_Object **rs_save, **rs, *v, **a;
|
||||
int i, j;
|
||||
|
@ -11056,8 +11057,8 @@ Scheme_Object **scheme_push_prefix(Scheme_Env *genv, Resolve_Prefix *rp,
|
|||
|
||||
for (i = 0; i < rp->num_toplevels; i++) {
|
||||
v = rp->toplevels[i];
|
||||
if (genv)
|
||||
v = link_toplevel(rp->toplevels, i, genv, src_modidx, now_modidx);
|
||||
if (genv || SCHEME_FALSEP(v))
|
||||
v = link_toplevel(rp->toplevels, i, genv ? genv : dummy_env, src_modidx, now_modidx);
|
||||
a[i] = v;
|
||||
}
|
||||
|
||||
|
|
|
@ -4399,7 +4399,7 @@ void *scheme_module_run_finish(Scheme_Env *menv, Scheme_Env *env)
|
|||
|
||||
save_runstack = scheme_push_prefix(menv, m->prefix,
|
||||
m->me->src_modidx, menv->link_midx,
|
||||
0, menv->phase);
|
||||
0, menv->phase, NULL);
|
||||
|
||||
p = scheme_current_thread;
|
||||
save_phase_shift = p->current_phase_shift;
|
||||
|
@ -4782,7 +4782,8 @@ static void eval_exptime(Scheme_Object *names, int count,
|
|||
save_runstack = scheme_push_prefix(genv, rp,
|
||||
(shift ? genv->module->me->src_modidx : NULL),
|
||||
(shift ? genv->link_midx : NULL),
|
||||
1, genv->phase);
|
||||
1, genv->phase,
|
||||
NULL);
|
||||
|
||||
if (is_simple_expr(expr)) {
|
||||
vals = _scheme_eval_linked_expr_multi_wp(expr, scheme_current_thread);
|
||||
|
|
|
@ -2584,7 +2584,8 @@ void scheme_shadow(Scheme_Env *env, Scheme_Object *n, int stxtoo);
|
|||
int scheme_prefix_depth(Resolve_Prefix *rp);
|
||||
Scheme_Object **scheme_push_prefix(Scheme_Env *genv, Resolve_Prefix *rp,
|
||||
Scheme_Object *src_modix, Scheme_Object *now_modix,
|
||||
int src_phase, int now_phase);
|
||||
int src_phase, int now_phase,
|
||||
Scheme_Env *dummy_env);
|
||||
void scheme_pop_prefix(Scheme_Object **rs);
|
||||
|
||||
Scheme_Object *scheme_eval_clone(Scheme_Object *expr);
|
||||
|
|
|
@ -700,7 +700,7 @@ define_execute_with_dynamic_state(Scheme_Object *vec, int delta, int defmacro,
|
|||
if (dm_env) {
|
||||
scheme_prepare_exp_env(dm_env);
|
||||
|
||||
save_runstack = scheme_push_prefix(dm_env->exp_env, rp, NULL, NULL, 1, 1);
|
||||
save_runstack = scheme_push_prefix(dm_env->exp_env, rp, NULL, NULL, 1, 1, NULL);
|
||||
vals = scheme_eval_linked_expr_multi_with_dynamic_state(vals_expr, dyn_state);
|
||||
if (defmacro == 2)
|
||||
dm_env = NULL;
|
||||
|
@ -5850,7 +5850,7 @@ static Scheme_Object *eval_letmacro_rhs(Scheme_Object *a, Scheme_Comp_Env *rhs_e
|
|||
return (Scheme_Object *)scheme_enlarge_runstack(depth, eval_letmacro_rhs_k);
|
||||
}
|
||||
|
||||
save_runstack = scheme_push_prefix(NULL, rp, NULL, NULL, phase, phase);
|
||||
save_runstack = scheme_push_prefix(NULL, rp, NULL, NULL, phase, phase, rhs_env->genv);
|
||||
|
||||
if (scheme_omittable_expr(a, 1, -1, 0, NULL)) {
|
||||
/* short cut */
|
||||
|
|
Loading…
Reference in New Issue
Block a user