[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[21.5] bytecomp bug
- From: Katsumi Yamaoka <yamaoka@xxxxxxx>
- Date: Wed, 07 Dec 2011 22:54:40 +0900
- X-ml-name: emacs-w3m
- X-mail-count: 11694
Hi,
The combination of the `lexical-let' macro and the `labels' macro
produces the `(quote lambda)' element in its expanded form as
the case may be, and the most recent bytecomp got to fail with it.
Here is an example:
(defun test (&optional msg)
(lexical-let ((default "Hello World!"))
(labels ((fn (&optional arg)
(message "%s" (or msg default))))
(fn msg))))
It works, however it cannot be byte-compiled as follows:
(byte-compile 'test)
=> !! error (("not a lambda -- (quote lambda)"))
Whereas the version of XEmacs 21.4.22 does. The example above
is a simplified extract of the `w3m-process-do-with-temp-buffer'
macro that emacs-w3m uses; I'm unable to build and install it
for XEmacs 21.5-b31 nowadays because of such errors. You can see
the expanded form of `test' by:
(progn (pp (macroexpand
'(lexical-let ((default "Hello World!"))
(labels ((fn (&optional arg)
(message "%s" (or msg default))))
(fn msg)))
)) nil)
Regards,