adjust struct constructor expansion to transfer srcloc of use to expansion

This commit is contained in:
Matthew Flatt 2010-08-19 07:38:10 -06:00
parent 7abbff4749
commit 3ea28b0c72

View File

@ -40,13 +40,15 @@
proc))))) proc)))))
(define-for-syntax (self-ctor-transformer orig stx) (define-for-syntax (self-ctor-transformer orig stx)
(with-syntax ([orig orig]) (define (transfer-srcloc orig stx)
(datum->syntax orig (syntax-e orig) stx orig))
(syntax-case stx () (syntax-case stx ()
[(_ arg ...) (datum->syntax stx [(self arg ...) (datum->syntax stx
(syntax-e (syntax (orig arg ...))) (cons (transfer-srcloc orig #'self)
(syntax-e (syntax (arg ...))))
stx stx
stx)] stx)]
[_ (syntax orig)]))) [_ (transfer-srcloc orig stx)]))
(define-values-for-syntax (make-self-ctor-struct-info) (define-values-for-syntax (make-self-ctor-struct-info)
(letrec-values ([(struct: make- ? ref set!) (letrec-values ([(struct: make- ? ref set!)