fixes for `scribble/srcdoc'

Use the new `relative-in' form to make imports
resolve correctly when they are shifted among modules.

original commit: 0c95475f4ffbc343291e5529a6f4b32a91159ef1
This commit is contained in:
Matthew Flatt 2012-05-15 17:36:01 -06:00
parent 24acfab0ad
commit 2cdcf15d24
2 changed files with 20 additions and 3 deletions

View File

@ -22,7 +22,8 @@
#'(xwrap (... ...) id))
;; delayed:
(with-syntax ([(_ xwrap (... ...)) stx]
[(reqs ((id d) (... ...))) (get-docs)])
[(reqs ((id d) (... ...))) (syntax-local-introduce
(datum->syntax #f (get-docs)))])
#`(begin
(require . reqs)
(xwrap (... ...) (list (cons 'id d) (... ...)))))))

View File

@ -2,7 +2,8 @@
(require racket/contract/base
(for-syntax racket/base
racket/require-transform
racket/provide-transform))
racket/provide-transform
syntax/private/modcollapse-noctc))
(provide for-doc require/doc
provide/doc ; not needed anymore
@ -21,9 +22,24 @@
(define (add-requires!/decl specs)
(unless delayed?
(syntax-local-lift-module-end-declaration
#`(begin-for-syntax (add-requires! (quote-syntax #,specs)))))
#`(begin-for-syntax (add-relative-requires! (#%variable-reference)
(quote-syntax #,specs)))))
(add-requires! (syntax-local-introduce specs)))
(define (add-relative-requires! varref specs)
(define mpi (variable-reference->module-path-index varref))
(define-values (name base) (module-path-index-split mpi))
(if name
(add-requires!
(with-syntax ([(spec ...) specs]
[rel-to (collapse-module-path-index
mpi
(build-path (or (current-load-relative-directory)
(current-directory))
"here.rkt"))])
#'((relative-in rel-to spec) ...)))
(add-requires! specs)))
(define (add-requires! specs)
(set! requires (cons specs requires)))