Commit 0026d0bf authored by Noam Postavsky's avatar Noam Postavsky

Don't keep warning about unescaped literals (Bug#36068)

* lisp/emacs-lisp/bytecomp.el (byte-compile-from-buffer): Restore lost
let-binding of lread--unescaped-character-literals, so that unescaped
literals warning will only apply to the form just read.
* test/lisp/emacs-lisp/bytecomp-tests.el
(bytecomp-tests--unescaped-char-literals): Expand test to check that
we don't keep warning about old unescaped literals.
parent 03b66d23
Pipeline #1987 failed with stage
in 4 seconds
......@@ -2093,8 +2093,9 @@ With argument ARG, insert value in current buffer after the form."
(not (eobp)))
(setq byte-compile-read-position (point)
byte-compile-last-position byte-compile-read-position)
(let ((form (read inbuffer))
(warning (byte-run--unescaped-character-literals-warning)))
(let* ((lread--unescaped-character-literals nil)
(form (read inbuffer))
(warning (byte-run--unescaped-character-literals-warning)))
(when warning (byte-compile-warn "%s" warning))
(byte-compile-toplevel-file-form form)))
;; Compile pending forms at end of file.
......
......@@ -559,19 +559,25 @@ bytecompiled code, and their results compared.")
"Check that byte compiling warns about unescaped character
literals (Bug#20852)."
(should (boundp 'lread--unescaped-character-literals))
(bytecomp-tests--with-temp-file source
(write-region "(list ?) ?( ?; ?\" ?[ ?])" nil source)
(bytecomp-tests--with-temp-file destination
(let* ((byte-compile-dest-file-function (lambda (_) destination))
(byte-compile-error-on-warn t)
(byte-compile-debug t)
(err (should-error (byte-compile-file source))))
(should (equal (cdr err)
(list (concat "unescaped character literals "
"`?\"', `?(', `?)', `?;', `?[', `?]' "
"detected, "
"`?\\\"', `?\\(', `?\\)', `?\\;', `?\\[', "
"`?\\]' expected!"))))))))
(let ((byte-compile-error-on-warn t)
(byte-compile-debug t))
(bytecomp-tests--with-temp-file source
(write-region "(list ?) ?( ?; ?\" ?[ ?])" nil source)
(bytecomp-tests--with-temp-file destination
(let* ((byte-compile-dest-file-function (lambda (_) destination))
(err (should-error (byte-compile-file source))))
(should (equal (cdr err)
`(,(concat "unescaped character literals "
"`?\"', `?(', `?)', `?;', `?[', `?]' "
"detected, "
"`?\\\"', `?\\(', `?\\)', `?\\;', `?\\[', "
"`?\\]' expected!")))))))
;; But don't warn in subsequent compilations (Bug#36068).
(bytecomp-tests--with-temp-file source
(write-region "(list 1 2 3)" nil source)
(bytecomp-tests--with-temp-file destination
(let ((byte-compile-dest-file-function (lambda (_) destination)))
(should (byte-compile-file source)))))))
(ert-deftest bytecomp-tests--old-style-backquotes ()
"Check that byte compiling warns about old-style backquotes."
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment