From a14d03b1a331f2625e5d9255255de73b9a25a474 Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Sun, 6 Mar 2011 13:00:00 +0900 Subject: [PATCH] define can redefine a syntax binding --- eval.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/eval.c b/eval.c index 7b2d207a..b7154ff3 100644 --- a/eval.c +++ b/eval.c @@ -659,7 +659,9 @@ static sexp analyze_define (sexp ctx, sexp x) { value = analyze_lambda(ctx, tmp); } else 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)) { res = ref; } else if (sexp_exceptionp(value)) {