Subject: Byte compiler: spurious message "cl used at runtime"

From: Alan Mackenzie <[email-masked]>
Date: Wed, 28 Jul 2010 18:15:53 +0000

Hi, Emacs,

In this macro declaration:

    (defmacro c-declare-lang-variables ()
      `(progn
         ,@(mapcan (lambda (init)
                     `(,(if (elt init 2)
                            `(defvar ,(car init) nil ,(elt init 2))
                          `(defvar ,(car init) nil))
                       (make-variable-buffer-local ',(car init))))
                   (cdr c-lang-variable-inits))))

, (from cc-engine.el), the byte-compiler gives this warning:

    "Function `mapcan' from cl package called at runtime".

It is clear that the mapcan, being within a ,@ construct, does its work
at macro-expansion time, i.e. compile time.

Thus the warning message is wrong.  This is a bug.

-- 
Alan Mackenzie (Nuremberg, Germany).