diff --git a/lib/chibi/doc.scm b/lib/chibi/doc.scm index a5362809..c09065ec 100644 --- a/lib/chibi/doc.scm +++ b/lib/chibi/doc.scm @@ -790,6 +790,9 @@ div#footer {padding-bottom: 50px} ((find-module-file (module-name->file mod-name)) => (lambda (f) (reverse (extract-file-docs f defs strict? 'module)))) (else '())) + (reverse (append-map (lambda (x) + (extract-file-docs x defs strict? 'module)) + (module-include-library-declarations mod))) (reverse (append-map (lambda (x) (extract-file-docs x defs strict?)) (module-includes mod))) (reverse (append-map (lambda (x) (extract-file-docs x defs strict? 'ffi)) diff --git a/lib/chibi/modules.scm b/lib/chibi/modules.scm index 45b3ea0b..c823c127 100644 --- a/lib/chibi/modules.scm +++ b/lib/chibi/modules.scm @@ -43,12 +43,18 @@ (lp (cdr ls) (append (reverse (cdar ls)) res))) (else (lp (cdr ls) res)))))) -(define (module-includes mod) +(define (module-extract-declaration-files mod decls) (let* ((mod (if (module? mod) mod (find-module mod))) (dir (module-dir mod))) (define (module-file f) (find-module-file (string-append dir f))) - (map module-file (reverse (module-metas mod '(include)))))) + (map module-file (reverse (module-metas mod decls))))) + +(define (module-includes mod) + (module-extract-declaration-files mod '(include))) + +(define (module-include-library-declarations mod) + (module-extract-declaration-files mod '(include-library-declarations))) (define (module-shared-includes mod) (let* ((mod (if (module? mod) mod (find-module mod))) diff --git a/lib/chibi/modules.sld b/lib/chibi/modules.sld index c254bd64..03929b87 100644 --- a/lib/chibi/modules.sld +++ b/lib/chibi/modules.sld @@ -1,6 +1,7 @@ (define-library (chibi modules) (export module-name module-dir module-includes module-shared-includes + module-include-library-declarations module-ast module-ast-set! module-ref module-contains? analyze-module containing-module load-module module-exports module-name->file procedure-analysis find-module diff --git a/lib/meta-7.scm b/lib/meta-7.scm index b02b555e..8b58a4c7 100644 --- a/lib/meta-7.scm +++ b/lib/meta-7.scm @@ -268,7 +268,7 @@ ;; Generate the library wrapper. (set! *this-path* (cons (string-concatenate - (module-name->strings (reverse (cdr (reverse name))) '())) + (module-name->strings (cdr (reverse name)) '())) *this-path*)) `(,_let ((,tmp ,this-module)) (,_define (rewrite-export x) @@ -338,7 +338,11 @@ (error "couldn't find include-library-declarations file" file))))) (else `(,(rename 'meta-begin) - ,@(reverse res)))))))) + ,@(reverse res) + (,(rename 'set!) ,(rename '*this-module*) + (,(rename 'cons) (,(rename 'quote) + ,(cons 'include-library-declarations (cdr expr))) + ,(rename '*this-module*)))))))))) (define-syntax define-meta-primitive (er-macro-transformer