diff --git a/collects/tests/racket/module.rktl b/collects/tests/racket/module.rktl index c632ce392d..9240457e34 100644 --- a/collects/tests/racket/module.rktl +++ b/collects/tests/racket/module.rktl @@ -685,6 +685,24 @@ (q go)) +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Check modidx for 'origin items + +(syntax-case (parameterize ([current-namespace (make-base-namespace)]) + (expand + '(module m racket/base + (define-syntax-rule (m x) 1) + (m x)))) () + [(_ name lang (mb ds (app cwv (lam () (qt one)) pnt))) + (begin + (test 1 syntax-e #'one) + (test #t identifier? (car (syntax-property #'one 'origin))) + (test #t symbol? + (resolved-module-path-name + (module-path-index-resolve + (car (identifier-binding (car (syntax-property #'one 'origin))))))))]) + + ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (report-errs) diff --git a/src/racket/src/module.c b/src/racket/src/module.c index fb4d7f31c9..f18113a718 100644 --- a/src/racket/src/module.c +++ b/src/racket/src/module.c @@ -6862,7 +6862,10 @@ static Scheme_Object *do_module(Scheme_Object *form, Scheme_Comp_Env *env, fm = scheme_stx_phase_shift(fm, NULL, self_modidx, this_empty_self_modidx, NULL, NULL); /* make self_modidx like the empty modidx */ - ((Scheme_Modidx *)self_modidx)->resolved = ((Scheme_Modidx *)this_empty_self_modidx)->resolved; + if (SAME_OBJ(this_empty_self_modidx, empty_self_modidx)) + ((Scheme_Modidx *)self_modidx)->resolved = empty_self_modname; + else + ((Scheme_Modidx *)self_modidx)->resolved = ((Scheme_Modidx *)this_empty_self_modidx)->resolved; } if (rec[drec].comp || (rec[drec].depth != -2)) {