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.
This commit is contained in:
parent
a2a94b6e58
commit
723bdb8ef0
@ -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~%")
|
||||
|
@ -146,8 +146,8 @@ test `guix build -d --sources=transitive foo \
|
||||
| wc -l` -eq 3
|
||||
|
||||
|
||||
# Unbound variables.
|
||||
cat > "$module_dir/foo.scm"<<EOF
|
||||
# Unbound variable in thunked field.
|
||||
cat > "$module_dir/foo.scm" <<EOF
|
||||
(define-module (foo)
|
||||
#:use-module (guix tests)
|
||||
#:use-module (guix build-system trivial))
|
||||
@ -162,6 +162,21 @@ if guix build package-with-something-wrong -n; then false; else true; fi
|
||||
guix build package-with-something-wrong -n 2> "$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" <<EOF
|
||||
(define-module (foo)
|
||||
#:use-module (guix tests))
|
||||
|
||||
(define-public foo
|
||||
(dummy-package "package-with-something-wrong"
|
||||
(build-system gnu-build-system))) ;unbound variable
|
||||
EOF
|
||||
|
||||
guix build sed -n 2> "$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'.
|
||||
|
Loading…
Reference in New Issue
Block a user