diff options
| author | Philipp Stephani | 2018-06-02 11:59:02 +0200 |
|---|---|---|
| committer | Philipp Stephani | 2019-04-19 19:19:35 +0200 |
| commit | 0b4b380ce4989afc59848d2b6a350bd1dd7dc7ca (patch) | |
| tree | d48cd46b86ff19c609dd16f7ef799dd720014ef3 /src | |
| parent | 8aadf6e415b7801cb9fa4c5670b1750da207cf87 (diff) | |
| download | emacs-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.c | 24 |
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) | |||
| 1034 | static void | 1034 | static void |
| 1035 | load_warn_unescaped_character_literals (Lisp_Object file) | 1035 | load_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 | ||
| 1051 | DEFUN ("get-load-suffixes", Fget_load_suffixes, Sget_load_suffixes, 0, 0, 0, | 1045 | DEFUN ("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. |