ui: Improve reporting of missing closing parentheses.
Suggested by Ricardo Wurmus. Works around <https://bugs.gnu.org/28295>. * guix/ui.scm (report-load-error): Add case for 'read-error'. * tests/guix-system.sh: Test missing-closing-paren errors.
This commit is contained in:
parent
3f81ca324b
commit
a6e22d8445
|
@ -257,6 +257,15 @@ ARGS is the list of arguments received by the 'throw' handler."
|
||||||
(('system-error . rest)
|
(('system-error . rest)
|
||||||
(let ((err (system-error-errno args)))
|
(let ((err (system-error-errno args)))
|
||||||
(report-error (G_ "failed to load '~a': ~a~%") file (strerror err))))
|
(report-error (G_ "failed to load '~a': ~a~%") file (strerror err))))
|
||||||
|
(('read-error "scm_i_lreadparen" message _ ...)
|
||||||
|
;; Guile's missing-paren messages are obscure so we make them more
|
||||||
|
;; intelligible here.
|
||||||
|
(if (string-suffix? "end of file" message)
|
||||||
|
(let ((location (string-drop-right message
|
||||||
|
(string-length "end of file"))))
|
||||||
|
(format (current-error-port) (G_ "~amissing closing parenthesis~%")
|
||||||
|
location))
|
||||||
|
(apply throw args)))
|
||||||
(('syntax-error proc message properties form . rest)
|
(('syntax-error proc message properties form . rest)
|
||||||
(let ((loc (source-properties->location properties)))
|
(let ((loc (source-properties->location properties)))
|
||||||
(format (current-error-port) (G_ "~a: error: ~a~%")
|
(format (current-error-port) (G_ "~a: error: ~a~%")
|
||||||
|
|
|
@ -53,6 +53,21 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
cat > "$tmpfile"<<EOF
|
||||||
|
;; This is line 1, and the next one is line 2.
|
||||||
|
(operating-system
|
||||||
|
;; This is line 3, and there is no closing paren!
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if guix system vm "$tmpfile" 2> "$errorfile"
|
||||||
|
then
|
||||||
|
# This must not succeed.
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
grep "$tmpfile:4:1: missing closing paren" "$errorfile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Reporting of unbound variables.
|
# Reporting of unbound variables.
|
||||||
|
|
||||||
cat > "$tmpfile" <<EOF
|
cat > "$tmpfile" <<EOF
|
||||||
|
|
Loading…
Reference in New Issue