1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-06 06:20:55 -08:00

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:
Stefan Kangas 2023-09-06 11:21:39 +02:00
parent 331dee7e4a
commit 802a54ad62
2 changed files with 39 additions and 0 deletions

View file

@ -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)