diff --git a/collects/tests/racket/syntax.rktl b/collects/tests/racket/syntax.rktl index a73c98fefc..26ee859ff5 100644 --- a/collects/tests/racket/syntax.rktl +++ b/collects/tests/racket/syntax.rktl @@ -1637,6 +1637,28 @@ f-id (eval '(extract f f2 f2 #t)))) +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Check interaction of marks, `rename-out', and `free-identifier=?' + +(module check-free-eq-with-rename racket/base + (require (for-syntax racket/base)) + (provide (rename-out [prefix:quote quote]) + check) + (define-syntax (check stx) + (syntax-case stx () + [(_ id) #`#,(free-identifier=? #'id #'prefix:quote)])) + (define-syntax-rule (prefix:quote x) (quote x))) + +(module use-rename-checker racket/base + (define-syntax-rule (body) + (begin + (provide v) + (require 'check-free-eq-with-rename) + (define v (check quote)))) + (body)) + +(test #t dynamic-require ''use-rename-checker 'v) + ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (report-errs) diff --git a/src/racket/src/syntax.c b/src/racket/src/syntax.c index f3b197934f..6559ba94a9 100644 --- a/src/racket/src/syntax.c +++ b/src/racket/src/syntax.c @@ -4549,7 +4549,12 @@ static Scheme_Object *get_module_src_name(Scheme_Object *a, Scheme_Object *orig_ if (SCHEME_FALSEP(bdg)) bdg = get_old_module_env(a); } - result = search_shared_pes(mrn->shared_pes, glob_id, a, bdg, NULL, 1, 0, NULL); + rename = search_shared_pes(mrn->shared_pes, glob_id, a, bdg, NULL, 1, 0, NULL); + if (rename) { + if (mrn->kind == mzMOD_RENAME_MARKED) + skip_other_mods = 1; + result = rename; + } } else { /* match; set result: */ if (mrn->kind == mzMOD_RENAME_MARKED)