From d85a267c42023b706e39a0ec8fe027eaa7c623cf Mon Sep 17 00:00:00 2001 From: Asumu Takikawa Date: Wed, 12 Aug 2015 19:21:31 -0400 Subject: [PATCH] Declare require/typed internal identifier first Uses the `define-syntaxes` trick to declare the identifier so that its binding symbol doesn't change later. --- typed-racket-lib/typed-racket/base-env/prims-contract.rkt | 4 ++++ 1 file changed, 4 insertions(+) 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 f6f46137..1fd42875 100644 --- a/typed-racket-lib/typed-racket/base-env/prims-contract.rkt +++ b/typed-racket-lib/typed-racket/base-env/prims-contract.rkt @@ -158,6 +158,10 @@ (make-contract-def-rhs #'ty #f (attribute parent)))) (quasisyntax/loc stx (begin + ;; register the identifier so that it has a binding (for top-level) + #,@(if (eq? (syntax-local-context) 'top-level) + (list #'(define-syntaxes (hidden) (values))) + null) #,(internal #'(require/typed-internal hidden ty . sm)) #,(ignore #`(require/contract nm.spec hidden #,cnt* lib))))])) (values (r/t-maker #t) (r/t-maker #f))))