fix some error-message reporting for mzscheme define-struct
svn: r8953 original commit: 9ecf9dfe4aedc729a71fc525399e89caae066e2f
This commit is contained in:
parent
8dc8589a9a
commit
db1a358d81
|
@ -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 ()
|
||||
(lambda (stx)
|
||||
(with-syntax ([orig stx])
|
||||
(syntax-case stx ()
|
||||
[(_ base (field ...))
|
||||
(define-struct* base (field ...) #:mutable)]
|
||||
#'(define-struct/derived orig base (field ...) #:mutable)]
|
||||
[(_ base (field ...) insp)
|
||||
(define-struct* base (field ...) #:mutable #:inspector 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 ()
|
||||
|
|
Loading…
Reference in New Issue
Block a user