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;