From 7397f710e28f25b6af9b08381ace1ed4d6222875 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 2 Dec 2011 13:58:19 -0700 Subject: [PATCH] fix reconstruction of `provide' forms in module expansion --- collects/tests/racket/macro.rktl | 15 +++++++++++++++ src/racket/src/module.c | 3 ++- 2 files changed, 17 insertions(+), 1 deletion(-) 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)));