expander: propagate module properties to #%module-begin

Closes #1968
This commit is contained in:
Matthew Flatt 2018-02-28 14:23:22 -07:00
parent de27be536d
commit 6018dcfdf6
3 changed files with 25 additions and 2 deletions

View File

@ -2331,6 +2331,28 @@ case of module-leve bindings; it doesn't cover local bindings.
(test 0 dynamic-require ''uses-a-namespace-to-mutate-x 'done)
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Check that syntax properties are propagated from a
;; `module` form to an implicit `#%module-begin`
(module module-begin-to-export-foo-property racket/base
(require (for-syntax racket/base))
(provide (rename-out [mb #%module-begin]))
(define-syntax (mb stx)
(with-syntax ([FOO-PROP (syntax-property stx 'foo)])
#'(#%module-begin
(provide prop)
(define prop 'FOO-PROP)))))
(eval (syntax-property
(datum->syntax
#f
'(module export-foo-property-as-bar 'module-begin-to-export-foo-property))
'foo "bar"))
(test "bar" dynamic-require ''export-foo-property-as-bar 'prop)
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(report-errs)

View File

@ -614,7 +614,7 @@
;; If `mb-id` is not bound, we'd like to give a clear error message
(unless (resolve mb-id phase)
(raise-syntax-error #f "no #%module-begin binding in the module's language" s))
(define mb (datum->syntax disarmed-scopes-s `(,mb-id ,@bodys) s))
(define mb (datum->syntax disarmed-scopes-s `(,mb-id ,@bodys) s s))
(log-expand mb-ctx 'tag mb)
(when log-rename-one?
(log-expand mb-ctx 'rename-one mb))

View File

@ -71822,7 +71822,8 @@ static const char *startup_source =
" \"no #%module-begin binding in the module's language\""
" s_759)))"
"(values))))"
"(let-values(((mb_2)(datum->syntax$1 disarmed-scopes-s_0(list* mb-id_0 bodys_19) s_759)))"
"(let-values(((mb_2)"
"(datum->syntax$1 disarmed-scopes-s_0(list* mb-id_0 bodys_19) s_759 s_759)))"
"(let-values((()"
"(begin"
"(let-values(((obs_132)(expand-context-observer mb-ctx_1)))"