summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2022-07-11 23:02:48 +0200
committerLudovic Courtès <ludo@gnu.org>2022-07-12 01:17:45 +0200
commitb8b02f4de5136d4385f36a79e727c90cb0ba1951 (patch)
tree1285cb232e4d5182e482b046d073552465057f2a
parent4574ef267e543bcac97d9c400f30cb731df29181 (diff)
downloadguix-b8b02f4de5136d4385f36a79e727c90cb0ba1951.tar.gz
style: Gracefully handle failure to locate a source file.
* guix/scripts/style.scm (absolute-location): Raise an error when
'search-path' returns #f.
-rw-r--r--guix/scripts/style.scm12
1 files changed, 11 insertions, 1 deletions
diff --git a/guix/scripts/style.scm b/guix/scripts/style.scm
index fd5f7f5c26..9fd652beb1 100644
--- a/guix/scripts/style.scm
+++ b/guix/scripts/style.scm
@@ -44,6 +44,7 @@
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-9)
   #:use-module (srfi srfi-26)
+  #:use-module (srfi srfi-34)
   #:use-module (srfi srfi-37)
   #:export (pretty-print-with-comments
             read-with-comments
@@ -683,7 +684,16 @@ doing it."
   "Replace the file name in LOC by an absolute location."
   (location (if (string-prefix? "/" (location-file loc))
                 (location-file loc)
-                (search-path %load-path (location-file loc)))
+
+                ;; 'search-path' might return #f in obscure cases, such as
+                ;; when %LOAD-PATH includes "." or ".." and LOC comes from a
+                ;; file in a subdirectory thereof.
+                (match (search-path %load-path (location-file loc))
+                  (#f
+                   (raise (formatted-message
+                           (G_ "file '~a' not found on load path")
+                           (location-file loc))))
+                  (str str)))
             (location-line loc)
             (location-column loc)))