GNU bug report logs -
#20144
25.0.50; Functions using fboundp not known to be defined
Previous Next
To reply to this bug, email your comments to 20144 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#20144
; Package
emacs
.
(Thu, 19 Mar 2015 15:56:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Philipp Stephani <p.stephani2 <at> gmail.com>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Thu, 19 Mar 2015 15:56:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
Byte-compiling the following file:
(if (fboundp 'car)
(defalias 'mycar 'car)
(defun mycar (_l) (error "what")))
(defun foo ()
(mycar nil))
results in the byte compiler warning
Warning: the function `mycar' is not known to be defined.
However, the function is clearly always defined. Since this trick is
rather common, the byte compiler should know about it.
In GNU Emacs 25.0.50.1 (x86_64-pc-linux-gnu, GTK+ Version 3.10.8)
of 2014-12-01 on *hidden*, modified by Debian
Windowing system distributor `The X.Org Foundation', version 11.0.11501000
System Description: Ubuntu 14.04 LTS
Configured using:
`configure --build x86_64-linux-gnu --prefix=/usr
--sharedstatedir=/var/lib --libexecdir=/usr/lib
--localstatedir=/var/lib --infodir=/usr/share/info
--mandir=/usr/share/man --with-pop=yes
--enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/25.0.50/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/25.0.50/site-lisp:/usr/share/emacs/site-lisp
--with-crt-dir=/usr/lib/x86_64-linux-gnu --build x86_64-linux-gnu
--prefix=/usr --sharedstatedir=/var/lib --libexecdir=/usr/lib
--localstatedir=/var/lib --infodir=/usr/share/info
--mandir=/usr/share/man --with-pop=yes
--enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/25.0.50/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/25.0.50/site-lisp:/usr/share/emacs/site-lisp
--with-crt-dir=/usr/lib/x86_64-linux-gnu --with-x=yes
--with-x-toolkit=gtk3 --with-toolkit-scroll-bars 'CFLAGS=-g -O2
-fstack-protector --param=ssp-buffer-size=4 -Wformat
-Werror=format-security -Wall' CPPFLAGS=-D_FORTIFY_SOURCE=2
'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro''
Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GCONF GSETTINGS
NOTIFY LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
Important settings:
value of $LANG: en_US.UTF-8
locale-coding-system: utf-8-unix
Major mode: Emacs-Lisp
Minor modes in effect:
tooltip-mode: t
global-eldoc-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
tool-bar-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
line-number-mode: t
Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Making completion list...
You can run the command `emacs-lisp-mode' with M-x e-li-mo RET
next-line: End of buffer
Quit
Saving file /tmp/bytetest.el...
Wrote /tmp/bytetest.el
Compiling /tmp/bytetest.el...done
Wrote /tmp/bytetest.elc
Load-path shadows:
None found.
Features:
(shadow sort gnus-util mail-extr emacsbug message dired format-spec
rfc822 mml easymenu mml-sec mm-decode mm-bodies mm-encode mail-parse
rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045
ietf-drums mm-util help-fns mail-prsvr mail-utils warnings byte-opt
compile comint ansi-color ring bytecomp byte-compile cl-extra
cl-loaddefs cl-lib cconv time-date tooltip eldoc electric uniquify
ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd
fontset image regexp-opt fringe tabulated-list newcomment elisp-mode
lisp-mode prog-mode register page menu-bar rfn-eshadow timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham
georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese hebrew greek romanian slovak czech european ethiopic
indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple
abbrev minibuffer nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
dbusbind gfilenotify dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs)
Memory information:
((conses 16 88229 4854)
(symbols 48 19489 0)
(miscs 40 57 185)
(strings 32 15003 4186)
(string-bytes 1 456733)
(vectors 16 11046)
(vector-slots 8 406209 3506)
(floats 8 77 239)
(intervals 56 295 16)
(buffers 976 14)
(heap 1024 36642 863))
Severity set to 'wishlist' from 'normal'
Request was from
Glenn Morris <rgm <at> gnu.org>
to
control <at> debbugs.gnu.org
.
(Thu, 19 Mar 2015 15:58:02 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#20144
; Package
emacs
.
(Thu, 19 Mar 2015 17:53:02 GMT)
Full text and
rfc822 format available.
Message #10 received at 20144 <at> debbugs.gnu.org (full text, mbox):
Philipp Stephani wrote:
> However, the function is clearly always defined. Since this trick is
> rather common, the byte compiler should know about it.
This issue has existed "forever". I really doubt it will ever change.
Eg http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg02316.html
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#20144
; Package
emacs
.
(Thu, 19 Mar 2015 17:55:02 GMT)
Full text and
rfc822 format available.
Message #13 received at 20144 <at> debbugs.gnu.org (full text, mbox):
This is a dupe of http://debbugs.gnu.org/8140 .
Merged 8140 20144.
Request was from
Glenn Morris <rgm <at> gnu.org>
to
control <at> debbugs.gnu.org
.
(Thu, 19 Mar 2015 17:55:03 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#20144
; Package
emacs
.
(Thu, 19 Mar 2015 19:28:02 GMT)
Full text and
rfc822 format available.
Message #18 received at 20144 <at> debbugs.gnu.org (full text, mbox):
severity 20144 wishlist
thanks
> (if (fboundp 'car)
> (defalias 'mycar 'car)
> (defun mycar (_l) (error "what")))
(defalias 'mycar
(if (fboundp 'car) 'car (lambda (_l) (error "what"))))
The difference is one of the two versions requires reasoning
(simple/trivial for you, but beyond the reach of the simple
byte-compiler we're using), whereas the other doesn't.
Admittedly, when you need to define two versions of a *set* of
functions, depending on a single test, the above trick of sinking the
testing into the `defalias' ends up being a bit ugly/inconvenient.
Stefan
This bug report was last modified 10 years and 87 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.