GNU bug report logs -
#25166
It shouldn't be possible to set the function cell of t
Previous Next
Reported by: Philipp <p.stephani2 <at> gmail.com>
Date: Sun, 11 Dec 2016 09:47:02 UTC
Severity: wishlist
Tags: wontfix
Found in version 26.0.50
Done: Noam Postavsky <npostavs <at> users.sourceforge.net>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 25166 in the body.
You can then email your comments to 25166 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25166
; Package
emacs
.
(Sun, 11 Dec 2016 09:47:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Philipp <p.stephani2 <at> gmail.com>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Sun, 11 Dec 2016 09:47:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
You can set the function cell of nil and t using `fset' and friends.
But you can't call the `nil' function using (nil) (it does work with
(t)). I think that attempting to set the function cell of nil and t is
almost always a bug -- probably the programmer wanted to set a real
symbol, but some of the constants got passed. I propose to signal an
error (e.g. `setting-constant') whenever the function cell of nil and t
is modified; maybe the same should happen for keywords.
In GNU Emacs 26.0.50.5 (x86_64-unknown-linux-gnu, GTK+ Version 3.10.8)
of 2016-12-10 built on localhost
Repository revision: dc62ea38e36b5de47893a60a76d66b7a79bf6437
Windowing system distributor 'The X.Org Foundation', version 11.0.11702000
System Description: Ubuntu 14.04 LTS
Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Configured using:
'configure --enable-checking --enable-check-lisp-object-type
'CFLAGS=-O0 -ggdb3''
Configured features:
XPM JPEG TIFF GIF PNG SOUND GSETTINGS NOTIFY GNUTLS FREETYPE XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11
Important settings:
value of $LANG: en_US.UTF-8
locale-coding-system: utf-8-unix
Major mode: Lisp Interaction
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
transient-mark-mode: t
Load-path shadows:
None found.
Features:
(shadow sort mail-extr emacsbug message subr-x puny seq byte-opt gv
bytecomp byte-compile cl-extra help-mode cconv cl-loaddefs pcase cl-lib
dired dired-loaddefs format-spec rfc822 mml easymenu mml-sec
password-cache epa derived epg epg-config gnus-util rmail rmail-loaddefs
mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils
mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr
mail-utils time-date mule-util tooltip eldoc electric uniquify
ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode elisp-mode lisp-mode
prog-mode register page menu-bar rfn-eshadow isearch timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang
vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932
hebrew greek romanian slovak czech european ethiopic indian cyrillic
chinese composite charscript case-table epa-hook jka-cmpr-hook help
simple abbrev obarray minibuffer cl-preloaded 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 inotify dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty
make-network-process emacs)
Memory information:
((conses 16 97085 5586)
(symbols 48 20041 0)
(miscs 40 331 105)
(strings 32 17859 3593)
(string-bytes 1 580498)
(vectors 16 13985)
(vector-slots 8 448755 7198)
(floats 8 179 25)
(intervals 56 201 0)
(buffers 976 11)
(heap 1024 47360 1053))
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25166
; Package
emacs
.
(Sun, 11 Dec 2016 18:40:01 GMT)
Full text and
rfc822 format available.
Message #8 received at 25166 <at> debbugs.gnu.org (full text, mbox):
Philipp wrote:
> You can set the function cell of nil and t using `fset' and friends.
> But you can't call the `nil' function using (nil) (it does work with
> (t)). I think that attempting to set the function cell of nil and t is
> almost always a bug -- probably the programmer wanted to set a real
> symbol, but some of the constants got passed. I propose to signal an
> error (e.g. `setting-constant') whenever the function cell of nil and t
> is modified; maybe the same should happen for keywords.
I just did this yesterday...
See https://debbugs.gnu.org/25110, ba8e883, and 3fd4433.
Forcibly Merged 25110 25166.
Request was from
Glenn Morris <rgm <at> gnu.org>
to
control <at> debbugs.gnu.org
.
(Sun, 11 Dec 2016 18:40:02 GMT)
Full text and
rfc822 format available.
Disconnected #25166 from all other report(s).
Request was from
Glenn Morris <rgm <at> gnu.org>
to
control <at> debbugs.gnu.org
.
(Mon, 12 Dec 2016 20:24:02 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25166
; Package
emacs
.
(Mon, 12 Dec 2016 20:26:02 GMT)
Full text and
rfc822 format available.
Message #15 received at 25166 <at> debbugs.gnu.org (full text, mbox):
Glenn Morris wrote:
> Philipp wrote:
>
>> You can set the function cell of nil and t using `fset' and friends.
>> But you can't call the `nil' function using (nil) (it does work with
>> (t)). I think that attempting to set the function cell of nil and t is
>> almost always a bug -- probably the programmer wanted to set a real
>> symbol, but some of the constants got passed. I propose to signal an
>> error (e.g. `setting-constant') whenever the function cell of nil and t
>> is modified; maybe the same should happen for keywords.
>
> I just did this yesterday...
> See https://debbugs.gnu.org/25110, ba8e883, and 3fd4433.
And now see also ffb1302. :)
Anyway, I only did "nil", since as you say "t" can actually be called as
a function. But you are right that it's probably unintended.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25166
; Package
emacs
.
(Mon, 26 Dec 2016 19:30:02 GMT)
Full text and
rfc822 format available.
Message #18 received at 25166 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Glenn Morris <rgm <at> gnu.org> schrieb am Mo., 12. Dez. 2016 um 21:25 Uhr:
> Glenn Morris wrote:
>
> > Philipp wrote:
> >
> >> You can set the function cell of nil and t using `fset' and friends.
> >> But you can't call the `nil' function using (nil) (it does work with
> >> (t)). I think that attempting to set the function cell of nil and t is
> >> almost always a bug -- probably the programmer wanted to set a real
> >> symbol, but some of the constants got passed. I propose to signal an
> >> error (e.g. `setting-constant') whenever the function cell of nil and t
> >> is modified; maybe the same should happen for keywords.
> >
> > I just did this yesterday...
> > See https://debbugs.gnu.org/25110, ba8e883, and 3fd4433.
>
> And now see also ffb1302. :)
> Anyway, I only did "nil", since as you say "t" can actually be called as
> a function. But you are right that it's probably unintended.
>
>
Thanks! Interestingly the behavior was already added in 1994 (commit
c15c5d408d696928862ca2848a359231e373556c), but apparently reverted later.
I'd suggest to simply reinstate that commit.
[Message part 2 (text/html, inline)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25166
; Package
emacs
.
(Mon, 26 Dec 2016 19:42:02 GMT)
Full text and
rfc822 format available.
Message #21 received at 25166 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Philipp Stephani <p.stephani2 <at> gmail.com> schrieb am Mo., 26. Dez. 2016 um
20:29 Uhr:
> Glenn Morris <rgm <at> gnu.org> schrieb am Mo., 12. Dez. 2016 um 21:25 Uhr:
>
> Glenn Morris wrote:
>
> > Philipp wrote:
> >
> >> You can set the function cell of nil and t using `fset' and friends.
> >> But you can't call the `nil' function using (nil) (it does work with
> >> (t)). I think that attempting to set the function cell of nil and t is
> >> almost always a bug -- probably the programmer wanted to set a real
> >> symbol, but some of the constants got passed. I propose to signal an
> >> error (e.g. `setting-constant') whenever the function cell of nil and t
> >> is modified; maybe the same should happen for keywords.
> >
> > I just did this yesterday...
> > See https://debbugs.gnu.org/25110, ba8e883, and 3fd4433.
>
> And now see also ffb1302. :)
> Anyway, I only did "nil", since as you say "t" can actually be called as
> a function. But you are right that it's probably unintended.
>
>
> Thanks! Interestingly the behavior was already added in 1994 (commit
> c15c5d408d696928862ca2848a359231e373556c), but apparently reverted later.
> I'd suggest to simply reinstate that commit.
>
Here's a patch.
[Message part 2 (text/html, inline)]
[0001-Prevent-setting-the-function-cell-of-t-Bug-25166.txt (text/plain, attachment)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25166
; Package
emacs
.
(Mon, 26 Dec 2016 19:49:02 GMT)
Full text and
rfc822 format available.
Message #24 received at 25166 <at> debbugs.gnu.org (full text, mbox):
> From: Philipp Stephani <p.stephani2 <at> gmail.com>
> Date: Mon, 26 Dec 2016 19:29:17 +0000
> Cc: 25166 <at> debbugs.gnu.org
>
> And now see also ffb1302. :)
> Anyway, I only did "nil", since as you say "t" can actually be called as
> a function. But you are right that it's probably unintended.
>
> Thanks! Interestingly the behavior was already added in 1994 (commit
> c15c5d408d696928862ca2848a359231e373556c), but apparently reverted later. I'd suggest to simply
> reinstate that commit.
It was reverted in 32e5c58ca969ec30d31520da52c9866cafa62927. Perhaps
Stefan could tell why he did that (the log message doesn't say).
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25166
; Package
emacs
.
(Tue, 27 Dec 2016 15:16:02 GMT)
Full text and
rfc822 format available.
Message #27 received at 25166 <at> debbugs.gnu.org (full text, mbox):
> It was reverted in 32e5c58ca969ec30d31520da52c9866cafa62927. Perhaps
> Stefan could tell why he did that (the log message doesn't say).
Because there doesn't seem to be any good reason to single out nil and
t in this respect and because those things aren't terribly dangerous.
Stefan
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25166
; Package
emacs
.
(Tue, 27 Dec 2016 22:50:01 GMT)
Full text and
rfc822 format available.
Message #30 received at 25166 <at> debbugs.gnu.org (full text, mbox):
> From: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
> Cc: Philipp Stephani <p.stephani2 <at> gmail.com>, rgm <at> gnu.org,
> 25166 <at> debbugs.gnu.org
> Date: Tue, 27 Dec 2016 10:15:29 -0500
>
> > It was reverted in 32e5c58ca969ec30d31520da52c9866cafa62927. Perhaps
> > Stefan could tell why he did that (the log message doesn't say).
>
> Because there doesn't seem to be any good reason to single out nil and
> t in this respect and because those things aren't terribly dangerous.
So therefore we shouldn't reinstate that now.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25166
; Package
emacs
.
(Tue, 27 Dec 2016 23:12:01 GMT)
Full text and
rfc822 format available.
Message #33 received at 25166 <at> debbugs.gnu.org (full text, mbox):
>> Because there doesn't seem to be any good reason to single out nil and
>> t in this respect and because those things aren't terribly dangerous.
> So therefore we shouldn't reinstate that now.
Yes, that's my opinion.
Stefan
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25166
; Package
emacs
.
(Mon, 01 May 2017 14:46:02 GMT)
Full text and
rfc822 format available.
Message #36 received at 25166 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Stefan Monnier <monnier <at> iro.umontreal.ca> schrieb am Mi., 28. Dez. 2016 um
00:11 Uhr:
> >> Because there doesn't seem to be any good reason to single out nil and
> >> t in this respect and because those things aren't terribly dangerous.
> > So therefore we shouldn't reinstate that now.
>
> Yes, that's my opinion.
>
>
>
Well, my opinion is obviously different, so the maintainer should decide.
[Message part 2 (text/html, inline)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25166
; Package
emacs
.
(Mon, 01 May 2017 15:14:02 GMT)
Full text and
rfc822 format available.
Message #39 received at 25166 <at> debbugs.gnu.org (full text, mbox):
> From: Philipp Stephani <p.stephani2 <at> gmail.com>
> Date: Mon, 01 May 2017 14:44:44 +0000
> Cc: rgm <at> gnu.org, 25166 <at> debbugs.gnu.org
>
> Stefan Monnier <monnier <at> iro.umontreal.ca> schrieb am Mi., 28. Dez. 2016 um 00:11 Uhr:
>
> >> Because there doesn't seem to be any good reason to single out nil and
> >> t in this respect and because those things aren't terribly dangerous.
> > So therefore we shouldn't reinstate that now.
>
> Yes, that's my opinion.
>
> Well, my opinion is obviously different, so the maintainer should decide.
One maintainer has already decided, see above.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25166
; Package
emacs
.
(Fri, 27 Oct 2017 18:00:02 GMT)
Full text and
rfc822 format available.
Message #42 received at 25166 <at> debbugs.gnu.org (full text, mbox):
# fset of nil is already covered in Bug#25110
retitle 25166 It shouldn't be possible to set the function cell of t
tags 25166 wontfix
close 25166
quit
On Mon, May 1, 2017 at 11:12 AM, Eli Zaretskii <eliz <at> gnu.org> wrote:
>> From: Philipp Stephani <p.stephani2 <at> gmail.com>
>> Date: Mon, 01 May 2017 14:44:44 +0000
>> Cc: rgm <at> gnu.org, 25166 <at> debbugs.gnu.org
>>
>> Stefan Monnier <monnier <at> iro.umontreal.ca> schrieb am Mi., 28. Dez. 2016 um 00:11 Uhr:
>>
>> >> Because there doesn't seem to be any good reason to single out nil and
>> >> t in this respect and because those things aren't terribly dangerous.
>> > So therefore we shouldn't reinstate that now.
>>
>> Yes, that's my opinion.
>>
>> Well, my opinion is obviously different, so the maintainer should decide.
>
> One maintainer has already decided, see above.
Seems final enough, closing as wontfix.
PS for an example of why singling out nil makes sense (but this
doesn't apply to t) see [1].
Summary: (autoload #'nil "something" nil t) silently succeeds but
makes forward-word, backward-word, etc, (fail to) funcall nil.
[1]: https://github.com/jwiegley/use-package/issues/512
Changed bug title to 'It shouldn't be possible to set the function cell of t' from '26.0.50; It shouldn't be possible to set the function cell of nil and t'
Request was from
Noam Postavsky <npostavs <at> users.sourceforge.net>
to
control <at> debbugs.gnu.org
.
(Fri, 27 Oct 2017 18:00:02 GMT)
Full text and
rfc822 format available.
Added tag(s) wontfix.
Request was from
Noam Postavsky <npostavs <at> users.sourceforge.net>
to
control <at> debbugs.gnu.org
.
(Fri, 27 Oct 2017 18:00:02 GMT)
Full text and
rfc822 format available.
bug closed, send any further explanations to
25166 <at> debbugs.gnu.org and Philipp <p.stephani2 <at> gmail.com>
Request was from
Noam Postavsky <npostavs <at> users.sourceforge.net>
to
control <at> debbugs.gnu.org
.
(Fri, 27 Oct 2017 18:00:02 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25166
; Package
emacs
.
(Sat, 28 Oct 2017 16:18:02 GMT)
Full text and
rfc822 format available.
Message #51 received at 25166 <at> debbugs.gnu.org (full text, mbox):
> PS for an example of why singling out nil makes sense (but this
> doesn't apply to t) see [1].
> Summary: (autoload #'nil "something" nil t) silently succeeds but
> makes forward-word, backward-word, etc, (fail to) funcall nil.
Why would someone do (autoload #'nil "something" nil t) ?
Stefan
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25166
; Package
emacs
.
(Sat, 28 Oct 2017 16:47:01 GMT)
Full text and
rfc822 format available.
Message #54 received at 25166 <at> debbugs.gnu.org (full text, mbox):
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:
>> PS for an example of why singling out nil makes sense (but this
>> doesn't apply to t) see [1].
>> Summary: (autoload #'nil "something" nil t) silently succeeds but
>> makes forward-word, backward-word, etc, (fail to) funcall nil.
>
> Why would someone do (autoload #'nil "something" nil t) ?
By accident. It's a bug in use-package.
(use-package foo-pkg :commands <commands-to-autoload>)
Creates autoloads for all the commands in <commands-to-autoload>, which
can be a symbol, or a list of symbols. But nil is also a symbol, so
passing an empty list makes an autoload for nil (because use-package
checks for symbolp before listp), rather than making autoloads for 0
commands.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#25166
; Package
emacs
.
(Sun, 29 Oct 2017 18:11:02 GMT)
Full text and
rfc822 format available.
Message #57 received at 25166 <at> debbugs.gnu.org (full text, mbox):
> By accident. It's a bug in use-package.
That's a rare accident, which I assume has been fixed already (if not,
it's another argument in favor of saying that it's not important).
Nothing that warrants adding special error detection.
Stefan
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Mon, 27 Nov 2017 12:24:05 GMT)
Full text and
rfc822 format available.
This bug report was last modified 7 years and 267 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.