From 62f5b2c4e4cdefa18fa36275074ff9fe376ddaf3 Mon Sep 17 00:00:00 2001 From: Alex Knauth Date: Mon, 12 Sep 2016 18:08:57 -0400 Subject: [PATCH] syntax/srcloc: disarm and rearm when rebuilding syntax (#1448) --- racket/collects/syntax/srcloc.rkt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/racket/collects/syntax/srcloc.rkt b/racket/collects/syntax/srcloc.rkt index 39ca198c3a..e81420e9d1 100644 --- a/racket/collects/syntax/srcloc.rkt +++ b/racket/collects/syntax/srcloc.rkt @@ -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)))