]> git.eshelyaron.com Git - emacs.git/commitdiff
Raise an error when detecting old-style backquotes.
authorPhilipp Stephani <phst@google.com>
Tue, 3 Oct 2017 14:14:54 +0000 (16:14 +0200)
committerPhilipp Stephani <phst@google.com>
Sat, 9 Dec 2017 20:24:05 +0000 (21:24 +0100)
They have been deprecated for a decade now.

* src/lread.c (Fload): Don't use record_unwind_protect to warn about
old-style backquotes any more.  They now generate a hard error.
(read1): Signal an error when detecting old-style backquotes.  Remove
unused label.
(syms_of_lread): Remove unused internal variable
'lread--old-style-backquotes'.
(load_error_old_style_backquotes): Rename from
'load_warn_oldstyle_backquotes'.  Signal an error.

* lisp/emacs-lisp/bytecomp.el (byte-compile-from-buffer): Remove check
from byte compiler.  It isn't triggered any more.

* test/src/lread-tests.el (lread-tests--old-style-backquotes): Adapt
unit test.

* test/lisp/emacs-lisp/bytecomp-tests.el
(bytecomp-tests--old-style-backquotes)
(bytecomp-tests-function-put): Adapt unit tests.

* etc/NEWS: Document change.

etc/NEWS
lisp/emacs-lisp/bytecomp.el
src/lread.c
test/lisp/emacs-lisp/bytecomp-tests.el
test/src/lread-tests.el

index b8103c6b294022370b46aeb6fa1c2d3a09399821..dd7d9839700a667990f7006726092494326c2130 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -144,6 +144,9 @@ them through 'format' first.  Even that is discouraged: for ElDoc
 support, you should set 'eldoc-documentation-function' instead of
 calling 'eldoc-message' directly.
 
+** Old-style backquotes now generate an error.  They have been
+generating warnings for a decade.
+
 \f
 * Lisp Changes in Emacs 27.1
 
