diff options
Diffstat (limited to 'scripts/module-imports.scm')
-rwxr-xr-x | scripts/module-imports.scm | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/scripts/module-imports.scm b/scripts/module-imports.scm index 19598172..6a0a5beb 100755 --- a/scripts/module-imports.scm +++ b/scripts/module-imports.scm @@ -15,7 +15,8 @@ (add-to-load-path (dirname (current-filename))) (use-modules (hnh util) - (srfi srfi-1) + ((srfi srfi-1) :select (lset-difference)) + (rnrs lists) (module-introspection)) @@ -24,8 +25,12 @@ (define (main args) (define filename (cadr args)) - (define forms (reverse (call-with-input-file filename get-forms))) - ;; All symbols in source file + (define-values (module-declaration-lst forms) + (partition module-declaration? + (reverse (call-with-input-file filename get-forms)))) + ;; All symbols in source file, which are not in module declaration. + ;; Otherwise all explicitly imported symbols would be marked as + ;; used. (define symbs (unique-symbols forms)) ;; (format #t "~y" (find-module-declaration forms)) ;; (format #t "~a~%" symbs) @@ -49,13 +54,12 @@ used-symbols (lset-difference eq? all-symbols used-symbols))) - (remove (lambda (mod) - (member (module-name mod) - '((guile) - (guile-user) - (srfi srfi-1) - ))) - (module-uses (resolve-module - (find-module-declaration - forms))))) + (remp (lambda (mod) + (member (module-name mod) + '((guile) + (guile-user) + (srfi srfi-1) + ))) + (module-uses (resolve-module + (cadr (car module-declaration-lst)))))) (newline)) |