diff --git a/src/mzscheme/src/eval.c b/src/mzscheme/src/eval.c index b9fb53b998..bc6ef9824d 100644 --- a/src/mzscheme/src/eval.c +++ b/src/mzscheme/src/eval.c @@ -4077,7 +4077,7 @@ scheme_compile_expand_expr(Scheme_Object *form, Scheme_Comp_Env *env, /* FIXME: this needs EXPAND_OBSERVE callbacks. */ var = scheme_stx_track(SCHEME_PTR1_VAL(var), form, form); form = scheme_stx_cert(var, scheme_false, NULL, form, NULL, 1); - if (!rec[drec].comp) { + if (!rec[drec].comp && (rec[drec].depth != -1)) { /* Already fully expanded. */ return form; } diff --git a/src/mzscheme/src/syntax.c b/src/mzscheme/src/syntax.c index ea4dd795a3..2214fbe265 100644 --- a/src/mzscheme/src/syntax.c +++ b/src/mzscheme/src/syntax.c @@ -4434,7 +4434,7 @@ static Scheme_Object *expression_syntax(Scheme_Object *form, Scheme_Comp_Env *en static Scheme_Object *expression_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec) { return single_expand(form, scheme_no_defines(env), erec, drec, 0, - !scheme_is_toplevel(env)); + !(env->flags & SCHEME_TOPLEVEL_FRAME)); }