From 723bdb8ef0175716a2bfa93e96c3fd757d7b2679 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sat, 20 Jul 2019 00:33:50 +0200 Subject: [PATCH] ui: 'warn-about-load-error' provides hints for unbound variables. * guix/ui.scm (warn-about-load-error): Add 'unbound-variable' clause. * tests/guix-build.sh: Add test. --- guix/ui.scm | 2 ++ tests/guix-build.sh | 19 +++++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/guix/ui.scm b/guix/ui.scm index 1812b01272..7920335928 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -392,6 +392,8 @@ exiting. ARGS is the list of arguments received by the 'throw' handler." (('syntax-error proc message properties form . rest) (let ((loc (source-properties->location properties))) (warning loc (G_ "~a~%") message))) + (('unbound-variable _ ...) + (report-unbound-variable-error args)) (('srfi-34 obj) (if (message-condition? obj) (warning (G_ "failed to load '~a': ~a~%") diff --git a/tests/guix-build.sh b/tests/guix-build.sh index d16b92d189..37666ffd01 100644 --- a/tests/guix-build.sh +++ b/tests/guix-build.sh @@ -146,8 +146,8 @@ test `guix build -d --sources=transitive foo \ | wc -l` -eq 3 -# Unbound variables. -cat > "$module_dir/foo.scm"< "$module_dir/foo.scm" < "$module_dir/err" || true grep "unbound" "$module_dir/err" # actual error grep "forget.*(gnu packages base)" "$module_dir/err" # hint + +# Unbound variable at the top level. +cat > "$module_dir/foo.scm" < "$module_dir/err" +grep "unbound" "$module_dir/err" # actual error +grep "forget.*(guix build-system gnu)" "$module_dir/err" # hint + rm -f "$module_dir"/* # Wrong 'define-module' clause reported by 'warn-about-load-error'.