syntax/srcloc: disarm and rearm when rebuilding syntax (#1448)

This commit is contained in:
Alex Knauth 2016-09-12 18:08:57 -04:00 committed by Ryan Culpepper
parent fd4ce5afe4
commit 62f5b2c4e4

View File

@ -143,12 +143,18 @@
(define (rebuild x src line col pos span)
(cond
[(syntax? x) (datum->syntax x (syntax-e x) (list src line col pos span) x x)]
[(syntax? x) (rebuild-syntax x src line col pos span)]
[(srcloc? x) (make-srcloc src line col pos span)]
[(vector? x) (vector src line col pos span)]
[(or (list? x) src line col pos span) (list src line col pos span)]
[else #f]))
(define (rebuild-syntax stx src line col pos span)
(define stx* (syntax-disarm stx #f))
(syntax-rearm
(datum->syntax stx* (syntax-e stx*) (list src line col pos span) stx* stx*)
stx))
(define (good-srcloc x src line col pos span)
(if (srcloc? x) x (make-srcloc src line col pos span)))