aboutsummaryrefslogtreecommitdiff
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
guix-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)))