diff --git a/collects/tests/racket/macro.rktl b/collects/tests/racket/macro.rktl index 66699f0199..166735cacb 100644 --- a/collects/tests/racket/macro.rktl +++ b/collects/tests/racket/macro.rktl @@ -665,6 +665,21 @@ (define printf 'ok!)) (require 'phase-providing-check) +;; ---------------------------------------- +;; Check reconstruction of `provide' forms: + +(test #t + 'provide + (syntax-case (expand '(module m racket + (define-for-syntax x 8) + (provide (for-meta 1 x)))) () + [(module m racket + (#%module-begin + defn + (#%provide (for-meta 1 x)))) + #t] + [else #f])) + ;; ---------------------------------------- (report-errs) diff --git a/src/racket/src/module.c b/src/racket/src/module.c index c6cf6c4c56..7502522d46 100644 --- a/src/racket/src/module.c +++ b/src/racket/src/module.c @@ -9141,7 +9141,8 @@ void parse_provides(Scheme_Object *form, Scheme_Object *fst, Scheme_Object *e, } if (!SAME_OBJ(mode, scheme_make_integer(0))) { Scheme_Object *f; - f = SCHEME_STX_CAR(mode_stx); + f = SCHEME_STX_CDR(mode_stx); + f = SCHEME_STX_CAR(f); a = scheme_make_pair(for_meta_symbol, scheme_make_pair(f, scheme_make_pair(a, scheme_null)));