fix set!' of
define-for-syntax'ed varable in `let-syntax' RHS
This commit is contained in:
parent
b2edac3179
commit
1762a9a872
|
@ -1353,7 +1353,24 @@
|
|||
(syntax-case stx ()
|
||||
[(_ v) (datum->syntax stx (kw/f #:x #'v opt))]))
|
||||
(kw/g 7))))
|
||||
|
||||
|
||||
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Check mutation of local define-for-syntax in let-syntax:
|
||||
|
||||
(module set-local-dfs racket/base
|
||||
(require (for-syntax racket/base))
|
||||
(provide ten)
|
||||
|
||||
(define-for-syntax tl-var 9)
|
||||
|
||||
(define ten
|
||||
(let-syntax ([x1 (lambda (stx)
|
||||
(set! tl-var (add1 tl-var))
|
||||
(datum->syntax stx tl-var))])
|
||||
(x1))))
|
||||
|
||||
(test 10 dynamic-require ''set-local-dfs 'ten)
|
||||
|
||||
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(report-errs)
|
||||
|
|
|
@ -3112,7 +3112,10 @@ scheme_lookup_binding(Scheme_Object *find_id, Scheme_Comp_Env *env, int flags,
|
|||
modpos, SCHEME_INT_VAL(mod_defn_phase));
|
||||
}
|
||||
|
||||
if (!modname && (flags & (SCHEME_SETTING | SCHEME_REFERENCING)) && genv->module) {
|
||||
if (!modname
|
||||
&& (flags & (SCHEME_SETTING | SCHEME_REFERENCING))
|
||||
&& genv->module
|
||||
&& !(flags & SCHEME_RESOLVE_MODIDS)) {
|
||||
/* Need to return a variable reference in this case, too. */
|
||||
return scheme_hash_module_variable(env->genv, genv->module->self_modidx, find_global_id,
|
||||
genv->module->insp,
|
||||
|
|
Loading…
Reference in New Issue
Block a user