aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNoam Postavsky2019-06-04 21:26:06 -0400
committerNoam Postavsky2019-06-10 18:27:22 -0400
commit0026d0bf9f4e4e0247de9c1eb885507608378266 (patch)
treeb330d22ab718de52a60de728cc344485a457d3fb
parent03b66d23a863835484267a8085bb9112d9bdecae (diff)
downloademacs-0026d0bf9f4e4e0247de9c1eb885507608378266.tar.gz
emacs-0026d0bf9f4e4e0247de9c1eb885507608378266.zip
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.
-rw-r--r--lisp/emacs-lisp/bytecomp.el5
-rw-r--r--test/lisp/emacs-lisp/bytecomp-tests.el32
2 files changed, 22 insertions, 15 deletions
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 38cce14fd62..f2a38a9c6c3 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -2093,8 +2093,9 @@ With argument ARG, insert value in current buffer after the form."
2093 (not (eobp))) 2093 (not (eobp)))
2094 (setq byte-compile-read-position (point) 2094 (setq byte-compile-read-position (point)
2095 byte-compile-last-position byte-compile-read-position) 2095 byte-compile-last-position byte-compile-read-position)
2096 (let ((form (read inbuffer)) 2096 (let* ((lread--unescaped-character-literals nil)
2097 (warning (byte-run--unescaped-character-literals-warning))) 2097 (form (read inbuffer))
2098 (warning (byte-run--unescaped-character-literals-warning)))
2098 (when warning (byte-compile-warn "%s" warning)) 2099 (when warning (byte-compile-warn "%s" warning))
2099 (byte-compile-toplevel-file-form form))) 2100 (byte-compile-toplevel-file-form form)))
2100 ;; Compile pending forms at end of file. 2101 ;; Compile pending forms at end of file.
diff --git a/test/lisp/emacs-lisp/bytecomp-tests.el b/test/lisp/emacs-lisp/bytecomp-tests.el
index f45c9209c14..83162d250fc 100644
--- a/test/lisp/emacs-lisp/bytecomp-tests.el
+++ b/test/lisp/emacs-lisp/bytecomp-tests.el
@@ -559,19 +559,25 @@ bytecompiled code, and their results compared.")
559 "Check that byte compiling warns about unescaped character 559 "Check that byte compiling warns about unescaped character
560literals (Bug#20852)." 560literals (Bug#20852)."
561 (should (boundp 'lread--unescaped-character-literals)) 561 (should (boundp 'lread--unescaped-character-literals))
562 (bytecomp-tests--with-temp-file source 562 (let ((byte-compile-error-on-warn t)
563 (write-region "(list ?) ?( ?; ?\" ?[ ?])" nil source) 563 (byte-compile-debug t))
564 (bytecomp-tests--with-temp-file destination 564 (bytecomp-tests--with-temp-file source
565 (let* ((byte-compile-dest-file-function (lambda (_) destination)) 565 (write-region "(list ?) ?( ?; ?\" ?[ ?])" nil source)
566 (byte-compile-error-on-warn t) 566 (bytecomp-tests--with-temp-file destination
567 (byte-compile-debug t) 567 (let* ((byte-compile-dest-file-function (lambda (_) destination))
568 (err (should-error (byte-compile-file source)))) 568 (err (should-error (byte-compile-file source))))
569 (should (equal (cdr err) 569 (should (equal (cdr err)
570 (list (concat "unescaped character literals " 570 `(,(concat "unescaped character literals "
571 "`?\"', `?(', `?)', `?;', `?[', `?]' " 571 "`?\"', `?(', `?)', `?;', `?[', `?]' "
572 "detected, " 572 "detected, "
573 "`?\\\"', `?\\(', `?\\)', `?\\;', `?\\[', " 573 "`?\\\"', `?\\(', `?\\)', `?\\;', `?\\[', "
574 "`?\\]' expected!")))))))) 574 "`?\\]' expected!")))))))
575 ;; But don't warn in subsequent compilations (Bug#36068).
576 (bytecomp-tests--with-temp-file source
577 (write-region "(list 1 2 3)" nil source)
578 (bytecomp-tests--with-temp-file destination
579 (let ((byte-compile-dest-file-function (lambda (_) destination)))
580 (should (byte-compile-file source)))))))
575 581
576(ert-deftest bytecomp-tests--old-style-backquotes () 582(ert-deftest bytecomp-tests--old-style-backquotes ()
577 "Check that byte compiling warns about old-style backquotes." 583 "Check that byte compiling warns about old-style backquotes."