[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#31718: 26.1; Strange behavior of `cond'

From: Ikumi Keita
Subject: bug#31718: 26.1; Strange behavior of `cond'
Date: Wed, 06 Jun 2018 18:14:03 +0900

Hi Robert,

>>>>> Robert Cochran <address@hidden> writes:
> Ikumi Keita <address@hidden> writes:
>> Hi Andreas, thanks for your reply.
>>>>>>> Andreas Schwab <address@hidden> writes:
>>> On Jun 05 2018, Ikumi Keita <address@hidden> wrote:
>>>> (defun xyz (arg)
>>>> "dummy"
>>>> ;    (cond ((eq arg nil) ; OK
>>>> ;    (cond ((eq arg 'abc) ; OK
>>>> ;    (cond ((eq arg 'def) ; OK
>>>> (cond ((eq arg 'default) ; NG
>>> The byte-compiler uses 'default as a magic symbol, which breaks this
>>> case.
>> Does this mean that this behavior is a (new) designed feature of elisp
>> and not a bug?
>> If so, is it the respoisibility of the authors of the codes to rewrite
>> not to use `default' or else to make sure to set
>> `byte-compile-cond-use-jump-table' to nil at byte compile?

> I for one consider this a bug, for 2 reasons:

> 1) It's not reasonable to expect a Lisp programmer to just know that
> using the symbol default is problematic.

> 2) It creates diverging behavior between compiled and non-compiled Lisp.

I agree.

> To that end, I've made a small patch to rectify the behavior. Instead of
> hardcoding a symbol, it uses gensym to create a unique one. I did a full
> build of Emacs, as well as ran 'make check' and had identical results
> pre- and post-change, so I'm reasonably sure it's correct.

Thanks for the patch, it fixes the problem on my side!

Ikumi Keita

reply via email to

[Prev in Thread] Current Thread [Next in Thread]