From 5a752f502250810b1e903ab9f44954e24e458713 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 25 Feb 2015 21:03:27 -0700 Subject: [PATCH] scribble/srcdoc: adjust shift to label phase Use a technique that depends less on exactly what a shift to the label phase means when additional bindings are introduced. --- scribble-lib/scribble/srcdoc.rkt | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/scribble-lib/scribble/srcdoc.rkt b/scribble-lib/scribble/srcdoc.rkt index 232cdad9..bcff3759 100644 --- a/scribble-lib/scribble/srcdoc.rkt +++ b/scribble-lib/scribble/srcdoc.rkt @@ -64,13 +64,26 @@ (values null null)))) (define-syntax (doc-submodule stx) + (define (shift-and-introduce s) + (syntax-local-introduce + (syntax-shift-phase-level s #f))) (with-syntax ([((req ...) ...) - (map syntax-local-introduce (reverse requires))] - [(expr ...) (map syntax-local-introduce (reverse doc-exprs))] + (map (lambda (rs) + (map (lambda (r) + (syntax-case r () + [(op arg ...) + (with-syntax ([(arg ...) + (map shift-and-introduce + (syntax->list #'(arg ...)))]) + #'(op arg ...))] + [else + (shift-and-introduce r)])) + (syntax->list rs))) + (reverse requires))] + [(expr ...) + (map shift-and-introduce (reverse doc-exprs))] [doc-body - (map (lambda (s) (syntax-local-introduce - (syntax-shift-phase-level s #f))) - (reverse doc-body))]) + (map shift-and-introduce (reverse doc-body))]) ;; This module will be required `for-template': (if delayed? ;; delayed mode: return syntax objects to drop into context: