diff options
author | Glenn Morris <rgm@gnu.org> | 2007-11-17 03:46:23 +0000 |
---|---|---|
committer | Glenn Morris <rgm@gnu.org> | 2007-11-17 03:46:23 +0000 |
commit | d97362d77951e32486aff2ed7005f8b9b047555c (patch) | |
tree | 2fe42851b5fe5dd2bd1ed7e63bfb3195fbec04bd | |
parent | aefbd1608c5aca54cc04306792f7d10915fb8006 (diff) | |
download | emacs-d97362d77951e32486aff2ed7005f8b9b047555c.tar.gz |
(byte-compile-declare-function): New function, byte-hunk-handler for
declare-function.
(byte-compile-callargs-warn): Handle declared functions.
-rw-r--r-- | lisp/emacs-lisp/bytecomp.el | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 0248bb20f06..313df65f0c1 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -1258,7 +1258,7 @@ Each function's symbol gets added to `byte-compile-noruntime-functions'." (byte-compile-fdefinition (car form) t))) (sig (if (and def (not (eq def t))) (byte-compile-arglist-signature - (if (eq 'lambda (car-safe def)) + (if (memq (car-safe def) '(declared lambda)) (nth 1 def) (if (byte-code-function-p def) (aref def 0) @@ -2817,6 +2817,16 @@ If FORM is a lambda or a macro, byte-compile it as a function." (cdr body)) (body (list body)))) + +(put 'declare-function 'byte-hunk-handler 'byte-compile-declare-function) +(defun byte-compile-declare-function (form) + (push (cons (nth 1 form) + (if (< (length form) 4) ; arglist not specified + t + (list 'declared (nth 3 form)))) + byte-compile-function-environment) + nil) + ;; This is the recursive entry point for compiling each subform of an ;; expression. |