fix multiple levels of synclo forward references (issue #399)

This commit is contained in:
Alex Shinn 2017-04-03 15:48:57 +09:00
parent 63688d79b6
commit c3713540d0

3
eval.c
View file

@ -152,8 +152,7 @@ sexp sexp_env_cell_define (sexp ctx, sexp env, sexp key,
return ls; return ls;
} else if (sexp_cdr(ls) == SEXP_UNDEF && } else if (sexp_cdr(ls) == SEXP_UNDEF &&
sexp_synclop(sexp_car(ls)) && sexp_synclop(sexp_car(ls)) &&
sexp_synclo_env(sexp_car(ls)) == env && sexp_identifier_eq(ctx, env, key, sexp_synclo_env(sexp_car(ls)), sexp_synclo_expr(sexp_car(ls)))) {
sexp_synclo_expr(sexp_car(ls)) == key) {
/* handle an undefined renamed reference that would have */ /* handle an undefined renamed reference that would have */
/* resolved to this binding, renamed to what we define here */ /* resolved to this binding, renamed to what we define here */
sexp_car(ls) = key; sexp_car(ls) = key;