define can redefine a syntax binding

This commit is contained in:
Alex Shinn 2011-03-06 13:00:00 +09:00
parent e6ba6e59a5
commit a14d03b1a3

4
eval.c
View file

@ -659,7 +659,9 @@ static sexp analyze_define (sexp ctx, sexp x) {
value = analyze_lambda(ctx, tmp); value = analyze_lambda(ctx, tmp);
} else } else
value = analyze(ctx, sexp_caddr(x)); value = analyze(ctx, sexp_caddr(x));
ref = analyze_var_ref(ctx, name, &varenv); tmp = sexp_env_cell_loc(env, name, &varenv);
if (!tmp) tmp = sexp_env_cell_create(ctx, env, name, SEXP_UNDEF, &varenv);
ref = sexp_make_ref(ctx, name, tmp);
if (sexp_exceptionp(ref)) { if (sexp_exceptionp(ref)) {
res = ref; res = ref;
} else if (sexp_exceptionp(value)) { } else if (sexp_exceptionp(value)) {