diff --git a/collects/mzlib/private/contract-arrow.ss b/collects/mzlib/private/contract-arrow.ss index 0a9a658..4eb6f11 100644 --- a/collects/mzlib/private/contract-arrow.ss +++ b/collects/mzlib/private/contract-arrow.ss @@ -33,7 +33,7 @@ (let ([proj-x (contract-projection rngs-x)] ...) (simple-contract #:name - (build-compound-type-name 'unconstrained-domain-> ((name-get rngs-x) rngs-x) ...) + (build-compound-type-name 'unconstrained-domain-> (contract-name rngs-x) ...) #:projection (λ (blame) (let ([p-app-x (proj-x blame)] ...) diff --git a/collects/mzlib/private/contract-define.ss b/collects/mzlib/private/contract-define.ss index 9bc54bd..df8215b 100644 --- a/collects/mzlib/private/contract-define.ss +++ b/collects/mzlib/private/contract-define.ss @@ -2,9 +2,11 @@ (provide define/contract) -(require (for-syntax scheme/base) +(require (for-syntax scheme/base + unstable/srcloc + (prefix-in a: scheme/contract/private/helpers)) (only-in scheme/contract contract) - (for-syntax (prefix-in a: scheme/contract/private/helpers))) + unstable/location) ;; First, we have the old define/contract implementation, which ;; is still used in mzlib/contract. @@ -12,7 +14,7 @@ (define-for-syntax (make-define/contract-transformer contract-id id) (make-set!-transformer (λ (stx) - (with-syntax ([neg-blame-str (a:build-src-loc-string stx)] + (with-syntax ([neg-blame-str (source-location->string stx)] [contract-id contract-id] [id id]) (syntax-case stx (set!) @@ -27,7 +29,8 @@ id (syntax->datum (quote-syntax f)) neg-blame-str - (quote-syntax f)) + (quote f) + (quote-srcloc f)) arg ...))] [ident @@ -37,7 +40,8 @@ id (syntax->datum (quote-syntax ident)) neg-blame-str - (quote-syntax ident)))]))))) + (quote ident) + (quote-srcloc ident)))]))))) ;; (define/contract id contract expr) ;; defines `id' with `contract'; initially binding