diff --git a/typed-racket-lib/typed-racket/base-env/prims-contract.rkt b/typed-racket-lib/typed-racket/base-env/prims-contract.rkt index 0a778791..84fd0a5e 100644 --- a/typed-racket-lib/typed-racket/base-env/prims-contract.rkt +++ b/typed-racket-lib/typed-racket/base-env/prims-contract.rkt @@ -193,11 +193,15 @@ #,(internal #'(require/typed-internal hidden ty . sm)) #,(ignore #`(require/contract nm.spec hidden #,cnt* lib))))] [else + (define/with-syntax hidden2 (generate-temporary #'nm.nm)) (quasisyntax/loc stx (begin (require (only-in lib [nm.orig-nm hidden])) - (rename-without-provide nm.nm hidden) - #,(internal #'(require/typed-internal hidden ty . sm))))])])) + ;; need this indirection since `hidden` may expand + ;; to a different identifier that TR doesn't know about + #,(ignore #'(define hidden2 hidden)) + (rename-without-provide nm.nm hidden2) + #,(internal #'(require/typed-internal hidden2 ty . sm))))])])) (values (r/t-maker #t #f) (r/t-maker #f #f) (r/t-maker #f #t)))) diff --git a/typed-racket-test/succeed/unsafe-require.rkt b/typed-racket-test/succeed/unsafe-require.rkt index 3456b39c..0d1ef190 100644 --- a/typed-racket-test/succeed/unsafe-require.rkt +++ b/typed-racket-test/succeed/unsafe-require.rkt @@ -24,6 +24,13 @@ (require typed/racket/unsafe) (unsafe-require/typed racket/base [string-append (-> String String Integer)]) + (unsafe-require/typed racket/list + ;; test a keyword function, which expands differently + [check-duplicates + (->* [(Listof Any)] [(-> Any Any Any) #:key (-> Any Any)] Any)]) + + ;; not unbound + check-duplicates ;; UNSAFE (with-handlers ([(negate exn:fail:contract:blame?) void])