From cd44e782112b2ef87735878df486d51735e17023 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 1 Sep 2016 09:18:36 -0600 Subject: [PATCH] fix `dynamic-require` on certain forms of re-export from `#%kernel` Closes #1445 --- pkgs/racket-test-core/tests/racket/module.rktl | 11 +++++++++++ racket/src/racket/src/module.c | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/pkgs/racket-test-core/tests/racket/module.rktl b/pkgs/racket-test-core/tests/racket/module.rktl index 7216e663ab..1bdc19931e 100644 --- a/pkgs/racket-test-core/tests/racket/module.rktl +++ b/pkgs/racket-test-core/tests/racket/module.rktl @@ -1816,6 +1816,17 @@ case of module-leve bindings; it doesn't cover local bindings. (lambda (exn) (regexp-match? #rx" already" (exn-message exn)))) +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Check re-export of an identifier from `#%kernel` +;; through a rename transformer: + +(module rexports-values-from-kernel racket/base + (require (for-syntax racket/base)) + (provide f) + (define-syntax f (make-rename-transformer #'values))) + +(dynamic-require ''rexports-values-from-kernel 'f) + ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (report-errs) diff --git a/racket/src/racket/src/module.c b/racket/src/racket/src/module.c index 3d67114d2d..21b32d0e04 100644 --- a/racket/src/racket/src/module.c +++ b/racket/src/racket/src/module.c @@ -1280,7 +1280,8 @@ static Scheme_Object *_dynamic_require(int argc, Scheme_Object *argv[], srcm2 = module_load(srcmname, env, errname); for (j = srcm2->me->rt->num_var_provides; j--; ) { - if (SCHEME_FALSEP(srcm2->me->rt->provide_srcs[j]) + if ((!srcm2->me->rt->provide_srcs + || SCHEME_FALSEP(srcm2->me->rt->provide_srcs[j])) && SAME_OBJ(srcname, srcm2->me->rt->provide_src_names[j])) { /* simple re-export applies: */ srcm = srcm2;