diff --git a/collects/scheme/private/old-ds.ss b/collects/scheme/private/old-ds.ss index a5807d8..dec1d94 100644 --- a/collects/scheme/private/old-ds.ss +++ b/collects/scheme/private/old-ds.ss @@ -1,16 +1,25 @@ (module old-ds '#%kernel (#%require "define-struct.ss" - (for-syntax "stxcase-scheme.ss")) + (for-syntax '#%kernel + "stxcase-scheme.ss")) (#%provide define-struct let-struct datum) (define-syntaxes (define-struct) - (syntax-rules () - [(_ base (field ...)) - (define-struct* base (field ...) #:mutable)] - [(_ base (field ...) insp) - (define-struct* base (field ...) #:mutable #:inspector insp)])) + (lambda (stx) + (with-syntax ([orig stx]) + (syntax-case stx () + [(_ base (field ...)) + #'(define-struct/derived orig base (field ...) #:mutable)] + [(_ base (field ...) insp) + (with-syntax ([insp + (if (keyword? (syntax-e #'insp)) + (datum->syntax #'insp + (cons '#%datum #'insp) + #'insp) + #'insp)]) + #'(define-struct/derived orig base (field ...) #:mutable #:inspector insp))])))) (define-syntaxes (let-struct) (syntax-rules ()