emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 276f5d9 3/3: Minor declare-function improvement


From: Glenn Morris
Subject: [Emacs-diffs] master 276f5d9 3/3: Minor declare-function improvement
Date: Wed, 06 May 2015 03:13:27 +0000

branch: master
commit 276f5d9e108378e13afd26b412526fc57a1f0032
Author: Glenn Morris <address@hidden>
Commit: Glenn Morris <address@hidden>

    Minor declare-function improvement
    
    * lisp/emacs-lisp/bytecomp.el
    (byte-compile-macroexpand-declare-function):
    Handle declarations after calls.  (Bug#20509)
---
 lisp/emacs-lisp/bytecomp.el |   16 +++++++++++-----
 1 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index f0d2ee4..67744c6 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -2920,11 +2920,17 @@ for symbols generated by the byte compiler itself."
 
 ;; Special macro-expander used during byte-compilation.
 (defun byte-compile-macroexpand-declare-function (fn file &rest args)
-  (push (cons fn
-              (if (and (consp args) (listp (car args)))
-                  (list 'declared (car args))
-                t))                     ; Arglist not specified.
-        byte-compile-function-environment)
+  (let ((gotargs (and (consp args) (listp (car args))))
+       (unresolved (assq fn byte-compile-unresolved-functions)))
+    (when unresolved         ; function was called before declaration
+      (if (and gotargs (byte-compile-warning-enabled-p 'callargs))
+         (byte-compile-arglist-warn fn (car args) nil)
+       (setq byte-compile-unresolved-functions
+             (delq unresolved byte-compile-unresolved-functions))))
+    (push (cons fn (if gotargs
+                      (list 'declared (car args))
+                    t))                     ; Arglist not specified.
+         byte-compile-function-environment))
   ;; We are stating that it _will_ be defined at runtime.
   (setq byte-compile-noruntime-functions
         (delq fn byte-compile-noruntime-functions))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]