fix incorrect propagation of name via syntax-local-name
Merge to v6.0
This commit is contained in:
parent
80d0b2fcc3
commit
4abe7d2657
|
@ -104,4 +104,8 @@
|
||||||
object-name
|
object-name
|
||||||
(eval (read (open-input-string "(let () (define-struct CP (a)) make-CP)")))))
|
(eval (read (open-input-string "(let () (define-struct CP (a)) make-CP)")))))
|
||||||
|
|
||||||
|
|
||||||
|
(err/rt-test (let ([unmentionable ((lambda (x #:a a) 1) 1 2)]) 5)
|
||||||
|
(lambda (exn) (not (regexp-match? #rx"unmentionable" (exn-message exn)))))
|
||||||
|
|
||||||
(report-errs)
|
(report-errs)
|
||||||
|
|
|
@ -4933,12 +4933,17 @@ compile_expand_app(Scheme_Object *orig_form, Scheme_Comp_Env *env,
|
||||||
/* naya will be prefixed and returned... */
|
/* naya will be prefixed and returned... */
|
||||||
}
|
}
|
||||||
} else if (rec[drec].comp) {
|
} else if (rec[drec].comp) {
|
||||||
Scheme_Object *name, *origname, *gval, *orig_rest_form, *rest_form;
|
Scheme_Object *name, *origname, *gval, *orig_rest_form, *rest_form, *vname;
|
||||||
name = SCHEME_STX_CAR(form);
|
name = SCHEME_STX_CAR(form);
|
||||||
origname = name;
|
origname = name;
|
||||||
|
|
||||||
|
vname = rec[drec].value_name;
|
||||||
|
rec[drec].value_name = scheme_false;
|
||||||
|
|
||||||
name = scheme_check_immediate_macro(name, env, rec, drec, 0, &gval, NULL, NULL);
|
name = scheme_check_immediate_macro(name, env, rec, drec, 0, &gval, NULL, NULL);
|
||||||
|
|
||||||
|
rec[drec].value_name = vname;
|
||||||
|
|
||||||
/* look for ((lambda (x ...) ....) ....) or ((lambda x ....) ....) */
|
/* look for ((lambda (x ...) ....) ....) or ((lambda x ....) ....) */
|
||||||
if (SAME_OBJ(gval, scheme_lambda_syntax)) {
|
if (SAME_OBJ(gval, scheme_lambda_syntax)) {
|
||||||
Scheme_Object *argsnbody, *d_name;
|
Scheme_Object *argsnbody, *d_name;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user