[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#20509: compiler warns about cl-defmethod defined after use
From: |
Glenn Morris |
Subject: |
bug#20509: compiler warns about cl-defmethod defined after use |
Date: |
Tue, 05 May 2015 14:16:14 -0400 |
User-agent: |
Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) |
Package: emacs
Version: 25.0.50
Compiling foo.el with contents:
(require 'cl-lib)
(defun foo-1 ()
(foo-2))
(cl-defmethod foo-2 ()
t)
results in:
In end of data:
foo.el:8:1:Warning: the function `foo-2' is not known to be defined.
There is no such warning when using defun instead of cl-defmethod,
or if foo-2 is moved before foo-1.
I see that cl-defmethod macroexpands to something using declare-function.
Adding
(setq byte-compile-unresolved-functions
(delq (assq fn byte-compile-unresolved-functions)
byte-compile-unresolved-functions))
to byte-compile-macroexpand-declare-function solves the issue,
but I'm not sure it is right, since it might stop
byte-compile-arglist-warn doing its job (?).
On the other hand, it would be consistent with what
byte-compile-file-form-autoload does (see comment in the code).
On the other other hand, declare-function's currently have to come
before any use of the function thay are declaring, which is somewhat
intentional.
- bug#20509: compiler warns about cl-defmethod defined after use,
Glenn Morris <=