changeset 86177:fadd23918501

(byte-compile-declare-function): New function, byte-hunk-handler for declare-function. (byte-compile-callargs-warn): Handle declared functions.
author Glenn Morris <rgm@gnu.org>
date Sat, 17 Nov 2007 03:46:23 +0000
parents 55bc44bcdff4
children d5707b4c3b0f
files lisp/emacs-lisp/bytecomp.el
diffstat 1 files changed, 11 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emacs-lisp/bytecomp.el	Sat Nov 17 03:45:17 2007 +0000
+++ b/lisp/emacs-lisp/bytecomp.el	Sat Nov 17 03:46:23 2007 +0000
@@ -1258,7 +1258,7 @@
 		  (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 @@
 	 (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.