commit 76a1fdf04f286fce35c699b5b12de4f4d0f679ad
parent 6d440f5a6b9da44006e072f670dc46b2b40e8827
Author: Matthew Flatt <mflatt@racket-lang.org>
Date: Sun, 8 Mar 2015 16:23:08 -0600
fix `scribble/text` with `syntax-local-identifier-as-binding`
Diffstat:
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/scribble-text-lib/scribble/text/syntax-utils.rkt b/scribble-text-lib/scribble/text/syntax-utils.rkt
@@ -123,6 +123,16 @@
(if (null? exprs)
(values (reverse ds) (reverse es) '())
(let ([expr* (local-expand (car exprs) ctx stoplist (car ctx))])
+ (define (rebuild-bindings)
+ (syntax-case expr* ()
+ [(def ids rhs)
+ (datum->syntax expr*
+ (list #'def
+ (map syntax-local-identifier-as-binding
+ (syntax->list #'ids))
+ #'rhs)
+ expr*
+ expr*)]))
(syntax-case expr* (begin define-syntaxes define-values)
[(begin x ...)
(loop (append (syntax->list #'(x ...)) (cdr exprs)) ds es)]
@@ -132,7 +142,7 @@
(let ([ids (syntax->list #'(id ...))])
(syntax-local-bind-syntaxes
ids (local-transformer-expand #'rhs 'expression '()) (car ctx))
- (loop (cdr exprs) (cons expr* ds) es))
+ (loop (cdr exprs) (cons (rebuild-bindings) ds) es))
;; return the unexpanded expr, to be re-expanded later, in the
;; right contexts
(values (reverse ds) (reverse es) exprs))]
@@ -141,7 +151,7 @@
(if (null? es)
(begin (syntax-local-bind-syntaxes
(syntax->list #'(id ...)) #f (car ctx))
- (loop (cdr exprs) (cons expr* ds) es))
+ (loop (cdr exprs) (cons (rebuild-bindings) ds) es))
;; same note here
(values (reverse ds) (reverse es) exprs))]
[_ (loop (cdr exprs) ds (cons expr* es))])))))