index f69ac7f342a3629216ef3ec200fce7dde1c9ce40..995fb05eac812d0c3484e1d9455083e381cbe03c 100644 (file)
@@ -2063,14 +2063,8 @@ 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* ((lread--old-style-backquotes nil)
-                 (lread--unescaped-character-literals nil)
+         (let* ((lread--unescaped-character-literals nil)
                  (form (read inbuffer)))
-            ;; Warn about the use of old-style backquotes.
-            (when lread--old-style-backquotes
-              (byte-compile-warn "!! The file uses old-style backquotes !!
-This functionality has been obsolete for more than 10 years already
-and will be removed soon.  See (elisp)Backquote in the manual."))
             (when lread--unescaped-character-literals
               (byte-compile-warn
                "unescaped character literals %s detected!"
index a80808760316ab81d1924ebbdf7e919c3fdb8559..52897b4fccdd471c62f266f90c3204d05faed897 100644 (file)
@@ -1003,14 +1003,11 @@ load_error_handler (Lisp_Object data)
   return Qnil;
 }
 
-static void
-load_warn_old_style_backquotes (Lisp_Object file)
+static _Noreturn void
+load_error_old_style_backquotes (void)
 {
-  if (!NILP (Vlread_old_style_backquotes))
-    {
-      AUTO_STRING (format, "Loading `%s': old-style backquotes detected!");
-      CALLN (Fmessage, format, file);
-    }
+  AUTO_STRING (format, "Loading `%s': old-style backquotes detected!");
+  xsignal1 (Qerror, CALLN (Fformat_message, format, Vload_file_name));
 }
 
 static void
@@ -1282,10 +1279,6 @@ Return t if the file exists and loads successfully.  */)
 
   version = -1;
 
-  /* Check for the presence of old-style quotes and warn about them.  */
-  specbind (Qlread_old_style_backquotes, Qnil);
-  record_unwind_protect (load_warn_old_style_backquotes, file);
-
   /* Check for the presence of unescaped character literals and warn
      about them. */
   specbind (Qlread_unescaped_character_literals, Qnil);
@@ -3178,10 +3171,7 @@ read1 (Lisp_Object readcharfun, int *pch, bool first_in_list)
           first_in_list exception (old-style can still be obtained via
           "(\`" anyway).  */
        if (!new_backquote_flag && first_in_list && next_char == ' ')
-         {
-           Vlread_old_style_backquotes = Qt;
-           goto default_label;
-         }
+         load_error_old_style_backquotes ();
        else
          {
            Lisp_Object value;
@@ -3232,10 +3222,7 @@ read1 (Lisp_Object readcharfun, int *pch, bool first_in_list)
            return list2 (comma_type, value);
          }
        else
-         {
-           Vlread_old_style_backquotes = Qt;
-           goto default_label;
-         }
+         load_error_old_style_backquotes ();
       }
     case '?':
       {
@@ -3423,7 +3410,6 @@ read1 (Lisp_Object readcharfun, int *pch, bool first_in_list)
         row.  */
       FALLTHROUGH;
     default:
-    default_label:
       if (c <= 040) goto retry;
       if (c == NO_BREAK_SPACE)
        goto retry;
@@ -4996,12 +4982,6 @@ variables, this must be set in the first line of a file.  */);
               doc: /* List of buffers being read from by calls to `eval-buffer' and `eval-region'.  */);
   Veval_buffer_list = Qnil;
 
-  DEFVAR_LISP ("lread--old-style-backquotes", Vlread_old_style_backquotes,
-              doc: /* Set to non-nil when `read' encounters an old-style backquote.
-For internal use only.  */);
-  Vlread_old_style_backquotes = Qnil;
-  DEFSYM (Qlread_old_style_backquotes, "lread--old-style-backquotes");
-
   DEFVAR_LISP ("lread--unescaped-character-literals",
                Vlread_unescaped_character_literals,
                doc: /* List of deprecated unescaped character literals encountered by `read'.
index f508c3654278d69fb81fbe0e1787a30335c1ab3c..734c4a386a45652462313922b8d7b5921904d27d 100644 (file)
@@ -534,23 +534,18 @@ literals (Bug#20852)."
 
 (ert-deftest bytecomp-tests--old-style-backquotes ()
   "Check that byte compiling warns about old-style backquotes."
-  (should (boundp 'lread--old-style-backquotes))
   (bytecomp-tests--with-temp-file source
     (write-region "(` (a b))" 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))))
+             (byte-compile-debug t)
+             (err (should-error (byte-compile-file source))))
         (should (equal (cdr err)
-                       (list "!! The file uses old-style backquotes !!
-This functionality has been obsolete for more than 10 years already
-and will be removed soon.  See (elisp)Backquote in the manual.")))))))
+                       '("Loading `nil': old-style backquotes detected!")))))))
 
 
 (ert-deftest bytecomp-tests-function-put ()
   "Check `function-put' operates during compilation."
-  (should (boundp 'lread--old-style-backquotes))
   (bytecomp-tests--with-temp-file source
     (dolist (form '((function-put 'bytecomp-tests--foo 'foo 1)
                     (function-put 'bytecomp-tests--foo 'bar 2)
index ac730b4f005fef4d75768ba83781d54e5eb4fbb8..3f41982eba121daa9016fcdc8c7058ce037f170f 100644 (file)
@@ -173,13 +173,13 @@ literals (Bug#20852)."
     (should (string-suffix-p "/somelib.el" (caar load-history)))))
 
 (ert-deftest lread-tests--old-style-backquotes ()
-  "Check that loading warns about old-style backquotes."
+  "Check that loading doesn't accept old-style backquotes."
   (lread-tests--with-temp-file file-name
     (write-region "(` (a b))" nil file-name)
-    (should (equal (load file-name nil :nomessage :nosuffix) t))
-    (should (equal (lread-tests--last-message)
-                   (concat (format-message "Loading `%s': " file-name)
-                           "old-style backquotes detected!")))))
+    (let ((data (should-error (load file-name nil :nomessage :nosuffix))))
+      (should (equal (cdr data)
+                     (list (concat (format-message "Loading `%s': " file-name)
+                                   "old-style backquotes detected!")))))))
 
 (ert-deftest lread-lread--substitute-object-in-subtree ()
   (let ((x (cons 0 1)))