From 909c20553d8c14901583bcaa9edd6674d60c2796 Mon Sep 17 00:00:00 2001 From: Sam Tobin-Hochstadt Date: Tue, 8 Apr 2008 17:42:13 +0000 Subject: [PATCH] Use contracts for def-binding. Better error messages from require/typed. svn: r9204 --- collects/typed-scheme/private/def-binding.ss | 13 +++++++------ collects/typed-scheme/private/require-contract.ss | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/collects/typed-scheme/private/def-binding.ss b/collects/typed-scheme/private/def-binding.ss index a7314d9aec..0b383b227c 100644 --- a/collects/typed-scheme/private/def-binding.ss +++ b/collects/typed-scheme/private/def-binding.ss @@ -1,10 +1,11 @@ #lang scheme/base +(require scheme/contract) -(provide (struct-out binding) - (struct-out def-binding) - (struct-out def-stx-binding)) +(define-struct binding (name) #:transparent) +(define-struct (def-binding binding) (ty) #:transparent) +(define-struct (def-stx-binding binding) () #:transparent) -(define-struct binding (name) #:inspector #f) -(define-struct (def-binding binding) (ty) #:inspector #f) -(define-struct (def-stx-binding binding) () #:inspector #f) +(provide/contract (struct binding ([name identifier?])) + (struct (def-binding binding) ([name identifier?] [ty any/c])) + (struct (def-stx-binding binding) ([name identifier?]))) diff --git a/collects/typed-scheme/private/require-contract.ss b/collects/typed-scheme/private/require-contract.ss index 265b06a2ec..a31bb1b89c 100644 --- a/collects/typed-scheme/private/require-contract.ss +++ b/collects/typed-scheme/private/require-contract.ss @@ -18,4 +18,4 @@ (syntax-case stx () [(require/contract nm cnt lib) #`(begin (require (only-in lib [nm tmp])) - (define-ignored nm (contract cnt tmp '#,(syntax->datum #'nm) 'never-happen #'#,stx)))])) + (define-ignored nm (contract cnt tmp '#,(syntax->datum #'nm) 'never-happen (quote-syntax nm))))]))