diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2009-10-01 16:54:21 +0000 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2009-10-01 16:54:21 +0000 |
commit | ced10a4c9f0030e4e554d6ca3f96c6e366dba8db (patch) | |
tree | 59d17379604f37548afb5e353ad08e12bf5ef19a /lisp/emacs-lisp/byte-run.el | |
parent | d308026462fe0f6d441cd40fa0451d8ce965c922 (diff) | |
download | emacs-ced10a4c9f0030e4e554d6ca3f96c6e366dba8db.tar.gz emacs-ced10a4c9f0030e4e554d6ca3f96c6e366dba8db.tar.bz2 emacs-ced10a4c9f0030e4e554d6ca3f96c6e366dba8db.zip |
* emacs-lisp/byte-run.el (advertised-signature-table): New var.
(set-advertised-calling-convention): New function.
(make-obsolete, define-obsolete-function-alias)
(make-obsolete-variable, define-obsolete-variable-alias):
Make the optional-ness of `when' obsolete.
(define-obsolete-face-alias): Make `when' non-optional.
* help-fns.el (help-function-arglist):
* emacs-lisp/bytecomp.el (byte-compile-fdefinition):
Use advertised-signature-table.
Diffstat (limited to 'lisp/emacs-lisp/byte-run.el')
-rw-r--r-- | lisp/emacs-lisp/byte-run.el | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/lisp/emacs-lisp/byte-run.el b/lisp/emacs-lisp/byte-run.el index b6408f2c14c..7c3ea62f3ec 100644 --- a/lisp/emacs-lisp/byte-run.el +++ b/lisp/emacs-lisp/byte-run.el @@ -106,6 +106,15 @@ The return value of this function is not used." (eval-and-compile (put ',name 'byte-optimizer 'byte-compile-inline-expand)))) +(defvar advertised-signature-table (make-hash-table :test 'eq :weakness 'key)) + +(defun set-advertised-calling-convention (function signature) + "Set the advertised SIGNATURE of FUNCTION. +This will allow the byte-compiler to warn the programmer when she uses +an obsolete calling convention." + (puthash (indirect-function function) signature + advertised-signature-table)) + (defun make-obsolete (obsolete-name current-name &optional when) "Make the byte-compiler warn that OBSOLETE-NAME is obsolete. The warning will say that CURRENT-NAME should be used instead. @@ -120,6 +129,9 @@ was first made obsolete, for example a date or a release number." (put obsolete-name 'byte-compile 'byte-compile-obsolete)) (put obsolete-name 'byte-obsolete-info (list current-name handler when))) obsolete-name) +(set-advertised-calling-convention + ;; New code should always provide the `when' argument. + 'make-obsolete '(obsolete-name current-name when)) (defmacro define-obsolete-function-alias (obsolete-name current-name &optional when docstring) @@ -137,6 +149,10 @@ See the docstrings of `defalias' and `make-obsolete' for more details." `(progn (defalias ,obsolete-name ,current-name ,docstring) (make-obsolete ,obsolete-name ,current-name ,when))) +(set-advertised-calling-convention + ;; New code should always provide the `when' argument. + 'define-obsolete-function-alias + '(obsolete-name current-name when &optional docstring)) (defun make-obsolete-variable (obsolete-name current-name &optional when) "Make the byte-compiler warn that OBSOLETE-NAME is obsolete. @@ -152,6 +168,9 @@ was first made obsolete, for example a date or a release number." (car (read-from-string (read-string "Obsoletion replacement: "))))) (put obsolete-name 'byte-obsolete-variable (cons current-name when)) obsolete-name) +(set-advertised-calling-convention + ;; New code should always provide the `when' argument. + 'make-obsolete-variable '(obsolete-name current-name when)) (defmacro define-obsolete-variable-alias (obsolete-name current-name &optional when docstring) @@ -179,14 +198,17 @@ Info node `(elisp)Variable Aliases' for more details." `(progn (defvaralias ,obsolete-name ,current-name ,docstring) (make-obsolete-variable ,obsolete-name ,current-name ,when))) +(set-advertised-calling-convention + ;; New code should always provide the `when' argument. + 'define-obsolete-variable-alias + '(obsolete-name current-name when &optional docstring)) ;; FIXME This is only defined in this file because the variable- and ;; function- versions are too. Unlike those two, this one is not used ;; by the byte-compiler (would be nice if it could warn about obsolete ;; faces, but it doesn't really do anything special with faces). ;; It only really affects M-x describe-face output. -(defmacro define-obsolete-face-alias (obsolete-face current-face - &optional when) +(defmacro define-obsolete-face-alias (obsolete-face current-face when) "Make OBSOLETE-FACE a face alias for CURRENT-FACE and mark it obsolete. The optional string WHEN gives the Emacs version where OBSOLETE-FACE became obsolete." |