From b0c1a33b7d504b55c07f3908b98f0a89401ed222 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 19 May 2003 18:37:29 +0000 Subject: [PATCH] . original commit: 4ba9317cb171a066e8e6e1ccb030f0890d0c7f5a --- collects/mzlib/private/sigutil.ss | 4 +++- collects/mzlib/unitsig.ss | 35 ++++++++++++++++--------------- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/collects/mzlib/private/sigutil.ss b/collects/mzlib/private/sigutil.ss index d560acd..20717f5 100644 --- a/collects/mzlib/private/sigutil.ss +++ b/collects/mzlib/private/sigutil.ss @@ -1115,10 +1115,12 @@ verify-struct-shape signature-vars + signature-structs do-rename get-sig explode-sig explode-named-sigs check-signature-unit-body flatten-signature - flatten-signatures)) + flatten-signatures + struct-def-name)) diff --git a/collects/mzlib/unitsig.ss b/collects/mzlib/unitsig.ss index 515f8ef..13eb538 100644 --- a/collects/mzlib/unitsig.ss +++ b/collects/mzlib/unitsig.ss @@ -279,21 +279,21 @@ [stx-decls (if (syntax-e (syntax global?)) null (make-struct-stx-decls ex-sig #f #f (syntax signame) #f))]) - (syntax - (begin - (dv/iu - ex-flattened - (let ([unit-var unite]) - (verify-linkage-signature-match - 'formname - '(invoke) - (list unit-var) - '(ex-exploded) - '(im-explodeds)) - (signed-unit-unit unit-var)) - prefix - . im-flattened) - . stx-decls))))))))]))) + (syntax/loc stx + (begin + (dv/iu + ex-flattened + (let ([unit-var unite]) + (verify-linkage-signature-match + 'formname + '(invoke) + (list unit-var) + '(ex-exploded) + '(im-explodeds)) + (signed-unit-unit unit-var)) + prefix + . im-flattened) + . stx-decls))))))))]))) (define-syntax define-values/invoke-unit/sig (lambda (stx) @@ -319,9 +319,10 @@ (syntax-case stx () [(_ signame) (let ([sig (get-sig 'provide-signature-elements stx #f (syntax signame))]) - (let ([flattened (flatten-signature #f sig)]) + (let ([flattened (flatten-signature #f sig)] + [structs (map struct-def-name (signature-structs sig))]) (with-syntax ([flattened (map (lambda (x) (datum->syntax-object (syntax signame) x #f)) - flattened)]) + (append flattened structs))]) (syntax/loc stx (provide . flattened)))))]))))