aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPhilipp Stephani2018-06-02 11:59:02 +0200
committerPhilipp Stephani2019-04-19 19:19:35 +0200
commit0b4b380ce4989afc59848d2b6a350bd1dd7dc7ca (patch)
treed48cd46b86ff19c609dd16f7ef799dd720014ef3 /src
parent8aadf6e415b7801cb9fa4c5670b1750da207cf87 (diff)
downloademacs-0b4b380ce4989afc59848d2b6a350bd1dd7dc7ca.tar.gz
emacs-0b4b380ce4989afc59848d2b6a350bd1dd7dc7ca.zip
Make warning about unescaped character literals more helpful.
See Bug#31676. * lisp/emacs-lisp/byte-run.el (byte-run--unescaped-character-literals-warning): New defun. * src/lread.c (load_warn_unescaped_character_literals): Use new defun. (syms_of_lread): Define symbol for new defun. * lisp/emacs-lisp/bytecomp.el (byte-compile-from-buffer): Use new defun. * 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.
Diffstat (limited to 'src')
-rw-r--r--src/lread.c24
1 files changed, 9 insertions, 15 deletions
diff --git a/src/lread.c b/src/lread.c
index 8cb4b63cc3a..8b38cacde07 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -1034,18 +1034,12 @@ load_error_old_style_backquotes (void)
1034static void 1034static void
1035load_warn_unescaped_character_literals (Lisp_Object file) 1035load_warn_unescaped_character_literals (Lisp_Object file)
1036{ 1036{
1037 if (NILP (Vlread_unescaped_character_literals)) return; 1037 Lisp_Object warning
1038 CHECK_CONS (Vlread_unescaped_character_literals); 1038 = call0 (Qbyte_run_unescaped_character_literals_warning);
1039 Lisp_Object format = 1039 if (NILP (warning))
1040 build_string ("Loading `%s': unescaped character literals %s detected!"); 1040 return;
1041 Lisp_Object separator = build_string (", "); 1041 Lisp_Object format = build_string ("Loading `%s': %s");
1042 Lisp_Object inner_format = build_string ("`?%c'"); 1042 CALLN (Fmessage, format, file, warning);
1043 CALLN (Fmessage,
1044 format, file,
1045 Fmapconcat (list3 (Qlambda, list1 (Qchar),
1046 list3 (Qformat, inner_format, Qchar)),
1047 Fsort (Vlread_unescaped_character_literals, Qlss),
1048 separator));
1049} 1043}
1050 1044
1051DEFUN ("get-load-suffixes", Fget_load_suffixes, Sget_load_suffixes, 0, 0, 0, 1045DEFUN ("get-load-suffixes", Fget_load_suffixes, Sget_load_suffixes, 0, 0, 0,
@@ -5014,9 +5008,9 @@ For internal use only. */);
5014 DEFSYM (Qlread_unescaped_character_literals, 5008 DEFSYM (Qlread_unescaped_character_literals,
5015 "lread--unescaped-character-literals"); 5009 "lread--unescaped-character-literals");
5016 5010
5017 DEFSYM (Qlss, "<"); 5011 /* Defined in lisp/emacs-lisp/byte-run.el. */
5018 DEFSYM (Qchar, "char"); 5012 DEFSYM (Qbyte_run_unescaped_character_literals_warning,
5019 DEFSYM (Qformat, "format"); 5013 "byte-run--unescaped-character-literals-warning");
5020 5014
5021 DEFVAR_BOOL ("load-prefer-newer", load_prefer_newer, 5015 DEFVAR_BOOL ("load-prefer-newer", load_prefer_newer,
5022 doc: /* Non-nil means `load' prefers the newest version of a file. 5016 doc: /* Non-nil means `load' prefers the newest version of a file.