From 6d440f5a6b9da44006e072f670dc46b2b40e8827 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 2 Mar 2015 09:21:07 -0700 Subject: [PATCH] fix more problems with a generated `doc` submodule One problem involved context that should not be included in a generated submodule, while another one was an issue with the previous repair to the shift to label phase. --- scribble-lib/scribble/extract.rkt | 2 +- scribble-lib/scribble/lp/lang/common.rkt | 14 ++++++++++---- scribble-lib/scribble/srcdoc.rkt | 5 ++++- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/scribble-lib/scribble/extract.rkt b/scribble-lib/scribble/extract.rkt index 3ce60272..0bbb54bb 100644 --- a/scribble-lib/scribble/extract.rkt +++ b/scribble-lib/scribble/extract.rkt @@ -14,7 +14,7 @@ [e #'(e)]) srcdoc) get-docs) - (datum->syntax stx 'get-docs))] + #'get-docs)] [(wrap ...) wraps]) #'(begin (define-syntax (docs stx) diff --git a/scribble-lib/scribble/lp/lang/common.rkt b/scribble-lib/scribble/lp/lang/common.rkt index d9fe24f6..c6cdf835 100644 --- a/scribble-lib/scribble/lp/lang/common.rkt +++ b/scribble-lib/scribble/lp/lang/common.rkt @@ -92,10 +92,16 @@ ;; The `doc` submodule allows a `scribble/lp` module ;; to be provided to `scribble`: #,@(if submod? - #`((module doc scribble/doclang2 - (require scribble/manual - (only-in scribble/private/lp chunk CHUNK)) - #,(strip-context #'(begin body0 . body)))) + (list + (let ([submod + (strip-context + #`(module doc scribble/doclang2 + (require scribble/manual + (only-in scribble/private/lp chunk CHUNK)) + (begin body0 . body)))]) + (syntax-case submod () + [(_ . rest) + (datum->syntax submod (cons #'module #'rest))]))) '())))]))])) (define-syntax module-begin/plain (make-module-begin #f)) diff --git a/scribble-lib/scribble/srcdoc.rkt b/scribble-lib/scribble/srcdoc.rkt index bcff3759..ee977a16 100644 --- a/scribble-lib/scribble/srcdoc.rkt +++ b/scribble-lib/scribble/srcdoc.rkt @@ -31,7 +31,10 @@ (syntax-local-lift-module-end-declaration #`(begin-for-syntax (add-relative-requires! (#%variable-reference) (quote-syntax #,specs))))) - (add-requires! (syntax-local-introduce specs))) + (with-syntax ([(spec ...) (syntax-local-introduce specs)]) + ;; Using `combine-in` protects `spec` against + ;; matching `(op arg ...)` in `doc-submodule`: + (add-requires! #'((combine-in spec) ...)))) (define (add-relative-requires! varref specs) (define mpi (variable-reference->module-path-index varref))