Improve unescaped character literal warnings

* src/lread.c (load_warn_unescaped_character_literals)
(syms_of_lread):
lisp/emacs-lisp/bytecomp.el (byte-compile-from-buffer): Improve
formatting of unescaped character literal warnings.

* test/src/lread-tests.el (lread-tests--unescaped-char-literals):
test/lisp/emacs-lisp/bytecomp-tests.el
(bytecomp-tests--unescaped-char-literals): Adapt unit tests.
This commit is contained in:
Philipp Stephani 2017-05-13 12:28:48 +02:00
parent 0e09d00f29
commit 16004397f4
4 changed files with 9 additions and 4 deletions

View file

@ -2032,7 +2032,7 @@ and will be removed soon. See (elisp)Backquote in the manual."))
(when lread--unescaped-character-literals
(byte-compile-warn
"unescaped character literals %s detected!"
(mapconcat #'string
(mapconcat (lambda (char) (format "`?%c'" char))
(sort lread--unescaped-character-literals #'<)
", ")))
(byte-compile-toplevel-file-form form)))

View file

@ -963,9 +963,11 @@ load_warn_unescaped_character_literals (Lisp_Object file)
AUTO_STRING (format,
"Loading `%s': unescaped character literals %s detected!");
AUTO_STRING (separator, ", ");
AUTO_STRING (inner_format, "`?%c'");
CALLN (Fmessage,
format, file,
Fmapconcat (Qstring,
Fmapconcat (list3 (Qlambda, list1 (Qchar),
list3 (Qformat, inner_format, Qchar)),
Fsort (Vlread_unescaped_character_literals, Qlss),
separator));
}
@ -4855,6 +4857,8 @@ For internal use only. */);
"lread--unescaped-character-literals");
DEFSYM (Qlss, "<");
DEFSYM (Qchar, "char");
DEFSYM (Qformat, "format");
DEFVAR_BOOL ("load-prefer-newer", load_prefer_newer,
doc: /* Non-nil means `load' prefers the newest version of a file.

View file

@ -527,7 +527,8 @@ literals (Bug#20852)."
(err (should-error (byte-compile-file source))))
(should (equal (cdr err)
(list (concat "unescaped character literals "
"\", (, ), ;, [, ] detected!"))))))))
"`?\"', `?(', `?)', `?;', `?[', `?]' "
"detected!"))))))))
;; Local Variables:
;; no-byte-compile: t

View file

@ -140,7 +140,7 @@ literals (Bug#20852)."
(should (equal (lread-tests--last-message)
(concat (format-message "Loading `%s': " file-name)
"unescaped character literals "
"\", (, ), ;, [, ] detected!")))))
"`?\"', `?(', `?)', `?;', `?[', `?]' detected!")))))
(ert-deftest lread-test-bug26837 ()
"Test for http://debbugs.gnu.org/26837 ."