Skip to content

Commit

Permalink
* lisp/emacs-lisp/byte-run.el (make-obsolete): Make when mandatory
Browse files Browse the repository at this point in the history
(define-obsolete-function-alias, make-obsolete-variable)
(define-obsolete-variable-alias): Adjust similarly.
  • Loading branch information
monnier committed Jan 3, 2021
1 parent 6329174 commit 32c6732
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 20 deletions.
6 changes: 6 additions & 0 deletions etc/NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -2019,6 +2019,12 @@ ledit.el, lmenu.el, lucid.el and old-whitespace.el.
'vcursor-toggle-vcursor-map', 'w32-focus-frame', 'w32-select-font',
'wisent-lex-make-token-table'.

** The 'when' argument of `make-obsolete` and related functions is mandatory.
The use of those functions without a 'when' argument was marked
obsolete back in Emacs-23.1. The affected functions are:
make-obsolete, define-obsolete-function-alias, make-obsolete-variable,
define-obsolete-variable-alias.


* Lisp Changes in Emacs 28.1

Expand Down
29 changes: 9 additions & 20 deletions lisp/emacs-lisp/byte-run.el
Original file line number Diff line number Diff line change
Expand Up @@ -372,7 +372,7 @@ convention was modified."
(puthash (indirect-function function) signature
advertised-signature-table))

(defun make-obsolete (obsolete-name current-name &optional when)
(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).
Expand All @@ -381,17 +381,14 @@ 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."
(declare (advertised-calling-convention
;; New code should always provide the `when' argument.
(obsolete-name current-name when) "23.1"))
(put obsolete-name 'byte-obsolete-info
;; The second entry used to hold the `byte-compile' handler, but
;; is not used any more nowadays.
(purecopy (list current-name nil when)))
obsolete-name)

(defmacro define-obsolete-function-alias (obsolete-name current-name
&optional when docstring)
(defmacro define-obsolete-function-alias ( obsolete-name current-name when
&optional docstring)
"Set OBSOLETE-NAME's function definition to CURRENT-NAME and mark it obsolete.
\(define-obsolete-function-alias \\='old-fun \\='new-fun \"22.1\" \"old-fun's doc.\")
Expand All @@ -405,32 +402,27 @@ WHEN should be a string indicating when the function was first
made obsolete, for example a date or a release number.
See the docstrings of `defalias' and `make-obsolete' for more details."
(declare (doc-string 4)
(advertised-calling-convention
;; New code should always provide the `when' argument.
(obsolete-name current-name when &optional docstring) "23.1"))
(declare (doc-string 4))
`(progn
(defalias ,obsolete-name ,current-name ,docstring)
(make-obsolete ,obsolete-name ,current-name ,when)))

(defun make-obsolete-variable (obsolete-name current-name &optional when access-type)
(defun make-obsolete-variable ( obsolete-name current-name when
&optional access-type)
"Make the byte-compiler warn that OBSOLETE-NAME is obsolete.
The warning will say that CURRENT-NAME should be used instead.
If CURRENT-NAME is a string, that is the `use instead' message.
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'."
(declare (advertised-calling-convention
;; New code should always provide the `when' argument.
(obsolete-name current-name when &optional access-type) "23.1"))
(put obsolete-name 'byte-obsolete-variable
(purecopy (list current-name access-type when)))
obsolete-name)


(defmacro define-obsolete-variable-alias (obsolete-name current-name
&optional when docstring)
(defmacro define-obsolete-variable-alias ( obsolete-name current-name when
&optional docstring)
"Make OBSOLETE-NAME a variable alias for CURRENT-NAME and mark it obsolete.
WHEN should be a string indicating when the variable was first
Expand Down Expand Up @@ -459,10 +451,7 @@ For the benefit of Customize, if OBSOLETE-NAME has
any of the following properties, they are copied to
CURRENT-NAME, if it does not already have them:
`saved-value', `saved-variable-comment'."
(declare (doc-string 4)
(advertised-calling-convention
;; New code should always provide the `when' argument.
(obsolete-name current-name when &optional docstring) "23.1"))
(declare (doc-string 4))
`(progn
(defvaralias ,obsolete-name ,current-name ,docstring)
;; See Bug#4706.
Expand Down

0 comments on commit 32c6732

Please sign in to comment.