Error when trying to make nil or t obsolete
* lisp/emacs-lisp/byte-run.el (make-obsolete, make-obsolete-variable): Signal error if the symbol to make obsolete is nil or t. (Bug#62248) (byte-run--constant-obsolete-warning): New function. * test/lisp/emacs-lisp/byte-run-tests.el: New file.
This commit is contained in:
parent
331dee7e4a
commit
802a54ad62
2 changed files with 39 additions and 0 deletions
|
|
@ -494,6 +494,11 @@ convention was modified."
|
|||
Return t if there isn't any."
|
||||
(gethash function advertised-signature-table t))
|
||||
|
||||
(defun byte-run--constant-obsolete-warning (obsolete-name)
|
||||
(if (memq obsolete-name '(nil t))
|
||||
(error "Can't make `%s' obsolete; did you forget a quote mark?"
|
||||
obsolete-name)))
|
||||
|
||||
(defun make-obsolete (obsolete-name current-name when)
|
||||
"Make the byte-compiler warn that function OBSOLETE-NAME is obsolete.
|
||||
OBSOLETE-NAME should be a function name or macro name (a symbol).
|
||||
|
|
@ -503,6 +508,7 @@ If CURRENT-NAME is a string, that is the `use instead' message
|
|||
\(it should end with a period, and not start with a capital).
|
||||
WHEN should be a string indicating when the function
|
||||
was first made obsolete, for example a date or a release number."
|
||||
(byte-run--constant-obsolete-warning obsolete-name)
|
||||
(put obsolete-name 'byte-obsolete-info
|
||||
;; The second entry used to hold the `byte-compile' handler, but
|
||||
;; is not used any more nowadays.
|
||||
|
|
@ -539,6 +545,7 @@ WHEN should be a string indicating when the variable
|
|||
was first made obsolete, for example a date or a release number.
|
||||
ACCESS-TYPE if non-nil should specify the kind of access that will trigger
|
||||
obsolescence warnings; it can be either `get' or `set'."
|
||||
(byte-run--constant-obsolete-warning obsolete-name)
|
||||
(put obsolete-name 'byte-obsolete-variable
|
||||
(purecopy (list current-name access-type when)))
|
||||
obsolete-name)
|
||||
|
|
|
|||
32
test/lisp/emacs-lisp/byte-run-tests.el
Normal file
32
test/lisp/emacs-lisp/byte-run-tests.el
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
;;; byte-run-tests.el --- Tests for byte-run.el -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright (C) 2023 Free Software Foundation, Inc.
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
;; GNU Emacs is free software: you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation, either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
|
||||
;; GNU Emacs is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'ert)
|
||||
|
||||
(ert-deftest make-obsolete ()
|
||||
(should-error (make-obsolete nil 'foo "30.1"))
|
||||
(should-error (make-obsolete t 'foo "30.1") ))
|
||||
|
||||
(ert-deftest make-obsolete-variable ()
|
||||
(should-error (make-obsolete-variable nil 'foo "30.1"))
|
||||
(should-error (make-obsolete-variable t 'foo "30.1")))
|
||||
|
||||
;;; byte-run-tests.el ends here
|
||||
Loading…
Add table
Reference in a new issue