Minor declare-function improvement
* lisp/emacs-lisp/bytecomp.el (byte-compile-macroexpand-declare-function): Handle declarations after calls. (Bug#20509)
This commit is contained in:
parent
754fdb1280
commit
276f5d9e10
1 changed files with 11 additions and 5 deletions
|
@ -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))
|
||||
|
|
Loading…
Add table
Reference in a new issue