From ab141007921d64e728086732ab702fda0eb70108 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Tue, 2 Aug 2022 02:23:43 +0200 Subject: Extend module-imports to work on non-module scheme files. --- scripts/module-imports.scm | 41 +++++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/scripts/module-imports.scm b/scripts/module-imports.scm index 7e9769d1..b7589950 100755 --- a/scripts/module-imports.scm +++ b/scripts/module-imports.scm @@ -14,21 +14,23 @@ (add-to-load-path (string-append (dirname (dirname (current-filename))) "/module")) (add-to-load-path (dirname (current-filename))) -(use-modules (hnh util) - ((srfi srfi-1) :select (lset-difference)) - (rnrs lists) - (module-introspection) - ((static-util) :select (get-forms))) +(use-modules ((srfi srfi-1) :select (lset-difference)) + ((rnrs lists) :select (remp filter partition)) + ((module-introspection) :select (module-declaration? unique-symbols)) + ((static-util) :select (get-forms)) + ((module-uses) :select (module-uses*)) + ) ;;; Module use high scores -;;; $ grop -Ho '#\?:use-module' -R module | uniq -c | sort -n +;;; $ grep -Ho '#\?:use-module' -R module | uniq -c | sort -n (define (main args) (define filename (cadr args)) - (define-values (module-declaration-lst forms) + (define-values (module-declaration-list 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. @@ -36,6 +38,21 @@ ;; (format #t "~y" (find-module-declaration forms)) ;; (format #t "~a~%" symbs) + (define skip-list '((guile) + (guile-user) + (srfi srfi-1) + )) + + + (define modules + (if (null? module-declaration-list) + (map resolve-interface + (remp (lambda (mod) (member mod skip-list)) + (module-uses* forms))) + (remp (lambda (mod) (member (module-name mod) skip-list)) + (module-uses (resolve-module + (cadr (car module-declaration-list))))))) + (format #t "=== ~a ===~%" filename) (for-each (lambda (mod) @@ -54,13 +71,5 @@ used-count total-count (module-name mod) used-symbols (lset-difference eq? all-symbols used-symbols))) - - (remp (lambda (mod) - (member (module-name mod) - '((guile) - (guile-user) - (srfi srfi-1) - ))) - (module-uses (resolve-module - (cadr (car module-declaration-lst)))))) + modules) (newline)) -- cgit v1.2.3