From 7f509d52075e9da910b3010b80047a7fab04137c Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Tue, 29 Oct 2002 23:59:22 +0000 Subject: [PATCH] .. original commit: 8fec40b07f04e66a5426250d7ace86d726023922 --- collects/mzlib/contracts.ss | 6 ++++-- collects/tests/mzscheme/contracts.ss | 15 +++++++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/collects/mzlib/contracts.ss b/collects/mzlib/contracts.ss index d12ad6f..a63857d 100644 --- a/collects/mzlib/contracts.ss +++ b/collects/mzlib/contracts.ss @@ -204,14 +204,16 @@ (build-constructor-contract field-contract-ids predicate-id))] [(field-contracts ...) field-contracts] - [(field-contract-ids ...) field-contract-ids]) + [(field-contract-ids ...) field-contract-ids] + [struct-name struct-name]) (syntax (begin (define field-contract-ids field-contracts) ... selector-codes ... mutator-codes ... predicate-code - constructor-code))))) + constructor-code + (provide struct-name)))))) ;; build-constructor-contract : (listof syntax) syntax -> syntax (define (build-constructor-contract field-contract-ids predicate-id) diff --git a/collects/tests/mzscheme/contracts.ss b/collects/tests/mzscheme/contracts.ss index a943285..fd93d78 100644 --- a/collects/tests/mzscheme/contracts.ss +++ b/collects/tests/mzscheme/contracts.ss @@ -502,7 +502,7 @@ (set-s-a! (make-s 1) 2))))) (test/spec-passed - 'provide/contract4 + 'provide/contract5 '(let () (eval '(module contract-test-suite5 mzscheme (require (lib "contracts.ss")) @@ -518,6 +518,17 @@ (make-t 1) (t-a (make-t 1)) (t? (make-t 1)) - (set-t-a! (make-t 1) 2))))))) + (set-t-a! (make-t 1) 2))))) + + (test/spec-passed + 'provide/contract6 + '(let () + (eval '(module contract-test-suite6 mzscheme + (require (lib "contracts.ss")) + (provide/contract (struct s ((a any?)))) + (define-struct s (a)))) + (eval '(require contract-test-suite6)) + (eval '(define-struct (t s) ())))) + )) (report-errs) \ No newline at end of file