diff --git a/collects/tests/racket/submodule.rktl b/collects/tests/racket/submodule.rktl index 1b40de865d..2c68e8582b 100644 --- a/collects/tests/racket/submodule.rktl +++ b/collects/tests/racket/submodule.rktl @@ -798,6 +798,7 @@ (test 10 values x-from-submodule-out) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; check `syntax-local-submodules' in compile and expand modes (let ([e '(module x racket/base (require (for-syntax racket/base)) @@ -817,6 +818,21 @@ (eval (expand e)) (test '(m) dynamic-require ''x 'x))) +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; check context on `#%module-begin' for a subform + +(module check-submodule-module-begin '#%kernel + (module mb racket/base + (require (for-syntax racket/base)) + (provide (except-out (all-from-out racket/base) #%module-begin) + (rename-out [module-begin #%module-begin])) + (define-syntax (module-begin stx) + #`(#%module-begin #,(datum->syntax stx ;; should have initial imports + '(provide (all-defined-out)))))) + (module n (submod ".." mb) + (void) + (void))) + ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (report-errs) diff --git a/src/racket/src/module.c b/src/racket/src/module.c index ca2a956ba3..dde2dbd7d9 100644 --- a/src/racket/src/module.c +++ b/src/racket/src/module.c @@ -7154,7 +7154,7 @@ static Scheme_Object *do_module(Scheme_Object *form, Scheme_Comp_Env *env, check_mb = 1; } - fm = scheme_datum_to_syntax(fm, form, form, 0, 2); + fm = scheme_datum_to_syntax(fm, form, mb_ctx, 0, 2); if (check_mb) { SCHEME_EXPAND_OBSERVE_TAG(rec[drec].observer, fm);